weathergrabber 0.0.7a4__py3-none-any.whl → 0.0.8a2__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.
@@ -4,4 +4,4 @@ from .core import main
4
4
  from .cli import main_cli
5
5
 
6
6
  __all__ = ["main", "main_cli"]
7
- __version__ = "0.0.7a4"
7
+ __version__ = "0.0.8a2"
@@ -21,8 +21,7 @@ class ConsoleTTY:
21
21
 
22
22
  rain_icon = WeatherIconEnum.RAIN.fa_icon if is_fa else WeatherIconEnum.RAIN.emoji_icon
23
23
 
24
- city = forecast.current_conditions.location.city
25
- state_province = forecast.current_conditions.location.state_province
24
+ city_location = forecast.current_conditions.location
26
25
  icon = forecast.current_conditions.icon.fa_icon if is_fa else forecast.current_conditions.icon.emoji_icon
27
26
  temperature = forecast.current_conditions.temperature
28
27
 
@@ -62,18 +61,48 @@ class ConsoleTTY:
62
61
  aqi_acronym = forecast.air_quality_index.acronym
63
62
  aqi_value = forecast.air_quality_index.value
64
63
 
64
+ hourly_predictions_format = [
65
+ {
66
+ 'title': h.title if len(h.title) < 8 else h.title[:6] + '.',
67
+ 'temperature' : h.temperature,
68
+ 'icon': h.icon.fa_icon if is_fa else h.icon.emoji_icon,
69
+ 'precipitation': f"{h.precipitation.percentage if h.precipitation.percentage else ''}"
70
+ } for h in forecast.hourly_predictions
71
+ ]
72
+
73
+ daily_predictions_format = [
74
+ {
75
+ 'title': d.title if len(d.title) < 8 else d.title[:6] + '.',
76
+ 'high_low': f"{d.high_low}",
77
+ 'icon': d.icon.fa_icon if is_fa else d.icon.emoji_icon,
78
+ 'precipitation': f"{d.precipitation.percentage}"
79
+ } for d in forecast.daily_predictions
80
+ ]
81
+
82
+ # Hourly predictions and daily predictions
65
83
  hourly_predictions = [
66
- f"{h.title}\t{h.temperature}\t{h.icon.fa_icon if is_fa else h.icon.emoji_icon}\t{rain_icon if h.precipitation.percentage else ''} {h.precipitation.percentage}"
67
- for h in forecast.hourly_predictions
84
+ f"{h['title']}"
85
+ f"{'\t' if len(h['title']) < 3 else ''}\t"
86
+ f"{h['temperature']}"
87
+ "\t"
88
+ f"{h['icon']}\t"
89
+ f"{rain_icon} {h['precipitation']}"
90
+ for h in hourly_predictions_format
68
91
  ]
92
+
69
93
  daily_predictions = [
70
- f"{d.title}\t{d.high_low}\t{d.icon.fa_icon if is_fa else d.icon.emoji_icon}\t{rain_icon} {d.precipitation.percentage}"
71
- for d in forecast.daily_predictions
94
+ f"{d['title']}"
95
+ f"{'\t' if len(d['title']) < 3 else ''}\t"
96
+ f"{d['high_low']}"
97
+ f"\t"
98
+ f"{d['icon']}\t"
99
+ f"{rain_icon} {d['precipitation']}"
100
+ for d in daily_predictions_format
72
101
  ]
73
102
 
74
103
  print_value = (
75
104
  "\n"
76
- f"{city}, {state_province}\n"
105
+ f"{city_location}\n"
77
106
  "\n"
78
107
  f"{icon} {temperature}\n"
79
108
  "\n"
@@ -84,9 +113,11 @@ class ConsoleTTY:
84
113
  "\n"
85
114
  f"{moon_icon} {moon_phase}\n"
86
115
  "\n"
87
- f"{wind_icon} {wind}\t {uv_index}\n"
88
- f"{humidity_icon} {humidity}\t\t {pressure}\n"
89
- f"{visibility_icon} {visibility}\t {aqi_acronym} {aqi_category} {aqi_value}\n"
116
+ f"{wind_icon} {wind}\t{uv_index}\n"
117
+ f"{humidity_icon} {humidity}\t\t{pressure}\n"
118
+ f"{visibility_icon} {visibility}"
119
+ f"\t{'\t' if len(visibility) < 6 else ''}"
120
+ f"{aqi_acronym} {aqi_category} {aqi_value}\n"
90
121
  "\n"
91
122
  f"{'\n'.join(hourly_predictions)}\n"
92
123
  "\n"
@@ -21,10 +21,11 @@ class WaybarTTY:
21
21
  # Forecast icon and temperature
22
22
  icon = forecast.current_conditions.icon.fa_icon if is_fa else forecast.current_conditions.icon.emoji_icon
23
23
  temperature = forecast.current_conditions.temperature
24
+ rain_icon = WeatherIconEnum.RAIN.fa_icon if is_fa else WeatherIconEnum.RAIN.emoji_icon
25
+
24
26
 
25
27
  # City and state/province
26
- city = forecast.current_conditions.location.city
27
- state_province = forecast.current_conditions.location.state_province
28
+ city_location = forecast.current_conditions.location
28
29
 
29
30
  # Summary
30
31
  summary = forecast.current_conditions.summary
@@ -65,19 +66,45 @@ class WaybarTTY:
65
66
  aqi_acronym = forecast.air_quality_index.acronym
66
67
  aqi_value = forecast.air_quality_index.value
67
68
 
69
+ hourly_predictions_format = [{
70
+ 'title': h.title if len(h.title) < 10 else h.title[:9] + '.',
71
+ 'temperature' : h.temperature,
72
+ 'icon': h.icon.fa_icon if is_fa else h.icon.emoji_icon,
73
+ 'precipitation': f"{h.precipitation.percentage if h.precipitation.percentage else ''}"
74
+ } for h in forecast.hourly_predictions]
75
+
76
+ daily_predictions_format = [
77
+ {
78
+ 'title': d.title if len(d.title) < 10 else d.title[:9] + '.',
79
+ 'high_low': f"{d.high_low.high}/<span size='small'>{d.high_low.low}</span>",
80
+ 'icon': d.icon.fa_icon if is_fa else d.icon.emoji_icon,
81
+ 'precipitation': f"{d.precipitation.percentage}"
82
+ } for d in forecast.daily_predictions
83
+ ]
84
+
68
85
  # Hourly predictions and daily predictions
69
- rain_icon = WeatherIconEnum.RAIN.fa_icon if is_fa else WeatherIconEnum.RAIN.emoji_icon
70
86
  hourly_predictions = [
71
- f"{h.title}{'\t' if len(h.title) < 5 else ''}\t{h.temperature}\t\t{h.icon.fa_icon if is_fa else h.icon.emoji_icon}\t{rain_icon if h.precipitation.percentage else ''} {h.precipitation.percentage}"
72
- for h in forecast.hourly_predictions
87
+ f"{h['title']}"
88
+ f"{'\t\t' if len(h['title']) < 4 else '\t'}"
89
+ f"{h['temperature']}"
90
+ "\t\t"
91
+ f"{h['icon']}\t"
92
+ f"{rain_icon} {h['precipitation']}"
93
+ for h in hourly_predictions_format
73
94
  ]
95
+
74
96
  daily_predictions = [
75
- f"{d.title}{'\t' if len(d.title) < 5 else ''}\t{d.high_low.high}/<span size='small'>{d.high_low.low}</span>\t{'\t' if len(d.title) < 5 else ''}{d.icon.fa_icon if is_fa else d.icon.emoji_icon}\t{rain_icon} {d.precipitation.percentage}"
76
- for d in forecast.daily_predictions
97
+ f"{d['title']}"
98
+ f"\t{'\t' if len(d['title']) < 6 else ' '}"
99
+ f"{d['high_low']}"
100
+ f"\t{'\t' if len(d['high_low']) < 6 else ''}"
101
+ f"{d['icon']}\t"
102
+ f"{rain_icon} {d['precipitation']}"
103
+ for d in daily_predictions_format
77
104
  ]
78
105
 
79
106
  tooltip = (
80
- f"{city}, {state_province}\n"
107
+ f"{city_location}\n"
81
108
  "\n"
82
109
  f"<span size='xx-large'>{icon}\t\t{temperature}</span>\n"
83
110
  "\n"
@@ -89,9 +116,9 @@ class WaybarTTY:
89
116
  "\n"
90
117
  f"{moon_icon} {moon_phase}\n"
91
118
  "\n"
92
- f"{wind_icon} {wind}\t {uv_index}\n"
93
- f"{humidity_icon} {humidity}\t\t {pressure}\n"
94
- f"{visibility_icon} {visibility}\t {aqi_acronym} {aqi_category} {aqi_value}\n"
119
+ f"{wind_icon} {wind}\t\t{uv_index}\n"
120
+ f"{humidity_icon} {humidity}\t\t{pressure}\n"
121
+ f"{visibility_icon} {visibility}\t{aqi_acronym} {aqi_category} {aqi_value}\n"
95
122
  "\n"
96
123
  f"{'\n'.join(hourly_predictions)}\n"
97
124
  "\n"
@@ -1,9 +1,10 @@
1
1
  class CityLocation:
2
2
 
3
- def __init__(self, city: str, state_province: str = None, country: str = None):
3
+ def __init__(self, city: str, state_province: str = None, country: str = None, location = None):
4
4
  self._city = city
5
5
  self._state_province = state_province
6
6
  self._country = country
7
+ self._location = location
7
8
 
8
9
  @property
9
10
  def city(self) -> str:
@@ -17,16 +18,49 @@ class CityLocation:
17
18
  def country(self) -> str:
18
19
  return self._country
19
20
 
21
+ @property
22
+ def location(self):
23
+ return self._location
24
+
20
25
  def __repr__(self):
21
- return f"CityLocation(city={self.city}, state_province={self.state_province}, country={self.country})"
26
+ return f"CityLocation(city={self.city}, state_province={self.state_province}, country={self.country}, location={self.location})"
27
+
28
+ def __str__(self):
29
+ parts = []
30
+ if self.location:
31
+ parts.append(self.location)
32
+ if self.city:
33
+ parts.append(self.city)
34
+ if self.state_province:
35
+ parts.append(self.state_province)
36
+ if self.country:
37
+ parts.append(self.country)
38
+ return ", ".join(parts) if parts else "Unknown Location"
22
39
 
23
40
  @classmethod
24
41
  def from_string(cls, data: str) -> "CityLocation":
25
42
  #'Nova Friburgo, Rio de Janeiro, Brazil'
43
+ #'Macuco, Santos, São Paulo, Brésil'
44
+ #'New York, NY, USA'
45
+ #'Tokyo, Tokyo Prefecture, Japan'
46
+ country, state_province, city, location = None, None, None, None
26
47
  parts = data.split(", ")
27
- if len(parts) == 3:
28
- city, state_province, country = parts
29
- return cls(city=city, state_province=state_province, country=country)
48
+
49
+ if len(parts) > 2:
50
+ i = len(parts) - 1
51
+ while i > 0:
52
+ if not country:
53
+ country = parts[i]
54
+ elif not state_province:
55
+ state_province = parts[i]
56
+ elif not city:
57
+ city = parts[i]
58
+ i -= 1
59
+ # Location is the first registry. If it's different from city, use it.
60
+ if city != parts[0]:
61
+ location = parts[0]
62
+ return cls(city=city, state_province=state_province, country=country, location=location)
63
+
30
64
  if len(parts) == 2:
31
65
  city, state_province = parts
32
66
  return cls(city=city, state_province=state_province)
@@ -18,12 +18,12 @@ class MoonPhaseEnum(Enum):
18
18
  PHASE_10 = ("phase-10", "\uf186", "🌔")
19
19
  PHASE_11 = ("phase-11", "\uf186", "🌔")
20
20
  PHASE_12 = ("phase-12", "\uf186", "🌔")
21
- PHASE_13 = ("phase-13", "\uf186", "🌔")
21
+ PHASE_13 = ("phase-13", "\uf186", "🌕")
22
22
  # Full Moon
23
23
  PHASE_14 = ("phase-14", "\uf186", "🌕")
24
24
  # Waning Gibbous
25
- PHASE_15 = ("phase-15", "\uf186", "🌖")
26
- PHASE_16 = ("phase-16", "\uf186", "🌖")
25
+ PHASE_15 = ("phase-15", "\uf186", "🌕")
26
+ PHASE_16 = ("phase-16", "\uf186", "🌕")
27
27
  PHASE_17 = ("phase-17", "\uf186", "🌖")
28
28
  PHASE_18 = ("phase-18", "\uf186", "🌖")
29
29
  PHASE_19 = ("phase-19", "\uf186", "🌖")
@@ -11,6 +11,7 @@ class WeatherIconEnum(Enum):
11
11
  FEEL = ('feel', '\uf2c9', '🥵')
12
12
  FOGGY = ('foggy', '\uf74e', '🌫️')
13
13
  HUMIDITY = ('humidity', '\uf043', '💧')
14
+ ISOLATED_THUNDERSTORMS = ('isolated-thunderstorms', chr(0x26C8), '⛈️')
14
15
  MOSTLY_CLEAR_DAY = ('mostly-clear-day', chr(0xF0599), '☀️')
15
16
  MOSTLY_CLEAR_NIGHT = ('mostly-clear-night', chr(0xF0594), '🌙')
16
17
  MOSTLY_CLOUDY_DAY = ('mostly-cloudy-day', chr(0xf013), '☁️')
@@ -12,36 +12,31 @@ class ExtractCurrentConditionsService:
12
12
  pass
13
13
 
14
14
  def execute(self, weather_data: PyQuery) -> dict:
15
- try:
16
- self.logger.debug("Extracting Current Conditions")
17
-
18
- data = PyQuery(weather_data('div[data-testid="CurrentConditionsContainer"]'))
19
-
20
- city_location_data = data.find('h1').text() #'Nova Friburgo, Rio de Janeiro, Brazil'
21
- timestamp_data = data.find('span[class*="timestamp"]').text() # 'As of 8:01 pm GMT-03:00'
22
- icon_data = data.find('svg[class*="wxIcon"]').attr('name') # 'partly-cloudy-night'
23
- temp_day_night = data.find('div[class*="tempHiLoValue"]').text() #'Day\xa063°\xa0•\xa0Night\xa046°'
24
-
25
- city_location = CityLocation.from_string(city_location_data)
26
- timestamp = Timestamp.from_string(timestamp_data)
27
- temperature = data.find('span[class*="tempValue"]').text() # '48°'
28
- icon = WeatherIconEnum.from_name(icon_data)
29
- phrase = data.find('div[data-testid*="wxPhrase"]').text() # 'Partly Cloudy'
30
- day_night = DayNight.from_string(temp_day_night)
31
-
32
- current_conditions = CurrentConditions(
33
- location=city_location,
34
- timestamp=timestamp,
35
- temperature=temperature,
36
- icon=icon,
37
- summary=phrase,
38
- day_night=day_night
39
- )
40
-
41
- self.logger.debug(f"Extracted current conditions: {current_conditions}")
42
-
43
- return current_conditions
44
-
45
- except Exception as e:
46
- self.logger.error(f"Error extracting current conditions: {e}")
47
- raise ValueError("Could not extract current conditions") from e
15
+ self.logger.debug("Extracting Current Conditions")
16
+
17
+ data = PyQuery(weather_data('div[data-testid="CurrentConditionsContainer"]'))
18
+
19
+ city_location_data = data.find('h1').text() #'Nova Friburgo, Rio de Janeiro, Brazil'
20
+ timestamp_data = data.find('span[class*="timestamp"]').text() # 'As of 8:01 pm GMT-03:00'
21
+ icon_data = data.find('svg[class*="wxIcon"]').attr('name') # 'partly-cloudy-night'
22
+ temp_day_night = data.find('div[class*="tempHiLoValue"]').text() #'Day\xa063°\xa0•\xa0Night\xa046°'
23
+
24
+ city_location = CityLocation.from_string(city_location_data)
25
+ timestamp = Timestamp.from_string(timestamp_data)
26
+ temperature = data.find('span[class*="tempValue"]').text() # '48°'
27
+ icon = WeatherIconEnum.from_name(icon_data)
28
+ phrase = data.find('div[data-testid*="wxPhrase"]').text() # 'Partly Cloudy'
29
+ day_night = DayNight.from_string(temp_day_night)
30
+
31
+ current_conditions = CurrentConditions(
32
+ location=city_location,
33
+ timestamp=timestamp,
34
+ temperature=temperature,
35
+ icon=icon,
36
+ summary=phrase,
37
+ day_night=day_night
38
+ )
39
+
40
+ self.logger.debug(f"Extracted current conditions: {current_conditions}")
41
+
42
+ return current_conditions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weathergrabber
3
- Version: 0.0.7a4
3
+ Version: 0.0.8a2
4
4
  Summary: A grabber for weather.com data with various output formats.
5
5
  Author-email: Carlos Anselmo Mendes Junior <cjuniorfox@gmail.com>
6
6
  License: MIT
@@ -1,15 +1,15 @@
1
- weathergrabber/__init__.py,sha256=AwOoxw8nfum3_VjbYeNJBtzKGIbeY5sOsClw5m4hMic,175
1
+ weathergrabber/__init__.py,sha256=OQyXRFDBQpeJV7yWqj7vvj7jeFkB7rJoWAIp6j-nvjE,175
2
2
  weathergrabber/__main__.py,sha256=K10wQv3-LSRD_FRLHWphdSs3OAcuzIb4sQaKmj7Fql0,105
3
3
  weathergrabber/cli.py,sha256=YOWoVLfwktgqK1bp89GUKkAEKyMM4DaNL4akBi6xVVk,1979
4
4
  weathergrabber/core.py,sha256=TiZ2utmYKf9lkIXWv8YBfSdiHZXJZXuHS8B-dBDvevw,1138
5
5
  weathergrabber/weathergrabber_application.py,sha256=2JfZAR94En3rmGrYKWRKxdRXmK_ikhJdgrGotFjtDys,3987
6
6
  weathergrabber/adapter/client/weather_api.py,sha256=9S7JmXaAVvvPY60dz6rC3lx7X68BcqyvNzvSVM1-af8,963
7
7
  weathergrabber/adapter/client/weather_search_api.py,sha256=1oy7JitHcmwkkhFlD0eIt5A7a4cGbf7LMNi26tR8z5o,1724
8
- weathergrabber/adapter/tty/console_tty.py,sha256=B5BaAEqpP7aXIxzzBQv47qWcQFRSWo47tQ1Lxa9cbq0,4972
8
+ weathergrabber/adapter/tty/console_tty.py,sha256=7Ih0DwRyEfaYM4tfCMHhyHo-ti97u-OmZ36ANwEAu5I,5953
9
9
  weathergrabber/adapter/tty/json_tty.py,sha256=ZRZSfVhFYsb8AXD1qjb1GBpaRMxHGNaMXW5VN8AvdaU,647
10
- weathergrabber/adapter/tty/waybar_tty.py,sha256=sKD_86ZCyBRqpmXkRPgNy9ipGYbd1E6SgDFTEV-TZw8,5312
10
+ weathergrabber/adapter/tty/waybar_tty.py,sha256=Mx2zBLHRFaCKzdQBcsGz8wACbyWx2dLA8d1j0AfyLYY,6074
11
11
  weathergrabber/domain/air_quality_index.py,sha256=eH1glUdedtbRCZMcw5_zB5ybJQUcyY-EBMxL8vVJ6zA,2791
12
- weathergrabber/domain/city_location.py,sha256=usXijW59uI1RhgmR9QO6L9ttIkbzwqtwJAsRgaTbYaw,1209
12
+ weathergrabber/domain/city_location.py,sha256=GHzFMvOhks7iQkWgR0mS-L21uAb_tlNycvfrdY-itzc,2362
13
13
  weathergrabber/domain/color.py,sha256=dkWZnQ2BjXUV8qTfZnmNGng_cqKtKuDdekYw4R2NJ9U,1080
14
14
  weathergrabber/domain/current_conditions.py,sha256=S14j2lL_gc2pds0wbl5M4_72PbVdubOuX8lnE_tZVTg,1477
15
15
  weathergrabber/domain/daily_predictions.py,sha256=8pzmaU-yugS2Hx_6MBWAk24wlSISe1OQIRrCK_lfvbw,1618
@@ -19,7 +19,7 @@ weathergrabber/domain/health_activities.py,sha256=wCG82-lBfrnIwxptgnMZt-fXHJsBnI
19
19
  weathergrabber/domain/hourly_predictions.py,sha256=PFiGuo7mBoQHLR-bDirV--R126YAOzkwIHgaeRGFQSA,2179
20
20
  weathergrabber/domain/label_value.py,sha256=LvrvZbSrcEUUpxvKAmYkFnpDFWsa6LFmGA9O8i6HB84,446
21
21
  weathergrabber/domain/moon_phase.py,sha256=sEHRi8yPIHTzaEcOkz556uNYsKLq4YmYa5qDncSX44c,587
22
- weathergrabber/domain/moon_phase_enum.py,sha256=MXxFjBjy4bq4SML4L-5DRStKJMWtvAjTtcYMO3nvAw0,2091
22
+ weathergrabber/domain/moon_phase_enum.py,sha256=D6F-qoZFR29kYlgDEwg5TjaD7Hjadw4XFNVFWQ6V9qo,2091
23
23
  weathergrabber/domain/precipitation.py,sha256=eXrpwMOsEJWGqV4bEBhN9niWYXalgdZRLG4-I39JZ2A,466
24
24
  weathergrabber/domain/search.py,sha256=j3BzskyPl0hDWV02XTOC4tJonV5RHxr5Rop_rYMKUtA,387
25
25
  weathergrabber/domain/sunrise_sunset.py,sha256=wNTk01NIuLbQ7gN_giAFv4f3FaRx9khul-mj19g57vE,1207
@@ -27,7 +27,7 @@ weathergrabber/domain/temperature_hight_low.py,sha256=PQOJ5uDtfMRBR5yMxXA46xuorJ
27
27
  weathergrabber/domain/timestamp.py,sha256=Bk6f8Tx0-yNitYmEKIWHnqh_ALDwxEHrhoCRSrfvYTU,1222
28
28
  weathergrabber/domain/today_details.py,sha256=EUlV7xerYw5QhEsBfvO5m6-9Ghm4nPkXJz9zCmSYTbA,2398
29
29
  weathergrabber/domain/uv_index.py,sha256=lNdk38Jq-A9msuzOLjIKrZIHUc2C9J8V4MA7HU3s1ZM,1420
30
- weathergrabber/domain/weather_icon_enum.py,sha256=tAaN6w9g3ZcwB5KLN5ivjO7Hp_C1tBynSkyxRQaChTI,2696
30
+ weathergrabber/domain/weather_icon_enum.py,sha256=TTnJKJgPwUM7OIDSWOCh7fanhEj7zm4X0bANqQLnU44,2775
31
31
  weathergrabber/domain/wind.py,sha256=wTDz3X1rYsnw_eNoDi1miwaomxwhiJkY_q6xrdZtLak,789
32
32
  weathergrabber/domain/adapter/icon_enum.py,sha256=YxGYS5vBRV2AiAfeuPOdqaQOHixAssiMbOzQnTmdSBg,84
33
33
  weathergrabber/domain/adapter/output_enum.py,sha256=61iR10ppY8DNALPKV-vLnDQni5HxEzpoRNZbdBdRygk,117
@@ -53,7 +53,7 @@ weathergrabber/domain/adapter/mapper/uv_index_mapper.py,sha256=K3AdRnAPv1Yqudc3e
53
53
  weathergrabber/domain/adapter/mapper/weather_icon_enum_mapper.py,sha256=YC7juvt38Ehtb3Y-iQFM77s1EQAv4qNHd6vGOqws6HI,249
54
54
  weathergrabber/domain/adapter/mapper/wind_mapper.py,sha256=nXyYwqTvLLMyKtSey27GaGvBV8xVhB_Y3HU0sbmIe_E,149
55
55
  weathergrabber/service/extract_aqi_service.py,sha256=IT3S9zZmThdqPtJDBF_G8LDUNlwUYoBh49z_WUlB-tk,1285
56
- weathergrabber/service/extract_current_conditions_service.py,sha256=5lmnOL1TFA5KH7b8uX87TysPg1i5ufsR_lE1rVlfLYU,2130
56
+ weathergrabber/service/extract_current_conditions_service.py,sha256=R4rd-_53HOQ7YqhHdfI_gKrIy27scYkNEmLgqS23f40,1838
57
57
  weathergrabber/service/extract_daily_forecast_oldstyle_service.py,sha256=DiKfaGbMnIIBnxI-IYG8HmfLHNAW5AGew5NjFSMqBk4,2190
58
58
  weathergrabber/service/extract_daily_forecast_service.py,sha256=ZN61_neEAdn7RPedLvmmFKH7Pq1EQGhG9A9Dy8o09zM,2709
59
59
  weathergrabber/service/extract_health_activities_service.py,sha256=2qJ4tEEz5uV6EwHUIFhWM8zol_BbDW3omEohf8kDg3M,1014
@@ -64,9 +64,9 @@ weathergrabber/service/extract_today_details_service.py,sha256=QAwF7EzVaL1STGNDy
64
64
  weathergrabber/service/read_weather_service.py,sha256=7_B8E9IN1KCwOhpuS5PfWazI1sCrDyYrZhkV2R38bhc,649
65
65
  weathergrabber/service/search_location_service.py,sha256=tZmVgO45hjwoa4cl5bKPjMBmYlGxJiH_I9Ymb5pwEwU,1422
66
66
  weathergrabber/usecase/use_case.py,sha256=K2RBIEi7S0ixAM6oDKmCPYkuJ9azatxle8zAqX0xM1E,4635
67
- weathergrabber-0.0.7a4.dist-info/licenses/LICENSE,sha256=X5JFljoqN43yFwpMLudQ9rtty4K_FeZfnz3v8Yhw23Q,1067
68
- weathergrabber-0.0.7a4.dist-info/METADATA,sha256=mg_JwQK9yzq-IkOZCNZ1M8DMjysIINTCk9rnzq4Juaw,5796
69
- weathergrabber-0.0.7a4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- weathergrabber-0.0.7a4.dist-info/entry_points.txt,sha256=m2P9a4mrJDTzuNaiTU438NA60GxCfaw7VKvruWw43N8,63
71
- weathergrabber-0.0.7a4.dist-info/top_level.txt,sha256=P3NMDJJYRIvQujf994Vb4gZrobkKWkL2gh3NF_ajQWM,15
72
- weathergrabber-0.0.7a4.dist-info/RECORD,,
67
+ weathergrabber-0.0.8a2.dist-info/licenses/LICENSE,sha256=X5JFljoqN43yFwpMLudQ9rtty4K_FeZfnz3v8Yhw23Q,1067
68
+ weathergrabber-0.0.8a2.dist-info/METADATA,sha256=543lEmwau2kcLeiIOCdRGjla0zcrux7ewKhOt7J7ruE,5796
69
+ weathergrabber-0.0.8a2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
+ weathergrabber-0.0.8a2.dist-info/entry_points.txt,sha256=m2P9a4mrJDTzuNaiTU438NA60GxCfaw7VKvruWw43N8,63
71
+ weathergrabber-0.0.8a2.dist-info/top_level.txt,sha256=P3NMDJJYRIvQujf994Vb4gZrobkKWkL2gh3NF_ajQWM,15
72
+ weathergrabber-0.0.8a2.dist-info/RECORD,,