Skip to content

Commit 1f1e391

Browse files
authored
Merge pull request #85 from ParclLabs/fix-geo-search
update location param to geographic_coordinates for prop search v2 endpoint
2 parents 3e9d025 + 8d9fc69 commit 1f1e391

File tree

5 files changed

+20
-28
lines changed

5 files changed

+20
-28
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### v1.14.1
2+
- Update `property_v2.search` endpoint params.
3+
14
### v1.13.0
25
- Add support for `property_v2.search` endpoint.
36

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -485,11 +485,13 @@ addresses = client.property_address.search.retrieve(
485485
Gets a list of unique properties and their associated metadata and events based on a set of filters. Use one of three search methods:
486486
1. `parcl_ids`
487487
2. `parcl_property_ids`
488-
3. `location` (must provide latitude, longitude, and radius)
488+
3. `geo_coordinates` (must provide latitude, longitude, and radius)
489489

490490
```python
491491
results, filter_data = client.property_v2.search.retrieve(
492+
# parcl_ids=[5495449],
492493
parcl_property_ids=[78353317, 135921544],
494+
# geo_coordinates= {"latitude": 36.159445, "longitude": -86.483244, radius: 1},
493495
event_names=["LISTED_RENT"],
494496
is_new_construction=False,
495497
max_event_date="2024-12-31",

parcllabs/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
VERSION = "1.14.0"
1+
VERSION = "1.14.1"

parcllabs/services/properties/property_v2.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def _build_search_criteria(
144144
self,
145145
parcl_ids: list[int] | None = None,
146146
parcl_property_ids: list[int] | None = None,
147-
location: dict[str, float] | None = None,
147+
geo_coordinates: dict[str, float] | None = None,
148148
) -> dict[str, Any]:
149149
"""Build and validate search criteria."""
150150
data = {}
@@ -155,8 +155,8 @@ def _build_search_criteria(
155155
if parcl_property_ids:
156156
data["parcl_property_ids"] = parcl_property_ids
157157

158-
if location and all(k in location for k in ["latitude", "longitude", "radius"]):
159-
data.update(location)
158+
if geo_coordinates:
159+
data["geo_coordinates"] = geo_coordinates
160160

161161
return data
162162

@@ -265,9 +265,7 @@ def retrieve(
265265
self,
266266
parcl_ids: list[int] | None = None,
267267
parcl_property_ids: list[int] | None = None,
268-
latitude: float | None = None,
269-
longitude: float | None = None,
270-
radius: float | None = None,
268+
geo_coordinates: dict[str, float] | None = None,
271269
property_types: list[str] | None = None,
272270
min_beds: int | None = None,
273271
max_beds: int | None = None,
@@ -300,9 +298,8 @@ def retrieve(
300298
Args:
301299
parcl_ids: List of parcl_ids to filter by.
302300
parcl_property_ids: List of parcl_property_ids to filter by.
303-
latitude: Latitude to filter by.
304-
longitude: Longitude to filter by.
305-
radius: Radius to filter by.
301+
geo_coordinates: Dictionary containing latitude, longitude, and radius (in miles)
302+
to filter by.
306303
property_types: List of property types to filter by.
307304
min_beds: Minimum number of bedrooms to filter by.
308305
max_beds: Maximum number of bedrooms to filter by.
@@ -331,16 +328,11 @@ def retrieve(
331328
Returns:
332329
A pandas DataFrame containing the property data.
333330
"""
334-
# Build location dict if latitude, longitude and radius are provided
335-
location = None
336-
if all(v is not None for v in [latitude, longitude, radius]):
337-
location = {"latitude": latitude, "longitude": longitude, "radius": radius}
338-
339331
# Build search criteria
340332
data = self._build_search_criteria(
341333
parcl_ids=parcl_ids,
342334
parcl_property_ids=parcl_property_ids,
343-
location=location,
335+
geo_coordinates=geo_coordinates,
344336
)
345337

346338
# Build filters using all provided parameters
@@ -350,12 +342,9 @@ def retrieve(
350342
"self",
351343
"parcl_ids",
352344
"parcl_property_ids",
353-
"latitude",
354-
"longitude",
355-
"radius",
356345
"params",
357346
"data",
358-
"location",
347+
"geo_coordinates",
359348
]:
360349
kwargs.pop(key, None)
361350

tests/test_property_v2.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,18 @@ def test_build_search_criteria(property_v2_service: PropertyV2Service) -> None:
5252
assert criteria == {"parcl_property_ids": [789, 101]}
5353

5454
# Test with location
55-
location = {"latitude": 37.7749, "longitude": -122.4194, "radius": 5.0}
56-
criteria = property_v2_service._build_search_criteria(location=location)
57-
assert criteria == location
55+
geo_coordinates = {"latitude": 37.7749, "longitude": -122.4194, "radius": 5.0}
56+
criteria = property_v2_service._build_search_criteria(geo_coordinates=geo_coordinates)
57+
assert criteria == {"geo_coordinates": geo_coordinates}
5858

5959
# Test with all parameters
6060
criteria = property_v2_service._build_search_criteria(
61-
parcl_ids=[123], parcl_property_ids=[456], location=location
61+
parcl_ids=[123], parcl_property_ids=[456], geo_coordinates=geo_coordinates
6262
)
6363
assert criteria == {
6464
"parcl_ids": [123],
6565
"parcl_property_ids": [456],
66-
"latitude": 37.7749,
67-
"longitude": -122.4194,
68-
"radius": 5.0,
66+
"geo_coordinates": geo_coordinates,
6967
}
7068

7169

0 commit comments

Comments
 (0)