wexample-wex-addon-dev-python 11.0.0__tar.gz → 11.1.1__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 (82) hide show
  1. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/PKG-INFO +4 -4
  2. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/README.md +2 -2
  3. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/pyproject.toml +2 -2
  4. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +19 -6
  5. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +14 -0
  6. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  7. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
  8. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  9. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  10. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  11. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  12. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  13. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  14. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  15. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  16. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  17. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  18. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  19. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/code/rename.py +0 -0
  20. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  21. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  22. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  23. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  24. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  25. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/common/__init__.py +0 -0
  26. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +0 -0
  27. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  28. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
  29. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  30. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  31. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
  32. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  33. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  34. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/const/tags.py +0 -0
  35. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  36. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
  37. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  38. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/helpers/__init__.py +0 -0
  39. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/helpers/pdm.py +0 -0
  40. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
  41. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py +0 -0
  42. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  43. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  44. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
  45. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/refactor/__init__.py +0 -0
  46. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/refactor/python_package_rename_handler.py +0 -0
  47. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/refactor/symbol_kind.py +0 -0
  48. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  49. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  50. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  51. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  52. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/selection/__init__.py +0 -0
  53. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py +0 -0
  54. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/selection/python_code_performance_selection.py +0 -0
  55. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
  56. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
  57. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
  58. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
  59. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
  60. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  61. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  62. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  63. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  64. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
  65. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
  66. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  67. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  68. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  69. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  70. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
  71. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  72. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
  73. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py +0 -0
  74. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  75. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  76. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +0 -0
  77. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
  78. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/tests/helpers/__init__.py +0 -0
  79. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/tests/helpers/test_pdm.py +0 -0
  80. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/tests/unit/__init__.py +0 -0
  81. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/tests/unit/helpers/__init__.py +0 -0
  82. {wexample_wex_addon_dev_python-11.0.0 → wexample_wex_addon_dev_python-11.1.1}/tests/unit/helpers/test_pdm.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-python
3
- Version: 11.0.0
3
+ Version: 11.1.1
4
4
  Summary: Python dev addon for wex
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -16,7 +16,7 @@ Requires-Dist: networkx
16
16
  Requires-Dist: pylint
17
17
  Requires-Dist: pyright
18
18
  Requires-Dist: wexample-api>=6.6.0
19
- Requires-Dist: wexample-filestate-python>=8.1.0
19
+ Requires-Dist: wexample-filestate-python>=8.2.0
20
20
  Requires-Dist: wexample-wex-addon-ai>=11.1.0
21
21
  Requires-Dist: wexample-wex-addon-app>=25.4.0
22
22
  Provides-Extra: dev
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
26
26
 
27
27
  # wex_addon_dev_python
28
28
 
29
- Version: 11.0.0
29
+ Version: 11.1.1
30
30
 
31
31
  Python dev addon for wex
32
32
 
@@ -113,7 +113,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
113
113
  - pylint:
114
114
  - pyright:
115
115
  - wexample-api: >=6.6.0
116
- - wexample-filestate-python: >=8.1.0
116
+ - wexample-filestate-python: >=8.2.0
117
117
  - wexample-wex-addon-ai: >=11.1.0
118
118
  - wexample-wex-addon-app: >=25.4.0
119
119
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 11.0.0
3
+ Version: 11.1.1
4
4
 
5
5
  Python dev addon for wex
6
6
 
@@ -87,7 +87,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
87
87
  - pylint:
88
88
  - pyright:
89
89
  - wexample-api: >=6.6.0
90
- - wexample-filestate-python: >=8.1.0
90
+ - wexample-filestate-python: >=8.2.0
91
91
  - wexample-wex-addon-ai: >=11.1.0
92
92
  - wexample-wex-addon-app: >=25.4.0
93
93
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-dev-python"
9
- version = "11.0.0"
9
+ version = "11.1.1"
10
10
  description = "Python dev addon for wex"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -25,7 +25,7 @@ dependencies = [
25
25
  "pylint",
26
26
  "pyright",
27
27
  "wexample-api>=6.6.0",
28
- "wexample-filestate-python>=8.1.0",
28
+ "wexample-filestate-python>=8.2.0",
29
29
  "wexample-wex-addon-ai>=11.1.0",
30
30
  "wexample-wex-addon-app>=25.4.0",
31
31
  ]
@@ -79,16 +79,23 @@ class PythonPyprojectTomlFile(AppDependenciesConfigFileMixin, TomlFile):
79
79
  content = content or self.read_parsed()
80
80
 
81
81
  workdir = self.get_parent_item()
82
- import_name = workdir.get_package_import_name()
82
+ # `src_import_name` is None for non-distributable projects (e.g. a
83
+ # CLI app whose `src/` contains arbitrary subdirs rather than a
84
+ # single `{vendor}_{name}/` module). The packaging-distribution
85
+ # enforces below consult it and become no-ops when None — they
86
+ # would otherwise inject `packages=[{include: '<name>', from: 'src'}]`
87
+ # and `coverage.source = ['<name>']` referencing a non-existent
88
+ # module. Source of truth lives on the workdir, not here.
89
+ src_import_name = workdir.get_src_import_name()
83
90
  project_name = workdir.get_package_name()
84
91
  project_version = workdir.get_setup_version()
85
92
 
86
93
  self._enforce_build_system(content)
87
- self._enforce_pdm_build(content, import_name)
94
+ self._enforce_pdm_build(content, src_import_name)
88
95
  self._enforce_project_metadata(content, project_name, project_version)
89
96
  self._normalize_dependencies(content)
90
97
  self._ensure_dev_dependencies(content)
91
- self._enforce_pytest_coverage_config(content, import_name)
98
+ self._enforce_pytest_coverage_config(content, src_import_name)
92
99
  self._reorder_toml_sections(content)
93
100
 
94
101
  result = dumps(content)
@@ -176,6 +183,13 @@ class PythonPyprojectTomlFile(AppDependenciesConfigFileMixin, TomlFile):
176
183
  build_tbl["build-backend"] = "pdm.backend"
177
184
 
178
185
  def _enforce_pdm_build(self, content: dict, import_name: str | None) -> None:
186
+ # Pure packaging-distribution config — when the workdir reports no
187
+ # `src/` module (None), this whole section has nothing meaningful
188
+ # to write: there is no package to declare, no setuptools find
189
+ # scope to define. Skip wholesale.
190
+ if not import_name:
191
+ return
192
+
179
193
  from wexample_filestate_python.helpers.toml import toml_ensure_table
180
194
 
181
195
  tool_tbl, _ = toml_ensure_table(content, ["tool"])
@@ -184,9 +198,8 @@ class PythonPyprojectTomlFile(AppDependenciesConfigFileMixin, TomlFile):
184
198
 
185
199
  pdm_tbl["distribution"] = True
186
200
  build_pdm_tbl["package-dir"] = "src"
187
- if import_name:
188
- build_pdm_tbl["packages"] = [{"include": import_name, "from": "src"}]
189
- build_pdm_tbl.pop("includes", None)
201
+ build_pdm_tbl["packages"] = [{"include": import_name, "from": "src"}]
202
+ build_pdm_tbl.pop("includes", None)
190
203
 
191
204
  # Add setuptools exclusion of testing package
192
205
  setuptools_tbl, _ = toml_ensure_table(tool_tbl, ["setuptools"])
@@ -137,6 +137,20 @@ class PythonWorkdir(
137
137
  def get_python_path(self) -> Path:
138
138
  return self.get_venv_bin_path() / "python"
139
139
 
140
+ def get_src_import_name(self) -> str | None:
141
+ """Name of the Python module under `src/` for distribution-time
142
+ wiring (pyproject `tool.pdm.build.packages`, `tool.coverage.run.source`,
143
+ `tool.setuptools.packages.find.exclude`).
144
+
145
+ Defaults to the package import name (standard `src/{vendor}_{name}/`
146
+ layout). Returns None for projects that don't ship a single
147
+ importable module — typically CLI apps whose code lives directly
148
+ under `src/` in arbitrary subdirectories. Pyproject enforces that
149
+ target packaging concerns then skip themselves rather than
150
+ injecting a non-existent module name.
151
+ """
152
+ return self.get_package_import_name()
153
+
140
154
  def get_venv_bin_path(self) -> Path:
141
155
  return self.get_venv_path() / "bin"
142
156