mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-04 14:12:58 +00:00
The backend import package is now docsgpt, the name it will carry on PyPI; application was far too generic to install into anyone's site-packages. git mv plus a mechanical rewrite of every import, dotted string and path reference: 734 Python files, the compose files, Dockerfile, workflows, docs, setup scripts, devcontainer, k8s manifests, vscode config, pytest and coverage config, .gitignore. Behaviour is unchanged. Kept for one release: - A top-level application package whose meta-path finder resolves application.x.y to the already-imported docsgpt.x.y object, so old imports and entry points (celery -A application.app.celery, uvicorn application.asgi:asgi_app) keep working with a FutureWarning. - Celery registers every application.* task name as an alias of its docsgpt.* task on start-up, so messages queued by the previous release still run. The redbeat key prefix moves to redbeat:docsgpt:v2: so schedule entries the previous release wrote are left unread instead of firing twice. The backend image builds from the repository root (docker build -f docsgpt/Dockerfile .) so it can ship the alias package; a root .dockerignore allow-lists docsgpt/ and application/ and keeps caches, local data, .env files, the sample index files and the Dockerfile out. Compose and the image workflows point at the new context.
24 lines
737 B
Python
24 lines
737 B
Python
"""Deterministic source-id derivation for idempotent ingest.
|
|
|
|
DO NOT CHANGE the pinned UUID namespace — it backs cross-deploy
|
|
idempotency keys.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import uuid
|
|
|
|
# DO NOT CHANGE. See module docstring.
|
|
DOCSGPT_INGEST_NAMESPACE = uuid.UUID("fa25d5d1-398b-46df-ac89-8d1c360b9bea")
|
|
|
|
|
|
def derive_source_id(idempotency_key) -> uuid.UUID:
|
|
"""``uuid5(NS, key)`` when a key is supplied; ``uuid4()`` otherwise.
|
|
|
|
A non-string / empty key falls back to ``uuid4()`` so the caller
|
|
always gets a fresh id rather than a TypeError mid-route.
|
|
"""
|
|
if isinstance(idempotency_key, str) and idempotency_key:
|
|
return uuid.uuid5(DOCSGPT_INGEST_NAMESPACE, idempotency_key)
|
|
return uuid.uuid4()
|