wexample-wex-addon-dev-python 15.7.1__tar.gz → 15.7.2__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.
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/PKG-INFO +4 -4
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/README.md +1 -1
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/pyproject.toml +3 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +10 -8
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/rename.py +1 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/abstract_python_path_rename_handler.py +1 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/abstract_python_rename_handler.py +1 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/abstract_python_symbol_rename_handler.py +7 -17
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/applier.py +6 -6
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_common.py +22 -28
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_package_rename_handler.py +1 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py +9 -10
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +4 -4
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/test_python_class_rename_handler.py +1 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/test_python_function_rename_handler.py +2 -6
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/test_python_package_rename_handler.py +1 -3
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/common/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/const/tags.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/formatter/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/formatter/python_code_formatter.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/helper/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/helper/pdm.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/py.typed +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_class_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_constant_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_function_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/python_module_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/rename_plan.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/refactor/symbol_kind.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/ai/agents/describer/agent.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/ai/agents/describer/context.j2 +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/design_rules/python_code.md +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/package_gitlab_ci.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/readme_templates/install.md.j2 +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/resources/writing_rules/python_code.md +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/selection/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/selection/package_description_missing_selection.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/selection/python_code_performance_selection.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/.gitkeep +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/helper/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/helper/test_pdm.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/test_python_constant_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/integration/refactor/test_python_module_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/helper/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/helper/test_pdm.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_abstract_python_path_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_abstract_python_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_abstract_python_symbol_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_applier.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_class_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_common.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_constant_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_function_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_module_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_python_package_rename_handler.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_rename_plan.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/refactor/test_symbol_kind.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/resources/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/resources/test_shipped_agents.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/workdir/test_python_package_workdir.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wexample-wex-addon-dev-python
|
|
3
|
-
Version: 15.7.
|
|
3
|
+
Version: 15.7.2
|
|
4
4
|
Summary: Extends wex with commands to format, lint, and rename Python symbols, plus workdir types for Python packages and suites
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -18,9 +18,9 @@ Requires-Dist: networkx
|
|
|
18
18
|
Requires-Dist: pylint
|
|
19
19
|
Requires-Dist: pyright
|
|
20
20
|
Requires-Dist: wexample-api>=6.8.0
|
|
21
|
-
Requires-Dist: wexample-filestate-python>=9.
|
|
21
|
+
Requires-Dist: wexample-filestate-python>=9.3.0
|
|
22
22
|
Requires-Dist: wexample-wex-addon-ai>=19.1.0
|
|
23
|
-
Requires-Dist: wexample-wex-addon-app>=
|
|
23
|
+
Requires-Dist: wexample-wex-addon-app>=35.0.0
|
|
24
24
|
Provides-Extra: dev
|
|
25
25
|
Requires-Dist: pytest; extra == "dev"
|
|
26
26
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -28,7 +28,7 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
|
|
29
29
|
# wex_addon_dev_python
|
|
30
30
|
|
|
31
|
-
Version: 15.7.
|
|
31
|
+
Version: 15.7.2
|
|
32
32
|
|
|
33
33
|
Extends wex with commands to format, lint, and rename Python symbols, plus workdir types for Python packages and suites
|
|
34
34
|
|
{wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/pyproject.toml
RENAMED
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "wexample-wex-addon-dev-python"
|
|
9
|
-
version = "15.7.
|
|
9
|
+
version = "15.7.2"
|
|
10
10
|
description = "Extends wex with commands to format, lint, and rename Python symbols, plus workdir types for Python packages and suites"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "weeger", email = "contact@wexample.com" },
|
|
@@ -27,9 +27,9 @@ dependencies = [
|
|
|
27
27
|
"pylint",
|
|
28
28
|
"pyright",
|
|
29
29
|
"wexample-api>=6.8.0",
|
|
30
|
-
"wexample-filestate-python>=9.
|
|
30
|
+
"wexample-filestate-python>=9.3.0",
|
|
31
31
|
"wexample-wex-addon-ai>=19.1.0",
|
|
32
|
-
"wexample-wex-addon-app>=
|
|
32
|
+
"wexample-wex-addon-app>=35.0.0",
|
|
33
33
|
]
|
|
34
34
|
|
|
35
35
|
[project.readme]
|
|
@@ -6,14 +6,16 @@ if TYPE_CHECKING:
|
|
|
6
6
|
from wexample_cli.context.execution_context import ExecutionContext
|
|
7
7
|
|
|
8
8
|
# Pre-computed once at import time; avoids list allocation + join on every call.
|
|
9
|
-
_PYLINT_DISABLE_FLAG = "--disable=" + ",".join(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
_PYLINT_DISABLE_FLAG = "--disable=" + ",".join(
|
|
10
|
+
[
|
|
11
|
+
"missing-module-docstring",
|
|
12
|
+
"import-outside-toplevel",
|
|
13
|
+
"no-name-in-module",
|
|
14
|
+
"broad-exception-caught",
|
|
15
|
+
"c-extension-no-member",
|
|
16
|
+
"line-too-long",
|
|
17
|
+
]
|
|
18
|
+
)
|
|
17
19
|
|
|
18
20
|
|
|
19
21
|
def _code_check_pylint(context: ExecutionContext, file_path: str) -> bool:
|
|
@@ -137,9 +137,7 @@ def python__code__rename(
|
|
|
137
137
|
spinner.stop()
|
|
138
138
|
|
|
139
139
|
mode = "APPLIED" if not dry_run else "DRY-RUN"
|
|
140
|
-
context.io.log(
|
|
141
|
-
f"[{mode}] {report.source_path} → {report.target_path}"
|
|
142
|
-
)
|
|
140
|
+
context.io.log(f"[{mode}] {report.source_path} → {report.target_path}")
|
|
143
141
|
context.io.log(
|
|
144
142
|
f"[{mode}] scope={len(scope_roots)} root(s) "
|
|
145
143
|
f"scanned={report.files_scanned} changed={len(report.files_changed)}"
|
|
@@ -81,9 +81,7 @@ class AbstractPythonPathRenameHandler(AbstractPythonRenameHandler):
|
|
|
81
81
|
merge into an existing target (`PythonPackageRenameHandler`)."""
|
|
82
82
|
plan.path_renames.append((source_path, target_path))
|
|
83
83
|
|
|
84
|
-
def _plan_target_parent_creation(
|
|
85
|
-
self, plan: RenamePlan, target_path: Path
|
|
86
|
-
) -> None:
|
|
84
|
+
def _plan_target_parent_creation(self, plan: RenamePlan, target_path: Path) -> None:
|
|
87
85
|
"""Walk up from `target_path.parent` and queue every missing ancestor
|
|
88
86
|
directory plus an empty `__init__.py` so the move can land inside a
|
|
89
87
|
valid Python package even when the user renames across parents."""
|
|
@@ -27,6 +27,7 @@ class AbstractPythonRenameHandler(BaseClass):
|
|
|
27
27
|
layout, init validation, three-phase orchestration — lives here so every
|
|
28
28
|
flavour of rename stays strictly consistent.
|
|
29
29
|
"""
|
|
30
|
+
|
|
30
31
|
dry_run: bool = public_field(
|
|
31
32
|
default=True,
|
|
32
33
|
description="When True, return the plan/report without touching the "
|
|
@@ -73,9 +73,7 @@ class AbstractPythonSymbolRenameHandler(AbstractPythonRenameHandler):
|
|
|
73
73
|
|
|
74
74
|
return plan
|
|
75
75
|
|
|
76
|
-
def _add_unique(
|
|
77
|
-
self, results: list[Path], seen: set[str], path: Path
|
|
78
|
-
) -> None:
|
|
76
|
+
def _add_unique(self, results: list[Path], seen: set[str], path: Path) -> None:
|
|
79
77
|
key = str(path.resolve())
|
|
80
78
|
if key in seen:
|
|
81
79
|
return
|
|
@@ -114,18 +112,15 @@ class AbstractPythonSymbolRenameHandler(AbstractPythonRenameHandler):
|
|
|
114
112
|
# Case A: this package directory IS the parent module.
|
|
115
113
|
if (
|
|
116
114
|
len(pkg_dir.parts) >= len(parent_parts)
|
|
117
|
-
and pkg_dir.parts[-len(parent_parts):] == parent_parts
|
|
115
|
+
and pkg_dir.parts[-len(parent_parts) :] == parent_parts
|
|
118
116
|
):
|
|
119
117
|
self._add_unique(results, seen, init_file)
|
|
120
118
|
|
|
121
119
|
# Case B: the parent module is `<pkg_dir>/<leaf>.py` and the
|
|
122
120
|
# package's dotted tail equals `outer_parts`.
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
len(pkg_dir.parts) >= n_outer
|
|
127
|
-
and pkg_dir.parts[-n_outer:] == outer_parts
|
|
128
|
-
)
|
|
121
|
+
if n_outer == 0 or (
|
|
122
|
+
len(pkg_dir.parts) >= n_outer
|
|
123
|
+
and pkg_dir.parts[-n_outer:] == outer_parts
|
|
129
124
|
):
|
|
130
125
|
candidate = pkg_dir / f"{leaf}.py"
|
|
131
126
|
if candidate.is_file():
|
|
@@ -151,10 +146,7 @@ class AbstractPythonSymbolRenameHandler(AbstractPythonRenameHandler):
|
|
|
151
146
|
module = cst.parse_module(candidate.read_text(encoding="utf-8"))
|
|
152
147
|
except (cst.ParserSyntaxError, OSError):
|
|
153
148
|
continue
|
|
154
|
-
if any(
|
|
155
|
-
self._is_definition_node(stmt, old_name)
|
|
156
|
-
for stmt in module.body
|
|
157
|
-
):
|
|
149
|
+
if any(self._is_definition_node(stmt, old_name) for stmt in module.body):
|
|
158
150
|
matches.append(candidate)
|
|
159
151
|
|
|
160
152
|
unique = list({str(m): m for m in matches}.values())
|
|
@@ -172,9 +164,7 @@ class AbstractPythonSymbolRenameHandler(AbstractPythonRenameHandler):
|
|
|
172
164
|
return unique[0]
|
|
173
165
|
|
|
174
166
|
@abstract_method
|
|
175
|
-
def _is_definition_node(
|
|
176
|
-
self, node: cst.CSTNode, name: str
|
|
177
|
-
) -> bool:
|
|
167
|
+
def _is_definition_node(self, node: cst.CSTNode, name: str) -> bool:
|
|
178
168
|
"""Return True if `node` is a top-level definition of `name` of this
|
|
179
169
|
handler's kind (class / function / constant)."""
|
|
180
170
|
|
|
@@ -17,12 +17,12 @@ class RenameApplier(ABC):
|
|
|
17
17
|
|
|
18
18
|
def apply(self, plan: RenamePlan) -> None:
|
|
19
19
|
"""Default sequencing:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
1. create new directories (so subsequent steps land on existing parents)
|
|
21
|
+
2. write file contents (rewrites, fresh `__init__.py`)
|
|
22
|
+
3. rename paths (files or directories moved on disk)
|
|
23
|
+
4. delete leftover files (drop merge-duplicates)
|
|
24
|
+
5. purge build artefact directories (recursive rmtree)
|
|
25
|
+
6. remove empty directories (clean up after merges)
|
|
26
26
|
"""
|
|
27
27
|
for directory in plan.directories_to_create:
|
|
28
28
|
self.create_directory(directory)
|
|
@@ -7,20 +7,22 @@ from pathlib import Path
|
|
|
7
7
|
import libcst as cst
|
|
8
8
|
|
|
9
9
|
# Directories never scanned for source files (build/venv artefacts, VCS).
|
|
10
|
-
SKIP_DIR_NAMES: frozenset[str] = frozenset(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
SKIP_DIR_NAMES: frozenset[str] = frozenset(
|
|
11
|
+
{
|
|
12
|
+
"__pycache__",
|
|
13
|
+
".venv",
|
|
14
|
+
"venv",
|
|
15
|
+
"env",
|
|
16
|
+
".git",
|
|
17
|
+
"node_modules",
|
|
18
|
+
".pytest_cache",
|
|
19
|
+
".mypy_cache",
|
|
20
|
+
".ruff_cache",
|
|
21
|
+
".pdm-build",
|
|
22
|
+
"dist",
|
|
23
|
+
"build",
|
|
24
|
+
}
|
|
25
|
+
)
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
def dotted_to_parts(node) -> tuple[str, ...] | None:
|
|
@@ -210,7 +212,7 @@ class _ImportRenameTransformer(cst.CSTTransformer):
|
|
|
210
212
|
if parts is None or not self._starts_with(parts):
|
|
211
213
|
new_names.append(alias)
|
|
212
214
|
continue
|
|
213
|
-
new_parts = self.new_parts + parts[self._n:]
|
|
215
|
+
new_parts = self.new_parts + parts[self._n :]
|
|
214
216
|
new_names.append(alias.with_changes(name=parts_to_dotted(new_parts)))
|
|
215
217
|
touched = True
|
|
216
218
|
if not touched:
|
|
@@ -242,8 +244,8 @@ class _ImportRenameTransformer(cst.CSTTransformer):
|
|
|
242
244
|
|
|
243
245
|
# Case A/C — the module side IS the renamed entity (or below it).
|
|
244
246
|
if self._starts_with(absolute_module):
|
|
245
|
-
new_absolute = self.new_parts + absolute_module[self._n:]
|
|
246
|
-
new_module_parts = new_absolute[len(resolved_pkg or ()):]
|
|
247
|
+
new_absolute = self.new_parts + absolute_module[self._n :]
|
|
248
|
+
new_module_parts = new_absolute[len(resolved_pkg or ()) :]
|
|
247
249
|
self.changed = True
|
|
248
250
|
new_module_node = (
|
|
249
251
|
parts_to_dotted(new_module_parts) if new_module_parts else None
|
|
@@ -262,10 +264,7 @@ class _ImportRenameTransformer(cst.CSTTransformer):
|
|
|
262
264
|
new_names = []
|
|
263
265
|
touched = False
|
|
264
266
|
for alias in updated_node.names:
|
|
265
|
-
if (
|
|
266
|
-
isinstance(alias.name, cst.Name)
|
|
267
|
-
and alias.name.value == old_last
|
|
268
|
-
):
|
|
267
|
+
if isinstance(alias.name, cst.Name) and alias.name.value == old_last:
|
|
269
268
|
new_names.append(alias.with_changes(name=cst.Name(new_last)))
|
|
270
269
|
touched = True
|
|
271
270
|
else:
|
|
@@ -276,9 +275,7 @@ class _ImportRenameTransformer(cst.CSTTransformer):
|
|
|
276
275
|
|
|
277
276
|
return updated_node
|
|
278
277
|
|
|
279
|
-
def _resolve_relative_prefix(
|
|
280
|
-
self, rel_count: int
|
|
281
|
-
) -> tuple[str, ...] | None:
|
|
278
|
+
def _resolve_relative_prefix(self, rel_count: int) -> tuple[str, ...] | None:
|
|
282
279
|
"""Convert a relative-import dot count into the absolute package
|
|
283
280
|
prefix it resolves to. Returns `()` for an absolute (non-relative)
|
|
284
281
|
import, the resolved prefix for a relative one, or None when
|
|
@@ -385,10 +382,7 @@ class _SymbolRenameTransformer(cst.CSTTransformer):
|
|
|
385
382
|
new_names: list[cst.ImportAlias] = []
|
|
386
383
|
touched = False
|
|
387
384
|
for alias in updated_node.names:
|
|
388
|
-
if (
|
|
389
|
-
isinstance(alias.name, cst.Name)
|
|
390
|
-
and alias.name.value == self.old_name
|
|
391
|
-
):
|
|
385
|
+
if isinstance(alias.name, cst.Name) and alias.name.value == self.old_name:
|
|
392
386
|
new_names.append(alias.with_changes(name=cst.Name(self.new_name)))
|
|
393
387
|
touched = True
|
|
394
388
|
else:
|
|
@@ -95,9 +95,7 @@ class PythonPackageRenameHandler(AbstractPythonPathRenameHandler):
|
|
|
95
95
|
src_content = entry.read_text(encoding="utf-8")
|
|
96
96
|
tgt_content = target_entry.read_text(encoding="utf-8")
|
|
97
97
|
except OSError as e:
|
|
98
|
-
raise RuntimeError(
|
|
99
|
-
f"Cannot read content while planning merge: {e}"
|
|
100
|
-
)
|
|
98
|
+
raise RuntimeError(f"Cannot read content while planning merge: {e}")
|
|
101
99
|
|
|
102
100
|
if src_content == tgt_content or src_content == "":
|
|
103
101
|
plan.files_to_delete.append(entry)
|
|
@@ -42,15 +42,14 @@ class AbstractPythonCodeSelection(AbstractCodeFromDirectorySelection):
|
|
|
42
42
|
try:
|
|
43
43
|
return self._excl_path_frags # type: ignore[attr-defined]
|
|
44
44
|
except AttributeError:
|
|
45
|
-
self._excl_path_frags: tuple[
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
)
|
|
45
|
+
self._excl_path_frags: tuple[
|
|
46
|
+
str, ...
|
|
47
|
+
] = super().get_excluded_path_fragments() + (
|
|
48
|
+
"__pycache__",
|
|
49
|
+
"/tests/",
|
|
50
|
+
"/build/",
|
|
51
|
+
"/dist/",
|
|
52
|
+
"/.venv/",
|
|
53
|
+
"/.pdm-build/",
|
|
55
54
|
)
|
|
56
55
|
return self._excl_path_frags
|
|
@@ -138,7 +138,9 @@ class PythonWorkdir(
|
|
|
138
138
|
|
|
139
139
|
# global.name may be written in any case: an import name has to be a
|
|
140
140
|
# valid Python identifier, matching the generated src/ directory.
|
|
141
|
-
return
|
|
141
|
+
return (
|
|
142
|
+
f"{self.get_vendor_name()}_{string_to_snake_case(self.get_project_name())}"
|
|
143
|
+
)
|
|
142
144
|
|
|
143
145
|
def get_package_name(self) -> str:
|
|
144
146
|
from wexample_helpers.helper.string import string_to_kebab_case
|
|
@@ -652,9 +654,7 @@ class PythonWorkdir(
|
|
|
652
654
|
# relationship — the static dict identity is what `SidecarOfOption`
|
|
653
655
|
# resolves on).
|
|
654
656
|
def _entry_filter(entry):
|
|
655
|
-
return not any(
|
|
656
|
-
segment in exclude_dirs for segment in entry.parent.parts
|
|
657
|
-
)
|
|
657
|
+
return not any(segment in exclude_dirs for segment in entry.parent.parts)
|
|
658
658
|
|
|
659
659
|
return ChildrenFilterOption(
|
|
660
660
|
pattern={
|
|
@@ -42,9 +42,7 @@ def test_apply_renames_definition_and_module_local_references(tmp_path: Path) ->
|
|
|
42
42
|
dry_run=False,
|
|
43
43
|
).run()
|
|
44
44
|
|
|
45
|
-
assert def_file.read_text() == (
|
|
46
|
-
"class Crimson:\n pass\n\nprimary = Crimson()\n"
|
|
47
|
-
)
|
|
45
|
+
assert def_file.read_text() == ("class Crimson:\n pass\n\nprimary = Crimson()\n")
|
|
48
46
|
|
|
49
47
|
|
|
50
48
|
def test_apply_rewrites_attribute_access(tmp_path: Path) -> None:
|
|
@@ -19,9 +19,7 @@ def test_apply_renames_function_definition_and_calls(tmp_path: Path) -> None:
|
|
|
19
19
|
dry_run=False,
|
|
20
20
|
).run()
|
|
21
21
|
|
|
22
|
-
assert def_file.read_text() == (
|
|
23
|
-
"def salute():\n return 1\n\nprint(salute())\n"
|
|
24
|
-
)
|
|
22
|
+
assert def_file.read_text() == ("def salute():\n return 1\n\nprint(salute())\n")
|
|
25
23
|
|
|
26
24
|
|
|
27
25
|
def test_apply_rewrites_consumer_imports(tmp_path: Path) -> None:
|
|
@@ -68,9 +66,7 @@ def test_apply_skips_class_methods_sharing_the_name(tmp_path: Path) -> None:
|
|
|
68
66
|
).run()
|
|
69
67
|
|
|
70
68
|
assert def_file.read_text() == "def salute():\n return 1\n"
|
|
71
|
-
assert other.read_text() == (
|
|
72
|
-
"class X:\n def greet(self):\n return 2\n"
|
|
73
|
-
)
|
|
69
|
+
assert other.read_text() == ("class X:\n def greet(self):\n return 2\n")
|
|
74
70
|
|
|
75
71
|
|
|
76
72
|
def _make_pkg(parent: Path, name: str) -> Path:
|
|
@@ -18,9 +18,7 @@ def test_apply_merges_into_existing_target_when_no_conflict(tmp_path: Path) -> N
|
|
|
18
18
|
_make_module(helpers, "left_behind", "x = 1\n")
|
|
19
19
|
helper = _make_pkg(mylib, "helper")
|
|
20
20
|
_make_module(helper, "already_moved", "y = 2\n")
|
|
21
|
-
consumer = _make_module(
|
|
22
|
-
mylib, "use", "from mylib.helpers.left_behind import x\n"
|
|
23
|
-
)
|
|
21
|
+
consumer = _make_module(mylib, "use", "from mylib.helpers.left_behind import x\n")
|
|
24
22
|
|
|
25
23
|
PythonPackageRenameHandler(
|
|
26
24
|
scope_roots=[tmp_path],
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/.gitkeep
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wexample_wex_addon_dev_python-15.7.1 → wexample_wex_addon_dev_python-15.7.2}/tests/unit/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|