Skip to content

Commit fe01ca2

Browse files
🏛️ Architect: Refactor KeyErrorPopStudyKeyMixin (#800)
* Refactor KeyErrorPopStudyKeyMixin to use explicit strategy assignments - Removed KeyErrorPopStudyKeyMixin from core mixins. - Replaced mixin usage in codings, forms, intervals, sites, and variables endpoints with explicit STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError) assignments. - Enforced Explicit > Implicit design principle. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> * Refactor KeyErrorPopStudyKeyMixin to use explicit strategy assignments and fix formatting - Removed KeyErrorPopStudyKeyMixin from core mixins. - Replaced mixin usage in codings, forms, intervals, sites, and variables endpoints with explicit STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError) assignments. - Enforced Explicit > Implicit design principle. - Fixed black formatting errors. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> * Refactor KeyErrorPopStudyKeyMixin to use explicit strategy assignments and fix formatting - Removed KeyErrorPopStudyKeyMixin from core mixins. - Replaced mixin usage in codings, forms, intervals, sites, and variables endpoints with explicit STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError) assignments. - Enforced Explicit > Implicit design principle. - Fixed black formatting errors. - Fixed ruff import errors. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent 5c18712 commit fe01ca2

7 files changed

Lines changed: 14 additions & 19 deletions

File tree

src/imednet/core/endpoint/mixins/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@
44
from .caching import CachedEndpointMixin, CacheMixin
55
from .get import FilterGetEndpointMixin, PathGetEndpointMixin
66
from .list import ListEndpointMixin
7-
from .params import KeyErrorPopStudyKeyMixin, ParamMixin
7+
from .params import ParamMixin
88
from .parsing import ParsingMixin
99

1010
__all__ = [
1111
"AsyncPaginator",
1212
"CachedEndpointMixin",
1313
"CacheMixin",
1414
"FilterGetEndpointMixin",
15-
"KeyErrorPopStudyKeyMixin",
1615
"ListEndpointMixin",
1716
"Paginator",
1817
"ParamMixin",

src/imednet/core/endpoint/mixins/params.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
DefaultParamProcessor,
77
KeepStudyKeyStrategy,
88
OptionalStudyKeyStrategy,
9-
PopStudyKeyStrategy,
109
StudyKeyStrategy,
1110
)
1211
from imednet.core.endpoint.structs import ParamState
@@ -91,9 +90,3 @@ def _resolve_params(
9190
params.update(extra_params)
9291

9392
return ParamState(study=study, params=params, other_filters=other_filters)
94-
95-
96-
class KeyErrorPopStudyKeyMixin:
97-
"""Mixin that configures the endpoint to pop the study key and raise KeyError if missing."""
98-
99-
STUDY_KEY_STRATEGY: Optional[StudyKeyStrategy] = PopStudyKeyStrategy(exception_cls=KeyError)

src/imednet/endpoints/codings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
from imednet.core.endpoint.base import GenericListGetEndpoint
44
from imednet.core.endpoint.edc_mixin import EdcEndpointMixin
5-
from imednet.core.endpoint.mixins import KeyErrorPopStudyKeyMixin
5+
from imednet.core.endpoint.strategies import PopStudyKeyStrategy
66
from imednet.models.codings import Coding
77

88

99
class CodingsEndpoint(
1010
EdcEndpointMixin,
11-
KeyErrorPopStudyKeyMixin,
1211
GenericListGetEndpoint[Coding],
1312
):
1413
"""
@@ -20,3 +19,4 @@ class CodingsEndpoint(
2019
PATH = "codings"
2120
MODEL = Coding
2221
_id_param = "codingId"
22+
STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError)

src/imednet/endpoints/forms.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
from imednet.core.endpoint.base import GenericListGetEndpoint
44
from imednet.core.endpoint.edc_mixin import EdcEndpointMixin
5-
from imednet.core.endpoint.mixins import CachedEndpointMixin, KeyErrorPopStudyKeyMixin
5+
from imednet.core.endpoint.mixins import CachedEndpointMixin
6+
from imednet.core.endpoint.strategies import PopStudyKeyStrategy
67
from imednet.models.forms import Form
78

89

910
class FormsEndpoint(
1011
EdcEndpointMixin,
11-
KeyErrorPopStudyKeyMixin,
1212
CachedEndpointMixin,
1313
GenericListGetEndpoint[Form],
1414
):
@@ -21,3 +21,4 @@ class FormsEndpoint(
2121
PATH = "forms"
2222
MODEL = Form
2323
_id_param = "formId"
24+
STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError)

src/imednet/endpoints/intervals.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
from imednet.core.endpoint.base import GenericListGetEndpoint
44
from imednet.core.endpoint.edc_mixin import EdcEndpointMixin
5-
from imednet.core.endpoint.mixins import CachedEndpointMixin, KeyErrorPopStudyKeyMixin
5+
from imednet.core.endpoint.mixins import CachedEndpointMixin
6+
from imednet.core.endpoint.strategies import PopStudyKeyStrategy
67
from imednet.models.intervals import Interval
78

89

910
class IntervalsEndpoint(
1011
EdcEndpointMixin,
11-
KeyErrorPopStudyKeyMixin,
1212
CachedEndpointMixin,
1313
GenericListGetEndpoint[Interval],
1414
):
@@ -21,3 +21,4 @@ class IntervalsEndpoint(
2121
PATH = "intervals"
2222
MODEL = Interval
2323
_id_param = "intervalId"
24+
STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError)

src/imednet/endpoints/sites.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
from imednet.core.endpoint.base import GenericListGetEndpoint
44
from imednet.core.endpoint.edc_mixin import EdcEndpointMixin
5-
from imednet.core.endpoint.mixins import KeyErrorPopStudyKeyMixin
5+
from imednet.core.endpoint.strategies import PopStudyKeyStrategy
66
from imednet.models.sites import Site
77

88

99
class SitesEndpoint(
1010
EdcEndpointMixin,
11-
KeyErrorPopStudyKeyMixin,
1211
GenericListGetEndpoint[Site],
1312
):
1413
"""
@@ -20,3 +19,4 @@ class SitesEndpoint(
2019
PATH = "sites"
2120
MODEL = Site
2221
_id_param = "siteId"
22+
STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError)

src/imednet/endpoints/variables.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
from imednet.core.endpoint.base import GenericListGetEndpoint
44
from imednet.core.endpoint.edc_mixin import EdcEndpointMixin
5-
from imednet.core.endpoint.mixins import CachedEndpointMixin, KeyErrorPopStudyKeyMixin
5+
from imednet.core.endpoint.mixins import CachedEndpointMixin
6+
from imednet.core.endpoint.strategies import PopStudyKeyStrategy
67
from imednet.models.variables import Variable
78

89

910
class VariablesEndpoint(
1011
EdcEndpointMixin,
11-
KeyErrorPopStudyKeyMixin,
1212
CachedEndpointMixin,
1313
GenericListGetEndpoint[Variable],
1414
):
@@ -21,3 +21,4 @@ class VariablesEndpoint(
2121
PATH = "variables"
2222
MODEL = Variable
2323
_id_param = "variableId"
24+
STUDY_KEY_STRATEGY = PopStudyKeyStrategy(exception_cls=KeyError)

0 commit comments

Comments
 (0)