Skip to content

Commit a654929

Browse files
committed
schema for categories
1 parent 29ad84e commit a654929

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

parcllabs/schemas/schemas.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,6 @@ class Config:
291291
class PropertyV2RetrieveParamCategories(BaseModel):
292292
"""High level categories for PropertyV2RetrieveParams."""
293293

294-
property_filters: PropertyV2RetrieveParams = Field(default=None, description="Property filters")
295-
event_filters: PropertyV2RetrieveParams = Field(default=None, description="Event filters")
296-
owner_filters: PropertyV2RetrieveParams = Field(default=None, description="Owner filters")
294+
property_filters: dict[str, Any] = Field(default_factory=dict, description="Property filters")
295+
event_filters: dict[str, Any] = Field(default_factory=dict, description="Event filters")
296+
owner_filters: dict[str, Any] = Field(default_factory=dict, description="Owner filters")

parcllabs/services/properties/property_v2.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pandas as pd
66

77
from parcllabs.enums import RequestLimits
8-
from parcllabs.schemas.schemas import PropertyV2RetrieveParams
8+
from parcllabs.schemas.schemas import PropertyV2RetrieveParamCategories, PropertyV2RetrieveParams
99
from parcllabs.services.parcllabs_service import ParclLabsService
1010
from parcllabs.services.validators import Validators
1111

@@ -315,6 +315,16 @@ def _validate_limit(self, limit: int | None) -> int:
315315

316316
return limit
317317

318+
def _build_param_categories(
319+
self, params: PropertyV2RetrieveParams
320+
) -> PropertyV2RetrieveParamCategories:
321+
"""Build parameter categories from validated Pydantic schema."""
322+
return PropertyV2RetrieveParamCategories(
323+
property_filters=self._build_property_filters(params),
324+
event_filters=self._build_event_filters(params),
325+
owner_filters=self._build_owner_filters(params),
326+
)
327+
318328
def retrieve(
319329
self,
320330
parcl_ids: list[int] | None = None,
@@ -434,10 +444,11 @@ def retrieve(
434444
),
435445
)
436446

437-
# Build filters using validated parameters
438-
data["property_filters"] = self._build_property_filters(input_params)
439-
data["event_filters"] = self._build_event_filters(input_params)
440-
data["owner_filters"] = self._build_owner_filters(input_params)
447+
# Build parameter categories using validated parameters
448+
param_categories = self._build_param_categories(input_params)
449+
450+
# Update data with categories
451+
data.update(param_categories.model_dump(exclude_none=True))
441452

442453
# Set limit
443454
request_params = input_params.params.copy()

tests/test_property_v2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,8 +349,8 @@ def test_retrieve_with_geo_coordinates(
349349

350350
@patch.object(PropertyV2Service, "_fetch_post")
351351
def test_retrieve_with_schema_validation_errors(
352-
mock_fetch_post: Mock,
353-
property_v2_service: PropertyV2Service, # noqa: ARG001
352+
mock_fetch_post: Mock, # noqa: ARG001
353+
property_v2_service: PropertyV2Service,
354354
) -> None:
355355
"""Test that retrieve method properly validates input using schema."""
356356
# This should raise a validation error due to invalid property type

0 commit comments

Comments
 (0)