(List (= scope= flags=0 words=[] bindings=[('git_tag', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS describe]} {[LIT_CHARS --dirty]} {[LIT_CHARS --always]})]]})]) (= scope= flags=0 words=[] bindings=[('git_hash', {[DQ [ComSub (AndOr OP_OR_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --short]} {[LIT_CHARS HEAD]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS unknown]}) )]]})]) (= scope= flags=0 words=[] bindings=[('git_files_are_clean', {[LIT_CHARS 1]})]) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --no-ext-diff]} {[LIT_CHARS --quiet]} {[LIT_CHARS --exit-code]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (= scope= flags=0 words=[] bindings=[('git_files_are_clean', {[LIT_CHARS 0]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --cached]} {[LIT_CHARS --quiet]} {[LIT_CHARS HEAD]} {[LIT_CHARS --]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (= scope= flags=0 words=[] bindings=[('git_files_are_clean', {[LIT_CHARS 0]})]) ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub git_files_are_clean]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS 1]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('git_hash', {[DQ [VarSub git_hash][LIT_CHARS -dirty]]})]) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "// This file was generated by py/py-version.sh\n"][LIT_CHARS "#define MICROPY_GIT_TAG "][RIGHT_D_QUOTE "\""][VarSub git_tag][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "#define MICROPY_GIT_HASH "][RIGHT_D_QUOTE "\""][VarSub git_hash][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "#define MICROPY_BUILD_DATE "][RIGHT_D_QUOTE "\""][ComSub (Com {[LIT_CHARS date]} {[SQ ]})][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) )