mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-04 20:13:04 +00:00
About 85 call sites read a setting as getattr(settings, "NAME", fallback), each carrying its own copy of the default. Every one of those names is a field with a default on the model, so the fallback could never apply to the real settings object; it only masked drift. Two had drifted: - OPENAI_PROMPT_CACHE_KEY defaults to True on the model but the reader fell back to False, and two test stubs relied on that. - SharePoint's MICROSOFT_AUTHORITY fallback to https://login.microsoftonline.com/<tenant> never fired, because the attribute always exists (as None), so MSAL got authority=None. The connector now derives the tenant authority when the setting is unset, as its test always assumed. Four places read EMBEDDINGS_KEY straight from os.environ, skipping the "None"/"" normalisation the model applies; they read the setting now. Test stubs that replaced a module's settings with a SimpleNamespace list every setting the code under test reads.
33 lines
1011 B
Python
33 lines
1011 B
Python
"""Storage factory for creating different storage implementations."""
|
|
from typing import Dict, Type
|
|
|
|
from docsgpt.storage.base import BaseStorage
|
|
from docsgpt.storage.local import LocalStorage
|
|
from docsgpt.storage.s3 import S3Storage
|
|
from docsgpt.core.settings import settings
|
|
|
|
|
|
class StorageCreator:
|
|
storages: Dict[str, Type[BaseStorage]] = {
|
|
"local": LocalStorage,
|
|
"s3": S3Storage,
|
|
}
|
|
|
|
_instance = None
|
|
|
|
@classmethod
|
|
def get_storage(cls) -> BaseStorage:
|
|
if cls._instance is None:
|
|
storage_type = settings.STORAGE_TYPE
|
|
cls._instance = cls.create_storage(storage_type)
|
|
|
|
return cls._instance
|
|
|
|
@classmethod
|
|
def create_storage(cls, type_name: str, *args, **kwargs) -> BaseStorage:
|
|
storage_class = cls.storages.get(type_name.lower())
|
|
if not storage_class:
|
|
raise ValueError(f"No storage implementation found for type {type_name}")
|
|
|
|
return storage_class(*args, **kwargs)
|