csrd-utils 0.3.23__tar.gz → 0.3.25__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 (87) hide show
  1. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/PKG-INFO +17 -5
  2. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/README.md +16 -4
  3. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/pyproject.toml +1 -1
  4. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/README.md +6 -6
  5. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/.gitignore +0 -0
  6. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/__init__.py +0 -0
  7. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/__main__.py +0 -0
  8. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/audit.py +0 -0
  9. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/augmentor.py +0 -0
  10. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/cluster.py +0 -0
  11. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/doctor.py +0 -0
  12. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
  13. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
  14. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/manifest.yaml +0 -0
  15. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/requirements.fragment +0 -0
  16. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
  17. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
  18. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
  19. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
  20. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/manifest.yaml +0 -0
  21. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/requirements.fragment +0 -0
  22. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
  23. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
  24. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
  25. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
  26. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
  27. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
  28. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
  29. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
  30. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
  31. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
  32. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
  33. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
  34. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
  35. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
  36. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
  37. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
  38. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
  39. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
  40. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/manifest.yaml +0 -0
  41. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/requirements.fragment +0 -0
  42. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
  43. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
  44. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
  45. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
  46. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
  47. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/fragments.py +0 -0
  48. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/generator.py +0 -0
  49. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/resources.py +0 -0
  50. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
  51. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
  52. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.dockerignore +0 -0
  53. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.env.example +0 -0
  54. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/.gitignore +0 -0
  55. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/Dockerfile +0 -0
  56. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/README.md +0 -0
  57. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/docker-compose.yml +0 -0
  58. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/pyproject.toml +0 -0
  59. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/requirements.txt +0 -0
  60. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/__init__.py +0 -0
  61. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/cache.py +0 -0
  62. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/delegates/__init__.py +0 -0
  63. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/delegates/upstreams.py +0 -0
  64. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/__init__.py +0 -0
  65. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/delegates.py +0 -0
  66. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/item_repository.py +0 -0
  67. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/dependencies/worker_broker.py +0 -0
  68. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/middleware/__init__.py +0 -0
  69. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/middleware/logging.py +0 -0
  70. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/py.typed +0 -0
  71. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/repositories/__init__.py +0 -0
  72. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/repositories/item_repository.py +0 -0
  73. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/settings.py +0 -0
  74. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/__init__.py +0 -0
  75. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/__init__.py +0 -0
  76. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/health_view.py +0 -0
  77. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/views/unversioned/items_view.py +0 -0
  78. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/workers/__init__.py +0 -0
  79. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/src/app/workers/tasks.py +0 -0
  80. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/__init__.py +0 -0
  81. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/acceptance/test_logging_middleware.py +0 -0
  82. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/conftest.py +0 -0
  83. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/test_items.py +0 -0
  84. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_cache.py +0 -0
  85. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_database_settings.py +0 -0
  86. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_delegates.py +0 -0
  87. {csrd_utils-0.3.23 → csrd_utils-0.3.25}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.service_name}}/tests/unit/test_worker_broker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: csrd-utils
3
- Version: 0.3.23
3
+ Version: 0.3.25
4
4
  Summary: CLI utilities for csrd service generation and feature augmentation
5
5
  Project-URL: Repository, https://github.com/csrd-api/fastapi-common
6
6
  Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
@@ -44,15 +44,27 @@ csrd audit --service . # explicitly audit one servi
44
44
 
45
45
  `feature plan --json` is useful for CI or tooling wrappers.
46
46
 
47
- ### Planned: workspace extraction command
47
+ ### Workspace extraction command
48
48
 
49
- Service extraction into a sibling workspace is planned as a future command:
49
+ Service extraction into a sibling workspace is supported:
50
50
 
51
51
  ```bash
52
52
  csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --mode copy
53
+ csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --mode move
54
+ csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --dry-run --json
53
55
  ```
54
56
 
55
- Until that lands, follow `docs/SERVICE_EXTRACTION_PLAYBOOK.md` for the current manual workflow.
57
+ Use extraction when service ownership diverges, release cadence becomes independent,
58
+ or workspace orchestration starts coupling unrelated deployments.
59
+
60
+ Manual fallback remains available if needed:
61
+
62
+ ```bash
63
+ csrd new workspace --name pricing-ws --output .. --generate none
64
+ cp -a ./source-ws/src/pricing ../pricing-ws/src/pricing
65
+ cd ../pricing-ws
66
+ csrd new cluster --spec ./.csrd/cluster.yaml --output . --force
67
+ ```
56
68
 
57
69
  ### Interactive generation behavior
58
70
 
@@ -119,10 +131,10 @@ with features_path() as feature_lib:
119
131
 
120
132
  - `docs/CLI_REFERENCE.md` - full command/flag reference
121
133
  - `docs/FEATURES.md` - bundled feature catalog and behavior
134
+ - `docs/FUTURE_WORK.md` - remaining provider-specific CI wiring work (Phase 5B)
122
135
  - `docs/AGENT_SMOKE_TESTS.md` - copy/paste validation flow for clean workspaces
123
136
  - `docs/COMMAND_MATRIX.yaml` - machine-readable command matrix for automation
124
137
  - `AGENTS.md` - package-local rules for autonomous agents
125
- - `../../docs/SERVICE_EXTRACTION_PLAYBOOK.md` - workspace service extraction workflow and status
126
138
 
127
139
  ## CLI-only agent mode
128
140
 
@@ -31,15 +31,27 @@ csrd audit --service . # explicitly audit one servi
31
31
 
32
32
  `feature plan --json` is useful for CI or tooling wrappers.
33
33
 
34
- ### Planned: workspace extraction command
34
+ ### Workspace extraction command
35
35
 
36
- Service extraction into a sibling workspace is planned as a future command:
36
+ Service extraction into a sibling workspace is supported:
37
37
 
38
38
  ```bash
39
39
  csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --mode copy
40
+ csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --mode move
41
+ csrd workspace extract-service --service ./source-ws/src/pricing --target-workspace ../pricing-ws --dry-run --json
40
42
  ```
41
43
 
42
- Until that lands, follow `docs/SERVICE_EXTRACTION_PLAYBOOK.md` for the current manual workflow.
44
+ Use extraction when service ownership diverges, release cadence becomes independent,
45
+ or workspace orchestration starts coupling unrelated deployments.
46
+
47
+ Manual fallback remains available if needed:
48
+
49
+ ```bash
50
+ csrd new workspace --name pricing-ws --output .. --generate none
51
+ cp -a ./source-ws/src/pricing ../pricing-ws/src/pricing
52
+ cd ../pricing-ws
53
+ csrd new cluster --spec ./.csrd/cluster.yaml --output . --force
54
+ ```
43
55
 
44
56
  ### Interactive generation behavior
45
57
 
@@ -106,10 +118,10 @@ with features_path() as feature_lib:
106
118
 
107
119
  - `docs/CLI_REFERENCE.md` - full command/flag reference
108
120
  - `docs/FEATURES.md` - bundled feature catalog and behavior
121
+ - `docs/FUTURE_WORK.md` - remaining provider-specific CI wiring work (Phase 5B)
109
122
  - `docs/AGENT_SMOKE_TESTS.md` - copy/paste validation flow for clean workspaces
110
123
  - `docs/COMMAND_MATRIX.yaml` - machine-readable command matrix for automation
111
124
  - `AGENTS.md` - package-local rules for autonomous agents
112
- - `../../docs/SERVICE_EXTRACTION_PLAYBOOK.md` - workspace service extraction workflow and status
113
125
 
114
126
  ## CLI-only agent mode
115
127
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "csrd-utils"
3
- version = "0.3.23"
3
+ version = "0.3.25"
4
4
  description = "CLI utilities for csrd service generation and feature augmentation"
5
5
  license = { text = "MIT" }
6
6
  requires-python = ">=3.12"
@@ -5,7 +5,7 @@ Generate a FastAPI service with composable feature toggles (database, delegates,
5
5
  ## Generate a service
6
6
 
7
7
  ```bash
8
- uvx cookiecutter . --directory starters/cookiecutter-service
8
+ uvx cookiecutter . --directory packages/utils/src/csrd_utils/templates/cookiecutter-service
9
9
  ```
10
10
 
11
11
  Key prompts:
@@ -25,24 +25,24 @@ Key prompts:
25
25
  - Adapter imports remain explicit via `from csrd.repository import ...`.
26
26
  - Feature-specific files are conditionally included using template sections.
27
27
  - `hooks/post_gen_project.py` validates incompatible feature combinations.
28
- - This template is the Phase 1 baseline for `docs/TEMPLATING_COMPREHENSIVE_PLAN.md`.
28
+ - This template is the baseline generation scaffold for `csrd-utils`.
29
29
 
30
30
  ## Example combinations
31
31
 
32
32
  ```bash
33
33
  # DB-only SQLite service
34
- uvx cookiecutter . --directory starters/cookiecutter-service \
34
+ uvx cookiecutter . --directory packages/utils/src/csrd_utils/templates/cookiecutter-service \
35
35
  --no-input service_name=inventory has_database=true database=sqlite \
36
36
  has_delegates=false has_workers=false has_caching=false
37
37
 
38
38
  # Postgres + delegates + caching
39
- uvx cookiecutter . --directory starters/cookiecutter-service \
39
+ uvx cookiecutter . --directory packages/utils/src/csrd_utils/templates/cookiecutter-service \
40
40
  --no-input service_name=pricing has_database=true database=postgres \
41
41
  has_delegates=true upstreams=http://inventory:8081 \
42
42
  has_workers=false has_caching=true
43
43
 
44
44
  # Worker-focused service with RabbitMQ and no DB
45
- uvx cookiecutter . --directory starters/cookiecutter-service \
45
+ uvx cookiecutter . --directory packages/utils/src/csrd_utils/templates/cookiecutter-service \
46
46
  --no-input service_name=jobs has_database=false has_workers=true broker=rabbitmq \
47
47
  has_delegates=false has_caching=false
48
48
  ```
@@ -50,4 +50,4 @@ uvx cookiecutter . --directory starters/cookiecutter-service \
50
50
  ## Next phase
51
51
 
52
52
  - Phase 2 introduces standalone feature augmentation via `csrd feature`.
53
- - See `docs/TEMPLATING_COMPREHENSIVE_PLAN.md` for the Phase 2 roadmap and constraints.
53
+ - See `packages/utils/docs/FUTURE_WORK.md` for remaining provider-specific CI future work.
File without changes