wexample-wex-addon-dev-python 10.2.0__py3-none-any.whl → 11.1.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.
Files changed (30) hide show
  1. wexample_wex_addon_dev_python/commands/code/check/mypy.py +4 -3
  2. wexample_wex_addon_dev_python/commands/code/check/pylint.py +25 -19
  3. wexample_wex_addon_dev_python/commands/code/check/pyright.py +18 -14
  4. wexample_wex_addon_dev_python/commands/code/check.py +4 -7
  5. wexample_wex_addon_dev_python/commands/code/format/black.py +14 -15
  6. wexample_wex_addon_dev_python/commands/code/format/isort.py +14 -15
  7. wexample_wex_addon_dev_python/commands/code/format.py +8 -5
  8. wexample_wex_addon_dev_python/commands/code/rename.py +134 -0
  9. wexample_wex_addon_dev_python/commands/examples/validate.py +1 -2
  10. wexample_wex_addon_dev_python/common/pypi_registry_gateway.py +5 -3
  11. wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py +2 -8
  12. wexample_wex_addon_dev_python/file/python_app_iml_file.py +3 -2
  13. wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py +26 -13
  14. wexample_wex_addon_dev_python/helpers/pdm.py +3 -2
  15. wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py +12 -14
  16. wexample_wex_addon_dev_python/refactor/__init__.py +7 -0
  17. wexample_wex_addon_dev_python/refactor/python_package_rename_handler.py +215 -0
  18. wexample_wex_addon_dev_python/refactor/symbol_kind.py +19 -0
  19. wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py +22 -9
  20. wexample_wex_addon_dev_python/selection/python_code_performance_selection.py +8 -9
  21. wexample_wex_addon_dev_python/services/python/commands/service/install.py +7 -10
  22. wexample_wex_addon_dev_python/services/python/commands/service/setup.py +5 -3
  23. wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py +15 -16
  24. wexample_wex_addon_dev_python/workdir/python_package_workdir.py +9 -7
  25. wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py +2 -3
  26. wexample_wex_addon_dev_python/workdir/python_workdir.py +100 -20
  27. {wexample_wex_addon_dev_python-10.2.0.dist-info → wexample_wex_addon_dev_python-11.1.0.dist-info}/METADATA +10 -10
  28. {wexample_wex_addon_dev_python-10.2.0.dist-info → wexample_wex_addon_dev_python-11.1.0.dist-info}/RECORD +30 -26
  29. {wexample_wex_addon_dev_python-10.2.0.dist-info → wexample_wex_addon_dev_python-11.1.0.dist-info}/WHEEL +0 -0
  30. {wexample_wex_addon_dev_python-10.2.0.dist-info → wexample_wex_addon_dev_python-11.1.0.dist-info}/entry_points.txt +0 -0
@@ -89,13 +89,10 @@ class PythonWorkdir(
89
89
  if not tests_path.is_dir():
90
90
  return 0
91
91
 
92
+ pattern = re.compile(r"^\s*(?:async )?def test_", re.MULTILINE)
92
93
  count = 0
93
94
  for file in tests_path.rglob("test_*.py"):
94
- count += len(
95
- re.findall(
96
- r"^\s*(?:async )?def test_", file.read_text(), flags=re.MULTILINE
97
- )
98
- )
95
+ count += len(pattern.findall(file.read_text()))
99
96
  return count
100
97
 
101
98
  def get_app_config_file(self, reload: bool = True) -> PythonPyprojectTomlFile:
@@ -121,11 +118,7 @@ class PythonWorkdir(
121
118
 
122
119
  options = super().get_options_providers()
123
120
 
124
- options.extend(
125
- [
126
- PythonOptionsProvider,
127
- ]
128
- )
121
+ options.append(PythonOptionsProvider)
129
122
 
130
123
  return options
131
124
 
@@ -144,6 +137,20 @@ class PythonWorkdir(
144
137
  def get_python_path(self) -> Path:
145
138
  return self.get_venv_bin_path() / "python"
146
139
 
140
+ def get_src_import_name(self) -> str | None:
141
+ """Name of the Python module under `src/` for distribution-time
142
+ wiring (pyproject `tool.pdm.build.packages`, `tool.coverage.run.source`,
143
+ `tool.setuptools.packages.find.exclude`).
144
+
145
+ Defaults to the package import name (standard `src/{vendor}_{name}/`
146
+ layout). Returns None for projects that don't ship a single
147
+ importable module — typically CLI apps whose code lives directly
148
+ under `src/` in arbitrary subdirectories. Pyproject enforces that
149
+ target packaging concerns then skip themselves rather than
150
+ injecting a non-existent module name.
151
+ """
152
+ return self.get_package_import_name()
153
+
147
154
  def get_venv_bin_path(self) -> Path:
148
155
  return self.get_venv_path() / "bin"
149
156
 
@@ -183,6 +190,12 @@ class PythonWorkdir(
183
190
  from wexample_filestate.option.children_filter_option import (
184
191
  ChildrenFilterOption,
185
192
  )
193
+ from wexample_filestate.option.sidecar_of_option import (
194
+ SidecarOfOption,
195
+ )
196
+ from wexample_filestate_python.file.python_test_stub_file import (
197
+ PythonTestStubFile,
198
+ )
186
199
 
187
200
  from wexample_wex_addon_dev_python.file.python_pyproject_toml_file import (
188
201
  PythonPyprojectTomlFile,
@@ -202,6 +215,22 @@ class PythonWorkdir(
202
215
  section="Python",
203
216
  )
204
217
 
218
+ # `helpers/` is declared statically (rather than discovered by the
219
+ # recursive python filter) so the dict identity can be used as the
220
+ # primary of a sidecar relationship for `tests/unit/helpers/`.
221
+ # NOTE: no `should_exist` here — we MUST NOT delete the directory
222
+ # for packages that ship a helpers/ folder, and we MUST NOT force
223
+ # its creation on packages that don't. Omitting the option makes
224
+ # ShouldExistOption a no-op (see should_exist_option.py:55).
225
+ src_helpers_dir = {
226
+ "name": "helpers",
227
+ "type": DiskItemType.DIRECTORY,
228
+ "children": [
229
+ self._create_init_children_factory(),
230
+ self._create_python_file_children_filter(),
231
+ ],
232
+ }
233
+
205
234
  children.extend(
206
235
  [
207
236
  {
@@ -210,7 +239,46 @@ class PythonWorkdir(
210
239
  "should_exist": True,
211
240
  "children": [
212
241
  self._create_init_children_factory(),
213
- self._create_python_file_children_filter(),
242
+ self._create_python_file_children_filter(
243
+ exclude_dirs=("unit",),
244
+ ),
245
+ # NOTE: tests/unit/ and tests/unit/helpers/ omit
246
+ # `should_exist` — we don't want filestate to delete
247
+ # them when sidecars haven't been generated yet (no
248
+ # src/helpers/ yet on a package), and we don't need
249
+ # to force their creation either: when a sidecar
250
+ # file is created, `local_file.touch(parents=True)`
251
+ # materializes the intermediate dirs as a side
252
+ # effect. Same rationale as `src_helpers_dir` above.
253
+ {
254
+ "name": "unit",
255
+ "type": DiskItemType.DIRECTORY,
256
+ "children": [
257
+ self._create_init_children_factory(),
258
+ {
259
+ "name": "helpers",
260
+ "type": DiskItemType.DIRECTORY,
261
+ "children": [
262
+ self._create_init_children_factory(),
263
+ SidecarOfOption(
264
+ primary=src_helpers_dir,
265
+ filename="test_{name}",
266
+ cls=PythonTestStubFile,
267
+ # Skip dunder modules: __init__.py
268
+ # is re-export glue, __main__.py is
269
+ # the package entrypoint — neither
270
+ # warrants a test stub. Conviction
271
+ # lives at the call site (Python
272
+ # domain), not in the generic
273
+ # SidecarOfOption.
274
+ filter=lambda p: not p.name.startswith(
275
+ "__"
276
+ ),
277
+ ),
278
+ ],
279
+ },
280
+ ],
281
+ },
214
282
  ],
215
283
  },
216
284
  {
@@ -251,12 +319,15 @@ class PythonWorkdir(
251
319
  "should_exist": True,
252
320
  "children": [
253
321
  self._create_init_children_factory(),
254
- self._create_python_file_children_filter(),
322
+ self._create_python_file_children_filter(
323
+ exclude_dirs=("helpers",),
324
+ ),
255
325
  {
256
326
  "name": "py.typed",
257
327
  "type": DiskItemType.FILE,
258
328
  "should_exist": True,
259
329
  },
330
+ src_helpers_dir,
260
331
  ],
261
332
  }
262
333
  ],
@@ -422,8 +493,6 @@ class PythonWorkdir(
422
493
  )
423
494
 
424
495
  def _create_package_name_snake(self, option: ItemTreeConfigOptionMixin) -> str:
425
- import os
426
-
427
496
  from wexample_helpers.helpers.string import string_to_snake_case
428
497
 
429
498
  vendor_prefix = self.get_vendor_name()
@@ -431,15 +500,13 @@ class PythonWorkdir(
431
500
  vendor_prefix
432
501
  + "_"
433
502
  + string_to_snake_case(
434
- os.path.basename(
435
- os.path.dirname(
436
- os.path.realpath(option.get_parent_item().get_path())
437
- )
438
- )
503
+ Path(option.get_parent_item().get_path()).resolve().parent.name
439
504
  )
440
505
  )
441
506
 
442
- def _create_python_file_children_filter(self) -> ChildrenFileFactoryOption:
507
+ def _create_python_file_children_filter(
508
+ self, exclude_dirs: tuple[str, ...] = ()
509
+ ) -> ChildrenFileFactoryOption:
443
510
  from wexample_filestate.const.disk import DiskItemType
444
511
  from wexample_filestate.option.children_filter_option import (
445
512
  ChildrenFilterOption,
@@ -507,6 +574,18 @@ class PythonWorkdir(
507
574
  UnquoteAnnotationsOption,
508
575
  )
509
576
 
577
+ # Filter callback: exclude entries whose parent path contains any of
578
+ # the `exclude_dirs` segments. Used to carve out subtrees that are
579
+ # declared statically elsewhere (typically to anchor a sidecar
580
+ # relationship — the static dict identity is what `SidecarOfOption`
581
+ # resolves on).
582
+ def _entry_filter(entry):
583
+ if not exclude_dirs:
584
+ return True
585
+ return not any(
586
+ segment in exclude_dirs for segment in entry.parent.parts
587
+ )
588
+
510
589
  return ChildrenFilterOption(
511
590
  pattern={
512
591
  "class": PythonFile,
@@ -538,6 +617,7 @@ class PythonWorkdir(
538
617
  },
539
618
  name_pattern=r"^.*\.py$",
540
619
  recursive=True,
620
+ filter=_entry_filter if exclude_dirs else None,
541
621
  )
542
622
 
543
623
  def _get_iml_file_class(self) -> type[ImlFile]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-python
3
- Version: 10.2.0
3
+ Version: 11.1.0
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.5.0
19
- Requires-Dist: wexample-filestate-python>=8.0.0
20
- Requires-Dist: wexample-wex-addon-ai>=11.0.0
21
- Requires-Dist: wexample-wex-addon-app>=25.3.0
18
+ Requires-Dist: wexample-api>=6.6.0
19
+ Requires-Dist: wexample-filestate-python>=8.1.0
20
+ Requires-Dist: wexample-wex-addon-ai>=11.1.0
21
+ Requires-Dist: wexample-wex-addon-app>=25.4.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.2.0
29
+ Version: 11.1.0
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.5.0
116
- - wexample-filestate-python: >=8.0.0
117
- - wexample-wex-addon-ai: >=11.0.0
118
- - wexample-wex-addon-app: >=25.3.0
115
+ - wexample-api: >=6.6.0
116
+ - wexample-filestate-python: >=8.1.0
117
+ - wexample-wex-addon-ai: >=11.1.0
118
+ - wexample-wex-addon-app: >=25.4.0
119
119
 
120
120
  ## Versioning & Compatibility Policy
121
121
 
@@ -1,29 +1,30 @@
1
- wexample_wex_addon_dev_python-10.2.0.dist-info/METADATA,sha256=kutjvq8NpFEhFq3fIVFhtWhEc8qQSUo5ao2YI1BeVvw,17390
2
- wexample_wex_addon_dev_python-10.2.0.dist-info/WHEEL,sha256=VP-D4TPS230sME9Z3vb3INXvo1yt0924YRm5AOsk_dE,90
3
- wexample_wex_addon_dev_python-10.2.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
1
+ wexample_wex_addon_dev_python-11.1.0.dist-info/METADATA,sha256=XiS9yFzwd2KaDMbMryMiBF1XODEUxvRR3sdAkH2WsIk,17390
2
+ wexample_wex_addon_dev_python-11.1.0.dist-info/WHEEL,sha256=VP-D4TPS230sME9Z3vb3INXvo1yt0924YRm5AOsk_dE,90
3
+ wexample_wex_addon_dev_python-11.1.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=qaxFt8dcbBl4_vtx82CKaT_tzcDl4e8zMxF29cePXrY,3695
8
+ wexample_wex_addon_dev_python/commands/code/check.py,sha256=TN2gsIjcte11cOCVq4hq4-8cJPemft7iIffYqsTqyus,3662
9
9
  wexample_wex_addon_dev_python/commands/code/check/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- wexample_wex_addon_dev_python/commands/code/check/mypy.py,sha256=hZ1taOAofaFgqhtbHLXA14-4cFkVcw6QUi9PmpbEKuk,1401
11
- wexample_wex_addon_dev_python/commands/code/check/pylint.py,sha256=tmtpKWjn3h4auNybYVtiloHjHGlS0BiYjUo9GZTogpE,3323
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=NrrqZ5LhdDj41pB0xyxhK85-oGT0KN3FjpBaRdCr3c0,2841
10
+ wexample_wex_addon_dev_python/commands/code/check/mypy.py,sha256=lT1U196BxFkroVgXGUPHBuJp3U0GcB9CsZI2q6LKWaU,1413
11
+ wexample_wex_addon_dev_python/commands/code/check/pylint.py,sha256=N_HJB_eZnKI0yzyDfSsjZFySaKDqIuCQYtg5GMMVIfI,3476
12
+ wexample_wex_addon_dev_python/commands/code/check/pyright.py,sha256=Yh15jyKCH81oKCrEDaM_SxTj8Myr9_R1tYTJmexiRsQ,3692
13
+ wexample_wex_addon_dev_python/commands/code/format.py,sha256=AmvvbY1vPMOYafI19wliOnryF34d3wKOTTUDNh_SF6w,2883
14
14
  wexample_wex_addon_dev_python/commands/code/format/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
15
- wexample_wex_addon_dev_python/commands/code/format/black.py,sha256=wo3BEODFD6BUrmnfheESMyLppLPwtvcgkOVfvHWdAZs,1462
16
- wexample_wex_addon_dev_python/commands/code/format/isort.py,sha256=pRYYPZWFza6e_HgKYpYplzV5hwJvbM3NNJ_-A3x1yV8,1540
15
+ wexample_wex_addon_dev_python/commands/code/format/black.py,sha256=hYSr0-vqzwdHzg1qSZHOoLY09nyTCEgzds73smG-lSw,1404
16
+ wexample_wex_addon_dev_python/commands/code/format/isort.py,sha256=sj3Ucc78koiWEJXTZW8X9v8g7ODRQmQazQ_kiwzV2sE,1469
17
+ wexample_wex_addon_dev_python/commands/code/rename.py,sha256=Ctl0PT6xDWtg0m-GO7zIWs_uK3bQrUBgfwUZfzbUC5w,4085
17
18
  wexample_wex_addon_dev_python/commands/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
19
  wexample_wex_addon_dev_python/commands/examples/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
20
  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=ijU0bVifkZGPilirJZDdDJsOuRUwhRcA7DqGzw2Zcwg,951
21
+ wexample_wex_addon_dev_python/commands/examples/validate.py,sha256=Ab_rIX2XElVSLLGypNPsuxRX6100vsfffaUaPgRV_wc,917
21
22
  wexample_wex_addon_dev_python/commands/release/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
23
  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
24
+ wexample_wex_addon_dev_python/common/pypi_registry_gateway.py,sha256=uGsbQcVACsYur673HXvMVqUOjDFyBJK2X4twfkrVaoM,1994
24
25
  wexample_wex_addon_dev_python/config_value/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
26
  wexample_wex_addon_dev_python/config_value/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py,sha256=9L67C6oGwebd8tMSqECmSSpah7nsDTkjEQMNMCWAyp0,1722
27
+ wexample_wex_addon_dev_python/config_value/python_package_readme_config_value.py,sha256=qHYX9o9X18r17zBP0HpOARIAnSZuTvBX2GJwbOqMRdI,1649
27
28
  wexample_wex_addon_dev_python/const/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
29
  wexample_wex_addon_dev_python/const/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
30
  wexample_wex_addon_dev_python/const/package.py,sha256=oRCPhaazJp5TujxF-35rrIYA4FJsqMqCns8lOFKOLeA,451
@@ -31,29 +32,32 @@ wexample_wex_addon_dev_python/const/python.py,sha256=jxdPt5CnD0dcp4SmobEc_c7XcCk
31
32
  wexample_wex_addon_dev_python/const/tags.py,sha256=isvxhaBbendC6k_rluiJkQ2-yO7OwCEw9wse4wgEOIo,338
32
33
  wexample_wex_addon_dev_python/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
34
  wexample_wex_addon_dev_python/file/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- wexample_wex_addon_dev_python/file/python_app_iml_file.py,sha256=l6YHEILxSGFjOvYWY20zIyAODjOIfuyHsuCfSMw0jVE,1201
35
- wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py,sha256=kXFnAcLfkj0dgNUCAnano_1N-z_uvgHYRiUdewn7JCY,15950
35
+ wexample_wex_addon_dev_python/file/python_app_iml_file.py,sha256=O6OpMjB_Zn4Mt1sIi9AaGvQP4jM1I2_L_6O6S5-syJM,1206
36
+ wexample_wex_addon_dev_python/file/python_pyproject_toml_file.py,sha256=XOEyQRyaYZ-EyrFsTMSg9oMoOnM15zUx1XnAV5jn4V4,16726
36
37
  wexample_wex_addon_dev_python/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- wexample_wex_addon_dev_python/helpers/pdm.py,sha256=s2j7qs7S2OBKjRuXM5URfPrzqksqKZceKgUR2kHmMCk,479
38
+ wexample_wex_addon_dev_python/helpers/pdm.py,sha256=Q75RgR4xnJCQaGSY24Y4O3Y7qLSyUl0iUyYIbBtXUho,473
38
39
  wexample_wex_addon_dev_python/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
40
  wexample_wex_addon_dev_python/middleware/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py,sha256=UzNEpedCYf31aNONFl0SuSJnoXRzhJhgEiTCaPark6E,2311
41
+ wexample_wex_addon_dev_python/middleware/each_python_file_middleware.py,sha256=0BmUS1BlL8NY_imwBtykWxf4dnabA3nTrpVHhl9qjLE,2314
41
42
  wexample_wex_addon_dev_python/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
43
  wexample_wex_addon_dev_python/python_addon_manager.py,sha256=I-jPwEkeZtEi7Y3V6r0wRidkL8zwF3YpvJt1-R5b7DQ,1566
44
+ wexample_wex_addon_dev_python/refactor/__init__.py,sha256=CYw_GXE-1VXdKYV1092XWh-YLRci02uJ-FtzW38wUWQ,209
45
+ wexample_wex_addon_dev_python/refactor/python_package_rename_handler.py,sha256=w-f_p3dMrXYuwa0wGOXK8i_1c99KmvV4YYm4DmvdQBk,7512
46
+ wexample_wex_addon_dev_python/refactor/symbol_kind.py,sha256=H4yAOXvzaaSE3k1V29i8bNXmb9Xm3RQ768v3tFMXkhQ,469
43
47
  wexample_wex_addon_dev_python/resources/.wex.yml,sha256=JdIF6nGkFcfi76yZYGlXxeWfOK4eAUSV_gAn6i3hk2w,32
44
48
  wexample_wex_addon_dev_python/resources/docker/Dockerfile.python-profiling,sha256=5ujzXfWNN2nv8qQzCLel6dlOwLQ1XhIGZuqplCNB_vQ,290
45
49
  wexample_wex_addon_dev_python/resources/package_publish_gitlab.yml,sha256=WVMj-DeFedQak5s5FraEnM1Rx1-ut4KgPodvAVv25ZM,304
46
50
  wexample_wex_addon_dev_python/resources/readme_templates/tests.md.j2,sha256=tKLcDwx7jhQkryXIxWr12AK-hKEaP6Rusu2MrluiABs,1289
47
51
  wexample_wex_addon_dev_python/selection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
- wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py,sha256=hnD0bpLl6ivIKh9Ks1ORt3G1Z6hseRrH-zspECPPR6E,1746
49
- wexample_wex_addon_dev_python/selection/python_code_performance_selection.py,sha256=R-ij_LSwoH1d0WHvcGPtr7N-w8MAM2mIjQWFd98ay5s,6571
52
+ wexample_wex_addon_dev_python/selection/abstract_python_code_selection.py,sha256=TX18Iid7XLDryAmTKXOxD5pvzhNcHcDcZViZ6vWjlA4,2270
53
+ wexample_wex_addon_dev_python/selection/python_code_performance_selection.py,sha256=qdM_0ipUDNFLzKuMZwNXPKA0-qPER73lv4l8taEgNN4,6608
50
54
  wexample_wex_addon_dev_python/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
55
  wexample_wex_addon_dev_python/services/python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
56
  wexample_wex_addon_dev_python/services/python/app_service.py,sha256=OeM7f-IHm7lfS2graCBVAjjqxK_lEiQRmfl9mSEqoP0,2272
53
57
  wexample_wex_addon_dev_python/services/python/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
58
  wexample_wex_addon_dev_python/services/python/commands/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- wexample_wex_addon_dev_python/services/python/commands/service/install.py,sha256=a50XFDUJGX2pCUJ_M4qruDUH7bHUxl5k9FIBlhky1eM,1896
56
- wexample_wex_addon_dev_python/services/python/commands/service/setup.py,sha256=JAt8N39_BQu8ZpYHHqNLZK3NFYFKzXvqjlPLTHOM3Y4,2293
59
+ wexample_wex_addon_dev_python/services/python/commands/service/install.py,sha256=DUH1NNImQhhAJo_w0gF0yb0vrfrmPHgXR2KKHaUAd38,1836
60
+ wexample_wex_addon_dev_python/services/python/commands/service/setup.py,sha256=kBF-aYEZKl1YFD-fSwhi6C92yoScWtLcIdgAdqOW2u0,2362
57
61
  wexample_wex_addon_dev_python/services/python/docker/.wex.yml,sha256=JdIF6nGkFcfi76yZYGlXxeWfOK4eAUSV_gAn6i3hk2w,32
58
62
  wexample_wex_addon_dev_python/services/python/docker/docker-compose.yml,sha256=W7uricaPSfkiWIczbzunFb2ooa409XH3dEkhb18uCLk,491
59
63
  wexample_wex_addon_dev_python/services/python/samples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -67,8 +71,8 @@ wexample_wex_addon_dev_python/services/python/service.yml,sha256=28gvNQIzZ0T0PBw
67
71
  wexample_wex_addon_dev_python/workdir/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
72
  wexample_wex_addon_dev_python/workdir/__pycache__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
73
  wexample_wex_addon_dev_python/workdir/mixin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py,sha256=yPj84DyNJ_cFSawcOUDMBzKBlEohy2NQdt3FM5Nmw4o,3115
71
- wexample_wex_addon_dev_python/workdir/python_package_workdir.py,sha256=d_M2Fnl0i1R-b-Am3OXwwJhim_0Lf9UooZh7sc833C0,18032
72
- wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py,sha256=_meFBFBxUyxjgeGJHx06o7cynEoUHifVn5eJbwqK3mw,2947
73
- wexample_wex_addon_dev_python/workdir/python_workdir.py,sha256=sLGlqr7-zLTsFSW3ZMuHSQ3k9871AfOjFzLgYLhIVHc,22504
74
- wexample_wex_addon_dev_python-10.2.0.dist-info/RECORD,,
74
+ wexample_wex_addon_dev_python/workdir/mixin/with_profiling_python_workdir_mixin.py,sha256=PA_kqwe2kF5t1nKakX5Q-6fant2R18aEnZfkjr6iJ6k,3097
75
+ wexample_wex_addon_dev_python/workdir/python_package_workdir.py,sha256=M-5jOhLCIIfOc4zmBatD2ytBWTkWLTZ3an75ERQ8vSM,18036
76
+ wexample_wex_addon_dev_python/workdir/python_packages_suite_workdir.py,sha256=7Jb5mKGNV2RjFtrFhUm6jbkiTfLDmy7sA97UGHITVdw,2902
77
+ wexample_wex_addon_dev_python/workdir/python_workdir.py,sha256=A9sFJWWBEqDat_olN8C26a4BBcJ19QgGzFyvlXYuTkc,27155
78
+ wexample_wex_addon_dev_python-11.1.0.dist-info/RECORD,,