Skip to content

Commit 5ecc52c

Browse files
author
Mohamed Ben Makhlouf
committed
finish zip codes option
1 parent 674a948 commit 5ecc52c

File tree

2 files changed

+40
-19
lines changed

2 files changed

+40
-19
lines changed

pyzipcodeapi/api.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ def multi_distance(
197197
def radius(
198198
self,
199199
zip_code: str,
200-
distance: int,
200+
distance: float,
201201
minimal: bool = False,
202202
units: DistanceUnitEnum = DistanceUnitEnum.KM,
203203
) -> Radius | DictReader | Element:
@@ -210,7 +210,7 @@ def radius(
210210

211211
def multi_radius(
212212
self,
213-
distance: int,
213+
distance: float,
214214
zip_codes: list[str] | None = None,
215215
addresses: list[str] | None = None,
216216
units: DistanceUnitEnum = DistanceUnitEnum.KM,
@@ -231,7 +231,7 @@ def multi_radius(
231231
def match_close(
232232
self,
233233
zip_codes: list[str],
234-
distance: int,
234+
distance: float,
235235
units: DistanceUnitEnum = DistanceUnitEnum.KM,
236236
) -> list[MatchClose] | DictReader | Element:
237237
"""match-close.<format>/<zip_codes>/<distance>/<units>"""
@@ -252,9 +252,7 @@ def multi_info(
252252
self._get("multi-info", f"{','.join(zip_codes)}/{units}")
253253
return self._parse_response()
254254

255-
def city_zip_codes(
256-
self, city: str, state: str
257-
) -> ZipCode | DictReader | Element:
255+
def city_zip_codes(self, city: str, state: str) -> ZipCode | DictReader | Element:
258256
"""
259257
US: city-zips.<format>/<city>/<state>
260258
CA: city-postal-codes.<format>/<city>/<province>
@@ -265,5 +263,32 @@ def city_zip_codes(
265263

266264
def state_zip_codes(self, state: str) -> ZipCode | DictReader | Element:
267265
"""state-zips.<format>/<state>"""
268-
self._get("state-zips", f"{quote_plus(state)}")
266+
self._get("state-zips", quote_plus(state))
269267
return self._parse_response(data_class=ZipCode)
268+
269+
def radius_sql(
270+
self,
271+
lat: float,
272+
long: float,
273+
distance: float,
274+
lat_long_units: GeoUnitEnum = GeoUnitEnum.DEGREES,
275+
units: DistanceUnitEnum = DistanceUnitEnum.KM,
276+
lat_field_name: str = "lat",
277+
long_field_name: str = "long",
278+
precision: int = 1,
279+
) -> Radius | DictReader | Element:
280+
"""radius-sql.<format>/<lat>/<long>/<lat_long_units>/<distance>/<units>/<lat_field_name>/
281+
<long_field_name>/<precision>"""
282+
assert precision <= 16
283+
args = [
284+
str(lat),
285+
str(long),
286+
lat_long_units,
287+
str(distance),
288+
units,
289+
lat_field_name,
290+
long_field_name,
291+
str(precision),
292+
]
293+
self._get("radius-sql", "/".join(args))
294+
return self._parse_response()

pyzipcodeapi/example.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
1-
from pyzipcodeapi.api import ZipCodeApi, ZipCodeApiV2
1+
from pyzipcodeapi.api import ZipCodeApiV2
22
from pyzipcodeapi.enums import CountryEnum, DistanceUnitEnum, FormatEnum, GeoUnitEnum
33

44
API_KEY = "DemoOnly00yDUhTAzyzlwpXrk6SuiuvD80IAvhCJowPjA5Cqgz9vb7QyIyzDE77r"
55

66
if __name__ == "__main__":
77
# set different inputs
8-
f = "json"
9-
u = "km"
10-
ou = "degrees"
11-
obj = ZipCodeApi(API_KEY)
128
# V2
139
f2 = FormatEnum.JSON
1410
ud = DistanceUnitEnum.KM
@@ -53,14 +49,14 @@
5349
# https://www.zipcodeapi.com/rest/<api_key>/radius-sql.<format>/<lat>/<long>/<lat_long_units>/<distance>/<units>/
5450
# <lat_field_name>/<long_field_name>/<precision>
5551
print(
56-
obj.get("radius-sql", f).filter(
57-
lat="37.722223",
58-
long="-122.484048",
59-
lat_long_units=ou,
60-
distance="5",
61-
units=u,
52+
zca.radius_sql(
53+
lat=37.722223,
54+
long=-122.484048,
55+
lat_long_units=ug,
56+
distance=5,
57+
units=ud,
6258
lat_field_name="lat",
6359
long_field_name="long",
64-
precision="4",
60+
precision=4,
6561
)
6662
)

0 commit comments

Comments
 (0)