wexample-wex-addon-dev-python 8.8.1__py3-none-any.whl → 8.9.0__py3-none-any.whl
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/commands/code/check.py +11 -0
- wexample_wex_addon_dev_python/commands/code/format.py +14 -1
- wexample_wex_addon_dev_python/commands/examples/validate.py +11 -1
- wexample_wex_addon_dev_python/common/__init__.py +0 -0
- wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +52 -0
- wexample_wex_addon_dev_python/const/tags.py +12 -0
- wexample_wex_addon_dev_python/services/python/commands/service/install.py +11 -0
- wexample_wex_addon_dev_python/services/python/commands/service/setup.py +12 -0
- wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +2 -0
- wexample_wex_addon_dev_python/workdir/python_package_workdir.py +19 -28
- wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +2 -0
- wexample_wex_addon_dev_python/workdir/python_workdir.py +10 -1
- {wexample_wex_addon_dev_python-8.8.1.dist-info → wexample_wex_addon_dev_python-8.9.0.dist-info}/METADATA +8 -4
- {wexample_wex_addon_dev_python-8.8.1.dist-info → wexample_wex_addon_dev_python-8.9.0.dist-info}/RECORD +16 -13
- {wexample_wex_addon_dev_python-8.8.1.dist-info → wexample_wex_addon_dev_python-8.9.0.dist-info}/WHEEL +1 -1
- {wexample_wex_addon_dev_python-8.8.1.dist-info → wexample_wex_addon_dev_python-8.9.0.dist-info}/entry_points.txt +0 -0
|
@@ -6,12 +6,15 @@ from wexample_cli.const.middleware import (
|
|
|
6
6
|
MIDDLEWARE_OPTION_VALUE_ALLWAYS,
|
|
7
7
|
MIDDLEWARE_OPTION_VALUE_OPTIONAL,
|
|
8
8
|
)
|
|
9
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
9
10
|
from wexample_cli.decorator.command import command
|
|
10
11
|
from wexample_cli.decorator.middleware import middleware
|
|
11
12
|
from wexample_cli.decorator.option import option
|
|
12
13
|
from wexample_cli.decorator.option_stop_on_failure import option_stop_on_failure
|
|
13
14
|
from wexample_wex_core.const.globals import COMMAND_TYPE_ADDON
|
|
14
15
|
|
|
16
|
+
from wexample_wex_addon_dev_python.const.tags import DomainTag
|
|
17
|
+
|
|
15
18
|
if TYPE_CHECKING:
|
|
16
19
|
from wexample_cli.context.execution_context import ExecutionContext
|
|
17
20
|
|
|
@@ -36,6 +39,14 @@ if TYPE_CHECKING:
|
|
|
36
39
|
type=COMMAND_TYPE_ADDON,
|
|
37
40
|
description="Check python code on every file: "
|
|
38
41
|
"python::code/check --file ../../pip/wex-core/wexample_wex_core/ -sof",
|
|
42
|
+
tags=[
|
|
43
|
+
DomainTag.LANGUAGE_PYTHON,
|
|
44
|
+
DomainTag.LINT,
|
|
45
|
+
EffectTag.READ_ONLY,
|
|
46
|
+
AudienceTag.AGENT_SAFE,
|
|
47
|
+
ScopeTag.LOCAL,
|
|
48
|
+
ScopeTag.PACKAGE,
|
|
49
|
+
],
|
|
39
50
|
)
|
|
40
51
|
def python__code__check(
|
|
41
52
|
context: ExecutionContext,
|
|
@@ -2,11 +2,14 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
5
6
|
from wexample_cli.decorator.command import command
|
|
6
7
|
from wexample_cli.decorator.middleware import middleware
|
|
7
8
|
from wexample_cli.decorator.option import option
|
|
8
9
|
from wexample_wex_core.const.globals import COMMAND_TYPE_ADDON
|
|
9
10
|
|
|
11
|
+
from wexample_wex_addon_dev_python.const.tags import DomainTag
|
|
12
|
+
|
|
10
13
|
if TYPE_CHECKING:
|
|
11
14
|
from wexample_wex_core.common.kernel import Kernel
|
|
12
15
|
|
|
@@ -27,7 +30,17 @@ if TYPE_CHECKING:
|
|
|
27
30
|
@middleware(
|
|
28
31
|
name="each_python_file", should_exist=True, expand_glob=True, recursive=True
|
|
29
32
|
)
|
|
30
|
-
@command(
|
|
33
|
+
@command(
|
|
34
|
+
type=COMMAND_TYPE_ADDON,
|
|
35
|
+
tags=[
|
|
36
|
+
DomainTag.FORMAT,
|
|
37
|
+
DomainTag.LANGUAGE_PYTHON,
|
|
38
|
+
EffectTag.WRITE,
|
|
39
|
+
AudienceTag.AGENT_SAFE,
|
|
40
|
+
ScopeTag.LOCAL,
|
|
41
|
+
ScopeTag.PACKAGE,
|
|
42
|
+
],
|
|
43
|
+
)
|
|
31
44
|
def python__code__format(
|
|
32
45
|
kernel: Kernel,
|
|
33
46
|
file: str,
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
5
6
|
from wexample_cli.decorator.command import command
|
|
6
7
|
from wexample_wex_core.const.globals import COMMAND_TYPE_ADDON
|
|
7
8
|
|
|
@@ -9,7 +10,16 @@ if TYPE_CHECKING:
|
|
|
9
10
|
from wexample_cli.context.execution_context import ExecutionContext
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
@command(
|
|
13
|
+
@command(
|
|
14
|
+
type=COMMAND_TYPE_ADDON,
|
|
15
|
+
description="Check python code on every file.",
|
|
16
|
+
tags=[
|
|
17
|
+
EffectTag.READ_ONLY,
|
|
18
|
+
AudienceTag.AGENT_SAFE,
|
|
19
|
+
ScopeTag.LOCAL,
|
|
20
|
+
ScopeTag.PACKAGE,
|
|
21
|
+
],
|
|
22
|
+
)
|
|
13
23
|
def python__examples__validate(
|
|
14
24
|
context: ExecutionContext,
|
|
15
25
|
) -> None:
|
|
File without changes
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from wexample_api.common.abstract_gateway import AbstractGateway
|
|
4
|
+
from wexample_helpers.classes.field import public_field
|
|
5
|
+
from wexample_helpers.decorator.base_class import base_class
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@base_class
|
|
9
|
+
class PypiRegistryGateway(AbstractGateway):
|
|
10
|
+
"""Thin HTTP gateway over the PyPI Simple index (PEP 503).
|
|
11
|
+
|
|
12
|
+
Targets public PyPI (`https://pypi.org`) and private indexes that
|
|
13
|
+
expose the same `/simple/<package>/` layout (e.g. GitLab Package
|
|
14
|
+
Registry). Optional Basic auth is wired via `username` + `token`
|
|
15
|
+
(use `__token__` as username for token-based auth).
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
token: str | None = public_field(
|
|
19
|
+
default=None,
|
|
20
|
+
description="API token paired with `username` for Basic auth.",
|
|
21
|
+
)
|
|
22
|
+
username: str | None = public_field(
|
|
23
|
+
default=None,
|
|
24
|
+
description="Username for Basic auth. Use '__token__' for token-based auth.",
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
def __attrs_post_init__(self) -> None:
|
|
28
|
+
super().__attrs_post_init__()
|
|
29
|
+
if self.token:
|
|
30
|
+
import base64
|
|
31
|
+
|
|
32
|
+
credentials = base64.b64encode(
|
|
33
|
+
f"{self.username or '__token__'}:{self.token}".encode()
|
|
34
|
+
).decode()
|
|
35
|
+
self.default_headers["Authorization"] = f"Basic {credentials}"
|
|
36
|
+
|
|
37
|
+
def has_version(self, package: str, version: str) -> bool:
|
|
38
|
+
"""Return True iff `package==version` is published on this index.
|
|
39
|
+
|
|
40
|
+
Uses the PEP 503 Simple index and matches the version string against
|
|
41
|
+
the HTML body. Returns False on 404 (unknown package, or version not
|
|
42
|
+
yet propagated through the registry's CDN).
|
|
43
|
+
"""
|
|
44
|
+
response = self.make_request(
|
|
45
|
+
endpoint=f"simple/{package}/",
|
|
46
|
+
expected_status_codes=[200, 404],
|
|
47
|
+
fatal_if_unexpected=False,
|
|
48
|
+
quiet=True,
|
|
49
|
+
)
|
|
50
|
+
if response is None or response.status_code != 200:
|
|
51
|
+
return False
|
|
52
|
+
return version in response.text
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Domain tags exposed by this addon — one entry per `domain:*` value its commands use."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DomainTag:
|
|
7
|
+
"""Functional domain this addon's commands touch."""
|
|
8
|
+
|
|
9
|
+
FORMAT = "domain:format"
|
|
10
|
+
LANGUAGE_PYTHON = "domain:language-python"
|
|
11
|
+
LINT = "domain:lint"
|
|
12
|
+
SERVICE = "domain:service"
|
|
@@ -2,9 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
5
6
|
from wexample_cli.decorator.command import command
|
|
6
7
|
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
7
8
|
|
|
9
|
+
from wexample_wex_addon_dev_python.const.tags import DomainTag
|
|
10
|
+
|
|
8
11
|
if TYPE_CHECKING:
|
|
9
12
|
from wexample_cli.context.execution_context import ExecutionContext
|
|
10
13
|
from wexample_wex_addon_app.service.app_service import AppService
|
|
@@ -13,6 +16,14 @@ if TYPE_CHECKING:
|
|
|
13
16
|
@command(
|
|
14
17
|
type=COMMAND_TYPE_SERVICE,
|
|
15
18
|
description="Register docker image build config for the python service",
|
|
19
|
+
tags=[
|
|
20
|
+
DomainTag.LANGUAGE_PYTHON,
|
|
21
|
+
DomainTag.SERVICE,
|
|
22
|
+
EffectTag.WRITE,
|
|
23
|
+
AudienceTag.AGENT_SAFE,
|
|
24
|
+
ScopeTag.APP,
|
|
25
|
+
ScopeTag.LOCAL,
|
|
26
|
+
],
|
|
16
27
|
)
|
|
17
28
|
def python__service__install(
|
|
18
29
|
context: ExecutionContext,
|
|
@@ -2,9 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from wexample_cli.const.tags import AudienceTag, EffectTag, ScopeTag
|
|
5
6
|
from wexample_cli.decorator.command import command
|
|
6
7
|
from wexample_wex_core.const.globals import COMMAND_TYPE_SERVICE
|
|
7
8
|
|
|
9
|
+
from wexample_wex_addon_dev_python.const.tags import DomainTag
|
|
10
|
+
|
|
8
11
|
if TYPE_CHECKING:
|
|
9
12
|
from wexample_cli.context.execution_context import ExecutionContext
|
|
10
13
|
from wexample_wex_addon_app.service.app_service import AppService
|
|
@@ -13,6 +16,15 @@ if TYPE_CHECKING:
|
|
|
13
16
|
@command(
|
|
14
17
|
type=COMMAND_TYPE_SERVICE,
|
|
15
18
|
description="Build python docker images if not already built (idempotent via lock)",
|
|
19
|
+
tags=[
|
|
20
|
+
DomainTag.LANGUAGE_PYTHON,
|
|
21
|
+
DomainTag.SERVICE,
|
|
22
|
+
EffectTag.SUBPROCESS_SPAWN,
|
|
23
|
+
EffectTag.WRITE,
|
|
24
|
+
AudienceTag.AGENT_SAFE,
|
|
25
|
+
ScopeTag.APP,
|
|
26
|
+
ScopeTag.LOCAL,
|
|
27
|
+
],
|
|
16
28
|
)
|
|
17
29
|
def python__service__setup(
|
|
18
30
|
context: ExecutionContext,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from wexample_helpers.decorator.base_class import base_class
|
|
3
4
|
from wexample_wex_addon_app.workdir.mixin.abstract_profiling_workdir_mixin import (
|
|
4
5
|
AbstractProfilingWorkdirMixin,
|
|
5
6
|
)
|
|
6
7
|
|
|
7
8
|
|
|
9
|
+
@base_class
|
|
8
10
|
class WithProfilingPythonWorkdirMixin(AbstractProfilingWorkdirMixin):
|
|
9
11
|
"""Mixin that adds pytest-benchmark profiling capability to a Python workdir.
|
|
10
12
|
|
|
@@ -4,6 +4,7 @@ from pathlib import Path
|
|
|
4
4
|
from typing import TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from wexample_filestate.const.disk import DiskItemType
|
|
7
|
+
from wexample_helpers.decorator.base_class import base_class
|
|
7
8
|
from wexample_wex_addon_app.helpers.python import (
|
|
8
9
|
python_install_dependency_in_venv,
|
|
9
10
|
python_is_package_installed_editable_in_venv,
|
|
@@ -22,6 +23,7 @@ if TYPE_CHECKING:
|
|
|
22
23
|
)
|
|
23
24
|
|
|
24
25
|
|
|
26
|
+
@base_class
|
|
25
27
|
class PythonPackageWorkdir(PythonWorkdir):
|
|
26
28
|
_project_info_cache = None
|
|
27
29
|
|
|
@@ -454,20 +456,20 @@ class PythonPackageWorkdir(PythonWorkdir):
|
|
|
454
456
|
shell_run(publish_cmd, inherit_stdio=True, cwd=self.get_path())
|
|
455
457
|
|
|
456
458
|
def _wait_for_registry(self) -> None:
|
|
457
|
-
import base64
|
|
458
|
-
import urllib.error
|
|
459
|
-
import urllib.request
|
|
460
|
-
|
|
461
459
|
from wexample_helpers.helpers.polling_callback_manager import (
|
|
462
460
|
PollingCallbackManager,
|
|
463
461
|
)
|
|
464
462
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
)
|
|
468
|
-
if not repository_url:
|
|
469
|
-
repository_url = "https://pypi.org"
|
|
463
|
+
from wexample_wex_addon_dev_python.common.pypi_registry_gateway import (
|
|
464
|
+
PypiRegistryGateway,
|
|
465
|
+
)
|
|
470
466
|
|
|
467
|
+
repository_url = (
|
|
468
|
+
self.search_app_or_suite_runtime_config(
|
|
469
|
+
"pdm.repository.url", default=None
|
|
470
|
+
).get_str_or_none()
|
|
471
|
+
or "https://pypi.org"
|
|
472
|
+
)
|
|
471
473
|
token = self.search_app_or_suite_runtime_config(
|
|
472
474
|
"pdm.repository.token", default=None
|
|
473
475
|
).get_str_or_none()
|
|
@@ -480,25 +482,14 @@ class PythonPackageWorkdir(PythonWorkdir):
|
|
|
480
482
|
|
|
481
483
|
package = self.get_package_name()
|
|
482
484
|
version = self.get_setup_version()
|
|
483
|
-
url = f"{repository_url.rstrip('/')}/simple/{package}/"
|
|
484
485
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
req.add_header("Authorization", f"Basic {credentials}")
|
|
493
|
-
with urllib.request.urlopen(req, timeout=10) as resp:
|
|
494
|
-
if resp.status == 200 and version in resp.read().decode():
|
|
495
|
-
return True
|
|
496
|
-
except urllib.error.HTTPError as e:
|
|
497
|
-
if e.code != 404:
|
|
498
|
-
raise
|
|
499
|
-
except Exception:
|
|
500
|
-
pass
|
|
501
|
-
return None
|
|
486
|
+
gateway = PypiRegistryGateway(
|
|
487
|
+
base_url=repository_url,
|
|
488
|
+
username=username,
|
|
489
|
+
token=token,
|
|
490
|
+
io=self.io,
|
|
491
|
+
timeout=10,
|
|
492
|
+
)
|
|
502
493
|
|
|
503
494
|
max_attempts = 40
|
|
504
495
|
delay_seconds = 30
|
|
@@ -511,7 +502,7 @@ class PythonPackageWorkdir(PythonWorkdir):
|
|
|
511
502
|
)
|
|
512
503
|
|
|
513
504
|
PollingCallbackManager(
|
|
514
|
-
callback=
|
|
505
|
+
callback=lambda: True if gateway.has_version(package, version) else None,
|
|
515
506
|
max_attempts=max_attempts,
|
|
516
507
|
delay_seconds_callback=lambda _attempt: delay_seconds,
|
|
517
508
|
on_retry_callback=on_retry,
|
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from wexample_helpers.decorator.base_class import base_class
|
|
5
6
|
from wexample_wex_addon_app.workdir.framework_packages_suite_workdir import (
|
|
6
7
|
FrameworkPackageSuiteWorkdir,
|
|
7
8
|
)
|
|
@@ -18,6 +19,7 @@ if TYPE_CHECKING:
|
|
|
18
19
|
)
|
|
19
20
|
|
|
20
21
|
|
|
22
|
+
@base_class
|
|
21
23
|
class PythonPackagesSuiteWorkdir(FrameworkPackageSuiteWorkdir):
|
|
22
24
|
def build_dependencies_stack(
|
|
23
25
|
self,
|
|
@@ -15,6 +15,10 @@ from wexample_filestate_python.const.python_file import (
|
|
|
15
15
|
PYTHON_FILE_EXTENSION,
|
|
16
16
|
PYTHON_FILE_PYTEST_COVERAGE_JSON,
|
|
17
17
|
)
|
|
18
|
+
from wexample_helpers.decorator.base_class import base_class
|
|
19
|
+
from wexample_wex_addon_ai.workdir.mixin.with_ai_workdir_mixin import (
|
|
20
|
+
WithAiWorkdirMixin,
|
|
21
|
+
)
|
|
18
22
|
from wexample_wex_addon_app.workdir.code_base_workdir import (
|
|
19
23
|
CodeBaseWorkdir,
|
|
20
24
|
)
|
|
@@ -47,7 +51,10 @@ if TYPE_CHECKING:
|
|
|
47
51
|
)
|
|
48
52
|
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
@base_class
|
|
55
|
+
class PythonWorkdir(
|
|
56
|
+
WithAiWorkdirMixin, WithProfilingPythonWorkdirMixin, CodeBaseWorkdir
|
|
57
|
+
):
|
|
51
58
|
def app_install(self, env: str | None = None, force: bool = False) -> Path:
|
|
52
59
|
from wexample_wex_addon_app.helpers.python import (
|
|
53
60
|
python_ensure_pip_or_fail,
|
|
@@ -169,6 +176,8 @@ class PythonWorkdir(WithProfilingPythonWorkdirMixin, CodeBaseWorkdir):
|
|
|
169
176
|
|
|
170
177
|
raw_value = super().prepare_value(raw_value=raw_value)
|
|
171
178
|
|
|
179
|
+
self.append_agents(config=raw_value)
|
|
180
|
+
|
|
172
181
|
children = raw_value["children"]
|
|
173
182
|
|
|
174
183
|
# Add rules to .gitignore
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wexample-wex-addon-dev-python
|
|
3
|
-
Version: 8.
|
|
3
|
+
Version: 8.9.0
|
|
4
4
|
Summary: Python dev addon for wex
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -15,8 +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.2.0
|
|
18
19
|
Requires-Dist: wexample-filestate-python>=6.8.0
|
|
19
|
-
Requires-Dist: wexample-wex-addon-
|
|
20
|
+
Requires-Dist: wexample-wex-addon-ai>=8.0.0
|
|
21
|
+
Requires-Dist: wexample-wex-addon-app>=23.0.0
|
|
20
22
|
Provides-Extra: dev
|
|
21
23
|
Requires-Dist: pytest; extra == "dev"
|
|
22
24
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -24,7 +26,7 @@ Description-Content-Type: text/markdown
|
|
|
24
26
|
|
|
25
27
|
# wex_addon_dev_python
|
|
26
28
|
|
|
27
|
-
Version: 8.
|
|
29
|
+
Version: 8.9.0
|
|
28
30
|
|
|
29
31
|
Python dev addon for wex
|
|
30
32
|
|
|
@@ -110,8 +112,10 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
110
112
|
- networkx:
|
|
111
113
|
- pylint:
|
|
112
114
|
- pyright:
|
|
115
|
+
- wexample-api: >=6.2.0
|
|
113
116
|
- wexample-filestate-python: >=6.8.0
|
|
114
|
-
- wexample-wex-addon-
|
|
117
|
+
- wexample-wex-addon-ai: >=8.0.0
|
|
118
|
+
- wexample-wex-addon-app: >=23.0.0
|
|
115
119
|
|
|
116
120
|
## Versioning & Compatibility Policy
|
|
117
121
|
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
wexample_wex_addon_dev_python-8.
|
|
2
|
-
wexample_wex_addon_dev_python-8.
|
|
3
|
-
wexample_wex_addon_dev_python-8.
|
|
1
|
+
wexample_wex_addon_dev_python-8.9.0.dist-info/METADATA,sha256=owRuD7f3Kmh0Z6P08_hO37YW5V7LBP62flcdUR7qNhc,17386
|
|
2
|
+
wexample_wex_addon_dev_python-8.9.0.dist-info/WHEEL,sha256=VP-D4TPS230sME9Z3vb3INXvo1yt0924YRm5AOsk_dE,90
|
|
3
|
+
wexample_wex_addon_dev_python-8.9.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
|
4
4
|
wexample_wex_addon_dev_python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
wexample_wex_addon_dev_python/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
wexample_wex_addon_dev_python/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
7
|
wexample_wex_addon_dev_python/commands/code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
wexample_wex_addon_dev_python/commands/code/check.py,sha256=
|
|
8
|
+
wexample_wex_addon_dev_python/commands/code/check.py,sha256=qaxFt8dcbBl4_vtx82CKaT_tzcDl4e8zMxF29cePXrY,3695
|
|
9
9
|
wexample_wex_addon_dev_python/commands/code/check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
wexample_wex_addon_dev_python/commands/code/check/mypy.py,sha256=hZ1taOAofaFgqhtbHLXA14-4cFkVcw6QUi9PmpbEKuk,1401
|
|
11
11
|
wexample_wex_addon_dev_python/commands/code/check/pylint.py,sha256=tmtpKWjn3h4auNybYVtiloHjHGlS0BiYjUo9GZTogpE,3323
|
|
12
12
|
wexample_wex_addon_dev_python/commands/code/check/pyright.py,sha256=jCKZxQ5Ln2Vh1QlhKqz3i0djnQwWbNHzDcttu41jhsI,3619
|
|
13
|
-
wexample_wex_addon_dev_python/commands/code/format.py,sha256=
|
|
13
|
+
wexample_wex_addon_dev_python/commands/code/format.py,sha256=NrrqZ5LhdDj41pB0xyxhK85-oGT0KN3FjpBaRdCr3c0,2841
|
|
14
14
|
wexample_wex_addon_dev_python/commands/code/format/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
15
15
|
wexample_wex_addon_dev_python/commands/code/format/black.py,sha256=wo3BEODFD6BUrmnfheESMyLppLPwtvcgkOVfvHWdAZs,1462
|
|
16
16
|
wexample_wex_addon_dev_python/commands/code/format/isort.py,sha256=pRYYPZWFza6e_HgKYpYplzV5hwJvbM3NNJ_-A3x1yV8,1540
|
|
17
17
|
wexample_wex_addon_dev_python/commands/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
18
|
wexample_wex_addon_dev_python/commands/examples/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
wexample_wex_addon_dev_python/commands/examples/utils/some_example_type.py,sha256=zusGlLOLkt2EpPFk38FIRA6d_5Q92Y7-TLj8ofHhQk0,121
|
|
20
|
-
wexample_wex_addon_dev_python/commands/examples/validate.py,sha256=
|
|
20
|
+
wexample_wex_addon_dev_python/commands/examples/validate.py,sha256=ijU0bVifkZGPilirJZDdDJsOuRUwhRcA7DqGzw2Zcwg,951
|
|
21
21
|
wexample_wex_addon_dev_python/commands/release/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
+
wexample_wex_addon_dev_python/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
wexample_wex_addon_dev_python/common/pypi_registry_gateway.py,sha256=esFDYTL4k0KfQVnWEuyrS5mdM362n8bgWkt-uB5rfQs,1934
|
|
22
24
|
wexample_wex_addon_dev_python/config_value/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
25
|
wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
26
|
wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py,sha256=9L67C6oGwebd8tMSqECmSSpah7nsDTkjEQMNMCWAyp0,1722
|
|
@@ -26,6 +28,7 @@ wexample_wex_addon_dev_python/const/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
|
26
28
|
wexample_wex_addon_dev_python/const/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
29
|
wexample_wex_addon_dev_python/const/package.py,sha256=oRCPhaazJp5TujxF-35rrIYA4FJsqMqCns8lOFKOLeA,451
|
|
28
30
|
wexample_wex_addon_dev_python/const/python.py,sha256=jxdPt5CnD0dcp4SmobEc_c7XcCkPFfX_lk3SVHsiVpM,203
|
|
31
|
+
wexample_wex_addon_dev_python/const/tags.py,sha256=isvxhaBbendC6k_rluiJkQ2-yO7OwCEw9wse4wgEOIo,338
|
|
29
32
|
wexample_wex_addon_dev_python/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
33
|
wexample_wex_addon_dev_python/file/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
34
|
wexample_wex_addon_dev_python/file/python_app_iml_file.py,sha256=l6YHEILxSGFjOvYWY20zIyAODjOIfuyHsuCfSMw0jVE,1201
|
|
@@ -46,8 +49,8 @@ wexample_wex_addon_dev_python/services/python/__init__.py,sha256=47DEQpj8HBSa-_T
|
|
|
46
49
|
wexample_wex_addon_dev_python/services/python/app_service.py,sha256=OeM7f-IHm7lfS2graCBVAjjqxK_lEiQRmfl9mSEqoP0,2272
|
|
47
50
|
wexample_wex_addon_dev_python/services/python/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
51
|
wexample_wex_addon_dev_python/services/python/commands/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
-
wexample_wex_addon_dev_python/services/python/commands/service/install.py,sha256=
|
|
50
|
-
wexample_wex_addon_dev_python/services/python/commands/service/setup.py,sha256=
|
|
52
|
+
wexample_wex_addon_dev_python/services/python/commands/service/install.py,sha256=a50XFDUJGX2pCUJ_M4qruDUH7bHUxl5k9FIBlhky1eM,1896
|
|
53
|
+
wexample_wex_addon_dev_python/services/python/commands/service/setup.py,sha256=JAt8N39_BQu8ZpYHHqNLZK3NFYFKzXvqjlPLTHOM3Y4,2293
|
|
51
54
|
wexample_wex_addon_dev_python/services/python/docker/.wex.yml,sha256=JdIF6nGkFcfi76yZYGlXxeWfOK4eAUSV_gAn6i3hk2w,32
|
|
52
55
|
wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml,sha256=zr9jm99KXyhOe1RZJ1nxgwqbi62xTXClvyhtA9jAAFc,463
|
|
53
56
|
wexample_wex_addon_dev_python/services/python/samples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -61,8 +64,8 @@ wexample_wex_addon_dev_python/services/python/service.yml,sha256=28gvNQIzZ0T0PBw
|
|
|
61
64
|
wexample_wex_addon_dev_python/workdir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
65
|
wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
66
|
wexample_wex_addon_dev_python/workdir/mixin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
-
wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py,sha256=
|
|
65
|
-
wexample_wex_addon_dev_python/workdir/python_package_workdir.py,sha256=
|
|
66
|
-
wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py,sha256=
|
|
67
|
-
wexample_wex_addon_dev_python/workdir/python_workdir.py,sha256=
|
|
68
|
-
wexample_wex_addon_dev_python-8.
|
|
67
|
+
wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py,sha256=yPj84DyNJ_cFSawcOUDMBzKBlEohy2NQdt3FM5Nmw4o,3115
|
|
68
|
+
wexample_wex_addon_dev_python/workdir/python_package_workdir.py,sha256=3m3ySOt25eBgqIkuE4AwaA_9W0mfRco13AgN-phPuSM,18656
|
|
69
|
+
wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py,sha256=_meFBFBxUyxjgeGJHx06o7cynEoUHifVn5eJbwqK3mw,2947
|
|
70
|
+
wexample_wex_addon_dev_python/workdir/python_workdir.py,sha256=8ZspxNsBttXG0ZD6LH6kQ9Jb4hX_k1p4DlAhcdeQ0hM,20919
|
|
71
|
+
wexample_wex_addon_dev_python-8.9.0.dist-info/RECORD,,
|
|
File without changes
|