11from datetime import datetime , timedelta
22import json
3+ import logging
34from typing import Any , Dict , List , NamedTuple , Optional , Tuple
45
56import dateutil .parser
@@ -175,10 +176,11 @@ def get_country(city_name: str) -> Optional[str]:
175176 Returns:
176177 str: The suitable country name.
177178 """
178- details = load_city_country_data_set ()
179- for city_element in details :
180- if city_name .title () in city_element [CITY_NAME_KEY ].title ():
181- return city_element [COUNTRY_NAME_KEY_IN_CITIES ]
179+ data = load_city_country_data_set ()
180+ details = data .get (city_name .title ())
181+ if not details :
182+ return
183+ return details .get (COUNTRY_NAME_KEY_IN_CITIES )
182184
183185
184186def get_subcountry (city_name : str ) -> Optional [str ]:
@@ -188,10 +190,11 @@ def get_subcountry(city_name: str) -> Optional[str]:
188190 Returns:
189191 str: The suitable subcountry name.
190192 """
191- details = load_city_country_data_set ()
192- for city_element in details :
193- if city_name .title () in city_element [CITY_NAME_KEY ].title ():
194- return city_element [SUBCOUNTRY_NAME_KEY_IN_CITIES ]
193+ data = load_city_country_data_set ()
194+ details = data .get (city_name .title ())
195+ if not details :
196+ return
197+ return details .get (SUBCOUNTRY_NAME_KEY_IN_CITIES )
195198
196199
197200async def get_api_data (url : str ) -> Optional [List [Any ]]:
@@ -205,8 +208,8 @@ async def get_api_data(url: str) -> Optional[List[Any]]:
205208 async with httpx .AsyncClient () as client :
206209 resp = await client .get (url )
207210 return resp .json ()
208- except (json .JSONDecodeError , httpx .HTTPError ) as errh :
209- print ("Http Error:" , errh )
211+ except (json .JSONDecodeError , httpx .HTTPError ):
212+ logging . exception ("Http Error" )
210213
211214
212215async def parse_timezones_list () -> List [Tuple [str , ...]]:
@@ -445,14 +448,9 @@ def get_part_of_day_and_feedback(time: datetime) -> Tuple[str, str]:
445448 tuple: The part of day description and the feedback.
446449 """
447450 for part in PARTS_OF_THE_DAY_FEEDBACK :
448- if (
449- time
450- >= datetime .strptime (
451- part .start ,
452- "%H:%M:%S" ,
453- )
454- and time <= datetime .strptime (part .end , "%H:%M:%S" )
455- ):
451+ start_time = datetime .strptime (part .start , "%H:%M:%S" ,)
452+ end_time = datetime .strptime (part .end , "%H:%M:%S" )
453+ if (time >= start_time and time <= end_time ):
456454 return part .time , part .desirability
457455
458456
0 commit comments