Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/python-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"
python-version: "3.14"
cache: "pip"
cache-dependency-path: requirements.*.txt

Expand Down
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
default_language_version:
python: python3.13
python: python3.14
repos:
- repo: https://github.com/adamchainz/django-upgrade
rev: 1.24.0
Expand All @@ -14,13 +14,13 @@ repos:
- id: black

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.7
rev: v0.14.9
hooks:
- id: ruff

- repo: https://github.com/asottile/pyupgrade
rev: v3.19.1
rev: v3.21.2
hooks:
- id: pyupgrade
args:
- --py313-plus
- --py314-plus
24 changes: 12 additions & 12 deletions cbv/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@


class ProjectVersionManager(models.Manager):
def get_by_natural_key(self, name: str, version_number: str) -> "ProjectVersion":
def get_by_natural_key(self, name: str, version_number: str) -> ProjectVersion:
return self.get(
version_number=version_number,
)

def get_latest(self) -> "ProjectVersion":
def get_latest(self) -> ProjectVersion:
return self.order_by("-sortable_version_number")[0]


Expand Down Expand Up @@ -52,7 +52,7 @@ def generate_sortable_version_number(self) -> str:
class ModuleManager(models.Manager):
def get_by_natural_key(
self, module_name: str, project_name: str, version_number: str
) -> "Module":
) -> Module:
return self.get(
name=module_name,
project_version=ProjectVersion.objects.get_by_natural_key(
Expand Down Expand Up @@ -110,7 +110,7 @@ def get_absolute_url(self) -> str:
class KlassManager(models.Manager):
def get_by_natural_key(
self, klass_name: str, module_name: str, project_name: str, version_number: str
) -> "Klass":
) -> Klass:
return self.get(
name=klass_name,
module=Module.objects.get_by_natural_key(
Expand All @@ -120,7 +120,7 @@ def get_by_natural_key(
),
)

def get_latest_for_name(self, klass_name: str) -> "Klass":
def get_latest_for_name(self, klass_name: str) -> Klass:
qs = self.filter(
name__iexact=klass_name,
)
Expand Down Expand Up @@ -195,14 +195,14 @@ def get_source_url(self) -> str:
line = self.line_number
return f"{url}{version}{path}#L{line}"

def get_ancestors(self) -> models.QuerySet["Klass"]:
def get_ancestors(self) -> models.QuerySet[Klass]:
if not hasattr(self, "_ancestors"):
self._ancestors = Klass.objects.filter(inheritance__child=self).order_by(
"inheritance__order"
)
return self._ancestors

def get_children(self) -> models.QuerySet["Klass"]:
def get_children(self) -> models.QuerySet[Klass]:
if not hasattr(self, "_descendants"):
self._descendants = Klass.objects.filter(
ancestor_relationships__parent=self
Expand All @@ -211,7 +211,7 @@ def get_children(self) -> models.QuerySet["Klass"]:

# TODO: This is all mucho inefficient. Perhaps we should use mptt for
# get_all_ancestors, get_all_children, get_methods, & get_attributes?
def get_all_ancestors(self) -> list["Klass"]:
def get_all_ancestors(self) -> list[Klass]:
if not hasattr(self, "_all_ancestors"):
# Get immediate ancestors.
ancestors = self.get_ancestors().select_related("module__project_version")
Expand All @@ -233,31 +233,31 @@ def get_all_ancestors(self) -> list["Klass"]:
self._all_ancestors = cleaned_ancestors
return self._all_ancestors

def get_all_children(self) -> models.QuerySet["Klass"]:
def get_all_children(self) -> models.QuerySet[Klass]:
if not hasattr(self, "_all_descendants"):
children = self.get_children().select_related("module__project_version")
for child in children:
children = children | child.get_all_children()
self._all_descendants = children
return self._all_descendants

def get_methods(self) -> models.QuerySet["Method"]:
def get_methods(self) -> models.QuerySet[Method]:
if not hasattr(self, "_methods"):
methods = self.method_set.all().select_related("klass")
for ancestor in self.get_all_ancestors():
methods = methods | ancestor.get_methods()
self._methods = methods
return self._methods

def get_attributes(self) -> models.QuerySet["KlassAttribute"]:
def get_attributes(self) -> models.QuerySet[KlassAttribute]:
if not hasattr(self, "_attributes"):
attrs = self.attribute_set.all()
for ancestor in self.get_all_ancestors():
attrs = attrs | ancestor.get_attributes()
self._attributes = attrs
return self._attributes

def get_prepared_attributes(self) -> models.QuerySet["KlassAttribute"]:
def get_prepared_attributes(self) -> models.QuerySet[KlassAttribute]:
attributes = self.get_attributes()
# Make a dictionary of attributes based on name
attribute_names: dict[str, list[KlassAttribute]] = {}
Expand Down
8 changes: 4 additions & 4 deletions cbv/queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
@attrs.frozen
class VersionSwitcher:
version_name: str
other_versions: list["OtherVersion"]
other_versions: list[OtherVersion]
project_name: str = "Django"

@attrs.frozen
Expand All @@ -17,13 +17,13 @@ class OtherVersion:

@attrs.frozen
class NavData:
modules: list["Module"]
modules: list[Module]

@attrs.frozen
class Module:
source_name: str
short_name: str
classes: list["NavData.Klass"]
classes: list[NavData.Klass]
active: bool

@attrs.frozen
Expand All @@ -39,7 +39,7 @@ def _to_module_data(
module: models.Module,
active_module: models.Module | None,
active_klass: models.Klass | None,
) -> "NavData.Module":
) -> NavData.Module:
return NavData.Module(
source_name=module.source_name(),
short_name=module.short_name(),
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ python_files = [
extend-exclude = [
".env",
]
target-version = "py313"
target-version = "py314"

[tool.ruff.lint]
extend-select = [
Expand Down