csrd-utils 0.3.40__tar.gz → 0.3.42__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.
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/PKG-INFO +1 -1
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/pyproject.toml +1 -1
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/__main__.py +17 -4
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/cluster.py +2 -2
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +1 -3
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/.gitignore +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/README.md +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/audit.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/augmentor.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/doctor.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/manifest.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/requirements.fragment +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/manifest.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/requirements.fragment +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/manifest.yaml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/requirements.fragment +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/fragments.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/generator.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/resources.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/py.typed +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/pyproject.toml +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
- {csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csrd-utils
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.42
|
|
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
|
|
@@ -187,6 +187,14 @@ def _prompt_int(label: str, default: int) -> int:
|
|
|
187
187
|
print("ERROR: Enter a valid integer")
|
|
188
188
|
|
|
189
189
|
|
|
190
|
+
def _normalize_service_name(name: str) -> str:
|
|
191
|
+
"""Ensure service names consistently end with '-service'."""
|
|
192
|
+
normalized = name.strip()
|
|
193
|
+
if not normalized:
|
|
194
|
+
return normalized
|
|
195
|
+
return normalized if normalized.endswith("-service") else f"{normalized}-service"
|
|
196
|
+
|
|
197
|
+
|
|
190
198
|
def _print_cancelled() -> None:
|
|
191
199
|
# Avoid surfacing a traceback if a second Ctrl-C lands while printing.
|
|
192
200
|
with suppress(KeyboardInterrupt):
|
|
@@ -204,9 +212,10 @@ def _collect_new_service_config(args: argparse.Namespace) -> GenerateServiceArgs
|
|
|
204
212
|
if not interactive:
|
|
205
213
|
has_database = args.database != "none"
|
|
206
214
|
selected_database = "sqlite" if not has_database else args.database
|
|
215
|
+
normalized_name = _normalize_service_name(args.name)
|
|
207
216
|
return GenerateServiceArgs(
|
|
208
217
|
{
|
|
209
|
-
"name":
|
|
218
|
+
"name": normalized_name,
|
|
210
219
|
"output_dir": args.output,
|
|
211
220
|
"description": args.description,
|
|
212
221
|
"port": args.port,
|
|
@@ -227,8 +236,11 @@ def _collect_new_service_config(args: argparse.Namespace) -> GenerateServiceArgs
|
|
|
227
236
|
|
|
228
237
|
print("Interactive mode: press Enter to accept defaults.")
|
|
229
238
|
|
|
230
|
-
name = _prompt_text("Service name", args.name or "my-service")
|
|
231
|
-
|
|
239
|
+
name = _normalize_service_name(_prompt_text("Service name", args.name or "my-service"))
|
|
240
|
+
if getattr(args, "output_locked", False):
|
|
241
|
+
output_dir = args.output
|
|
242
|
+
else:
|
|
243
|
+
output_dir = Path(_prompt_text("Output directory", str(args.output)))
|
|
232
244
|
description = _prompt_text("Service description", args.description)
|
|
233
245
|
port = _prompt_int("HTTP port", args.port)
|
|
234
246
|
model_name = _prompt_text("Model name", args.model_name)
|
|
@@ -382,7 +394,7 @@ def _collect_new_workspace_config(args: argparse.Namespace) -> GenerateWorkspace
|
|
|
382
394
|
else Path(_prompt_text("Output directory", str(args.output)))
|
|
383
395
|
)
|
|
384
396
|
generate = args.generate or _prompt_choice(
|
|
385
|
-
"Generate in workspace now", ["none", "service", "cluster"], "
|
|
397
|
+
"Generate in workspace now", ["none", "service", "cluster"], "service"
|
|
386
398
|
)
|
|
387
399
|
return GenerateWorkspaceArgs(
|
|
388
400
|
{
|
|
@@ -413,6 +425,7 @@ def _default_service_namespace(output_dir: Path) -> argparse.Namespace:
|
|
|
413
425
|
return argparse.Namespace(
|
|
414
426
|
interactive=True,
|
|
415
427
|
name=None,
|
|
428
|
+
output_locked=True,
|
|
416
429
|
output=output_dir,
|
|
417
430
|
description="A microservice using the csrd library stack",
|
|
418
431
|
port=8080,
|
|
@@ -319,8 +319,8 @@ def render_compose(spec: ClusterSpec) -> dict[str, Any]:
|
|
|
319
319
|
app_service: dict[str, Any] = {
|
|
320
320
|
"image": f"ghcr.io/csrd-api/{name}:latest",
|
|
321
321
|
"build": {
|
|
322
|
-
"context":
|
|
323
|
-
"dockerfile": "Dockerfile",
|
|
322
|
+
"context": ".",
|
|
323
|
+
"dockerfile": f"Dockerfile.{name}",
|
|
324
324
|
},
|
|
325
325
|
"ports": [f"{service['port']}:{service['port']}"],
|
|
326
326
|
"environment": _service_environment(service, services),
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/caching/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/logging/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/metrics/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/tracing/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/settings.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/src/app/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/src/app/workers/tasks.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/features/workers/tests/test_workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.40 → csrd_utils-0.3.42}/src/csrd_utils/templates/cookiecutter-service/README.md
RENAMED
|
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
|