weathergrabber 0.0.8b7__py3-none-any.whl → 0.0.9a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. weathergrabber/__init__.py +1 -1
  2. weathergrabber/adapter/repository/forecast_repository.py +135 -0
  3. weathergrabber/adapter/tty/console_tty.py +4 -4
  4. weathergrabber/adapter/tty/json_tty.py +3 -3
  5. weathergrabber/adapter/tty/statistics_tty.py +35 -0
  6. weathergrabber/adapter/tty/waybar_tty.py +3 -3
  7. weathergrabber/{service → application/services}/extract_aqi_service.py +1 -1
  8. weathergrabber/{service → application/services}/extract_current_conditions_service.py +5 -5
  9. weathergrabber/{service → application/services}/extract_daily_forecast_oldstyle_service.py +4 -4
  10. weathergrabber/{service → application/services}/extract_daily_forecast_service.py +6 -6
  11. weathergrabber/{service → application/services}/extract_health_activities_service.py +1 -1
  12. weathergrabber/{service → application/services}/extract_hourly_forecast_oldstyle_service.py +3 -3
  13. weathergrabber/{service → application/services}/extract_hourly_forecast_service.py +5 -5
  14. weathergrabber/{service → application/services}/extract_today_details_service.py +8 -8
  15. weathergrabber/application/services/retrieve_forecast_from_cache_service.py +27 -0
  16. weathergrabber/application/services/retrieve_statistics_service.py +20 -0
  17. weathergrabber/application/services/save_forecast_to_cache_service.py +21 -0
  18. weathergrabber/application/usecases/statistics_uc.py +19 -0
  19. weathergrabber/application/usecases/weather_forecast_uc.py +123 -0
  20. weathergrabber/application/weathergrabber_application.py +92 -0
  21. weathergrabber/cli.py +6 -2
  22. weathergrabber/core.py +7 -3
  23. weathergrabber/domain/adapter/mappers/air_quality_index_mapper.py +25 -0
  24. weathergrabber/domain/adapter/mappers/city_location_mapper.py +15 -0
  25. weathergrabber/domain/adapter/mappers/color_mapper.py +17 -0
  26. weathergrabber/domain/adapter/mappers/current_conditions_mapper.py +32 -0
  27. weathergrabber/domain/adapter/mappers/daily_predictions_mapper.py +30 -0
  28. weathergrabber/domain/adapter/mappers/day_night_mapper.py +23 -0
  29. weathergrabber/domain/adapter/mappers/forecast_mapper.py +38 -0
  30. weathergrabber/domain/adapter/mappers/health_activities_mapper.py +15 -0
  31. weathergrabber/domain/adapter/mappers/hourly_predictions_mapper.py +38 -0
  32. weathergrabber/domain/adapter/mappers/label_value_mapper.py +13 -0
  33. weathergrabber/domain/adapter/mappers/moon_phase_mapper.py +16 -0
  34. weathergrabber/domain/adapter/mappers/precipitation_mapper.py +13 -0
  35. weathergrabber/domain/adapter/mappers/search_mapper.py +13 -0
  36. weathergrabber/domain/adapter/mappers/statistics_mapper.py +25 -0
  37. weathergrabber/domain/adapter/mappers/sunrise_sunset_mapper.py +23 -0
  38. weathergrabber/domain/adapter/mappers/temperature_high_low_mapper.py +15 -0
  39. weathergrabber/domain/adapter/mappers/timestamp_mapper.py +15 -0
  40. weathergrabber/domain/adapter/mappers/today_details_mapper.py +42 -0
  41. weathergrabber/domain/adapter/mappers/uv_index_mapper.py +17 -0
  42. weathergrabber/domain/adapter/mappers/weather_icon_enum_mapper.py +11 -0
  43. weathergrabber/domain/adapter/mappers/wind_mapper.py +16 -0
  44. weathergrabber/domain/adapter/output_enum.py +1 -1
  45. weathergrabber/domain/adapter/params.py +25 -4
  46. weathergrabber/domain/{moon_phase.py → entities/moon_phase.py} +1 -1
  47. weathergrabber/domain/entities/statistics.py +46 -0
  48. weathergrabber/domain/{sunrise_sunset.py → entities/sunrise_sunset.py} +0 -1
  49. weathergrabber/domain/{weather_icon_enum.py → entities/weather_icon_enum.py} +1 -0
  50. {weathergrabber-0.0.8b7.dist-info → weathergrabber-0.0.9a0.dist-info}/METADATA +32 -7
  51. weathergrabber-0.0.9a0.dist-info/RECORD +80 -0
  52. {weathergrabber-0.0.8b7.dist-info → weathergrabber-0.0.9a0.dist-info}/WHEEL +1 -1
  53. weathergrabber/domain/adapter/mapper/air_quality_index_mapper.py +0 -13
  54. weathergrabber/domain/adapter/mapper/city_location_mapper.py +0 -8
  55. weathergrabber/domain/adapter/mapper/color_mapper.py +0 -10
  56. weathergrabber/domain/adapter/mapper/current_conditions_mapper.py +0 -16
  57. weathergrabber/domain/adapter/mapper/daily_predictions_mapper.py +0 -15
  58. weathergrabber/domain/adapter/mapper/day_night_mapper.py +0 -12
  59. weathergrabber/domain/adapter/mapper/forecast_mapper.py +0 -20
  60. weathergrabber/domain/adapter/mapper/health_activities_mapper.py +0 -8
  61. weathergrabber/domain/adapter/mapper/hourly_predictions_mapper.py +0 -19
  62. weathergrabber/domain/adapter/mapper/label_value_mapper.py +0 -7
  63. weathergrabber/domain/adapter/mapper/moon_phase_mapper.py +0 -9
  64. weathergrabber/domain/adapter/mapper/precipitation_mapper.py +0 -7
  65. weathergrabber/domain/adapter/mapper/search_mapper.py +0 -7
  66. weathergrabber/domain/adapter/mapper/sunrise_sunset_mapper.py +0 -13
  67. weathergrabber/domain/adapter/mapper/temperature_high_low_mapper.py +0 -8
  68. weathergrabber/domain/adapter/mapper/timestamp_mapper.py +0 -8
  69. weathergrabber/domain/adapter/mapper/today_details_mapper.py +0 -21
  70. weathergrabber/domain/adapter/mapper/uv_index_mapper.py +0 -9
  71. weathergrabber/domain/adapter/mapper/weather_icon_enum_mapper.py +0 -8
  72. weathergrabber/domain/adapter/mapper/wind_mapper.py +0 -7
  73. weathergrabber/usecase/use_case.py +0 -87
  74. weathergrabber/weathergrabber_application.py +0 -78
  75. weathergrabber-0.0.8b7.dist-info/RECORD +0 -72
  76. /weathergrabber/{service → application/services}/extract_temperature_service.py +0 -0
  77. /weathergrabber/{service → application/services}/read_weather_service.py +0 -0
  78. /weathergrabber/{service → application/services}/search_location_service.py +0 -0
  79. /weathergrabber/domain/{air_quality_index.py → entities/air_quality_index.py} +0 -0
  80. /weathergrabber/domain/{city_location.py → entities/city_location.py} +0 -0
  81. /weathergrabber/domain/{color.py → entities/color.py} +0 -0
  82. /weathergrabber/domain/{current_conditions.py → entities/current_conditions.py} +0 -0
  83. /weathergrabber/domain/{daily_predictions.py → entities/daily_predictions.py} +0 -0
  84. /weathergrabber/domain/{day_night.py → entities/day_night.py} +0 -0
  85. /weathergrabber/domain/{forecast.py → entities/forecast.py} +0 -0
  86. /weathergrabber/domain/{health_activities.py → entities/health_activities.py} +0 -0
  87. /weathergrabber/domain/{hourly_predictions.py → entities/hourly_predictions.py} +0 -0
  88. /weathergrabber/domain/{label_value.py → entities/label_value.py} +0 -0
  89. /weathergrabber/domain/{moon_phase_enum.py → entities/moon_phase_enum.py} +0 -0
  90. /weathergrabber/domain/{precipitation.py → entities/precipitation.py} +0 -0
  91. /weathergrabber/domain/{search.py → entities/search.py} +0 -0
  92. /weathergrabber/domain/{temperature_hight_low.py → entities/temperature_hight_low.py} +0 -0
  93. /weathergrabber/domain/{timestamp.py → entities/timestamp.py} +0 -0
  94. /weathergrabber/domain/{today_details.py → entities/today_details.py} +0 -0
  95. /weathergrabber/domain/{uv_index.py → entities/uv_index.py} +0 -0
  96. /weathergrabber/domain/{wind.py → entities/wind.py} +0 -0
  97. {weathergrabber-0.0.8b7.dist-info → weathergrabber-0.0.9a0.dist-info}/entry_points.txt +0 -0
  98. {weathergrabber-0.0.8b7.dist-info → weathergrabber-0.0.9a0.dist-info}/licenses/LICENSE +0 -0
  99. {weathergrabber-0.0.8b7.dist-info → weathergrabber-0.0.9a0.dist-info}/top_level.txt +0 -0
@@ -1,87 +0,0 @@
1
- import logging
2
- from weathergrabber.domain.adapter.params import Params
3
- from weathergrabber.service.search_location_service import SearchLocationService
4
- from weathergrabber.service.read_weather_service import ReadWeatherService
5
- from weathergrabber.service.extract_current_conditions_service import ExtractCurrentConditionsService
6
- from weathergrabber.service.extract_today_details_service import ExtractTodayDetailsService
7
- from weathergrabber.service.extract_aqi_service import ExtractAQIService
8
- from weathergrabber.service.extract_health_activities_service import ExtractHealthActivitiesService
9
- from weathergrabber.service.extract_hourly_forecast_service import ExtractHourlyForecastService
10
- from weathergrabber.service.extract_hourly_forecast_oldstyle_service import ExtractHourlyForecastOldstyleService
11
- from weathergrabber.service.extract_daily_forecast_service import ExtractDailyForecastService
12
- from weathergrabber.service.extract_daily_forecast_oldstyle_service import ExtractDailyForecastOldstyleService
13
- from weathergrabber.domain.search import Search
14
- from weathergrabber.domain.forecast import Forecast
15
-
16
- class UseCase:
17
- def __init__(
18
- self,
19
- search_location_service: SearchLocationService,
20
- read_weather_service: ReadWeatherService,
21
- extract_current_conditions_service: ExtractCurrentConditionsService,
22
- extract_today_details_service: ExtractTodayDetailsService,
23
- extract_aqi_service: ExtractAQIService,
24
- extract_health_activities_service: ExtractHealthActivitiesService,
25
- extract_hourly_forecast_service: ExtractHourlyForecastService,
26
- extract_hourly_forecast_oldstyle_service: ExtractHourlyForecastOldstyleService,
27
- extract_daily_forecast_service: ExtractDailyForecastService,
28
- extract_daily_forecast_oldstyle_service: ExtractDailyForecastOldstyleService,
29
-
30
- ):
31
- self.logger = logging.getLogger(__name__)
32
- self.read_weather_service = read_weather_service
33
- self.extract_current_conditions_service = extract_current_conditions_service
34
- self.extract_today_details_service = extract_today_details_service
35
- self.search_location_service = search_location_service
36
- self.extract_aqi_service = extract_aqi_service
37
- self.extract_health_activities_service = extract_health_activities_service
38
- self.extract_hourly_forecast_service = extract_hourly_forecast_service
39
- self.extract_hourly_forecast_oldstyle_service = extract_hourly_forecast_oldstyle_service
40
- self.extract_daily_forecast_service = extract_daily_forecast_service
41
- self.extract_daily_forecast_oldstyle_service = extract_daily_forecast_oldstyle_service
42
-
43
- def execute(self, params: Params) -> Forecast:
44
-
45
- self.logger.debug("Starting usecase")
46
-
47
- location_id = params.location.id
48
- search_name = params.location.search_name
49
- if not location_id:
50
- location_id = self.search_location_service.execute(params.location.search_name, params.language)
51
-
52
- weather_data = self.read_weather_service.execute(params.language, location_id)
53
-
54
- current_conditions = self.extract_current_conditions_service.execute(weather_data)
55
- today_details = self.extract_today_details_service.execute(weather_data)
56
- air_quality_index = self.extract_aqi_service.execute(weather_data)
57
- health_activities = self.extract_health_activities_service.execute(weather_data)
58
-
59
- try:
60
- hourly_predictions = self.extract_hourly_forecast_oldstyle_service.execute(weather_data)
61
- except ValueError:
62
- self.logger.warning("Falling back to new style hourly forecast extraction")
63
- hourly_predictions = self.extract_hourly_forecast_service.execute(weather_data)
64
-
65
- try:
66
- daily_predictions = self.extract_daily_forecast_oldstyle_service.execute(weather_data)
67
- except ValueError:
68
- self.logger.warning("Falling back to new style daily forecast extraction")
69
- daily_predictions = self.extract_daily_forecast_service.execute(weather_data)
70
-
71
- forecast = Forecast(
72
- search = Search(
73
- id = location_id,
74
- search_name = search_name
75
- ),
76
- current_conditions = current_conditions,
77
- today_details = today_details,
78
- air_quality_index = air_quality_index,
79
- health_activities = health_activities,
80
- hourly_predictions = hourly_predictions,
81
- daily_predictions = daily_predictions
82
- )
83
-
84
- self.logger.debug("Forecast data obtained %s", forecast)
85
-
86
- return forecast
87
-
@@ -1,78 +0,0 @@
1
- import logging
2
- from time import sleep
3
- from .domain.adapter.params import Params
4
- from .domain.adapter.output_enum import OutputEnum
5
- from .adapter.client.weather_api import WeatherApi
6
- from .adapter.client.weather_search_api import WeatherSearchApi
7
- from .service.search_location_service import SearchLocationService
8
- from .service.read_weather_service import ReadWeatherService
9
- from .service.extract_current_conditions_service import ExtractCurrentConditionsService
10
- from .service.extract_today_details_service import ExtractTodayDetailsService
11
- from .service.extract_aqi_service import ExtractAQIService
12
- from .service.extract_health_activities_service import ExtractHealthActivitiesService
13
- from .service.extract_hourly_forecast_service import ExtractHourlyForecastService
14
- from .service.extract_hourly_forecast_oldstyle_service import ExtractHourlyForecastOldstyleService
15
- from .service.extract_daily_forecast_service import ExtractDailyForecastService
16
- from .service.extract_daily_forecast_oldstyle_service import ExtractDailyForecastOldstyleService
17
- from .usecase.use_case import UseCase
18
-
19
-
20
- class WeatherGrabberApplication:
21
-
22
- def _beans(self):
23
- self.weather_search_api = WeatherSearchApi()
24
- self.weather_api = WeatherApi()
25
- self.search_location_service = SearchLocationService(self.weather_search_api)
26
- self.read_weather_service = ReadWeatherService(self.weather_api)
27
- self.extract_current_conditions_service = ExtractCurrentConditionsService()
28
- self.extract_today_details_service = ExtractTodayDetailsService()
29
- self.extract_aqi_service = ExtractAQIService()
30
- self.extract_health_activities_service = ExtractHealthActivitiesService()
31
- self.extract_hourly_forecast_service = ExtractHourlyForecastService()
32
- self.extract_hourly_forecast_oldstyle_service = ExtractHourlyForecastOldstyleService()
33
- self.extract_daily_forecast_service = ExtractDailyForecastService()
34
- self.extract_daily_forecast_oldstyle_service = ExtractDailyForecastOldstyleService()
35
- self.use_case = UseCase(
36
- self.search_location_service,
37
- self.read_weather_service,
38
- self.extract_current_conditions_service,
39
- self.extract_today_details_service,
40
- self.extract_aqi_service,
41
- self.extract_health_activities_service,
42
- self.extract_hourly_forecast_service,
43
- self.extract_hourly_forecast_oldstyle_service,
44
- self.extract_daily_forecast_service,
45
- self.extract_daily_forecast_oldstyle_service
46
- )
47
- pass
48
-
49
- def _define_controller(self, output_format: OutputEnum):
50
- if output_format == OutputEnum.CONSOLE:
51
- from weathergrabber.adapter.tty.console_tty import ConsoleTTY
52
- self.controller = ConsoleTTY(self.use_case)
53
-
54
- elif output_format == OutputEnum.JSON:
55
- from weathergrabber.adapter.tty.json_tty import JsonTTY
56
- self.controller = JsonTTY(self.use_case)
57
-
58
- elif output_format == OutputEnum.WAYBAR:
59
- from weathergrabber.adapter.tty.waybar_tty import WaybarTTY
60
- self.controller = WaybarTTY(self.use_case)
61
-
62
- else:
63
- self.logger.error(f"Unsupported output format: {output_format}")
64
- raise ValueError(f"Unsupported output format: {output_format}")
65
-
66
- def __init__(self, params: Params):
67
- self.logger = logging.getLogger(__name__)
68
- self._beans()
69
- self._define_controller(params.output_format)
70
- self.logger.info("Starting WeatherGrabber Application")
71
- if params.keep_open:
72
- self.logger.info("Keep open mode enabled, the application will refresh every 5 minutes")
73
- while True:
74
- self.controller.execute(params)
75
- sleep(1) # Sleep for 5 minutes
76
- else:
77
- self.controller.execute(params)
78
- self.logger.info("WeatherGrabber Application finished")
@@ -1,72 +0,0 @@
1
- weathergrabber/__init__.py,sha256=1gVDOG-y_use7JmhlYEyIrDOaXy_CNueaHVn3kuDYhY,218
2
- weathergrabber/__main__.py,sha256=yYL-jc4kVHqaYVADzjKZfmCN2mziRofsXgnzrECbGDo,68
3
- weathergrabber/cli.py,sha256=GA1EVClwfHOImM0TEfkTlYOgZU9bzscKg_0HL-Y9TBc,2090
4
- weathergrabber/core.py,sha256=TiZ2utmYKf9lkIXWv8YBfSdiHZXJZXuHS8B-dBDvevw,1138
5
- weathergrabber/weathergrabber_application.py,sha256=2JfZAR94En3rmGrYKWRKxdRXmK_ikhJdgrGotFjtDys,3987
6
- weathergrabber/adapter/client/weather_api.py,sha256=9S7JmXaAVvvPY60dz6rC3lx7X68BcqyvNzvSVM1-af8,963
7
- weathergrabber/adapter/client/weather_search_api.py,sha256=1oy7JitHcmwkkhFlD0eIt5A7a4cGbf7LMNi26tR8z5o,1724
8
- weathergrabber/adapter/tty/console_tty.py,sha256=DTxiI6X3MTtc79E6zrhQLcgqU6gP61BbBslpTdPQNNw,5957
9
- weathergrabber/adapter/tty/json_tty.py,sha256=GyUc13w_5cjFLJda65Xt4e87gYGJow1dYnkY3ZmcmP8,637
10
- weathergrabber/adapter/tty/waybar_tty.py,sha256=R5a7DZL6uHEWZ4m9nTQQqwjfGUjzftpR6TecQn740Us,6138
11
- weathergrabber/domain/air_quality_index.py,sha256=8uBqxVIKCYIvrHuP-XbCHjYZhq7Z0RmqkgAAdCw6Tp4,2680
12
- weathergrabber/domain/city_location.py,sha256=p-11c7AwA8t-nNdvTjl9-Oc5Kw4D2XP7tI4WrATVYpQ,2382
13
- weathergrabber/domain/color.py,sha256=HfgB5CwxrSHT05TIXCqVCy0GoRpuEl99aUrUSJhaqcE,1601
14
- weathergrabber/domain/current_conditions.py,sha256=S14j2lL_gc2pds0wbl5M4_72PbVdubOuX8lnE_tZVTg,1477
15
- weathergrabber/domain/daily_predictions.py,sha256=8pzmaU-yugS2Hx_6MBWAk24wlSISe1OQIRrCK_lfvbw,1618
16
- weathergrabber/domain/day_night.py,sha256=7geOuVH9xDb1ecLKnZmj6eqp3H3kp9G0YY497cEyPtg,1442
17
- weathergrabber/domain/forecast.py,sha256=CO0VTdMI0kjuwbpwwDNRCf_82oNtw5QkN-9GgobPet8,2399
18
- weathergrabber/domain/health_activities.py,sha256=oaIF_nI-iaN4OIHWTL-L7QZUQxCemdmNvzprDXysK-g,1481
19
- weathergrabber/domain/hourly_predictions.py,sha256=PFiGuo7mBoQHLR-bDirV--R126YAOzkwIHgaeRGFQSA,2179
20
- weathergrabber/domain/label_value.py,sha256=LvrvZbSrcEUUpxvKAmYkFnpDFWsa6LFmGA9O8i6HB84,446
21
- weathergrabber/domain/moon_phase.py,sha256=sEHRi8yPIHTzaEcOkz556uNYsKLq4YmYa5qDncSX44c,587
22
- weathergrabber/domain/moon_phase_enum.py,sha256=U4h4s5xDQfX37nkmt5ppkk6uJdamngeE-hQx3E44HHk,2185
23
- weathergrabber/domain/precipitation.py,sha256=eXrpwMOsEJWGqV4bEBhN9niWYXalgdZRLG4-I39JZ2A,466
24
- weathergrabber/domain/search.py,sha256=j3BzskyPl0hDWV02XTOC4tJonV5RHxr5Rop_rYMKUtA,387
25
- weathergrabber/domain/sunrise_sunset.py,sha256=wNTk01NIuLbQ7gN_giAFv4f3FaRx9khul-mj19g57vE,1207
26
- weathergrabber/domain/temperature_hight_low.py,sha256=PQOJ5uDtfMRBR5yMxXA46xuorJC08jva2C0-WAV5yxs,909
27
- weathergrabber/domain/timestamp.py,sha256=Bk6f8Tx0-yNitYmEKIWHnqh_ALDwxEHrhoCRSrfvYTU,1222
28
- weathergrabber/domain/today_details.py,sha256=EUlV7xerYw5QhEsBfvO5m6-9Ghm4nPkXJz9zCmSYTbA,2398
29
- weathergrabber/domain/uv_index.py,sha256=7XalamfjJdVSqo4x7G4JVf_HJtrPJxO1BpbvmAfBhnw,1481
30
- weathergrabber/domain/weather_icon_enum.py,sha256=U0CsNDJIiX8kd42LeZL7wKNptuNiQOazPolUdXc-x9w,4013
31
- weathergrabber/domain/wind.py,sha256=wTDz3X1rYsnw_eNoDi1miwaomxwhiJkY_q6xrdZtLak,789
32
- weathergrabber/domain/adapter/icon_enum.py,sha256=YxGYS5vBRV2AiAfeuPOdqaQOHixAssiMbOzQnTmdSBg,84
33
- weathergrabber/domain/adapter/output_enum.py,sha256=61iR10ppY8DNALPKV-vLnDQni5HxEzpoRNZbdBdRygk,117
34
- weathergrabber/domain/adapter/params.py,sha256=4ts2m0cQ0LpgWXS81G36aRDER4e5LEKXad2sIcxbuWY,1668
35
- weathergrabber/domain/adapter/mapper/air_quality_index_mapper.py,sha256=buAiqYDzHiUVVo18tzRoRG5lFkM26c07qIKPc9RDwGQ,454
36
- weathergrabber/domain/adapter/mapper/city_location_mapper.py,sha256=NkcsrZ9nEJhqs4y07_VsiagslfsIWnd6AtoYem9o01U,239
37
- weathergrabber/domain/adapter/mapper/color_mapper.py,sha256=ZU945MVCxL7Z9BS_ztR5iE1O5mR4ZG5PHdfB6fxv8s4,243
38
- weathergrabber/domain/adapter/mapper/current_conditions_mapper.py,sha256=5UOT8gChe8FmerAXuzch8qN-GNgRxpzCayrtdRKBv_Q,899
39
- weathergrabber/domain/adapter/mapper/daily_predictions_mapper.py,sha256=mYTilW4N8nrE7CT2VNiAayPuAj0sGXr7Rj36azGQc2E,933
40
- weathergrabber/domain/adapter/mapper/day_night_mapper.py,sha256=M1dyVTThxJLgRhfASPIVCfAQ9E60c3kqtsyeI-Bt-d4,377
41
- weathergrabber/domain/adapter/mapper/forecast_mapper.py,sha256=dEow0pR35Tmfo0nmJBOoaK85kB2ZSzWkGWq78eupHGw,1558
42
- weathergrabber/domain/adapter/mapper/health_activities_mapper.py,sha256=ABhprwPx9LSiwsSmSdvSdf_hXxnNq7MUTDUNCy1__8A,259
43
- weathergrabber/domain/adapter/mapper/hourly_predictions_mapper.py,sha256=56S_D_7NZDIffMuTZzI_6Lbh1y0MNmRsCVAps_LVzTE,1013
44
- weathergrabber/domain/adapter/mapper/label_value_mapper.py,sha256=_hmXtVEFkARUhgn-qbQVwF8asi9pQZnOfnZAIJxXQyE,180
45
- weathergrabber/domain/adapter/mapper/moon_phase_mapper.py,sha256=aYMPKICqKAX50wKnPNZc5krSlafxwJXnAwd5Nz4mo6I,291
46
- weathergrabber/domain/adapter/mapper/precipitation_mapper.py,sha256=qTtUkOz-TBuhLSVFtSiHpQrOMcZDSwP6wHK0ClQOctM,199
47
- weathergrabber/domain/adapter/mapper/search_mapper.py,sha256=yadBVjhh6uUgLZwSa0aeIJ239QOr_CGkxMF36dVbTnI,180
48
- weathergrabber/domain/adapter/mapper/sunrise_sunset_mapper.py,sha256=OaviTRaY9EhNdjVaTBxTksW8WN3KJhP3bbXETt5ytqA,568
49
- weathergrabber/domain/adapter/mapper/temperature_high_low_mapper.py,sha256=EDJ6WgIzHbQSUY4Yn9-5bS7UcfTQY8yBMQvhlp7I6NU,240
50
- weathergrabber/domain/adapter/mapper/timestamp_mapper.py,sha256=2g0PqENQJ1FkGapkV2ojhQu0GzRU5ThQ4tmaSbmA3bY,193
51
- weathergrabber/domain/adapter/mapper/today_details_mapper.py,sha256=y9F5b3IQXIvbt5PEjLW8M2RGy8vW9EPUpICAp3x87D0,1413
52
- weathergrabber/domain/adapter/mapper/uv_index_mapper.py,sha256=K3AdRnAPv1Yqudc3eKcw_EBQidNPbHbLcG4lYrQvOOw,230
53
- weathergrabber/domain/adapter/mapper/weather_icon_enum_mapper.py,sha256=YC7juvt38Ehtb3Y-iQFM77s1EQAv4qNHd6vGOqws6HI,249
54
- weathergrabber/domain/adapter/mapper/wind_mapper.py,sha256=nXyYwqTvLLMyKtSey27GaGvBV8xVhB_Y3HU0sbmIe_E,149
55
- weathergrabber/service/extract_aqi_service.py,sha256=WKxNvZoLRE-_vmTMR4efWNrowkc8cfo28fVRJ1XmQ1c,1090
56
- weathergrabber/service/extract_current_conditions_service.py,sha256=R4rd-_53HOQ7YqhHdfI_gKrIy27scYkNEmLgqS23f40,1838
57
- weathergrabber/service/extract_daily_forecast_oldstyle_service.py,sha256=DiKfaGbMnIIBnxI-IYG8HmfLHNAW5AGew5NjFSMqBk4,2190
58
- weathergrabber/service/extract_daily_forecast_service.py,sha256=frxQH5mcutW_aqb7Si6nhIdadeYZfL2CVt_Hd6CiLpQ,2708
59
- weathergrabber/service/extract_health_activities_service.py,sha256=2qJ4tEEz5uV6EwHUIFhWM8zol_BbDW3omEohf8kDg3M,1014
60
- weathergrabber/service/extract_hourly_forecast_oldstyle_service.py,sha256=U5O2tG9YF8wrUUoTimDr7oqMIb670j9oeVjoIpCKKLs,2100
61
- weathergrabber/service/extract_hourly_forecast_service.py,sha256=KFsl6G6FAmGtkski3lj31VIhs6guP0BxVZTGQSHk8Do,2757
62
- weathergrabber/service/extract_temperature_service.py,sha256=46nRO3Izj1QmG4BNTh8flsODsovHyWPzZzOnkl1Gbj4,634
63
- weathergrabber/service/extract_today_details_service.py,sha256=Mjlhsz38J9fIzM-EYVPvHsSlw9R4HzXXzl-503cEGFA,3752
64
- weathergrabber/service/read_weather_service.py,sha256=7_B8E9IN1KCwOhpuS5PfWazI1sCrDyYrZhkV2R38bhc,649
65
- weathergrabber/service/search_location_service.py,sha256=tZmVgO45hjwoa4cl5bKPjMBmYlGxJiH_I9Ymb5pwEwU,1422
66
- weathergrabber/usecase/use_case.py,sha256=OM36GtGlzotgRJqSu_3kaM3F3WaSQsUs90DMHQdWPsk,4627
67
- weathergrabber-0.0.8b7.dist-info/licenses/LICENSE,sha256=X5JFljoqN43yFwpMLudQ9rtty4K_FeZfnz3v8Yhw23Q,1067
68
- weathergrabber-0.0.8b7.dist-info/METADATA,sha256=Pl4BDmR3TT6-NxG_JPSfs1GyHGoaJ7E96Pnrk9AM6DM,5801
69
- weathergrabber-0.0.8b7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- weathergrabber-0.0.8b7.dist-info/entry_points.txt,sha256=m2P9a4mrJDTzuNaiTU438NA60GxCfaw7VKvruWw43N8,63
71
- weathergrabber-0.0.8b7.dist-info/top_level.txt,sha256=P3NMDJJYRIvQujf994Vb4gZrobkKWkL2gh3NF_ajQWM,15
72
- weathergrabber-0.0.8b7.dist-info/RECORD,,
File without changes
File without changes
File without changes