Skip to content

Commit

Permalink
linting
Browse files Browse the repository at this point in the history
  • Loading branch information
mochic committed Jul 30, 2024
1 parent e242401 commit 238133c
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 35 deletions.
21 changes: 11 additions & 10 deletions src/aind_slims_api/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

from pydantic import ValidationError
from requests import Response
from slims.criteria import Criterion, conjunction, equals, Junction, Expression
from slims.criteria import Criterion, Expression, Junction, conjunction, equals
from slims.internal import Record as SlimsRecord
from slims.slims import Slims, _SlimsApiException

Expand Down Expand Up @@ -85,6 +85,10 @@ def fetch(

for k, v in kwargs.items():
criteria.add(equals(k, v))

if isinstance(sort, str):
sort = [sort]

try:
records = self.db.fetch(
table,
Expand Down Expand Up @@ -145,11 +149,9 @@ def _validate_models(

@staticmethod
def _resolve_criteria(
model_type: Type[SlimsBaseModelTypeVar],
criteria: Criterion
model_type: Type[SlimsBaseModelTypeVar], criteria: Criterion
) -> Criterion:
"""Resolves field name to serialization alias in a criterion.
"""
"""Resolves criterion field name to serialization alias in a criterion."""
if isinstance(criteria, Junction):
criteria.members = [
SlimsClient._resolve_criteria(model_type, sub_criteria)
Expand All @@ -167,11 +169,10 @@ def _resolve_criteria(

@staticmethod
def _validate_criteria(
model_type: Type[SlimsBaseModelTypeVar],
criteria: Criterion
model_type: Type[SlimsBaseModelTypeVar], criteria: Criterion
) -> None:
"""Validates that the types used in a criterion are compatible with the
types on the model. Raises a ValueError if they are not.
types on the model. Raises a ValueError if they are not.
"""
if isinstance(criteria, Junction):
for sub_criteria in criteria.members:
Expand Down Expand Up @@ -256,8 +257,8 @@ def fetch_model(
model,
*args,
sort="-created_on",
start=1,
end=2,
start=0, # slims rows appear to be 0-indexed
end=1,
**kwargs,
)
if len(records) > 0:
Expand Down
2 changes: 1 addition & 1 deletion src/aind_slims_api/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
from aind_slims_api.models.attachment import SlimsAttachment
from aind_slims_api.models.behavior_session import SlimsBehaviorSession
from aind_slims_api.models.instrument import SlimsInstrument
from aind_slims_api.models.metadata import SlimsMetadataReference
from aind_slims_api.models.mouse import SlimsMouseContent
from aind_slims_api.models.unit import SlimsUnit
from aind_slims_api.models.user import SlimsUser
from aind_slims_api.models.waterlog_result import SlimsWaterlogResult
from aind_slims_api.models.waterlog_water_restriction import SlimsWaterRestrictionEvent
from aind_slims_api.models.metadata import SlimsMetadataReference

__all__ = [
"SlimsAttachment",
Expand Down
5 changes: 3 additions & 2 deletions src/aind_slims_api/models/attachment.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
"""Model for a record in the Attachment table in SLIMS."""

from pydantic import Field
from typing import Optional
from datetime import datetime
from typing import Optional

from pydantic import Field

from aind_slims_api.models.base import SlimsBaseModel

Expand Down
2 changes: 1 addition & 1 deletion src/aind_slims_api/models/instrument.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Contains a model for the instrument content, and a method for fetching it"""

from typing import Optional
from datetime import datetime
from typing import Optional

from pydantic import Field

Expand Down
7 changes: 5 additions & 2 deletions src/aind_slims_api/models/metadata.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
"""Models for the metadata stored in SLIMS."""
from pydantic import Field
from typing import Optional

from datetime import datetime
from typing import Optional

from pydantic import Field

from aind_slims_api.models.base import SlimsBaseModel


Expand Down
3 changes: 2 additions & 1 deletion src/aind_slims_api/models/mouse.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
"""Contains a model for the mouse content, and a method for fetching it"""

from typing import Annotated, ClassVar, Optional
from datetime import datetime
from typing import Annotated, ClassVar, Optional

from pydantic import BeforeValidator, Field

from aind_slims_api.models.base import SlimsBaseModel
Expand Down
2 changes: 1 addition & 1 deletion src/aind_slims_api/models/unit.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Contains a model for a unit"""

from typing import Optional
from datetime import datetime
from typing import Optional

from pydantic import Field

Expand Down
2 changes: 1 addition & 1 deletion src/aind_slims_api/models/user.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Contains a model for a user."""

from typing import Optional
from datetime import datetime
from typing import Optional

from pydantic import Field

Expand Down
27 changes: 11 additions & 16 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,8 +296,7 @@ def test_add_attachment_content(self, mock_post: MagicMock):
"test",
"some test content",
)
self.assertEqual(
result, int(self.example_add_attachments_response_text))
self.assertEqual(result, int(self.example_add_attachments_response_text))
self.assertEqual(mock_post.call_count, 1)
self.assertEqual(
mock_post.mock_calls[0].kwargs["body"]["atln_recordPk"], unit_pk
Expand Down Expand Up @@ -350,14 +349,14 @@ def test_resolve_model_alias_invalid(self):

@patch("slims.slims.Slims.fetch")
def test_fetch_model_criterion(self, mock_slims_fetch: MagicMock):
"""Tests fetch_model method with a criterion."""
mock_slims_fetch.return_value = self.example_fetch_user_response
self.example_client.fetch_model(
SlimsUser, equals("username", "LKim")
)
self.example_client.fetch_model(SlimsUser, equals("username", "LKim"))
mock_slims_fetch.assert_called_once()

@patch("slims.slims.Slims.fetch")
def test_fetch_model_criterion_junction(self, mock_slims_fetch: MagicMock):
"""Tests fetch_model method with a junction criterion."""
mock_slims_fetch.return_value = self.example_fetch_user_response
self.example_client.fetch_model(
SlimsUser,
Expand All @@ -367,30 +366,26 @@ def test_fetch_model_criterion_junction(self, mock_slims_fetch: MagicMock):

@patch("slims.slims.Slims.fetch")
def test_fetch_model_criterion_invalid_criterion_type(
self,
mock_slims_fetch: MagicMock
self, mock_slims_fetch: MagicMock
):
"""Tests fetch_model method with an invalid criterion type."""
mock_slims_fetch.return_value = []
with self.assertRaises(ValueError):
self.example_client.fetch_model(
SlimsUser, equals("username", 1)
)
self.example_client.fetch_model(SlimsUser, equals("username", 1))
mock_slims_fetch.assert_not_called()

@patch("slims.slims.Slims.fetch")
def test_fetch_model_invalid_criterion(self, mock_slims_fetch: MagicMock):
"""Tests fetch_model method with a non Expression/Junction input."""
mock_slims_fetch.return_value = []
with self.assertRaises(ValueError):
self.example_client.fetch_model(
SlimsUser, 1
)
self.example_client.fetch_model(SlimsUser, 1)
mock_slims_fetch.assert_not_called()

def test__resolve_criteria_invalid_criterion(self):
"""Tests _resolve_criteria method with a non Expression/Junction input."""
with self.assertRaises(ValueError):
self.example_client._resolve_criteria(
SlimsUser, 1
)
self.example_client._resolve_criteria(SlimsUser, 1)


if __name__ == "__main__":
Expand Down

0 comments on commit 238133c

Please sign in to comment.