Skip to content

Commit

Permalink
linting and strict version
Browse files Browse the repository at this point in the history
  • Loading branch information
close2code-palm committed Feb 8, 2025
1 parent 959bd67 commit 79a2811
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 29 deletions.
1 change: 0 additions & 1 deletion docs/examples/reference/integrations/native_msgspec.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import datetime
from dataclasses import dataclass

from msgspec import Struct

Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ sqlalchemy = ['sqlalchemy >= 2.0.0']
sqlalchemy-strict = ['sqlalchemy >= 2.0.0, <= 2.0.36']
pydantic = ['pydantic >= 2.0.0']
pydantic-strict = ['pydantic >= 2.0.0, <= 2.10.3']
msgspec = ["msgspec >= 0.14.0"]
msgspec = ['msgspec >= 0.14.0']
msgspec-strict = ['msgspec >= 0.14.0, <= 0.19.0']

[project.urls]
'Homepage' = 'https://github.com/reagento/adaptix'
Expand Down
13 changes: 7 additions & 6 deletions src/adaptix/_internal/integrations/msgspec/native.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
from typing import Any, Callable, Iterable, Mapping, Optional, TypedDict, TypeVar
import contextlib
from collections.abc import Iterable
from typing import Any, Callable, Optional, TypedDict, TypeVar

from adaptix import Dumper, Loader, Mediator, Omittable, Omitted, Provider
from adaptix import Dumper, Loader, Mediator, Provider
from adaptix._internal.morphing.load_error import LoadError
from adaptix._internal.morphing.provider_template import DumperProvider, LoaderProvider
from adaptix._internal.morphing.request_cls import DumperRequest, LoaderRequest
from adaptix._internal.provider.facade.provider import bound_by_any
from adaptix._internal.provider.loc_stack_filtering import Pred

try:
with contextlib.suppress(ImportError):
from msgspec import ValidationError, convert, to_builtins
except ImportError:
pass


T = TypeVar("T")

Expand Down Expand Up @@ -70,7 +71,7 @@ def native_msgspec_dumper_with_params(data):
def native_msgspec(
*preds: Pred,
convert: Optional[Convert] = None,
to_builtins: Optional[Convert] = None,
to_builtins: Optional[ToBuiltins] = None,
) -> Provider:
return bound_by_any(
preds,
Expand Down
4 changes: 2 additions & 2 deletions src/adaptix/_internal/model_tools/introspection/msgspec.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import inspect
from collections.abc import Mapping
from types import MappingProxyType
from typing import Mapping

try:
from msgspec import NODEFAULT
Expand Down Expand Up @@ -111,7 +111,7 @@ def get_struct_shape(tp) -> FullShape:
) for fi in fields_info),
overriden_types=frozenset(
annotation
for annotation in tp.__annotations__.keys()
for annotation in tp.__annotations__
if annotation in init_fields
),
),
Expand Down
40 changes: 26 additions & 14 deletions tests/tests_helpers/tests_helpers/model_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,27 +91,39 @@ def sqlalchemy_decorator(cls):

def model_spec_to_schema(spec: ModelSpec):
if spec == ModelSpec.DATACLASS:
return ModelSpecSchema(decorator=dataclass, bases=(), get_field=getattr, kind=spec)
if spec == ModelSpec.TYPED_DICT:
return ModelSpecSchema(decorator=lambda x: x, bases=(TypedDict,), get_field=getitem, kind=spec)
if spec == ModelSpec.NAMED_TUPLE:
return ModelSpecSchema(decorator=lambda x: x, bases=(NamedTuple,), get_field=getattr, kind=spec)
if spec == ModelSpec.ATTRS:
model_spec_schema = ModelSpecSchema(decorator=dataclass, bases=(), get_field=getattr, kind=spec)
elif spec == ModelSpec.TYPED_DICT:
model_spec_schema = ModelSpecSchema(decorator=lambda x: x, bases=(TypedDict,), get_field=getitem, kind=spec)
elif spec == ModelSpec.NAMED_TUPLE:
model_spec_schema = ModelSpecSchema(decorator=lambda x: x, bases=(NamedTuple,), get_field=getattr, kind=spec)
elif spec == ModelSpec.ATTRS:
from attrs import define
return ModelSpecSchema(decorator=define, bases=(), get_field=getattr, kind=spec)
if spec == ModelSpec.SQLALCHEMY:
return ModelSpecSchema(decorator=create_sqlalchemy_decorator(), bases=(), get_field=getattr, kind=spec)
if spec == ModelSpec.PYDANTIC:
model_spec_schema = ModelSpecSchema(decorator=define, bases=(), get_field=getattr, kind=spec)
elif spec == ModelSpec.SQLALCHEMY:
model_spec_schema = ModelSpecSchema(
decorator=create_sqlalchemy_decorator(),
bases=(),
get_field=getattr,
kind=spec,
)
elif spec == ModelSpec.PYDANTIC:
from pydantic import BaseModel, ConfigDict

class CustomBaseModel(BaseModel):
model_config = ConfigDict(arbitrary_types_allowed=True)

return ModelSpecSchema(decorator=lambda x: x, bases=(CustomBaseModel, ), get_field=getattr, kind=spec)
if spec == ModelSpec.MSGSPEC:
model_spec_schema = ModelSpecSchema(
decorator=lambda x: x,
bases=(CustomBaseModel, ),
get_field=getattr,
kind=spec,
)
elif spec == ModelSpec.MSGSPEC:
from msgspec import Struct
return ModelSpecSchema(decorator=lambda x: x, bases=(Struct,), get_field=getattr, kind=spec)
raise ValueError
model_spec_schema = ModelSpecSchema(decorator=lambda x: x, bases=(Struct,), get_field=getattr, kind=spec)
else:
raise ValueError
return model_spec_schema


def exclude_model_spec(first_spec: ModelSpec, *other_specs: ModelSpec):
Expand Down
10 changes: 5 additions & 5 deletions tests/unit/model_tools/introspection/test_msgspec.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from types import MappingProxyType, NoneType
from typing import Annotated, Any, ClassVar, Generic, Sequence, TypeVar, Union
from typing import Annotated, ClassVar, Generic, Sequence, TypeVar, Union
from unittest.mock import ANY

from msgspec import Struct, field
Expand Down Expand Up @@ -57,7 +57,7 @@ def test_basic():
InputField(
type=bool,
id="c",
default=DefaultValue(True),
default=DefaultValue(value=True),
is_required=False,
metadata=MappingProxyType({}),
original=ANY,
Expand Down Expand Up @@ -129,7 +129,7 @@ def test_basic():
OutputField(
type=bool,
id="c",
default=DefaultValue(True),
default=DefaultValue(value=True),
accessor=create_attr_accessor("c", is_required=True),
metadata=MappingProxyType({}),
original=ANY,
Expand Down Expand Up @@ -395,7 +395,7 @@ def test_features():
InputField(
type=bool,
id="b",
default=DefaultValue(True),
default=DefaultValue(value=True),
is_required=False,
metadata=MappingProxyType({}),
original=ANY,
Expand Down Expand Up @@ -428,7 +428,7 @@ def test_features():
OutputField(
type=bool,
id="b",
default=DefaultValue(True),
default=DefaultValue(value=True),
accessor=create_attr_accessor("b", is_required=True),
metadata=MappingProxyType({}),
original=ANY,
Expand Down

0 comments on commit 79a2811

Please sign in to comment.