1
1
from datetime import datetime , timedelta
2
2
import json
3
+ import logging
3
4
from typing import Any , Dict , List , NamedTuple , Optional , Tuple
4
5
5
6
import dateutil .parser
@@ -175,10 +176,11 @@ def get_country(city_name: str) -> Optional[str]:
175
176
Returns:
176
177
str: The suitable country name.
177
178
"""
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 )
182
184
183
185
184
186
def get_subcountry (city_name : str ) -> Optional [str ]:
@@ -188,10 +190,11 @@ def get_subcountry(city_name: str) -> Optional[str]:
188
190
Returns:
189
191
str: The suitable subcountry name.
190
192
"""
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 )
195
198
196
199
197
200
async def get_api_data (url : str ) -> Optional [List [Any ]]:
@@ -205,8 +208,8 @@ async def get_api_data(url: str) -> Optional[List[Any]]:
205
208
async with httpx .AsyncClient () as client :
206
209
resp = await client .get (url )
207
210
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" )
210
213
211
214
212
215
async def parse_timezones_list () -> List [Tuple [str , ...]]:
@@ -445,14 +448,9 @@ def get_part_of_day_and_feedback(time: datetime) -> Tuple[str, str]:
445
448
tuple: The part of day description and the feedback.
446
449
"""
447
450
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 ):
456
454
return part .time , part .desirability
457
455
458
456
0 commit comments