#9 refactoring, CI #12
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
bug
enhancement
question
techdebt
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
DD/Pogodnik!12
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issues-9"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -27,3 +14,1 @@return printing(open_weather.weather_data(city, appid), args.output)elif config_data['weather_provider']['name'] == "openmeteo":return printing(open_meteo.weather_data(city), args.output)parser = create_parser(args.config) # call parserпредлагаю назвать
config_parserчтобы не путать потом с другими парсерами (погодными например)@ -30,2 +18,3 @@return city_dataelse:return "Please, check provider name"if weather_config['provider'] == "openweather":вынести эти ифы в логику провайдера
@ -0,0 +7,4 @@class ConfigFileParser:config: dictdef get_geo_config(self) -> dict: # get geo_providers dataне очень информативные комменты
@ -0,0 +29,4 @@self.config = toml.load(f) # load toml from f(file)extensions = {'.json': JSONParser,Имена глобальных переменных обычно пишут БОЛЬШИМИ БУКВАМИ
@ -0,0 +34,4 @@def create_parser(file_name: str) -> ConfigFileParser:extension = pathlib.Path(file_name).suffixПредлагаю вынести создание Path в мейн и в
create_parserпередавать уже готовыйfile_path: Path. Потому что в теорииcreate_parserдолжен заниматься только созданием парсера, а при создании объектаPathмогут возникнуть ошибки (нет такого файла итд.), обрабатывать которые не его дело@ -0,0 +26,4 @@f"q={geo_config['city_name']}&"f"appid={geo_config['api_key']}")data = json.loads(call.text)if type(data) is list:Вроде как правильный способ проверки типа это
isinstance(data, list)@ -0,0 +35,4 @@extensions = {'openweather': OpenWeatherGeoProvider}def geo(geo_config: dict) -> GeoProvider:Не понятно из названия, что за
geo. Предлагаю назвать также как сделано в конфигпарсере. Хотя быcreate_geo, а лучшеcreate_geo_providerissues-9to WIP: issues-926a9d6e8db014a30e96f@ -31,1 +15,3 @@return "Please, check provider name"if not Path(args.config).is_file():return "Config file not found"extension = Path(args.config).suffixА зачем два раза создавать Path? Предлагаю просто один раз создать его и передать в функцию, а там уже вызывать у него .suffix
@ -32,0 +29,4 @@return weather_providerweather_data = weather_provider.weather_data(weather_provider.request())if isinstance(weather_data, str):return weather_dataИнтересный способ написания Exceptions ты изобрел))
Ну так было быстрее чем Exceptions...
@ -0,0 +7,4 @@def printing(geo_data, weather_data: Optional[dict], out_name: str) -> str:date = {"datetime": datetime.datetime.now(datetime.timezone.utc)}data = date | weather_data | geo_datacol = None if Path(out_name).is_file() else data.keys()имя переменной не содержательное
Какой из?)
@ -0,0 +8,4 @@date = {"datetime": datetime.datetime.now(datetime.timezone.utc)}data = date | weather_data | geo_datacol = None if Path(out_name).is_file() else data.keys()with open(out_name, "a", newline="") as f:Ты можешь передавать в open() объект типа Path напрямую
Не понял, а зачем?
WIP: issues-9to WIP: #9 refactoring, CIWIP: #9 refactoring, CIto #9 refactoring, CI