weathergrabber 0.0.5__tar.gz → 0.0.7a1__tar.gz

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 (78) hide show
  1. {weathergrabber-0.0.5/weathergrabber.egg-info → weathergrabber-0.0.7a1}/PKG-INFO +1 -1
  2. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/pyproject.toml +1 -1
  3. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/timestamp.py +4 -1
  4. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/weather_icon_enum.py +8 -4
  5. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1/weathergrabber.egg-info}/PKG-INFO +1 -1
  6. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/LICENSE +0 -0
  7. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/README.md +0 -0
  8. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/setup.cfg +0 -0
  9. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/tests/test_cli.py +0 -0
  10. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/tests/test_core.py +0 -0
  11. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/__init__.py +0 -0
  12. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/adapter/client/weather_api.py +0 -0
  13. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/adapter/client/weather_search_api.py +0 -0
  14. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/adapter/tty/console_tty.py +0 -0
  15. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/adapter/tty/json_tty.py +0 -0
  16. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/adapter/tty/waybar_tty.py +0 -0
  17. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/cli.py +0 -0
  18. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/core.py +0 -0
  19. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/icon_enum.py +0 -0
  20. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/air_quality_index_mapper.py +0 -0
  21. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/city_location_mapper.py +0 -0
  22. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/color_mapper.py +0 -0
  23. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/current_conditions_mapper.py +0 -0
  24. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/daily_predictions_mapper.py +0 -0
  25. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/day_night_mapper.py +0 -0
  26. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/forecast_mapper.py +0 -0
  27. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/health_activities_mapper.py +0 -0
  28. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/hourly_predictions_mapper.py +0 -0
  29. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/label_value_mapper.py +0 -0
  30. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/moon_phase_mapper.py +0 -0
  31. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/precipitation_mapper.py +0 -0
  32. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/search_mapper.py +0 -0
  33. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/sunrise_sunset_mapper.py +0 -0
  34. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/temperature_high_low_mapper.py +0 -0
  35. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/timestamp_mapper.py +0 -0
  36. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/today_details_mapper.py +0 -0
  37. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/uv_index_mapper.py +0 -0
  38. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/weather_icon_enum_mapper.py +0 -0
  39. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/mapper/wind_mapper.py +0 -0
  40. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/output_enum.py +0 -0
  41. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/adapter/params.py +0 -0
  42. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/air_quality_index.py +0 -0
  43. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/city_location.py +0 -0
  44. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/color.py +0 -0
  45. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/current_conditions.py +0 -0
  46. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/daily_predictions.py +0 -0
  47. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/day_night.py +0 -0
  48. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/forecast.py +0 -0
  49. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/health_activities.py +0 -0
  50. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/hourly_predictions.py +0 -0
  51. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/label_value.py +0 -0
  52. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/moon_phase.py +0 -0
  53. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/moon_phase_enum.py +0 -0
  54. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/precipitation.py +0 -0
  55. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/search.py +0 -0
  56. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/sunrise_sunset.py +0 -0
  57. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/temperature_hight_low.py +0 -0
  58. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/today_details.py +0 -0
  59. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/uv_index.py +0 -0
  60. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/domain/wind.py +0 -0
  61. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_aqi_service.py +0 -0
  62. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_current_conditions_service.py +0 -0
  63. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_daily_forecast_oldstyle_service.py +0 -0
  64. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_daily_forecast_service.py +0 -0
  65. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_health_activities_service.py +0 -0
  66. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_hourly_forecast_oldstyle_service.py +0 -0
  67. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_hourly_forecast_service.py +0 -0
  68. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_temperature_service.py +0 -0
  69. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/extract_today_details_service.py +0 -0
  70. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/read_weather_service.py +0 -0
  71. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/service/search_location_service.py +0 -0
  72. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/usecase/use_case.py +0 -0
  73. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber/weathergrabber_application.py +0 -0
  74. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber.egg-info/SOURCES.txt +0 -0
  75. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber.egg-info/dependency_links.txt +0 -0
  76. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber.egg-info/entry_points.txt +0 -0
  77. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber.egg-info/requires.txt +0 -0
  78. {weathergrabber-0.0.5 → weathergrabber-0.0.7a1}/weathergrabber.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weathergrabber
3
- Version: 0.0.5
3
+ Version: 0.0.7a1
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,6 +1,6 @@
1
1
  [project]
2
2
  name = "weathergrabber"
3
- version = "0.0.5"
3
+ version = "0.0.7a1"
4
4
  description = "A grabber for weather.com data with various output formats."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -30,9 +30,12 @@ class Timestamp:
30
30
  @classmethod
31
31
  def from_string(cls, text) -> "Timestamp":
32
32
  # "As of 4:23 pm GMT-03:00",
33
+ # "As of 4:23 pm EDT",
33
34
  # "As of 16:37 GMT-03:00",
34
35
  # "Até 16:38 GMT-03:00"
35
- pattern = re.compile(r'(\d{1,2}:\d{2}(?: ?[ap]m)?)\s+(GMT[+-]\d{2}:\d{2})')
36
+ # "Até 20:44 EDT"
37
+ # Simplified: just match time (with optional am/pm) and timezone (GMT offset or abbreviation)
38
+ pattern = re.compile(r'(\d{1,2}:\d{2}(?: ?[ap]m)?)\s*((?:GMT[+-]\d{2}:\d{2})|[A-Z]{2,4})', re.IGNORECASE)
36
39
  match = pattern.search(text)
37
40
  if match:
38
41
  time, gmt = match.groups()
@@ -4,10 +4,11 @@ class WeatherIconEnum(Enum):
4
4
  CLEAR = ('clear', chr(0xF0599), '☀️')
5
5
  CLEAR_NIGHT = ('clear-night', chr(0xF0594), '🌙')
6
6
  CLOUDY = ('cloudy', '\uf0c2', '☁️')
7
- CLOUDY_FOGGY_DAY = ('cloudy-foggy-day', '\u200B', '\u200B')
8
- CLOUDY_FOGGY_NIGHT = ('cloudy-foggy-night', '\u200B', '\u200B')
7
+ CLOUDY_FOGGY_DAY = ('cloudy-foggy-day', chr(0xF013), '🌥️')
8
+ CLOUDY_FOGGY_NIGHT = ('cloudy-foggy-night', chr(0xF013), '🌥️')
9
9
  DAY = ('day', '\uf185', '🌞')
10
10
  FEEL = ('feel', '\uf2c9', '🥵')
11
+ FOGGY = ('foggy', '\uf74e', '🌫️')
11
12
  HUMIDITY = ('humidity', '\uf043', '💧')
12
13
  MOSTLY_CLEAR_DAY = ('mostly-clear-day', chr(0xF0599), '☀️')
13
14
  MOSTLY_CLEAR_NIGHT = ('mostly-clear-night', chr(0xF0594), '🌙')
@@ -21,6 +22,8 @@ class WeatherIconEnum(Enum):
21
22
  RAINY_NIGHT = ('rainy-night', chr(0x1F326), '🌧️')
22
23
  SCATTERED_SHOWERS_DAY = ('scattered-showers-day', chr(0x1F326), '🌦️')
23
24
  SCATTERED_SHOWERS_NIGHT = ('scattered-showers-night', chr(0x1F326), '🌦️')
25
+ SCATTERED_THUNDERSTORMS_DAY = ('scattered-thunderstorms-day', chr(0x26C8), '⛈️')
26
+ SCATTERED_THUNDERSTORMS_NIGHT = ('scattered-thunderstorms-night', chr(0x26C8), '⛈️')
24
27
  SEVERE = ('severe', '\ue317', '🌩️')
25
28
  SHOWERS = ('showers', '\u26c6', '🌧️')
26
29
  SNOW = ('snow', '\uf2dc', '❄️')
@@ -29,9 +32,10 @@ class WeatherIconEnum(Enum):
29
32
  SUNNY = ('sunny', chr(0xF0599), '☀️')
30
33
  SUNRISE = ('sunrise', '\ue34c', '🌅')
31
34
  SUNSET = ('sunset', '\ue34d', '🌇')
32
- THUNDERSTORM = ('thunderstorm', '\uf0e7', '⛈️')
35
+ THUNDERSTORMS = ('thunderstorms', '\uf0e7', '⛈️')
33
36
  VISIBILITY = ('visibility', '\uf06e', '👁️')
34
37
  WIND = ('wind', chr(0xf059d), '🌪️')
38
+ WINDY = ('windy', chr(0xf059d), '🌪️')
35
39
 
36
40
  def __init__(self, name: str, fa_icon: str, emoji_icon: str):
37
41
  self._name = name
@@ -55,4 +59,4 @@ class WeatherIconEnum(Enum):
55
59
  for item in WeatherIconEnum:
56
60
  if item._name == name:
57
61
  return item
58
- return None
62
+ raise ValueError(f'WeatherIconEnum: No icon found for name "{name}"')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: weathergrabber
3
- Version: 0.0.5
3
+ Version: 0.0.7a1
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
File without changes