Skip to content
Merged
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
6 changes: 3 additions & 3 deletions plain-email/plain/email/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,14 +163,14 @@ def as_bytes(self, unixfrom: bool = False, linesep: str = "\n") -> bytes:
return fp.getvalue()


class SafeMIMEMessage(MIMEMixin, MIMEMessage):
class SafeMIMEMessage(MIMEMixin, MIMEMessage): # ty: ignore[invalid-method-override]
def __setitem__(self, name: str, val: str) -> None:
# message/rfc822 attachments must be ASCII
name, val = _forbid_multi_line_headers(name, val, "ascii")
MIMEMessage.__setitem__(self, name, val)


class SafeMIMEText(MIMEMixin, MIMEText):
class SafeMIMEText(MIMEMixin, MIMEText): # ty: ignore[invalid-method-override]
def __init__(
self, _text: str, _subtype: str = "plain", _charset: str | None = None
) -> None:
Expand All @@ -195,7 +195,7 @@ def set_payload( # ty: ignore[invalid-method-override]
MIMEText.set_payload(self, payload, charset=charset)


class SafeMIMEMultipart(MIMEMixin, MIMEMultipart):
class SafeMIMEMultipart(MIMEMixin, MIMEMultipart): # ty: ignore[invalid-method-override]
def __init__(
self,
_subtype: str = "mixed",
Expand Down
4 changes: 2 additions & 2 deletions plain-postgres/plain/postgres/expressions.py
Original file line number Diff line number Diff line change
Expand Up @@ -429,8 +429,8 @@ def convert_value(self) -> Callable[[Any, Any, Any], Any]:
def get_lookup(self, lookup: str) -> type[Lookup] | None:
return self.output_field.get_lookup(lookup)

def get_transform(self, name: str) -> type[Transform] | None:
return self.output_field.get_transform(name) # ty: ignore[invalid-return-type]
def get_transform(self, name: str) -> Callable[..., Transform] | None:
return self.output_field.get_transform(name)

def relabeled_clone(self, change_map: dict[str, str]) -> Self:
clone = self.copy()
Expand Down
10 changes: 4 additions & 6 deletions plain-postgres/plain/postgres/fields/encrypted.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,15 +125,13 @@ class EncryptedFieldMixin:
name: str
model: Any

def get_lookup(self, lookup_name: str) -> type[Lookup] | None:
if lookup_name not in _ALLOWED_LOOKUPS:
def get_lookup(self, lookup: str) -> type[Lookup] | None:
if lookup not in _ALLOWED_LOOKUPS:
return None
get_lookup = getattr(super(), "get_lookup")
return get_lookup(lookup_name)
return get_lookup(lookup)

def get_transform(
self, lookup_name: str
) -> type[Transform] | Callable[..., Any] | None:
def get_transform(self, name: str) -> Callable[..., Transform] | None:
return None

def _check_encrypted_constraints(self) -> list[PreflightResult]:
Expand Down
8 changes: 3 additions & 5 deletions plain-postgres/plain/postgres/fields/json.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,12 @@ def get_db_prep_save(self, value: Any, connection: DatabaseConnection) -> Any:
return value
return self.get_db_prep_value(value, connection)

def get_transform(
self, lookup_name: str
) -> type[Transform] | Callable[..., Any] | None:
def get_transform(self, name: str) -> Callable[..., Transform] | None:
# Always returns a transform (never None in practice)
transform = super().get_transform(lookup_name)
transform = super().get_transform(name)
if transform:
return transform
return KeyTransformFactory(lookup_name)
return KeyTransformFactory(name)

def validate(self, value: Any, model_instance: Any) -> None:
super().validate(value, model_instance)
Expand Down
4 changes: 2 additions & 2 deletions plain-postgres/plain/postgres/fields/reverse_related.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ def related_model(self) -> type[Model]:
)
return self.field.model

def get_lookup(self, lookup_name: str) -> type[Lookup] | None:
return self.field.get_lookup(lookup_name)
def get_lookup(self, lookup: str) -> type[Lookup] | None:
return self.field.get_lookup(lookup)

def __repr__(self) -> str:
return f"<{type(self).__name__}: {self.related_model.model_options.package_label}.{self.related_model.model_options.model_name}>"
Expand Down
4 changes: 2 additions & 2 deletions plain-postgres/plain/postgres/lookups.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import math
from collections.abc import Sequence
from functools import cached_property
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING, Any, Self

from plain.postgres.dialect import (
OPERATORS,
Expand Down Expand Up @@ -187,7 +187,7 @@ def resolve_expression(
reuse: Any = None,
summarize: bool = False,
for_save: bool = False,
) -> Lookup:
) -> Self:
c = self.copy()
c.is_summary = summarize
c.lhs = self.lhs.resolve_expression(
Expand Down
14 changes: 6 additions & 8 deletions plain-postgres/plain/postgres/query_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -220,28 +220,26 @@ def get_instance_lookups(self) -> dict[str, type[Lookup | Transform]]:
get_class_lookups
)

def get_lookup(self, lookup_name: str) -> type[Lookup] | None:
def get_lookup(self, lookup: str) -> type[Lookup] | None:
from plain.postgres.lookups import Lookup

found = self._get_lookup(lookup_name)
found = self._get_lookup(lookup)
if found is None:
# output_field is a Field which inherits from RegisterLookupMixin
if output_field := getattr(self, "output_field", None):
return output_field.get_lookup(lookup_name)
return output_field.get_lookup(lookup)
if found is not None and not issubclass(found, Lookup):
return None
return found

def get_transform(
self, lookup_name: str
) -> type[Transform] | Callable[..., Any] | None:
def get_transform(self, name: str) -> Callable[..., Transform] | None:
from plain.postgres.lookups import Transform

found = self._get_lookup(lookup_name)
found = self._get_lookup(name)
if found is None:
# output_field is a Field which inherits from RegisterLookupMixin
if output_field := getattr(self, "output_field", None):
return output_field.get_transform(lookup_name)
return output_field.get_transform(name)
if found is not None and not issubclass(found, Transform):
return None
return found
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ dev = [
"plain-tunnel",
"plain-vendor",
# Type checking and better dev experience
"ty>=0.0.61",
"ty>=0.0.63",
"psycopg[binary]>=3.2.12",
]

Expand Down
44 changes: 22 additions & 22 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading