diff --git a/CHANGELOG.md b/CHANGELOG.md index eca0828..cabd7ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added - Added ruff to template's `pyproject.toml` under dev extras. +- Added `conf.py` to template for configuring library. ### Changed diff --git a/examples/calver_inc/noxfile.py b/examples/calver_inc/noxfile.py index 1cd6c43..1b62f42 100644 --- a/examples/calver_inc/noxfile.py +++ b/examples/calver_inc/noxfile.py @@ -39,8 +39,6 @@ def should_skip(python: str, django: str) -> bool: # Django main requires Python 3.10+ return True - - if django == DJ50 and version(python) < version(PY310): # Django 5.0 requires Python 3.10+ return True diff --git a/examples/calver_month/noxfile.py b/examples/calver_month/noxfile.py index 80b013a..5697257 100644 --- a/examples/calver_month/noxfile.py +++ b/examples/calver_month/noxfile.py @@ -39,8 +39,6 @@ def should_skip(python: str, django: str) -> bool: # Django main requires Python 3.10+ return True - - if django == DJ50 and version(python) < version(PY310): # Django 5.0 requires Python 3.10+ return True diff --git a/examples/default/noxfile.py b/examples/default/noxfile.py index 6589e74..f716382 100644 --- a/examples/default/noxfile.py +++ b/examples/default/noxfile.py @@ -39,8 +39,6 @@ def should_skip(python: str, django: str) -> bool: # Django main requires Python 3.10+ return True - - if django == DJ50 and version(python) < version(PY310): # Django 5.0 requires Python 3.10+ return True diff --git a/src/django_twc_package/src/{{ module_name }}/_typing.py b/src/django_twc_package/src/{{ module_name }}/_typing.py new file mode 100644 index 0000000..73adda6 --- /dev/null +++ b/src/django_twc_package/src/{{ module_name }}/_typing.py @@ -0,0 +1,12 @@ +from __future__ import annotations + +import sys + +if sys.version_info >= (3, 12): + from typing import override as typing_override +else: # pragma: no cover + from typing_extensions import ( + override as typing_override, # pyright: ignore[reportUnreachable] + ) + +override = typing_override diff --git a/src/django_twc_package/src/{{ module_name }}/conf.py.jinja b/src/django_twc_package/src/{{ module_name }}/conf.py.jinja new file mode 100644 index 0000000..a8a19c6 --- /dev/null +++ b/src/django_twc_package/src/{{ module_name }}/conf.py.jinja @@ -0,0 +1,20 @@ +from __future__ import annotations + +from dataclasses import dataclass + +from django.conf import settings + +from ._typing import override + +{{ module_name|upper }}_SETTINGS_NAME = "{{ module_name|upper }}" + + +@dataclass(frozen=True) +class AppSettings: + @override + def __getattribute__(self, __name: str) -> object: + user_settings = getattr(settings, {{ module_name|upper }}_SETTINGS_NAME, {}) + return user_settings.get(__name, super().__getattribute__(__name)) # pyright: ignore[reportAny] + + +app_settings = AppSettings()