wexample-wex-addon-dev-python 9.0.0__tar.gz → 10.1.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 (70) hide show
  1. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/PKG-INFO +4 -4
  2. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/README.md +2 -2
  3. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/pyproject.toml +2 -2
  4. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +17 -23
  5. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  6. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
  7. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  8. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  9. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  10. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  11. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  12. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  13. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  14. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  15. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  16. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  17. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  18. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  19. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  20. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  21. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  22. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  23. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/common/__init__.py +0 -0
  24. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +0 -0
  25. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  26. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
  27. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  28. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  29. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
  30. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  31. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  32. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/const/tags.py +0 -0
  33. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  34. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
  35. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  36. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
  37. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/helpers/__init__.py +0 -0
  38. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/helpers/pdm.py +0 -0
  39. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
  40. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py +0 -0
  41. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  42. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  43. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
  44. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  45. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  46. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  47. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  48. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
  49. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
  50. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
  51. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
  52. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
  53. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  54. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  55. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  56. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  57. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
  58. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
  59. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  60. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  61. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  62. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  63. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
  64. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  65. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
  66. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py +0 -0
  67. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  68. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  69. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +0 -0
  70. {wexample_wex_addon_dev_python-9.0.0 → wexample_wex_addon_dev_python-10.1.0}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-python
3
- Version: 9.0.0
3
+ Version: 10.1.0
4
4
  Summary: Python dev addon for wex
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -18,7 +18,7 @@ Requires-Dist: pyright
18
18
  Requires-Dist: wexample-api>=6.3.0
19
19
  Requires-Dist: wexample-filestate-python>=6.8.0
20
20
  Requires-Dist: wexample-wex-addon-ai>=9.0.0
21
- Requires-Dist: wexample-wex-addon-app>=25.0.0
21
+ Requires-Dist: wexample-wex-addon-app>=25.1.0
22
22
  Provides-Extra: dev
23
23
  Requires-Dist: pytest; extra == "dev"
24
24
  Requires-Dist: pytest-cov; extra == "dev"
@@ -26,7 +26,7 @@ Description-Content-Type: text/markdown
26
26
 
27
27
  # wex_addon_dev_python
28
28
 
29
- Version: 9.0.0
29
+ Version: 10.1.0
30
30
 
31
31
  Python dev addon for wex
32
32
 
@@ -115,7 +115,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
115
115
  - wexample-api: >=6.3.0
116
116
  - wexample-filestate-python: >=6.8.0
117
117
  - wexample-wex-addon-ai: >=9.0.0
118
- - wexample-wex-addon-app: >=25.0.0
118
+ - wexample-wex-addon-app: >=25.1.0
119
119
 
120
120
  ## Versioning & Compatibility Policy
121
121
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 9.0.0
3
+ Version: 10.1.0
4
4
 
5
5
  Python dev addon for wex
6
6
 
@@ -89,7 +89,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
89
89
  - wexample-api: >=6.3.0
90
90
  - wexample-filestate-python: >=6.8.0
91
91
  - wexample-wex-addon-ai: >=9.0.0
92
- - wexample-wex-addon-app: >=25.0.0
92
+ - wexample-wex-addon-app: >=25.1.0
93
93
 
94
94
  ## Versioning & Compatibility Policy
95
95
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-dev-python"
9
- version = "9.0.0"
9
+ version = "10.1.0"
10
10
  description = "Python dev addon for wex"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -27,7 +27,7 @@ dependencies = [
27
27
  "wexample-api>=6.3.0",
28
28
  "wexample-filestate-python>=6.8.0",
29
29
  "wexample-wex-addon-ai>=9.0.0",
30
- "wexample-wex-addon-app>=25.0.0",
30
+ "wexample-wex-addon-app>=25.1.0",
31
31
  ]
32
32
 
33
33
  [project.readme]
@@ -156,21 +156,6 @@ class PythonWorkdir(
156
156
  return self.get_path() / ".venv"
157
157
  return Path(venv_path_config.get_str())
158
158
 
159
- def has_coverage_changes_since_last_report(self) -> bool:
160
- """Return True if coverage has changed since last saved report."""
161
- last_report = (
162
- self.app_workdir.get_config()
163
- .search("test.coverage.last_report")
164
- .get_dict_or_default()
165
- )
166
-
167
- if not last_report:
168
- return True
169
-
170
- current_coverage = self._run_coverage()
171
-
172
- return current_coverage != last_report.get("percent")
173
-
174
159
  def has_tests(self) -> bool:
175
160
  # The tests/ directory itself is filestate-managed scaffolding and
176
161
  # exists for every Python package; only actual test files count.
@@ -321,17 +306,27 @@ class PythonWorkdir(
321
306
  format = format or PYTHON_PYTEST_COV_FORMAT_JSON
322
307
  self.shell_run_for_app(cmd=self.test_get_command(format=format))
323
308
 
324
- json_file = JsonFile.create_from_path(
325
- path=self.get_path() / PYTHON_FILE_PYTEST_COVERAGE_JSON
326
- )
309
+ # pytest-cov writes no report at all when nothing was measured
310
+ # (e.g. tests that never import the covered module) a legitimate
311
+ # outcome it signals with a warning, not a failure.
312
+ json_path = self.get_path() / PYTHON_FILE_PYTEST_COVERAGE_JSON
313
+ if not json_path.exists():
314
+ self.warning(
315
+ "Tests passed but coverage collected no data "
316
+ "(covered module never imported); no report stored."
317
+ )
318
+ return
319
+
320
+ json_file = JsonFile.create_from_path(path=json_path)
327
321
  totals = json_file.read_config().search("totals", default={}).get_dict()
328
322
 
329
323
  from wexample_helpers_git.helpers.git import git_get_current_commit_hash
330
324
 
331
- config_file = self.get_config_file()
332
- config = config_file.read_config()
333
- config.set_by_path(
334
- "test.coverage.last_report",
325
+ # Derived state, not configuration: lives in .wex/local/ (untracked)
326
+ # so test runs never dirty the repository.
327
+ self.set_local_data_value(
328
+ "test",
329
+ "coverage_last_report",
335
330
  {
336
331
  "commit_hash": git_get_current_commit_hash(cwd=self.get_path()),
337
332
  "covered": totals.get("covered_lines", 0),
@@ -341,7 +336,6 @@ class PythonWorkdir(
341
336
  "total": totals.get("num_statements", 0),
342
337
  },
343
338
  )
344
- config_file.write_config()
345
339
 
346
340
  if format == PYTHON_PYTEST_COV_FORMAT_HTML:
347
341
  report_path = self.get_path() / PYTHON_PYTEST_COV_REPORT_DIR / "index.html"