@@ -0,0 +1,1378 @@
+import os%0Aimport urllib.request%0A%0Aimport version%0Avnum = '.'.join(str(num) for num in version.version%5B:2%5D)%0A%0Aprint('Python.asdl and python.gram from CPython Github repository')%0A%0Aast_url = f%22https://raw.githubusercontent.com/python/cpython/%7Bvnum%7D/Parser/Python.asdl%22%0Af = urllib.request.urlopen(ast_url)%0A%0Awith open('Python.asdl', 'wb') as out:%0A    out.write(f.read())%0A%0A# read python.gram from CPython Github site%0Agrammar_file = f'python%7Bvnum%7D.gram'%0A%0Aast_url = f%22https://raw.githubusercontent.com/python/cpython/%7Bvnum%7D/Grammar/python.gram%22%0Aprint('request', ast_url)%0Aprint('might take a few seconds, please wait...')%0A%0Awith urllib.request.urlopen(ast_url, timeout=4) as f:%0A    print('connection open, reading...')%0A    src = f.read().decode('utf-8')%0A    print('read', len(src))%0A%0A    with open(grammar_file, 'w', encoding='utf-8') as out:%0A        out.write(src)%0A%0Aprint('Unicode database from unicode.org')%0Aunicode_url = %22https://www.unicode.org/Public/UCD/latest/ucd/%22%0A%0A# Load required files from unicode.org%0Aif not os.path.exists(%22ucd%22):%0A    os.mkdir(%22ucd%22)%0A%0Afor path in %5B%22UnicodeData.txt%22, %22CaseFolding.txt%22, %22DerivedCoreProperties.txt%22%5D:%0A    abs_path = os.path.join(%22ucd%22, path)%0A    f = urllib.request.urlopen(unicode_url + path)%0A    print(f'downloading %7Bpath%7D')%0A    with open(abs_path, %22wb%22) as out:%0A        buf = f.read()%0A        if not buf:%0A            break%0A        out.write(buf)%0A

Add /scripts/downloads.py : group all the downloads required to generate brython.js (from CPython Github site or Unicode database)