wexample-wex-addon-dev-python 15.6.4__tar.gz → 15.7.0__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.
Files changed (120) hide show
  1. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/PKG-INFO +3 -3
  2. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/README.md +1 -1
  3. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/pyproject.toml +2 -2
  4. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +42 -15
  5. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  6. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  7. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  8. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  9. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  10. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  11. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  12. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  13. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  14. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  15. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  16. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  17. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/code/rename.py +0 -0
  18. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  19. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  20. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  21. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  22. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  23. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/common/__init__.py +0 -0
  24. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +0 -0
  25. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  26. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  27. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  28. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  29. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  30. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/const/tags.py +0 -0
  31. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  32. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  33. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
  34. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/formatter/__init__.py +0 -0
  35. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/formatter/python_code_formatter.py +0 -0
  36. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/helper/__init__.py +0 -0
  37. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/helper/pdm.py +0 -0
  38. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
  39. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  40. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  41. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
  42. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/__init__.py +0 -0
  43. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/abstract_python_path_rename_handler.py +0 -0
  44. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/abstract_python_rename_handler.py +0 -0
  45. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/abstract_python_symbol_rename_handler.py +0 -0
  46. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/applier.py +0 -0
  47. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_class_rename_handler.py +0 -0
  48. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_common.py +0 -0
  49. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_constant_rename_handler.py +0 -0
  50. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_function_rename_handler.py +0 -0
  51. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_module_rename_handler.py +0 -0
  52. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/python_package_rename_handler.py +0 -0
  53. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/rename_plan.py +0 -0
  54. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/refactor/symbol_kind.py +0 -0
  55. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  56. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/ai/agents/describer/agent.yml +0 -0
  57. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/ai/agents/describer/context.j2 +0 -0
  58. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/design_rules/python_code.md +0 -0
  59. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  60. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/package_gitlab_ci.yml +0 -0
  61. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  62. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/readme_templates/install.md.j2 +0 -0
  63. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  64. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/resources/writing_rules/python_code.md +0 -0
  65. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/selection/__init__.py +0 -0
  66. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py +0 -0
  67. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/selection/package_description_missing_selection.py +0 -0
  68. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/selection/python_code_performance_selection.py +0 -0
  69. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
  70. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
  71. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
  72. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
  73. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
  74. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  75. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  76. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  77. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  78. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
  79. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
  80. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  81. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  82. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  83. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  84. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
  85. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  86. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
  87. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  88. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  89. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
  90. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +0 -0
  91. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/.gitkeep +0 -0
  92. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/helper/__init__.py +0 -0
  93. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/helper/test_pdm.py +0 -0
  94. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/__init__.py +0 -0
  95. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/__init__.py +0 -0
  96. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/test_python_class_rename_handler.py +0 -0
  97. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/test_python_constant_rename_handler.py +0 -0
  98. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/test_python_function_rename_handler.py +0 -0
  99. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/test_python_module_rename_handler.py +0 -0
  100. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/integration/refactor/test_python_package_rename_handler.py +0 -0
  101. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/__init__.py +0 -0
  102. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/helper/__init__.py +0 -0
  103. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/helper/test_pdm.py +0 -0
  104. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/__init__.py +0 -0
  105. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_abstract_python_path_rename_handler.py +0 -0
  106. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_abstract_python_rename_handler.py +0 -0
  107. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_abstract_python_symbol_rename_handler.py +0 -0
  108. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_applier.py +0 -0
  109. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_class_rename_handler.py +0 -0
  110. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_common.py +0 -0
  111. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_constant_rename_handler.py +0 -0
  112. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_function_rename_handler.py +0 -0
  113. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_module_rename_handler.py +0 -0
  114. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_python_package_rename_handler.py +0 -0
  115. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_rename_plan.py +0 -0
  116. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/refactor/test_symbol_kind.py +0 -0
  117. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/resources/__init__.py +0 -0
  118. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/resources/test_shipped_agents.py +0 -0
  119. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/tests/unit/workdir/__init__.py +0 -0
  120. {wexample_wex_addon_dev_python-15.6.4 → wexample_wex_addon_dev_python-15.7.0}/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.6.4
3
+ Version: 15.7.0
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
@@ -20,7 +20,7 @@ Requires-Dist: pyright
20
20
  Requires-Dist: wexample-api>=6.8.0
21
21
  Requires-Dist: wexample-filestate-python>=9.2.0
22
22
  Requires-Dist: wexample-wex-addon-ai>=19.1.0
23
- Requires-Dist: wexample-wex-addon-app>=34.15.0
23
+ Requires-Dist: wexample-wex-addon-app>=34.16.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.6.4
31
+ Version: 15.7.0
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
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 15.6.4
3
+ Version: 15.7.0
4
4
 
5
5
  Extends wex with commands to format, lint, and rename Python symbols, plus workdir types for Python packages and suites
6
6
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-dev-python"
9
- version = "15.6.4"
9
+ version = "15.7.0"
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" },
@@ -29,7 +29,7 @@ dependencies = [
29
29
  "wexample-api>=6.8.0",
30
30
  "wexample-filestate-python>=9.2.0",
31
31
  "wexample-wex-addon-ai>=19.1.0",
32
- "wexample-wex-addon-app>=34.15.0",
32
+ "wexample-wex-addon-app>=34.16.0",
33
33
  ]
34
34
 
35
35
  [project.readme]
@@ -236,6 +236,11 @@ class PythonPackageWorkdir(PythonWorkdir):
236
236
 
237
237
  return found
238
238
 
239
+ def _build_distributions(self) -> None:
240
+ from wexample_helpers.helper.shell import shell_run
241
+
242
+ shell_run(["pdm", "build"], inherit_stdio=True, cwd=self.get_path())
243
+
239
244
  def _classify_version_bump(self, last_tag: str) -> str:
240
245
  from wexample_helpers.const.types import (
241
246
  UPGRADE_TYPE_INTERMEDIATE,
@@ -275,6 +280,21 @@ class PythonPackageWorkdir(PythonWorkdir):
275
280
  except Exception:
276
281
  return UPGRADE_TYPE_MAJOR
277
282
 
283
+ def _clean_build_leftovers(self) -> None:
284
+ """Leave the checkout as the rectify wants it, so that the next
285
+ release's rectify has nothing to do about the build: dist/ gone (its
286
+ rule says so), .pdm-build at 755 (pdm creates it 700). On a runner the
287
+ checkout lives on, and each of those cost a rectify operation per
288
+ package per release."""
289
+ import shutil
290
+
291
+ dist = self.get_path() / "dist"
292
+ if dist.is_dir():
293
+ shutil.rmtree(dist, ignore_errors=True)
294
+ pdm_build = self.get_path() / ".pdm-build"
295
+ if pdm_build.is_dir():
296
+ pdm_build.chmod(0o755)
297
+
278
298
  def _collect_suite_dependencies(
279
299
  self,
280
300
  direct_dependencies: list[str],
@@ -464,21 +484,27 @@ class PythonPackageWorkdir(PythonWorkdir):
464
484
  git_push_tag(tag, cwd=cwd, remote=remote, inherit_stdio=True)
465
485
  return
466
486
 
467
- # Our own registry first, where the release counts: what installs read
468
- # (wex, the apps) and what the publication waits for. PyPI then only
469
- # mirrors it, and a refusal there no longer stops the suite.
470
- if self.get_gitlab_registry_url():
471
- self._publish_to_gitlab_registry(force=force)
472
- try:
473
- self._publish_to_pypi(force=force)
474
- except ShellCommandFailedException as exception:
475
- self.warning(
476
- f"PyPI refused {package_name} {version}, published on the GitLab "
477
- f"registry all the same: {exception}"
478
- )
479
- return
487
+ # Built once here: `pdm publish` would build again for each registry.
488
+ self._build_distributions()
489
+ try:
490
+ # Our own registry first, where the release counts: what installs
491
+ # read (wex, the apps) and what the publication waits for. PyPI
492
+ # then only mirrors it, and a refusal there no longer stops the
493
+ # suite.
494
+ if self.get_gitlab_registry_url():
495
+ self._publish_to_gitlab_registry(force=force)
496
+ try:
497
+ self._publish_to_pypi(force=force)
498
+ except ShellCommandFailedException as exception:
499
+ self.warning(
500
+ f"PyPI refused {package_name} {version}, published on the GitLab "
501
+ f"registry all the same: {exception}"
502
+ )
503
+ return
480
504
 
481
- self._publish_to_pypi(force=force)
505
+ self._publish_to_pypi(force=force)
506
+ finally:
507
+ self._clean_build_leftovers()
482
508
 
483
509
  def _publish_to_gitlab_registry(self, force: bool = False) -> None:
484
510
  import re
@@ -521,6 +547,7 @@ class PythonPackageWorkdir(PythonWorkdir):
521
547
  [
522
548
  "pdm",
523
549
  "publish",
550
+ "--no-build",
524
551
  "--repository",
525
552
  f"{api_url}/projects/{project}/packages/pypi",
526
553
  # GitLab authenticates the token alone; the name is required, not read.
@@ -557,7 +584,7 @@ class PythonPackageWorkdir(PythonWorkdir):
557
584
  ).get_str_or_none()
558
585
 
559
586
  self.subtitle("Publishing to PyPI")
560
- publish_cmd = ["pdm", "publish"]
587
+ publish_cmd = ["pdm", "publish", "--no-build"]
561
588
 
562
589
  username = repository_username or "__token__"
563
590
  password = repository_token or self.get_env_parameter_or_suite_fallback(