mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-15 12:13:38 +00:00
refactor: rename the application package to docsgpt
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.
This commit is contained in:
1 parent
3e7f1f91b4
commit
574f96341e
984 files changed
+9847
-9682
No files matched your search
@@ -0,0 +1,57 @@
|
||||
"""``application`` is now ``docsgpt``; this alias keeps the old name importable for one release.
|
||||
|
||||
Every ``import application.x.y`` resolves to the already-imported ``docsgpt.x.y``
|
||||
module object, so there is exactly one settings object, one Celery app and one
|
||||
Flask app however a process refers to them. Entry points such as
|
||||
``celery -A application.app.celery`` and ``uvicorn application.asgi:asgi_app``
|
||||
keep working; update them to ``docsgpt.…`` before the alias is removed.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib
|
||||
import importlib.abc
|
||||
import importlib.util
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
_OLD = __name__
|
||||
_NEW = "docsgpt"
|
||||
|
||||
|
||||
class _AliasLoader(importlib.abc.Loader):
|
||||
"""Hand back the ``docsgpt`` module instead of executing anything."""
|
||||
|
||||
def __init__(self, target: str) -> None:
|
||||
self._target = target
|
||||
|
||||
def create_module(self, spec):
|
||||
return importlib.import_module(self._target)
|
||||
|
||||
def exec_module(self, module) -> None:
|
||||
return None
|
||||
|
||||
|
||||
class _AliasFinder(importlib.abc.MetaPathFinder):
|
||||
"""Resolve ``application.<path>`` to ``docsgpt.<path>``."""
|
||||
|
||||
def find_spec(self, name, path=None, target=None):
|
||||
if name != _OLD and not name.startswith(_OLD + "."):
|
||||
return None
|
||||
new_name = _NEW + name[len(_OLD):]
|
||||
spec = importlib.util.find_spec(new_name)
|
||||
if spec is None:
|
||||
return None
|
||||
return importlib.util.spec_from_loader(
|
||||
name, _AliasLoader(new_name), is_package=spec.submodule_search_locations is not None
|
||||
)
|
||||
|
||||
|
||||
warnings.warn(
|
||||
"The 'application' package was renamed to 'docsgpt'. Update imports and entry points "
|
||||
"(celery -A docsgpt.app.celery, uvicorn docsgpt.asgi:asgi_app); this alias will be removed.",
|
||||
FutureWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
sys.meta_path.insert(0, _AliasFinder())
|
||||
sys.modules[_OLD] = importlib.import_module(_NEW)
|
||||
Reference in new issue
Block a user