Skip to content

Commit 2e21c32

Browse files
committed
chore(typing):
- Refactor typealiases in router wrapper module - Remove "list" from spec_alias fields - Refactor typing in test modules - Update types in router tests - remove default values for TypeAliases
1 parent ab8c677 commit 2e21c32

13 files changed

Lines changed: 236 additions & 213 deletions

File tree

src/lsst/cmservice/client/wrappers.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from typing import TYPE_CHECKING, Any, TypeAlias
66

77
from httpx import ConnectError, HTTPStatusError
8-
from pydantic import BaseModel, TypeAdapter
8+
from pydantic import TypeAdapter
99

1010
from .. import models
1111
from ..common.logging import LOGGER
@@ -17,7 +17,7 @@
1717

1818

1919
def get_rows_no_parent_function(
20-
response_model_class: TypeAlias = BaseModel,
20+
response_model_class: TypeAlias,
2121
query: str = "",
2222
) -> Callable:
2323
"""Return a function that gets all the rows from a table
@@ -28,7 +28,7 @@ def get_rows_no_parent_function(
2828
2929
Parameters
3030
----------
31-
response_model_class: TypeAlias = BaseModel,
31+
response_model_class: TypeAlias,
3232
Pydantic class used to serialize the return value
3333
3434
query: str
@@ -53,7 +53,7 @@ def get_rows(obj: CMClient) -> list[response_model_class]:
5353

5454

5555
def get_rows_function(
56-
response_model_class: TypeAlias = BaseModel,
56+
response_model_class: TypeAlias,
5757
query: str = "",
5858
) -> Callable: # pragma: no cover
5959
"""Return a function that gets all the rows from a table
@@ -66,7 +66,7 @@ def get_rows_function(
6666
6767
Parameters
6868
----------
69-
response_model_class: TypeAlias = BaseModel,
69+
response_model_class: TypeAlias,
7070
Pydantic class used to serialize the return value
7171
7272
query: str
@@ -99,15 +99,15 @@ def get_rows(
9999

100100

101101
def get_row_function(
102-
response_model_class: TypeAlias = BaseModel,
102+
response_model_class: TypeAlias,
103103
query: str = "",
104104
) -> Callable:
105105
"""Return a function that gets a single row from a table (by ID)
106106
and attaches that function to a client.
107107
108108
Parameters
109109
----------
110-
response_model_class: TypeAlias = BaseModel,
110+
response_model_class: TypeAlias,
111111
Pydantic class used to serialize the return value
112112
113113
query: str
@@ -131,19 +131,19 @@ def row_get(
131131

132132

133133
def create_row_function(
134-
response_model_class: TypeAlias = BaseModel,
135-
create_model_class: TypeAlias = BaseModel,
134+
response_model_class: TypeAlias,
135+
create_model_class: TypeAlias,
136136
query: str = "",
137137
) -> Callable:
138138
"""Return a function that creates a single row in a table
139139
and attaches that function to a client.
140140
141141
Parameters
142142
----------
143-
response_model_class: TypeAlias = BaseModel,
143+
response_model_class: TypeAlias,
144144
Pydantic class used to serialize the return value
145145
146-
create_model_class: TypeAlias = BaseModel,
146+
create_model_class: TypeAlias,
147147
Pydantic class used to serialize the inputs value
148148
149149
query: str
@@ -168,19 +168,19 @@ def row_create(obj: CMClient, **kwargs: Any) -> response_model_class:
168168

169169

170170
def update_row_function(
171-
response_model_class: TypeAlias = BaseModel,
172-
update_model_class: TypeAlias = BaseModel,
171+
response_model_class: TypeAlias,
172+
update_model_class: TypeAlias,
173173
query: str = "",
174174
) -> Callable:
175175
"""Return a function that updates a single row in a table
176176
and attaches that function to a client.
177177
178178
Parameters
179179
----------
180-
response_model_class: TypeAlias = BaseModel,
180+
response_model_class: TypeAlias,
181181
Pydantic class used to serialize the return value
182182
183-
update_model_class: TypeAlias = BaseModel,
183+
update_model_class: TypeAlias,
184184
Pydantic class used to serialize the input values
185185
186186
query: str
@@ -233,15 +233,15 @@ def row_delete(
233233

234234

235235
def get_row_by_fullname_function(
236-
response_model_class: TypeAlias = BaseModel,
236+
response_model_class: TypeAlias,
237237
query: str = "",
238238
) -> Callable:
239239
"""Return a function that gets a single row from a table (by fullname)
240240
and attaches that function to a client.
241241
242242
Parameters
243243
----------
244-
response_model_class: TypeAlias = BaseModel,
244+
response_model_class: TypeAlias,
245245
Pydantic class used to serialize the return value
246246
247247
query: str
@@ -268,15 +268,15 @@ def get_row_by_fullname(
268268

269269

270270
def get_row_by_name_function(
271-
response_model_class: TypeAlias = BaseModel,
271+
response_model_class: TypeAlias,
272272
query: str = "",
273273
) -> Callable:
274274
"""Return a function that gets a single row from a table (by name)
275275
and attaches that function to a client.
276276
277277
Parameters
278278
----------
279-
response_model_class: TypeAlias = BaseModel,
279+
response_model_class: TypeAlias,
280280
Pydantic class used to serialize the return value
281281
282282
query: str
@@ -316,7 +316,7 @@ def get_node_property_function(
316316
317317
Parameters
318318
----------
319-
response_model_class: TypeAlias = BaseModel,
319+
response_model_class: TypeAlias,
320320
Pydantic class used to serialize the return value
321321
322322
query: str
@@ -353,7 +353,7 @@ def get_node_post_query_function(
353353
354354
Parameters
355355
----------
356-
response_model_class: TypeAlias = BaseModel,
356+
response_model_class: TypeAlias,
357357
Pydantic class used to serialize the return value
358358
359359
query_class: TypeAlias
@@ -394,7 +394,7 @@ def get_node_post_no_query_function(
394394
395395
Parameters
396396
----------
397-
response_model_class: TypeAlias = BaseModel,
397+
response_model_class: TypeAlias,
398398
Pydantic class used to serialize the return value
399399
400400
query: str
@@ -421,7 +421,7 @@ def node_update(
421421

422422

423423
def get_general_post_function(
424-
query_class: TypeAlias = BaseModel,
424+
query_class: TypeAlias,
425425
response_model_class: TypeAlias = Any,
426426
query: str = "",
427427
results_key: str | None = None,
@@ -431,7 +431,7 @@ def get_general_post_function(
431431
432432
Parameters
433433
----------
434-
response_model_class: TypeAlias = BaseModel,
434+
response_model_class: TypeAlias,
435435
Pydantic class used to serialize the return value
436436
437437
query: str
@@ -460,7 +460,7 @@ def general_post_function(
460460

461461

462462
def get_general_query_function(
463-
query_class: TypeAlias = BaseModel,
463+
query_class: TypeAlias,
464464
response_model_class: TypeAlias = Any,
465465
query: str = "",
466466
query_suffix: str = "",
@@ -474,7 +474,7 @@ def get_general_query_function(
474474
query_class: TypeAlias
475475
Pydantic class used to serialize the query parameters
476476
477-
response_model_class: TypeAlias = BaseModel,
477+
response_model_class: TypeAlias,
478478
Pydantic class used to serialize the return value
479479
480480
query: str

src/lsst/cmservice/common/types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,11 @@
22
from sqlalchemy.ext.asyncio import async_scoped_session
33
from sqlmodel.ext.asyncio.session import AsyncSession
44

5+
from .. import models
6+
57
type AnyAsyncSession = AsyncSession | AsyncSessionSA | async_scoped_session
68
"""A type union of async database sessions the application may use"""
9+
10+
11+
type AnyCampaignElement = models.Group | models.Campaign | models.Step | models.Job
12+
"""A type union of Campaign elements"""

src/lsst/cmservice/db/campaign.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class Campaign(Base, ElementMixin):
6262
metadata_: Mapped[dict] = mapped_column("metadata_", type_=MutableDict.as_mutable(JSONB), default=dict)
6363
child_config: Mapped[dict | list | None] = mapped_column(type_=JSON)
6464
collections: Mapped[dict | list | None] = mapped_column(type_=JSON)
65-
spec_aliases: Mapped[dict | list | None] = mapped_column(type_=JSON)
65+
spec_aliases: Mapped[dict | None] = mapped_column(type_=JSON)
6666

6767
spec_: Mapped[Specification] = relationship(
6868
"Specification",

src/lsst/cmservice/db/group.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class Group(Base, ElementMixin):
6161
metadata_: Mapped[dict] = mapped_column("metadata_", type_=MutableDict.as_mutable(JSONB), default=dict)
6262
child_config: Mapped[dict | list | None] = mapped_column(type_=JSON)
6363
collections: Mapped[dict | list | None] = mapped_column(type_=JSON)
64-
spec_aliases: Mapped[dict | list | None] = mapped_column(type_=JSON)
64+
spec_aliases: Mapped[dict | None] = mapped_column(type_=JSON)
6565

6666
spec_block_: Mapped[SpecBlock] = relationship("SpecBlock", viewonly=True)
6767
c_: Mapped["Campaign"] = relationship(

src/lsst/cmservice/db/job.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class Job(Base, ElementMixin):
6868
)
6969
child_config: Mapped[dict | list | None] = mapped_column(type_=JSON)
7070
collections: Mapped[dict | list | None] = mapped_column(type_=JSON)
71-
spec_aliases: Mapped[dict | list | None] = mapped_column(type_=JSON)
71+
spec_aliases: Mapped[dict | None] = mapped_column(type_=JSON)
7272
wms_job_id: Mapped[str | None] = mapped_column()
7373
stamp_url: Mapped[str | None] = mapped_column()
7474

src/lsst/cmservice/db/specification.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Specification(Base, RowMixin):
2828
data: Mapped[dict] = mapped_column(type_=JSON, default=dict)
2929
child_config: Mapped[dict | list | None] = mapped_column(type_=JSON)
3030
collections: Mapped[dict | list | None] = mapped_column(type_=JSON)
31-
spec_aliases: Mapped[dict | list | None] = mapped_column(type_=JSON)
31+
spec_aliases: Mapped[dict | None] = mapped_column(type_=JSON)
3232

3333
col_names_for_table = ["id", "name"]
3434

src/lsst/cmservice/db/step.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Step(Base, ElementMixin):
5858
metadata_: Mapped[dict] = mapped_column("metadata_", type_=MutableDict.as_mutable(JSONB), default=dict)
5959
child_config: Mapped[dict | list | None] = mapped_column(type_=JSON)
6060
collections: Mapped[dict | list | None] = mapped_column(type_=JSON)
61-
spec_aliases: Mapped[dict | list | None] = mapped_column(type_=JSON)
61+
spec_aliases: Mapped[dict | None] = mapped_column(type_=JSON)
6262

6363
spec_block_: Mapped[SpecBlock] = relationship("SpecBlock", viewonly=True)
6464
parent_: Mapped[Campaign] = relationship("Campaign", back_populates="s_")

src/lsst/cmservice/models/element.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ class ElementBase(BaseModel):
2121
metadata_: dict = Field(default_factory=dict)
2222

2323
# Overrides for configuring child nodes
24-
child_config: dict | str | None = None
24+
child_config: dict | None = None
2525

2626
# Overrides for making collection names
27-
collections: dict | str | None = None
27+
collections: dict | None = None
2828

2929
# Overrides for which SpecBlocks to use in constructing child Nodes
30-
spec_aliases: dict | str | None = None
30+
spec_aliases: dict | None = None
3131

3232
# Override for Callback handler class
3333
handler: str | None = None
@@ -75,13 +75,13 @@ class ElementUpdate(BaseModel):
7575
metadata_: dict | None = None
7676

7777
# Overrides for configuring child nodes
78-
child_config: dict | str | None = None
78+
child_config: dict | None = None
7979

8080
# Overrides for making collection names
81-
collections: dict | str | None = None
81+
collections: dict | None = None
8282

8383
# Overrides for which SpecBlocks to use in constructing child Nodes
84-
spec_aliases: dict | str | None = None
84+
spec_aliases: dict | None = None
8585

8686
# Override for Callback handler class
8787
handler: str | None = None

src/lsst/cmservice/models/interface.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ class LoadAndCreateCampaign(YamlFileQuery):
138138
# If empty use {spec_name}#campaign
139139
spec_block_assoc_name: str | None = None
140140
# Parameter Overrides
141-
data: dict | str | None = None
141+
data: dict | None = None
142142
# Overrides for configuring child nodes
143-
child_config: dict | str | None = None
143+
child_config: dict | None = None
144144
# Overrides for making collection names
145-
collections: dict | str | None = None
145+
collections: dict | None = None
146146
# Overrides for which SpecBlocks to use in constructing child Nodes
147-
spec_aliases: dict | str | None = None
147+
spec_aliases: dict | None = None
148148
# Override for Callback handler class
149149
handler: str | None = None
150150
# Allow updating existing specifications

src/lsst/cmservice/models/specification.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ class SpecificationBase(BaseModel):
1414
name: str
1515

1616
# Parameter Overrides
17-
data: dict | str | None = None
17+
data: dict | None = None
1818

1919
# Overrides for configuring child nodes
20-
child_config: dict | str | None = None
20+
child_config: dict | None = None
2121

2222
# Overrides for making collection names
23-
collections: dict | str | None = None
23+
collections: dict | None = None
2424

2525
# Overrides for which SpecBlocks to use in constructing child Nodes
26-
spec_aliases: dict | str | None = None
26+
spec_aliases: dict | None = None
2727

2828

2929
class SpecificationCreate(SpecificationBase):

0 commit comments

Comments
 (0)