py2ecma 0.0.2__tar.gz → 0.0.2.post9.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/.gitignore +1 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/PKG-INFO +1 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/pyproject.toml +5 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/build.sh +1 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/install.sh +1 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/arguments.py +6 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/comprehensions.py +10 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/node.py +1 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/parser.py +2 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/conf.py +3 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/dependency/getdeps.py +1 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/builtins.js +1 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/comprehensions.js +25 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/linker/jsloader.py +3 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/linker/packager.py +4 -2
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/dataclasses.py +5 -9
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/types.py +1 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/transpiler.py +3 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/helpers.py +6 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/uv.lock +0 -505
- py2ecma-0.0.2.post9.dev0/variables.env +1 -0
- py2ecma-0.0.2/variables.env +0 -1
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/.coveragerc +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/.envrc +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/.gitlab-ci.yml +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/Dockerfile +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/LICENSE-2.0.txt +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/Makefile +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/README.md +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/conftest.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/Makefile +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/modules.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.codegenerator.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.dependency.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.lexer.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.linker.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.modules.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/api/py2ecma.watcher.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/conf.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/docs/source/index.rst +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/py.typed +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/run.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/README.md +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/check.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/deploy.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/format.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/install_ci.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/install_from_requirements.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/install_pkg.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/install_runtime.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/release.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/tests-cov.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/tests.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/verify.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/version.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/version_patch.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/scripts/version_sanitized.sh +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/__main__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/enums.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nameconverter.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/asyncs.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/classes.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/controlflow.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/expressions.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/functions.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/imports.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/literals.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/module.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/statements.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/subscripting.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/variables.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/optimizer.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/specialcases.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/traversers.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/dependency/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/dependency/excludes.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/dependency/sortedset.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/dependency/spec.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/filesystem.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/get_logger.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/base.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/classes.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/dict.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/exceptions.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/list.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/set.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/javascript/strings.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/lexer/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/lexer/syntaxtree.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/linker/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/main.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/minimizer/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/minimizer/closure.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/codecs.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/collections.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/copy.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/datetime.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/enum.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/functools.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/json.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/keyword.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/math.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/operator.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/re.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/re_/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/re_/translate.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/sre_compile.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/sre_constants.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/sre_parse.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/stubs.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/sys.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/modules/time.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/progress.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/py.typed +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/watcher/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/watcher/autocompile.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/advanced/macros.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/advanced/test_getters.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/advanced/test_setters.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/module/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/module/testthis.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/relative/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/relative/rel.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/relative/sec.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/shared/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/shared/sharedlib.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/src/sharedt.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/src/simple.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/src/test.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/resources/test.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/simple.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/test.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/imports/test_imports.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/__init__.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_asserts.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_boolean.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_builtins.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_classes.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_decorators.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_dicts.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_exceptions.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_flow.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_for.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_functions.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_inheritance.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_lambda.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_lists.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_methods.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_nummerical.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_sets.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_strings.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_tuple.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_variables.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/regression/test_while.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/resources/jsload.js +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/simple.html +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/simple.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/stdlib/test_copy.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/stdlib/test_json.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/stdlib/test_math.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/stdlib/test_re.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/tests/stdlib/test_time.py +0 -0
- {py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/version.txt +0 -0
|
@@ -19,6 +19,9 @@ dependencies = [
|
|
|
19
19
|
]
|
|
20
20
|
dynamic = ["version"]
|
|
21
21
|
|
|
22
|
+
[project.scripts]
|
|
23
|
+
py2ecma = "py2ecma.main:main"
|
|
24
|
+
|
|
22
25
|
[tool.hatch.version]
|
|
23
26
|
source = "uv-dynamic-versioning"
|
|
24
27
|
|
|
@@ -29,6 +32,8 @@ local_scheme = "no-local-version"
|
|
|
29
32
|
vcs = "git"
|
|
30
33
|
style = "pep440"
|
|
31
34
|
local_scheme = "no-local-version"
|
|
35
|
+
metadata = false
|
|
36
|
+
dirty = false
|
|
32
37
|
|
|
33
38
|
[project.readme]
|
|
34
39
|
file = "README.md"
|
|
@@ -81,5 +86,4 @@ dev = [
|
|
|
81
86
|
"pyfakefs>=6.0.0",
|
|
82
87
|
"pytest>=9.0.2",
|
|
83
88
|
"twine>=6.2.0",
|
|
84
|
-
"visast>=1.0.1",
|
|
85
89
|
]
|
|
@@ -56,6 +56,12 @@ def arg_parser() -> argparse.ArgumentParser:
|
|
|
56
56
|
" the current directory.",
|
|
57
57
|
metavar="dir",
|
|
58
58
|
)
|
|
59
|
+
parser.add_argument(
|
|
60
|
+
"--imports",
|
|
61
|
+
dest="imports",
|
|
62
|
+
metavar="output.js",
|
|
63
|
+
help="List of imports that can be injected at the top of the bundle file",
|
|
64
|
+
)
|
|
59
65
|
parser.add_argument(
|
|
60
66
|
"-c",
|
|
61
67
|
"--clean",
|
{py2ecma-0.0.2 → py2ecma-0.0.2.post9.dev0}/src/py2ecma/codegenerator/nintermediate/comprehensions.py
RENAMED
|
@@ -25,6 +25,16 @@ class SetComp(Node):
|
|
|
25
25
|
elt: Node
|
|
26
26
|
generators: List[Node]
|
|
27
27
|
|
|
28
|
+
def code(self):
|
|
29
|
+
yield "__set_comprehension__("
|
|
30
|
+
yield "("
|
|
31
|
+
yield self.generators[-1].target
|
|
32
|
+
yield ") => ("
|
|
33
|
+
yield self.elt
|
|
34
|
+
yield "), ["
|
|
35
|
+
yield self.join(", ", self.generators)
|
|
36
|
+
yield "])"
|
|
37
|
+
|
|
28
38
|
|
|
29
39
|
@dataclass
|
|
30
40
|
class GeneratorComp(Node):
|
|
@@ -8,7 +8,7 @@ class Node:
|
|
|
8
8
|
def code(self):
|
|
9
9
|
raise NotImplementedError(
|
|
10
10
|
"Itermediate node type '{}'".format(self.__class__.__name__)
|
|
11
|
-
+ " is missing the code() method override"
|
|
11
|
+
+ f" is missing the code() method override, issue is present in {self.__file__}"
|
|
12
12
|
)
|
|
13
13
|
|
|
14
14
|
@staticmethod
|
|
@@ -600,6 +600,8 @@ def class_body(tree, name, module, file_):
|
|
|
600
600
|
|
|
601
601
|
def visit_FunctionDef(self, node):
|
|
602
602
|
decorators = [n.id for n in node.decorator_list]
|
|
603
|
+
print("====================================================")
|
|
604
|
+
print(self.file)
|
|
603
605
|
return CD.Method(
|
|
604
606
|
__file__=self.file,
|
|
605
607
|
name=node.name,
|
|
@@ -8,6 +8,7 @@ class TranspilerConfig:
|
|
|
8
8
|
input_file: Path
|
|
9
9
|
output_file: Path
|
|
10
10
|
build_dir: Path
|
|
11
|
+
imports: Path | None
|
|
11
12
|
|
|
12
13
|
clean_build: bool
|
|
13
14
|
recursive: bool
|
|
@@ -22,6 +23,8 @@ class TranspilerConfig:
|
|
|
22
23
|
self.input_file = Path(argparser.input)
|
|
23
24
|
self.output_file = Path(argparser.output_file)
|
|
24
25
|
self.build_dir = Path(argparser.build_dir)
|
|
26
|
+
self.imports = Path(argparser.imports) \
|
|
27
|
+
if argparser.imports is not None else None
|
|
25
28
|
|
|
26
29
|
self.clean_build = argparser.clean
|
|
27
30
|
self.recursive = argparser.recursive
|
|
@@ -76,7 +76,7 @@ def getdeps(filename):
|
|
|
76
76
|
continue
|
|
77
77
|
path = find_import_src(mod, filename)
|
|
78
78
|
if path is None:
|
|
79
|
-
logger.error("Could not find origin of module({})"
|
|
79
|
+
logger.error(f"Could not find origin of module({mod}) for file {filename}")
|
|
80
80
|
raise ImportError("Could not find: {}".format(mod))
|
|
81
81
|
logger.info('dependency found: "{}"'.format(path))
|
|
82
82
|
filepaths.append(path)
|
|
@@ -28,6 +28,31 @@ var __list_comprehension__ = (elt, generators, li) => {
|
|
|
28
28
|
return li;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
|
|
32
|
+
var __set_comprehension__ = (elt, generators, li) => {
|
|
33
|
+
if (li === undefined) {
|
|
34
|
+
li = set();
|
|
35
|
+
}
|
|
36
|
+
if (generators.length > 1) {
|
|
37
|
+
var generator = generators[0];
|
|
38
|
+
for (let el of __Iterator__(generator.iter)) {
|
|
39
|
+
if (generator.ifs(el)) {
|
|
40
|
+
var tail = generators.slice(1);
|
|
41
|
+
tail[0].iter = el;
|
|
42
|
+
__set_comprehension__(elt, tail, li);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
var generator = generators[0];
|
|
47
|
+
for (let el of __Iterator__(generator.iter)) {
|
|
48
|
+
if (generator.ifs(el)) {
|
|
49
|
+
li.add(elt(el));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return li;
|
|
54
|
+
}
|
|
55
|
+
|
|
31
56
|
var __dict_comprehension__ = (elt, val, generators, li) => {
|
|
32
57
|
if (li === undefined) {
|
|
33
58
|
var li = dict();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from pathlib import Path
|
|
2
3
|
|
|
3
4
|
from ..filesystem import loadsrc
|
|
4
5
|
|
|
@@ -50,10 +51,11 @@ def src_strings():
|
|
|
50
51
|
return loadsrc(filepath)
|
|
51
52
|
|
|
52
53
|
|
|
53
|
-
def jssources() -> str:
|
|
54
|
+
def jssources(imports: str | Path | None = None) -> str:
|
|
54
55
|
return "\n".join(
|
|
55
56
|
[
|
|
56
57
|
src_base(),
|
|
58
|
+
loadsrc(str(imports)) if imports else "",
|
|
57
59
|
src_exceptions(),
|
|
58
60
|
src_builtins(),
|
|
59
61
|
src_classes(),
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import ast
|
|
2
|
+
from pathlib import Path
|
|
2
3
|
|
|
3
4
|
from .jsloader import jssources
|
|
4
5
|
|
|
5
6
|
|
|
6
|
-
def package(cache):
|
|
7
|
-
|
|
7
|
+
def package(cache, imports: Path | None):
|
|
8
|
+
|
|
9
|
+
all = jssources(imports) + "var __exports__ = {};\n"
|
|
8
10
|
for dep, src in cache.items():
|
|
9
11
|
dep = dep.replace(".__init__", "")
|
|
10
12
|
wsrc = wrap_iife(src)
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import _thread
|
|
2
|
-
import builtins
|
|
1
|
+
#import _thread
|
|
3
2
|
import copy
|
|
4
3
|
import functools
|
|
5
|
-
import inspect
|
|
6
4
|
import keyword
|
|
7
5
|
import re
|
|
8
6
|
import sys
|
|
@@ -375,7 +373,7 @@ def _recursive_repr(user_function):
|
|
|
375
373
|
|
|
376
374
|
@functools.wraps(user_function)
|
|
377
375
|
def wrapper(self):
|
|
378
|
-
key = id(self)
|
|
376
|
+
key = id(self)
|
|
379
377
|
if key in repr_running:
|
|
380
378
|
return "..."
|
|
381
379
|
repr_running.add(key)
|
|
@@ -397,8 +395,6 @@ def _create_fn(name, args, body, *, globals=None, locals=None, return_type=MISSI
|
|
|
397
395
|
# __builtins__ may be the "builtins" module or
|
|
398
396
|
# the value of its "__dict__",
|
|
399
397
|
# so make sure "__builtins__" is the module.
|
|
400
|
-
if globals is not None and "__builtins__" not in globals:
|
|
401
|
-
globals["__builtins__"] = builtins
|
|
402
398
|
return_annotation = ""
|
|
403
399
|
if return_type is not MISSING:
|
|
404
400
|
locals["_return_type"] = return_type
|
|
@@ -1005,9 +1001,9 @@ def _process_class(cls, init, repr, eq, order, unsafe_hash, frozen):
|
|
|
1005
1001
|
# we're here the overwriting is unconditional.
|
|
1006
1002
|
cls.__hash__ = hash_action(cls, field_list)
|
|
1007
1003
|
|
|
1008
|
-
if not getattr(cls, "__doc__"):
|
|
1009
|
-
|
|
1010
|
-
|
|
1004
|
+
#if not getattr(cls, "__doc__"):
|
|
1005
|
+
# # Create a class doc-string.
|
|
1006
|
+
# cls.__doc__ = cls.__name__ + str(inspect.signature(cls)).replace(" -> None", "")
|
|
1011
1007
|
|
|
1012
1008
|
return cls
|
|
1013
1009
|
|
|
@@ -47,6 +47,7 @@ def transpiler(
|
|
|
47
47
|
input_file: Path,
|
|
48
48
|
output_file: Path,
|
|
49
49
|
build_dir: Path,
|
|
50
|
+
imports: Path | None,
|
|
50
51
|
clean_build: bool = False,
|
|
51
52
|
minimize: bool = False,
|
|
52
53
|
recursive: bool = True,
|
|
@@ -126,7 +127,7 @@ def transpiler(
|
|
|
126
127
|
return __inner__
|
|
127
128
|
|
|
128
129
|
def bundler(src_cache, output_file):
|
|
129
|
-
bundle = package(src_cache)
|
|
130
|
+
bundle = package(src_cache, imports)
|
|
130
131
|
if not minimize:
|
|
131
132
|
import jsbeautifier # type: ignore
|
|
132
133
|
|
|
@@ -166,6 +167,7 @@ class Transpiler:
|
|
|
166
167
|
input_file=self.config.input_file,
|
|
167
168
|
output_file=self.config.output_file,
|
|
168
169
|
build_dir=self.config.build_dir,
|
|
170
|
+
imports=self.config.imports,
|
|
169
171
|
clean_build=self.config.clean_build,
|
|
170
172
|
minimize=self.config.minimize,
|
|
171
173
|
recursive=self.config.recursive,
|
|
@@ -317,7 +317,12 @@ def jsfstest(data_dir, cwd="", py_path=""):
|
|
|
317
317
|
f.write(py_src)
|
|
318
318
|
|
|
319
319
|
py_result = func()
|
|
320
|
-
transpiler(
|
|
320
|
+
transpiler(
|
|
321
|
+
Path(main_file),
|
|
322
|
+
Path("bundle.js"),
|
|
323
|
+
build_dir=Path("build"),
|
|
324
|
+
clean_build=True,
|
|
325
|
+
imports=None)
|
|
321
326
|
with open("bundle.js") as f:
|
|
322
327
|
js_body = f.read()
|
|
323
328
|
js_src = (
|