wexample-wex-addon-dev-python 7.9.0__tar.gz → 8.0.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 (67) hide show
  1. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/PKG-INFO +4 -4
  2. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/README.md +2 -2
  3. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/pyproject.toml +2 -2
  4. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/middleware → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/helpers}/__init__.py +0 -0
  5. wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/helpers/pdm.py +20 -0
  6. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/middleware/__pycache__}/__init__.py +0 -0
  7. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/python_addon_manager.py +15 -0
  8. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/app_service.py +1 -1
  9. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/workdir → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python/samples/docker/images}/__init__.py +0 -0
  10. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/workdir/mixin → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/workdir/__pycache__}/__init__.py +0 -0
  11. wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
  12. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +2 -34
  13. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
  14. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
  15. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
  16. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
  17. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
  18. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
  19. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
  20. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
  21. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
  22. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
  23. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
  24. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
  25. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
  26. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
  27. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
  28. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
  29. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
  30. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
  31. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
  32. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
  33. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
  34. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
  35. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
  36. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
  37. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
  38. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
  39. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
  40. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
  41. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
  42. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/middleware/__pycache__ → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/middleware}/__init__.py +0 -0
  43. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
  44. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/py.typed +0 -0
  45. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
  46. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
  47. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
  48. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
  49. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services}/__init__.py +0 -0
  50. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python/commands → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python}/__init__.py +0 -0
  51. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python/commands/service → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python/commands}/__init__.py +0 -0
  52. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python/samples → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python/commands/service}/__init__.py +0 -0
  53. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
  54. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
  55. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
  56. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
  57. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python/samples/docker → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python/samples}/__init__.py +0 -0
  58. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/services/python/samples/docker/images → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/services/python/samples/docker}/__init__.py +0 -0
  59. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
  60. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
  61. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
  62. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
  63. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
  64. {wexample_wex_addon_dev_python-7.9.0/src/wexample_wex_addon_dev_python/workdir/__pycache__ → wexample_wex_addon_dev_python-8.0.1/src/wexample_wex_addon_dev_python/workdir}/__init__.py +0 -0
  65. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
  66. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +0 -0
  67. {wexample_wex_addon_dev_python-7.9.0 → wexample_wex_addon_dev_python-8.0.1}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-python
3
- Version: 7.9.0
3
+ Version: 8.0.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-filestate-python>=6.4.0
19
- Requires-Dist: wexample-wex-addon-app>=14.1.0
19
+ Requires-Dist: wexample-wex-addon-app>=15.1.0
20
20
  Provides-Extra: dev
21
21
  Requires-Dist: pytest; extra == "dev"
22
22
  Requires-Dist: pytest-cov; extra == "dev"
@@ -24,7 +24,7 @@ Description-Content-Type: text/markdown
24
24
 
25
25
  # wex_addon_dev_python
26
26
 
27
- Version: 7.9.0
27
+ Version: 8.0.1
28
28
 
29
29
  Python dev addon for wex
30
30
 
@@ -111,7 +111,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
111
111
  - pylint:
112
112
  - pyright:
113
113
  - wexample-filestate-python: >=6.4.0
114
- - wexample-wex-addon-app: >=14.1.0
114
+ - wexample-wex-addon-app: >=15.1.0
115
115
 
116
116
  ## Versioning & Compatibility Policy
117
117
 
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_python
2
2
 
3
- Version: 7.9.0
3
+ Version: 8.0.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-filestate-python: >=6.4.0
90
- - wexample-wex-addon-app: >=14.1.0
90
+ - wexample-wex-addon-app: >=15.1.0
91
91
 
92
92
  ## Versioning & Compatibility Policy
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 = "7.9.0"
9
+ version = "8.0.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-filestate-python>=6.4.0",
28
- "wexample-wex-addon-app>=14.1.0",
28
+ "wexample-wex-addon-app>=15.1.0",
29
29
  ]
30
30
 
31
31
  [project.readme]
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+
3
+
4
+ def apply_pdm_bin_dir(value: str) -> None:
5
+ import os
6
+
7
+ if value not in os.environ.get("PATH", ""):
8
+ os.environ["PATH"] = f"{value}:{os.environ.get('PATH', '')}"
9
+
10
+
11
+ def detect_pdm_bin_dir() -> str | None:
12
+ import pathlib
13
+ import shutil
14
+
15
+ if shutil.which("pdm"):
16
+ return None
17
+ local_bin = pathlib.Path.home() / ".local" / "bin"
18
+ if (local_bin / "pdm").is_file():
19
+ return str(local_bin)
20
+ return None
@@ -9,6 +9,21 @@ if TYPE_CHECKING:
9
9
 
10
10
 
11
11
  class PythonAddonManager(AbstractAddonManager):
12
+ def get_local_configurable_keys(self) -> list[dict]:
13
+ from wexample_wex_addon_dev_python.helpers.pdm import (
14
+ apply_pdm_bin_dir,
15
+ detect_pdm_bin_dir,
16
+ )
17
+
18
+ return [
19
+ {
20
+ "key": "PDM_BIN_DIR",
21
+ "description": "Directory containing pdm — required to publish Python packages",
22
+ "detect": detect_pdm_bin_dir,
23
+ "on_apply": apply_pdm_bin_dir,
24
+ }
25
+ ]
26
+
12
27
  def get_middlewares_classes(self) -> list[type[AbstractMiddleware]]:
13
28
  from wexample_wex_addon_dev_python.middleware.each_python_file_middleware import (
14
29
  EachPythonFileMiddleware,
@@ -45,7 +45,7 @@ if __name__ == "__main__":
45
45
 
46
46
 
47
47
  class AppService(BaseAppService):
48
- def get_workdir_contribution(self) -> dict:
48
+ def get_workdir_contribution(self, workdir) -> dict:
49
49
  from wexample_filestate.const.disk import DiskItemType
50
50
 
51
51
  return {
@@ -26,8 +26,6 @@ class PythonPackageWorkdir(PythonWorkdir):
26
26
  _project_info_cache = None
27
27
 
28
28
  def check_publish_prerequisites(self) -> None:
29
- import os
30
- import pathlib
31
29
  import shutil
32
30
 
33
31
  super().check_publish_prerequisites()
@@ -42,40 +40,10 @@ class PythonPackageWorkdir(PythonWorkdir):
42
40
  f"Run: sudo rm -rf '{pdm_build_dir}'"
43
41
  )
44
42
 
45
- # os.environ.get() intentional: PDM_BIN_DIR may not be in every workdir's
46
- # .wex/local/env.yml — get_env_parameter() raises KeyNotFoundError if absent.
47
- saved_pdm_dir = os.environ.get("PDM_BIN_DIR")
48
- if saved_pdm_dir:
49
- current = os.environ.get("PATH", "")
50
- if saved_pdm_dir not in current:
51
- os.environ["PATH"] = f"{saved_pdm_dir}:{current}"
52
-
53
- if shutil.which("pdm"):
54
- return
55
-
56
- self.warning("'pdm' not found in PATH — required to publish Python packages.")
57
-
58
- local_bin = pathlib.Path.home() / ".local" / "bin"
59
- suggestion = str(local_bin) if (local_bin / "pdm").is_file() else None
60
-
61
- response = self.io.input(
62
- question="Enter the directory containing pdm (will be prepended to PATH):",
63
- default_value=suggestion,
64
- ).get_value()
65
-
66
- if not response:
67
- raise RuntimeError(
68
- "'pdm' not configured. Install it with: pipx install pdm"
69
- )
70
-
71
- os.environ["PATH"] = f"{response}:{os.environ.get('PATH', '')}"
72
- self._persist_env_value("PDM_BIN_DIR", response)
73
- self.info(f"Added {response!r} to PATH — saved to .wex/local/env.yml")
74
-
75
43
  if not shutil.which("pdm"):
76
44
  raise RuntimeError(
77
- f"'pdm' still not found after adding {response!r} to PATH. "
78
- "Check that pdm is installed in that directory."
45
+ "'pdm' not found in PATH.\n"
46
+ "Install: pipx install pdm then run: wex core::env/configure"
79
47
  )
80
48
 
81
49
  def prepare_value(self, raw_value: DictConfig | None = None) -> DictConfig: