wexample-wex-addon-dev-python 10.0.0__tar.gz → 10.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 (72) hide show
  1. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/PKG-INFO +10 -10
  2. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/README.md +5 -5
  3. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/pyproject.toml +5 -5
  4. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +12 -3
  5. wexample_wex_addon_dev_python-10.1.1/tests/helpers/__init__.py +0 -0
  6. wexample_wex_addon_dev_python-10.1.1/tests/helpers/test_pdm.py +68 -0
  7. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  8. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
  9. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  10. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  11. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  12. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  13. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  14. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  15. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  16. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  17. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  18. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  19. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  20. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  21. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  22. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  23. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  24. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  25. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/common/__init__.py +0 -0
  26. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +0 -0
  27. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  28. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
  29. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  30. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  31. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
  32. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  33. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  34. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/const/tags.py +0 -0
  35. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  36. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
  37. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  38. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
  39. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/helpers/__init__.py +0 -0
  40. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/helpers/pdm.py +0 -0
  41. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
  42. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py +0 -0
  43. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  44. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  45. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
  46. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  47. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  48. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  49. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  50. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
  51. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
  52. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
  53. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
  54. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
  55. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  56. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  57. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  58. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  59. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
  60. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
  61. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  62. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  63. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  64. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  65. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
  66. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  67. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
  68. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py +0 -0
  69. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  70. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  71. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +0 -0
  72. {wexample_wex_addon_dev_python-10.0.0 → wexample_wex_addon_dev_python-10.1.1}/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: 10.0.0
3
+ Version: 10.1.1
4
4
  Summary: Python dev addon for wex
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -15,10 +15,10 @@ Requires-Dist: griffe>=2.0.2
15
15
  Requires-Dist: networkx
16
16
  Requires-Dist: pylint
17
17
  Requires-Dist: pyright
18
- Requires-Dist: wexample-api>=6.3.0
19
- Requires-Dist: wexample-filestate-python>=6.8.0
20
- Requires-Dist: wexample-wex-addon-ai>=9.0.0
21
- Requires-Dist: wexample-wex-addon-app>=25.1.0
18
+ Requires-Dist: wexample-api>=6.4.0
19
+ Requires-Dist: wexample-filestate-python>=7.0.0
20
+ Requires-Dist: wexample-wex-addon-ai>=10.0.0
21
+ Requires-Dist: wexample-wex-addon-app>=25.2.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: 10.0.0
29
+ Version: 10.1.1
30
30
 
31
31
  Python dev addon for wex
32
32
 
@@ -112,10 +112,10 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
112
112
  - networkx:
113
113
  - pylint:
114
114
  - pyright:
115
- - wexample-api: >=6.3.0
116
- - wexample-filestate-python: >=6.8.0
117
- - wexample-wex-addon-ai: >=9.0.0
118
- - wexample-wex-addon-app: >=25.1.0
115
+ - wexample-api: >=6.4.0
116
+ - wexample-filestate-python: >=7.0.0
117
+ - wexample-wex-addon-ai: >=10.0.0
118
+ - wexample-wex-addon-app: >=25.2.0
119
119
 
120
120
  ## Versioning & Compatibility Policy
121
121
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 10.0.0
3
+ Version: 10.1.1
4
4
 
5
5
  Python dev addon for wex
6
6
 
@@ -86,10 +86,10 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
86
86
  - networkx:
87
87
  - pylint:
88
88
  - pyright:
89
- - wexample-api: >=6.3.0
90
- - wexample-filestate-python: >=6.8.0
91
- - wexample-wex-addon-ai: >=9.0.0
92
- - wexample-wex-addon-app: >=25.1.0
89
+ - wexample-api: >=6.4.0
90
+ - wexample-filestate-python: >=7.0.0
91
+ - wexample-wex-addon-ai: >=10.0.0
92
+ - wexample-wex-addon-app: >=25.2.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 = "10.0.0"
9
+ version = "10.1.1"
10
10
  description = "Python dev addon for wex"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -24,10 +24,10 @@ dependencies = [
24
24
  "networkx",
25
25
  "pylint",
26
26
  "pyright",
27
- "wexample-api>=6.3.0",
28
- "wexample-filestate-python>=6.8.0",
29
- "wexample-wex-addon-ai>=9.0.0",
30
- "wexample-wex-addon-app>=25.1.0",
27
+ "wexample-api>=6.4.0",
28
+ "wexample-filestate-python>=7.0.0",
29
+ "wexample-wex-addon-ai>=10.0.0",
30
+ "wexample-wex-addon-app>=25.2.0",
31
31
  ]
32
32
 
33
33
  [project.readme]
@@ -306,9 +306,18 @@ class PythonWorkdir(
306
306
  format = format or PYTHON_PYTEST_COV_FORMAT_JSON
307
307
  self.shell_run_for_app(cmd=self.test_get_command(format=format))
308
308
 
309
- json_file = JsonFile.create_from_path(
310
- path=self.get_path() / PYTHON_FILE_PYTEST_COVERAGE_JSON
311
- )
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)
312
321
  totals = json_file.read_config().search("totals", default={}).get_dict()
313
322
 
314
323
  from wexample_helpers_git.helpers.git import git_get_current_commit_hash
@@ -0,0 +1,68 @@
1
+ from __future__ import annotations
2
+
3
+ import pathlib
4
+ import shutil
5
+ from pathlib import Path
6
+
7
+ import pytest
8
+
9
+
10
+ def test_apply_pdm_bin_dir_noop_when_already_present(
11
+ monkeypatch: pytest.MonkeyPatch,
12
+ ) -> None:
13
+ from wexample_wex_addon_dev_python.helpers.pdm import apply_pdm_bin_dir
14
+
15
+ monkeypatch.setenv("PATH", "/opt/bin:/usr/bin")
16
+ apply_pdm_bin_dir("/opt/bin")
17
+
18
+ import os
19
+
20
+ assert os.environ["PATH"] == "/opt/bin:/usr/bin"
21
+
22
+
23
+ def test_apply_pdm_bin_dir_prepends_when_absent(
24
+ monkeypatch: pytest.MonkeyPatch,
25
+ ) -> None:
26
+ from wexample_wex_addon_dev_python.helpers.pdm import apply_pdm_bin_dir
27
+
28
+ monkeypatch.setenv("PATH", "/usr/bin")
29
+ apply_pdm_bin_dir("/opt/bin")
30
+
31
+ import os
32
+
33
+ assert os.environ["PATH"] == "/opt/bin:/usr/bin"
34
+
35
+
36
+ def test_detect_pdm_bin_dir_returns_local_bin_when_present(
37
+ monkeypatch: pytest.MonkeyPatch, tmp_path: Path
38
+ ) -> None:
39
+ from wexample_wex_addon_dev_python.helpers.pdm import detect_pdm_bin_dir
40
+
41
+ monkeypatch.setattr(shutil, "which", lambda _: None)
42
+ monkeypatch.setattr(pathlib.Path, "home", classmethod(lambda cls: tmp_path))
43
+ local_bin = tmp_path / ".local" / "bin"
44
+ local_bin.mkdir(parents=True)
45
+ (local_bin / "pdm").write_text("#!/bin/sh\n")
46
+
47
+ assert detect_pdm_bin_dir() == str(local_bin)
48
+
49
+
50
+ def test_detect_pdm_bin_dir_returns_none_when_nowhere(
51
+ monkeypatch: pytest.MonkeyPatch, tmp_path: Path
52
+ ) -> None:
53
+ from wexample_wex_addon_dev_python.helpers.pdm import detect_pdm_bin_dir
54
+
55
+ monkeypatch.setattr(shutil, "which", lambda _: None)
56
+ monkeypatch.setattr(pathlib.Path, "home", classmethod(lambda cls: tmp_path))
57
+
58
+ assert detect_pdm_bin_dir() is None
59
+
60
+
61
+ def test_detect_pdm_bin_dir_returns_none_when_pdm_on_path(
62
+ monkeypatch: pytest.MonkeyPatch,
63
+ ) -> None:
64
+ from wexample_wex_addon_dev_python.helpers.pdm import detect_pdm_bin_dir
65
+
66
+ monkeypatch.setattr(shutil, "which", lambda _: "/usr/bin/pdm")
67
+
68
+ assert detect_pdm_bin_dir() is None