Skip to content

Commit 1a1e6fc

Browse files
author
Mohamed Ben Makhlouf
committed
new zip code class version 2
1 parent 304e9c8 commit 1a1e6fc

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

pyzipcodeapi/api.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import requests
88

9-
from pyzipcodeapi.dataclass import Distance, Error, MultiDistance
9+
from pyzipcodeapi.dataclass import Distance, Error, MultiDistance, Radius
1010
from pyzipcodeapi.enums import FormatEnum, UnitEnum, CountryEnum
1111
from pyzipcodeapi.options import OPTIONS
1212

@@ -156,3 +156,19 @@ def multi_distance(
156156
path = f"{zip_code}/{','.join(zip_codes)}/{units}"
157157
dc = MultiDistance
158158
return self._api_call("multi-distance", f, path, dc)
159+
160+
def radius(
161+
self,
162+
zip_code: str,
163+
distance: int,
164+
minimal: bool = False,
165+
units: UnitEnum = UnitEnum.KM,
166+
f: FormatEnum | None = FormatEnum.JSON,
167+
country: CountryEnum = CountryEnum.US,
168+
) -> Radius | DictReader | Element:
169+
"""radius.<format>/<zip_code>/<distance>/<units>"""
170+
path = f"{zip_code}/{distance}/{units}"
171+
dc = Radius
172+
if minimal:
173+
path = f"{path}?minimal"
174+
return self._api_call("radius", f, path, dc, country=country)

pyzipcodeapi/dataclass.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,22 @@ class Distance:
1515
@dataclass
1616
class MultiDistance:
1717
distances: dict[str, float]
18+
19+
20+
@dataclass
21+
class RadiusInfo:
22+
zip_code: str
23+
distance: float
24+
city: str
25+
state: str
26+
27+
28+
@dataclass
29+
class Radius:
30+
zip_codes: list[str | dict]
31+
32+
@property
33+
def info(self) -> list[RadiusInfo | str]:
34+
if self.zip_codes and type(self.zip_codes[0] == dict):
35+
return [RadiusInfo(**zp) for zp in self.zip_codes]
36+
return self.zip_codes

0 commit comments

Comments
 (0)