Skip to content
Open
17 changes: 17 additions & 0 deletions doc/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,23 @@
Changelog
=========

[Unreleased]
------------

Performance
^^^^^^^^^^^
- Cached commonly used metadata of fields to :attr:`~scim2_models.BaseModel.__scim_info__`.
- Collapsed all scim context validators in :class:`~scim2_models.BaseModel` to one model validator.
- Collapsed serialization to one model serializer in :class:`~scim2_models.BaseModel`.
- Moved ``model_dump`` and ``model_dump_json`` to :class:`~scim2_models.BaseModel`.
- Cached ``_normalize_attribute_name``.
- Simplified ``normalize_attribute_names``

Fixed
^^^^^
- Check recursively extensions' replace constraints.
- The result of ``model_dump`` does not differ from native pydantic's dump if ``scim_ctx`` is set to ``None``.

[0.6.12] - 2026-04-13
---------------------

Expand Down
3 changes: 3 additions & 0 deletions scim2_models/attributes.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from inspect import isclass
from typing import Annotated
from typing import Any
from typing import ClassVar
from typing import get_origin

from pydantic import Field
Expand All @@ -15,6 +16,8 @@
class ComplexAttribute(BaseModel):
"""A complex attribute as defined in :rfc:`RFC7643 §2.3.8 <7643#section-2.3.8>`."""

__is_complex_attribute__: ClassVar[bool] = True

_attribute_urn: str | None = None

def get_attribute_urn(self, field_name: str) -> str:
Expand Down
Loading
Loading