wexample-wex-addon-process 4.0.1__tar.gz → 4.1.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.
Files changed (47) hide show
  1. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/PKG-INFO +4 -4
  2. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/README.md +2 -2
  3. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/pyproject.toml +2 -2
  4. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/filestate/file_state_option_process_type.py +15 -12
  5. wexample_wex_addon_process-4.1.0/tests/unit/test_verdict_locations.py +38 -0
  6. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/__init__.py +0 -0
  7. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/commands/__init__.py +0 -0
  8. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/commands/run/__init__.py +0 -0
  9. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/commands/run/execute.py +0 -0
  10. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/commands/worker/__init__.py +0 -0
  11. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/commands/worker/start.py +0 -0
  12. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/const/__init__.py +0 -0
  13. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/const/filestate.py +0 -0
  14. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/const/process.py +0 -0
  15. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/exception/__init__.py +0 -0
  16. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/exception/run_cancelled_exception.py +0 -0
  17. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/helper/__init__.py +0 -0
  18. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/helper/git_commit.py +0 -0
  19. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_addon_manager.py +0 -0
  20. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/__init__.py +0 -0
  21. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/abstract_process_type.py +0 -0
  22. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/family/__init__.py +0 -0
  23. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/family/abstract_process_type_family.py +0 -0
  24. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/family/file_state_process_type_family.py +0 -0
  25. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/filestate/__init__.py +0 -0
  26. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/filestate/file_state_report_process_type.py +0 -0
  27. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/process_context.py +0 -0
  28. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/process_type_registry.py +0 -0
  29. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/process_type/selection.py +0 -0
  30. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/py.typed +0 -0
  31. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/record/__init__.py +0 -0
  32. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/record/record_file.py +0 -0
  33. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/runner/__init__.py +0 -0
  34. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/runner/process_runner.py +0 -0
  35. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/selection/__init__.py +0 -0
  36. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/selection/abstract_code_from_directory_selection.py +0 -0
  37. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/selection/abstract_process_selection.py +0 -0
  38. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/selection/selection_registry.py +0 -0
  39. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/service/__init__.py +0 -0
  40. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/src/wexample_wex_addon_process/service/process_run_service.py +0 -0
  41. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/.gitkeep +0 -0
  42. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/__init__.py +0 -0
  43. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/test_artifacts.py +0 -0
  44. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/test_long_runs.py +0 -0
  45. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/test_run_overrides.py +0 -0
  46. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/test_selection.py +0 -0
  47. {wexample_wex_addon_process-4.0.1 → wexample_wex_addon_process-4.1.0}/tests/unit/test_skip_and_failure.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-process
3
- Version: 4.0.1
3
+ Version: 4.1.0
4
4
  Summary: Executes process runs defined on disk—either directly or by consuming them from a queue as a worker—against filestate selections
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -10,7 +10,7 @@ Classifier: Operating System :: OS Independent
10
10
  Requires-Python: >=3.10
11
11
  Requires-Dist: wexample-file>=9.2.0
12
12
  Requires-Dist: wexample-queue>=2.0.0
13
- Requires-Dist: wexample-wex-addon-app>=32.3.0
13
+ Requires-Dist: wexample-wex-addon-app>=32.4.0
14
14
  Provides-Extra: dev
15
15
  Requires-Dist: pytest; extra == "dev"
16
16
  Requires-Dist: pytest-cov; extra == "dev"
@@ -18,7 +18,7 @@ Description-Content-Type: text/markdown
18
18
 
19
19
  # wex-addon-process
20
20
 
21
- Version: 4.0.1
21
+ Version: 4.1.0
22
22
 
23
23
  `wexample-wex-addon-process` runs the treatments a board declares. A *process* says what to run and on which selection of files; a *run* is one execution of it, asked for by writing a record and picked up by a worker.
24
24
 
@@ -366,7 +366,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
366
366
 
367
367
  - wexample-file: >=9.2.0
368
368
  - wexample-queue: >=2.0.0
369
- - wexample-wex-addon-app: >=32.3.0
369
+ - wexample-wex-addon-app: >=32.4.0
370
370
 
371
371
  ## Versioning & Compatibility Policy
372
372
 
@@ -1,6 +1,6 @@
1
1
  # wex-addon-process
2
2
 
3
- Version: 4.0.1
3
+ Version: 4.1.0
4
4
 
5
5
  `wexample-wex-addon-process` runs the treatments a board declares. A *process* says what to run and on which selection of files; a *run* is one execution of it, asked for by writing a record and picked up by a worker.
6
6
 
@@ -348,7 +348,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
348
348
 
349
349
  - wexample-file: >=9.2.0
350
350
  - wexample-queue: >=2.0.0
351
- - wexample-wex-addon-app: >=32.3.0
351
+ - wexample-wex-addon-app: >=32.4.0
352
352
 
353
353
  ## Versioning & Compatibility Policy
354
354
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-process"
9
- version = "4.0.1"
9
+ version = "4.1.0"
10
10
  description = "Executes process runs defined on disk—either directly or by consuming them from a queue as a worker—against filestate selections"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -20,7 +20,7 @@ classifiers = [
20
20
  dependencies = [
21
21
  "wexample-file>=9.2.0",
22
22
  "wexample-queue>=2.0.0",
23
- "wexample-wex-addon-app>=32.3.0",
23
+ "wexample-wex-addon-app>=32.4.0",
24
24
  ]
25
25
 
26
26
  [project.readme]
@@ -175,20 +175,23 @@ class FileStateOptionProcessType(AbstractProcessType):
175
175
  files: dict[str, list[dict[str, Any]]] = {}
176
176
 
177
177
  for verdict in verdicts:
178
+ entry: dict[str, Any] = {
179
+ "code": verdict.code,
180
+ "message": verdict.message,
181
+ "parameters": verdict.parameters,
182
+ # Reduced to the operation's name: enough to know a fix exists,
183
+ # and the one a `fix` run would apply.
184
+ "remedy": (
185
+ type(verdict.remedy).get_name() if verdict.remedy else None
186
+ ),
187
+ }
188
+ # Where in the file, when the rule knows: absent rather than empty, so
189
+ # a verdict about the whole file reads as it always did.
190
+ if verdict.locations:
191
+ entry["locations"] = verdict.locations
178
192
  files.setdefault(
179
193
  self._relative(context, verdict.target.get_path()), []
180
- ).append(
181
- {
182
- "code": verdict.code,
183
- "message": verdict.message,
184
- "parameters": verdict.parameters,
185
- # Reduced to the operation's name: enough to know a fix exists,
186
- # and the one a `fix` run would apply.
187
- "remedy": (
188
- type(verdict.remedy).get_name() if verdict.remedy else None
189
- ),
190
- }
191
- )
194
+ ).append(entry)
192
195
 
193
196
  return {
194
197
  "checked": len(items),
@@ -0,0 +1,38 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+
6
+ def test_a_text_search_run_names_every_place_the_text_stands(tmp_path: Path) -> None:
7
+ from wexample_prompt.common.io_manager import IoManager
8
+
9
+ from wexample_wex_addon_process.process_type.family.file_state_process_type_family import (
10
+ FileStateProcessTypeFamily,
11
+ )
12
+ from wexample_wex_addon_process.process_type.process_type_registry import (
13
+ ProcessTypeRegistry,
14
+ )
15
+ from wexample_wex_addon_process.process_type.selection import Selection
16
+ from wexample_wex_addon_process.runner.process_runner import ProcessRunner
17
+
18
+ (tmp_path / "docs").mkdir()
19
+ (tmp_path / "docs" / "a.md").write_text("truite\n\nune truite, deux truite\n")
20
+ (tmp_path / "docs" / "b.md").write_text("saumon\n")
21
+ io = IoManager()
22
+
23
+ data = ProcessRunner(
24
+ io=io, registry=ProcessTypeRegistry([FileStateProcessTypeFamily()])
25
+ ).run(
26
+ workdir=tmp_path,
27
+ type_name="filestate:should_not_contain",
28
+ selection=Selection(io=io, workdir=tmp_path, patterns=["docs/*.md"]),
29
+ options={"should_not_contain": ["truite"]},
30
+ )
31
+
32
+ [verdict] = data["files"]["docs/a.md"]
33
+ assert [(place["line"], place["column"]) for place in verdict["locations"]] == [
34
+ (1, 1),
35
+ (3, 5),
36
+ (3, 18),
37
+ ]
38
+ assert data["passed"] == ["docs/b.md"]