Coverage for apis_core/utils/settings.py: 44%

25 statements  

« prev     ^ index     » next       coverage.py v7.5.3, created at 2026-03-06 11:42 +0000

1# SPDX-FileCopyrightText: 2023 Birger Schacht 

2# SPDX-License-Identifier: MIT 

3 

4import logging 

5import tomllib 

6from urllib.parse import urlparse 

7 

8from django.conf import settings 

9from django.template.utils import get_app_template_dirs 

10 

11logger = logging.getLogger(__name__) 

12 

13 

14def dict_from_toml_directory(directory: str) -> dict: 

15 configs = {} 

16 pathlists = [path.glob("**/*.toml") for path in get_app_template_dirs(directory)] 

17 for file in [path for pathlist in pathlists for path in pathlist]: 

18 try: 

19 configs[file.resolve()] = tomllib.loads(file.read_text()) 

20 except Exception as e: 

21 logger.error(f"TOML parser could not read {file}: {e}") 

22 return configs 

23 

24 

25def internal_uris() -> list[str]: 

26 return list(set([apis_base_uri()] + getattr(settings, "APIS_FORMER_BASE_URIS", []))) 

27 

28 

29def apis_base_uri() -> str: 

30 return getattr(settings, "APIS_BASE_URI", "https://example.org") 

31 

32 

33def rdf_namespace_prefix() -> str: 

34 if hasattr(settings, "APIS_RDF_NAMESPACE_PREFIX"): 

35 return settings.APIS_RDF_NAMESPACE_PREFIX 

36 base_uri = urlparse(apis_base_uri()) 

37 hostname = base_uri.hostname or "example.org" 

38 return hostname.split(".", 1)[0]