@@ -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 ()
0 commit comments