wexample-wex-addon-dev-python 8.1.1__tar.gz → 8.2.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.
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/PKG-INFO +6 -6
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/README.md +3 -3
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/pyproject.toml +3 -3
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/python_workdir.py +41 -18
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/check/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/check/mypy.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/check/pylint.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/check/pyright.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/check.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/format/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/format/black.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/format/isort.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/code/format.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/examples/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/examples/validate.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/commands/release/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/config_value/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/const/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/const/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/const/package.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/const/python.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/file/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/file/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/file/python_app_iml_file.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/helpers/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/helpers/pdm.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/middleware/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/py.typed +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/python_addon_manager.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/resources/.wex.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2 +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/app_service.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/commands/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/install.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/commands/service/setup.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/docker/.wex.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/docker-compose.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/entrypoint.sh +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.base +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/Dockerfile.develop +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/samples/docker/images/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/services/python/service.yml +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/mixin/__init__.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.0}/src/wexample_wex_addon_dev_python/workdir/python_package_workdir.py +0 -0
- {wexample_wex_addon_dev_python-8.1.1 → wexample_wex_addon_dev_python-8.2.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: 8.
|
|
3
|
+
Version: 8.2.0
|
|
4
4
|
Summary: Python dev addon for wex
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -15,8 +15,8 @@ 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-filestate-python>=6.
|
|
19
|
-
Requires-Dist: wexample-wex-addon-app>=16.
|
|
18
|
+
Requires-Dist: wexample-filestate-python>=6.5.0
|
|
19
|
+
Requires-Dist: wexample-wex-addon-app>=16.4.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: 8.
|
|
27
|
+
Version: 8.2.0
|
|
28
28
|
|
|
29
29
|
Python dev addon for wex
|
|
30
30
|
|
|
@@ -110,8 +110,8 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
110
110
|
- networkx:
|
|
111
111
|
- pylint:
|
|
112
112
|
- pyright:
|
|
113
|
-
- wexample-filestate-python: >=6.
|
|
114
|
-
- wexample-wex-addon-app: >=16.
|
|
113
|
+
- wexample-filestate-python: >=6.5.0
|
|
114
|
+
- wexample-wex-addon-app: >=16.4.0
|
|
115
115
|
|
|
116
116
|
## Versioning & Compatibility Policy
|
|
117
117
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# wex_addon_dev_python
|
|
2
2
|
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.2.0
|
|
4
4
|
|
|
5
5
|
Python dev addon for wex
|
|
6
6
|
|
|
@@ -86,8 +86,8 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
86
86
|
- networkx:
|
|
87
87
|
- pylint:
|
|
88
88
|
- pyright:
|
|
89
|
-
- wexample-filestate-python: >=6.
|
|
90
|
-
- wexample-wex-addon-app: >=16.
|
|
89
|
+
- wexample-filestate-python: >=6.5.0
|
|
90
|
+
- wexample-wex-addon-app: >=16.4.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 = "8.
|
|
9
|
+
version = "8.2.0"
|
|
10
10
|
description = "Python dev addon for wex"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "weeger", email = "contact@wexample.com" },
|
|
@@ -24,8 +24,8 @@ dependencies = [
|
|
|
24
24
|
"networkx",
|
|
25
25
|
"pylint",
|
|
26
26
|
"pyright",
|
|
27
|
-
"wexample-filestate-python>=6.
|
|
28
|
-
"wexample-wex-addon-app>=16.
|
|
27
|
+
"wexample-filestate-python>=6.5.0",
|
|
28
|
+
"wexample-wex-addon-app>=16.4.0",
|
|
29
29
|
]
|
|
30
30
|
|
|
31
31
|
[project.readme]
|
|
@@ -304,6 +304,10 @@ class PythonWorkdir(WithProfilingPythonWorkdirMixin, CodeBaseWorkdir):
|
|
|
304
304
|
def update_dependencies(self, dependencies_map: dict[str, str]) -> None:
|
|
305
305
|
import subprocess
|
|
306
306
|
|
|
307
|
+
from wexample_helpers.helpers.retryable_callback_manager import (
|
|
308
|
+
RetryableCallbackManager,
|
|
309
|
+
)
|
|
310
|
+
|
|
307
311
|
super().update_dependencies(dependencies_map)
|
|
308
312
|
|
|
309
313
|
requirements_path = self.get_path() / "requirements.txt"
|
|
@@ -311,25 +315,44 @@ class PythonWorkdir(WithProfilingPythonWorkdirMixin, CodeBaseWorkdir):
|
|
|
311
315
|
return
|
|
312
316
|
|
|
313
317
|
pyproject_path = self.get_path() / "pyproject.toml"
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
raise RuntimeError(
|
|
331
|
-
f"uv pip compile failed for {self.get_path()}:\n{result.stderr}"
|
|
318
|
+
|
|
319
|
+
def _run_uv_compile() -> None:
|
|
320
|
+
result = subprocess.run(
|
|
321
|
+
[
|
|
322
|
+
"uv",
|
|
323
|
+
"pip",
|
|
324
|
+
"compile",
|
|
325
|
+
str(pyproject_path),
|
|
326
|
+
"--output-file",
|
|
327
|
+
str(requirements_path),
|
|
328
|
+
"--python-version",
|
|
329
|
+
"3.11",
|
|
330
|
+
"--no-cache",
|
|
331
|
+
],
|
|
332
|
+
capture_output=True,
|
|
333
|
+
text=True,
|
|
332
334
|
)
|
|
335
|
+
if result.returncode != 0:
|
|
336
|
+
raise RuntimeError(
|
|
337
|
+
f"uv pip compile failed for {self.get_path()}:\n{result.stderr}"
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
# Right after a publish, PyPI's index can still serve a stale view of the
|
|
341
|
+
# registry, making uv conclude that the freshly-published version is
|
|
342
|
+
# "unsatisfiable". Retry a few times with backoff to absorb this race.
|
|
343
|
+
# Real dependency conflicts will still fail after retries.
|
|
344
|
+
RetryableCallbackManager(
|
|
345
|
+
callback=_run_uv_compile,
|
|
346
|
+
max_attempts=4,
|
|
347
|
+
backoff_base_seconds=4,
|
|
348
|
+
should_retry_callback=lambda exc, msg, attempt, max_a: (
|
|
349
|
+
"No solution found" in msg or "unsatisfiable" in msg
|
|
350
|
+
),
|
|
351
|
+
on_retry_callback=lambda attempt, max_a, delay, exc, msg: self.log(
|
|
352
|
+
f"uv pip compile reports unsatisfiable on attempt {attempt}/{max_a} "
|
|
353
|
+
f"(likely PyPI index propagation); retrying in {delay}s…"
|
|
354
|
+
),
|
|
355
|
+
).run()
|
|
333
356
|
|
|
334
357
|
def _create_init_children_factory(self) -> ChildrenFileFactoryOption:
|
|
335
358
|
from wexample_filestate.const.disk import DiskItemType
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|