meteostat 1.7.6__py3-none-any.whl → 2.0.1__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 (94) hide show
  1. meteostat/__init__.py +38 -19
  2. meteostat/api/config.py +158 -0
  3. meteostat/api/daily.py +76 -0
  4. meteostat/api/hourly.py +80 -0
  5. meteostat/api/interpolate.py +378 -0
  6. meteostat/api/inventory.py +59 -0
  7. meteostat/api/merge.py +103 -0
  8. meteostat/api/monthly.py +73 -0
  9. meteostat/api/normals.py +144 -0
  10. meteostat/api/point.py +30 -0
  11. meteostat/api/stations.py +234 -0
  12. meteostat/api/timeseries.py +334 -0
  13. meteostat/core/cache.py +212 -59
  14. meteostat/core/data.py +203 -0
  15. meteostat/core/logger.py +9 -0
  16. meteostat/core/network.py +82 -0
  17. meteostat/core/parameters.py +112 -0
  18. meteostat/core/providers.py +184 -0
  19. meteostat/core/schema.py +170 -0
  20. meteostat/core/validator.py +38 -0
  21. meteostat/enumerations.py +149 -0
  22. meteostat/interpolation/idw.py +120 -0
  23. meteostat/interpolation/lapserate.py +91 -0
  24. meteostat/interpolation/nearest.py +31 -0
  25. meteostat/parameters.py +354 -0
  26. meteostat/providers/dwd/climat.py +166 -0
  27. meteostat/providers/dwd/daily.py +144 -0
  28. meteostat/providers/dwd/hourly.py +218 -0
  29. meteostat/providers/dwd/monthly.py +138 -0
  30. meteostat/providers/dwd/mosmix.py +351 -0
  31. meteostat/providers/dwd/poi.py +117 -0
  32. meteostat/providers/dwd/shared.py +155 -0
  33. meteostat/providers/eccc/daily.py +87 -0
  34. meteostat/providers/eccc/hourly.py +104 -0
  35. meteostat/providers/eccc/monthly.py +66 -0
  36. meteostat/providers/eccc/shared.py +45 -0
  37. meteostat/providers/index.py +496 -0
  38. meteostat/providers/meteostat/daily.py +65 -0
  39. meteostat/providers/meteostat/daily_derived.py +110 -0
  40. meteostat/providers/meteostat/hourly.py +66 -0
  41. meteostat/providers/meteostat/monthly.py +45 -0
  42. meteostat/providers/meteostat/monthly_derived.py +106 -0
  43. meteostat/providers/meteostat/shared.py +93 -0
  44. meteostat/providers/metno/forecast.py +186 -0
  45. meteostat/providers/noaa/ghcnd.py +228 -0
  46. meteostat/providers/noaa/isd_lite.py +142 -0
  47. meteostat/providers/noaa/metar.py +163 -0
  48. meteostat/typing.py +113 -0
  49. meteostat/utils/conversions.py +231 -0
  50. meteostat/utils/data.py +194 -0
  51. meteostat/utils/geo.py +28 -0
  52. meteostat/utils/guards.py +51 -0
  53. meteostat/utils/parsers.py +161 -0
  54. meteostat/utils/types.py +113 -0
  55. meteostat/utils/validators.py +31 -0
  56. meteostat-2.0.1.dist-info/METADATA +130 -0
  57. meteostat-2.0.1.dist-info/RECORD +64 -0
  58. {meteostat-1.7.6.dist-info → meteostat-2.0.1.dist-info}/WHEEL +1 -2
  59. meteostat/core/loader.py +0 -103
  60. meteostat/core/warn.py +0 -34
  61. meteostat/enumerations/granularity.py +0 -22
  62. meteostat/interface/base.py +0 -39
  63. meteostat/interface/daily.py +0 -118
  64. meteostat/interface/hourly.py +0 -154
  65. meteostat/interface/meteodata.py +0 -210
  66. meteostat/interface/monthly.py +0 -109
  67. meteostat/interface/normals.py +0 -245
  68. meteostat/interface/point.py +0 -143
  69. meteostat/interface/stations.py +0 -252
  70. meteostat/interface/timeseries.py +0 -237
  71. meteostat/series/aggregate.py +0 -48
  72. meteostat/series/convert.py +0 -28
  73. meteostat/series/count.py +0 -17
  74. meteostat/series/coverage.py +0 -20
  75. meteostat/series/fetch.py +0 -28
  76. meteostat/series/interpolate.py +0 -47
  77. meteostat/series/normalize.py +0 -76
  78. meteostat/series/stations.py +0 -22
  79. meteostat/units.py +0 -149
  80. meteostat/utilities/__init__.py +0 -0
  81. meteostat/utilities/aggregations.py +0 -37
  82. meteostat/utilities/endpoint.py +0 -33
  83. meteostat/utilities/helpers.py +0 -70
  84. meteostat/utilities/mutations.py +0 -89
  85. meteostat/utilities/validations.py +0 -30
  86. meteostat-1.7.6.dist-info/METADATA +0 -112
  87. meteostat-1.7.6.dist-info/RECORD +0 -39
  88. meteostat-1.7.6.dist-info/top_level.txt +0 -1
  89. /meteostat/{core → api}/__init__.py +0 -0
  90. /meteostat/{enumerations → interpolation}/__init__.py +0 -0
  91. /meteostat/{interface → providers}/__init__.py +0 -0
  92. /meteostat/{interface/interpolate.py → py.typed} +0 -0
  93. /meteostat/{series → utils}/__init__.py +0 -0
  94. {meteostat-1.7.6.dist-info → meteostat-2.0.1.dist-info/licenses}/LICENSE +0 -0
@@ -1,37 +0,0 @@
1
- """
2
- Utilities - Aggregation Methods
3
-
4
- Meteorological data provided by Meteostat (https://dev.meteostat.net)
5
- under the terms of the Creative Commons Attribution-NonCommercial
6
- 4.0 International Public License.
7
-
8
- The code is licensed under the MIT license.
9
- """
10
-
11
- import numpy as np
12
- import pandas as pd
13
-
14
-
15
- def weighted_average(step: pd.DataFrame) -> pd.DataFrame:
16
- """
17
- Calculate weighted average from grouped data
18
- """
19
-
20
- data = np.ma.masked_array(step, np.isnan(step))
21
- data = np.ma.average(data, axis=0, weights=data[:, -2])
22
- data = data.filled(np.nan)
23
-
24
- return pd.DataFrame(data=[data], columns=step.columns)
25
-
26
-
27
- def degree_mean(data: pd.Series) -> float:
28
- """
29
- Return the mean of a list of degrees
30
- """
31
-
32
- if data.isnull().all():
33
- return np.nan
34
-
35
- rads = np.deg2rad(data)
36
- sums = np.arctan2(np.sum(np.sin(rads)), np.sum(np.cos(rads)))
37
- return (np.rad2deg(sums) + 360) % 360
@@ -1,33 +0,0 @@
1
- """
2
- Utilities - Endpoint Helpers
3
-
4
- Meteorological data provided by Meteostat (https://dev.meteostat.net)
5
- under the terms of the Creative Commons Attribution-NonCommercial
6
- 4.0 International Public License.
7
-
8
- The code is licensed under the MIT license.
9
- """
10
-
11
- from typing import Union
12
- from meteostat.enumerations.granularity import Granularity
13
-
14
-
15
- def generate_endpoint_path(
16
- granularity: Granularity,
17
- station: str,
18
- year: Union[int, None] = None,
19
- map_file: bool = False, # Is a source map file?
20
- ) -> str:
21
- """
22
- Generate Meteostat Bulk path
23
- """
24
-
25
- # Base path
26
- path = f"{granularity.value}/"
27
-
28
- if granularity in (Granularity.HOURLY, Granularity.DAILY) and year:
29
- path += f"{year}/"
30
-
31
- appendix = ".map" if map_file else ""
32
-
33
- return f"{path}{station}{appendix}.csv.gz"
@@ -1,70 +0,0 @@
1
- """
2
- Utilities - Helpers
3
-
4
- Meteorological data provided by Meteostat (https://dev.meteostat.net)
5
- under the terms of the Creative Commons Attribution-NonCommercial
6
- 4.0 International Public License.
7
-
8
- The code is licensed under the MIT license.
9
- """
10
-
11
- from typing import Optional
12
- import numpy as np
13
-
14
-
15
- def get_distance(lat1, lon1, lat2, lon2) -> float:
16
- """
17
- Calculate distance between weather station and geo point
18
- """
19
- # Earth radius in meters
20
- radius = 6371000
21
-
22
- # Degress to radian
23
- lat1, lon1, lat2, lon2 = map(np.deg2rad, [lat1, lon1, lat2, lon2])
24
-
25
- # Deltas
26
- dlat = lat2 - lat1
27
- dlon = lon2 - lon1
28
-
29
- # Calculate distance
30
- arch = np.sin(dlat / 2) ** 2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon / 2) ** 2
31
- arch_sin = 2 * np.arcsin(np.sqrt(arch))
32
-
33
- return radius * arch_sin
34
-
35
-
36
- def _get_flag_from_single_source(
37
- source: str, source_mappings: dict, model_flag: str
38
- ) -> str:
39
- """
40
- Get flag from single source
41
- """
42
- if source in source_mappings:
43
- return source_mappings[source]
44
- return model_flag
45
-
46
-
47
- def get_flag_from_source_factory(source_mappings: dict, model_flag: str) -> str:
48
- """
49
- Get flag from source
50
- """
51
-
52
- def _get_flag_from_source(source: Optional[str]) -> str:
53
- sources = source.split(" ")
54
-
55
- flags = [
56
- _get_flag_from_single_source(src, source_mappings, model_flag)
57
- for src in sources
58
- ]
59
-
60
- return "".join(flags)
61
-
62
- return _get_flag_from_source
63
-
64
-
65
- def with_suffix(items, suffix):
66
- """
67
- Takes a list of strings and a suffix, returns a new list containing
68
- the same items with the suffix added.
69
- """
70
- return [item + suffix for item in items]
@@ -1,89 +0,0 @@
1
- """
2
- Utilities - DataFrame Mutations
3
-
4
- Meteorological data provided by Meteostat (https://dev.meteostat.net)
5
- under the terms of the Creative Commons Attribution-NonCommercial
6
- 4.0 International Public License.
7
-
8
- The code is licensed under the MIT license.
9
- """
10
-
11
- from datetime import datetime
12
- from typing import Union
13
- import numpy as np
14
- import pandas as pd
15
-
16
-
17
- def localize(df: pd.DataFrame, timezone: str) -> pd.DataFrame:
18
- """
19
- Convert time data to any time zone
20
- """
21
-
22
- return df.tz_localize("UTC", level="time").tz_convert(timezone, level="time")
23
-
24
-
25
- def filter_time(
26
- df: pd.DataFrame,
27
- start: Union[datetime, None] = None,
28
- end: Union[datetime, None] = None,
29
- ) -> pd.DataFrame:
30
- """
31
- Filter time series data based on start and end date
32
- """
33
-
34
- # Get time index
35
- time = df.index.get_level_values("time")
36
-
37
- # If no time index, return original DataFrame
38
- if len(time) == 0:
39
- return df
40
-
41
- # Filter & return
42
- return df.loc[(time >= start) & (time <= end)] if start and end else df
43
-
44
-
45
- def adjust_temp(df: pd.DataFrame, alt: int):
46
- """
47
- Adjust temperature-like data based on altitude
48
- """
49
-
50
- # Default temperature difference by 100 meters
51
- temp_diff = 0.6
52
-
53
- # Temperature-like columns
54
- temp_like = ("temp", "dwpt", "tavg", "tmin", "tmax")
55
-
56
- # Adjust values for all temperature-like data
57
- for col_name in temp_like:
58
- if col_name in df.columns:
59
- df.loc[df[col_name] != np.nan, col_name] = df[col_name] + (
60
- temp_diff * ((df["elevation"] - alt) / 100)
61
- )
62
-
63
- return df
64
-
65
-
66
- def calculate_dwpt(df: pd.DataFrame, col: str) -> pd.DataFrame:
67
- """
68
- Calculate dew point temperature
69
- """
70
- # Check if required columns exist
71
- if "temp" not in df.columns or "rhum" not in df.columns:
72
- return df
73
-
74
- magnus_const_a = 17.27
75
- magnus_const_b = 237.7 # degrees Celsius
76
-
77
- temperature = df["temp"]
78
- relative_humidity = df["rhum"]
79
-
80
- alpha = (
81
- (magnus_const_a * temperature) / (magnus_const_b + temperature)
82
- ) + np.log(relative_humidity / 100.0)
83
- df[col] = (magnus_const_b * alpha) / (magnus_const_a - alpha)
84
-
85
- df[col] = df[col].round(1)
86
-
87
- df[f"{col}_flag"] = df[["temp_flag", "rhum_flag"]].max(axis=1, skipna=True)
88
-
89
- return df
@@ -1,30 +0,0 @@
1
- """
2
- Utilities - Validations
3
-
4
- Meteorological data provided by Meteostat (https://dev.meteostat.net)
5
- under the terms of the Creative Commons Attribution-NonCommercial
6
- 4.0 International Public License.
7
-
8
- The code is licensed under the MIT license.
9
- """
10
-
11
- import pandas as pd
12
-
13
-
14
- def validate_series(df: pd.DataFrame, station: str) -> pd.DataFrame:
15
- """
16
- Make sure a series is formatted correctly
17
- """
18
-
19
- # Add missing column(s)
20
- if "time" not in df.columns:
21
- df["time"] = None
22
-
23
- # Add weather station ID
24
- df["station"] = station
25
-
26
- # Set index
27
- df = df.set_index(["station", "time"])
28
-
29
- # Return DataFrame
30
- return df
@@ -1,112 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: meteostat
3
- Version: 1.7.6
4
- Summary: Access and analyze historical weather and climate data with Python.
5
- Home-page: https://github.com/meteostat/meteostat-python
6
- Author: Meteostat
7
- Author-email: info@meteostat.net
8
- License: MIT
9
- Keywords: weather,climate,data,timeseries,meteorology
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: MIT License
12
- Classifier: Operating System :: OS Independent
13
- Classifier: Topic :: Database
14
- Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
15
- Classifier: Topic :: Scientific/Engineering :: Information Analysis
16
- Classifier: Topic :: Scientific/Engineering :: Visualization
17
- Requires-Python: >=3.8.0
18
- Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
- Requires-Dist: pandas>=2
21
- Requires-Dist: pytz
22
- Requires-Dist: numpy
23
-
24
- # Meteostat Python Package
25
-
26
- The Meteostat Python library provides a simple API for accessing open weather and climate data. The historical observations and statistics are collected by [Meteostat](https://meteostat.net) from different public interfaces, most of which are governmental.
27
-
28
- Among the data sources are national weather services like the National Oceanic and Atmospheric Administration (NOAA) and Germany's national weather service (DWD).
29
-
30
- Are you looking for a **hosted solution**? Try our [JSON API](https://rapidapi.com/meteostat/api/meteostat/).
31
-
32
- ## Installation
33
-
34
- The Meteostat Python package is available through [PyPI](https://pypi.org/project/meteostat/):
35
-
36
- ```sh
37
- pip install meteostat
38
- ```
39
-
40
- Meteostat **requires Python 3.6** or higher. If you want to visualize data, please install Matplotlib, too.
41
-
42
- ## Documentation
43
-
44
- The Meteostat Python library is divided into multiple classes which provide access to the actual data. The [documentation](https://dev.meteostat.net/python/) covers all aspects of the library:
45
-
46
- * **Selecting Locations**
47
- * [Geographical Point](https://dev.meteostat.net/python/point.html)
48
- * [Weather Stations](https://dev.meteostat.net/python/stations.html)
49
- * **Time Series**
50
- * [Hourly Data](https://dev.meteostat.net/python/hourly.html)
51
- * [Daily Data](https://dev.meteostat.net/python/daily.html)
52
- * [Monthly Data](https://dev.meteostat.net/python/monthly.html)
53
- * **Miscellaneous Data**
54
- * [Climate Normals](https://dev.meteostat.net/python/normals.html)
55
- * **Library**
56
- * [Contributing](https://dev.meteostat.net/python/contributing.html)
57
- * [Formats & Units](https://dev.meteostat.net/formats.html)
58
- * [Data Sources](https://dev.meteostat.net/sources.html)
59
- * [Terms & License](https://dev.meteostat.net/terms.html)
60
-
61
- ## Example
62
-
63
- Let's plot 2018 temperature data for Vancouver, BC:
64
-
65
- ```python
66
- # Import Meteostat library and dependencies
67
- from datetime import datetime
68
- import matplotlib.pyplot as plt
69
- from meteostat import Point, Daily
70
-
71
- # Set time period
72
- start = datetime(2018, 1, 1)
73
- end = datetime(2018, 12, 31)
74
-
75
- # Create Point for Vancouver, BC
76
- location = Point(49.2497, -123.1193, 70)
77
-
78
- # Get daily data for 2018
79
- data = Daily(location, start, end)
80
- data = data.fetch()
81
-
82
- # Plot line chart including average, minimum and maximum temperature
83
- data.plot(y=['tavg', 'tmin', 'tmax'])
84
- plt.show()
85
- ```
86
-
87
- Take a look at the expected output:
88
-
89
- ![2018 temperature data for Vancouver, BC](https://dev.meteostat.net/assets/img/py-example-chart.046f8b8e.png)
90
-
91
- ## Contributing
92
-
93
- Instructions on building and testing the Meteostat Python package can be found in the [documentation](https://dev.meteostat.net/python/contributing.html). More information about the Meteostat bulk data interface is available [here](https://dev.meteostat.net/bulk/).
94
-
95
- ## Donating
96
-
97
- If you want to support the project financially, you can make a donation using one of the following services:
98
-
99
- * [GitHub](https://github.com/sponsors/clampr)
100
- * [Patreon](https://www.patreon.com/meteostat)
101
- * [PayPal](https://www.paypal.com/donate?hosted_button_id=MQ67WRDC8EW38)
102
-
103
- ## Data License
104
-
105
- Meteorological data is provided under the terms of the [Creative Commons Attribution-NonCommercial 4.0 International Public License (CC BY-NC 4.0)](https://creativecommons.org/licenses/by-nc/4.0/legalcode). You may build upon the material
106
- for any purpose, even commercially. However, you are not allowed to redistribute Meteostat data "as-is" for commercial purposes.
107
-
108
- By using the Meteostat Python library you agree to our [terms of service](https://dev.meteostat.net/terms.html). All meteorological data sources used by the Meteostat project are listed [here](https://dev.meteostat.net/sources.html).
109
-
110
- ## Code License
111
-
112
- The code of this library is available under the [MIT license](https://opensource.org/licenses/MIT).
@@ -1,39 +0,0 @@
1
- meteostat/__init__.py,sha256=QnC-Q27sHd1SoDnSB_o8QriQOOPsiyZQKkoViInybu8,989
2
- meteostat/units.py,sha256=G0vh2tYsp0ESGUpg3ZAE0U-b9Ih_oMtPNDZ71Bbq3iE,2566
3
- meteostat/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- meteostat/core/cache.py,sha256=MEC6Hcf2rwg3__zv_Y1nSk16mfdTsrLH9CTraMX7NYw,1764
5
- meteostat/core/loader.py,sha256=bAItihzJrabglu37NN697WX_csltOviC9u7twAtV8rY,2842
6
- meteostat/core/warn.py,sha256=K9fBDoY2TIC2HjmCJl0k1Dq-dWA1hNq16OTLoG2F_rI,647
7
- meteostat/enumerations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- meteostat/enumerations/granularity.py,sha256=lmhlHDUPvCwb05fDxYNG4GEuYCgy-u-AiZhpXJOj3uY,457
9
- meteostat/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- meteostat/interface/base.py,sha256=8ksGkdgyRDw2AA5ZwuES9XuBjseBPoNBBQiNspVp2JA,968
11
- meteostat/interface/daily.py,sha256=Rx-_U_t2iX-4wtBdieihioeo99mKEplrZaM23YRkwnM,2949
12
- meteostat/interface/hourly.py,sha256=nP4hIjxYbcZk0ua6m6fclAXfuhrxzB3jHPyiz3dLNs4,3965
13
- meteostat/interface/interpolate.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- meteostat/interface/meteodata.py,sha256=Om7570m0LQ0BYyuEirr7zzFZ4r1f28rL1CTk9k_PPTs,6520
15
- meteostat/interface/monthly.py,sha256=LbeXgodQcVX0h987bv2lEJvewIcQkgt5Co_dyJ14F_A,2577
16
- meteostat/interface/normals.py,sha256=xBUBCjle8awhHgDWi6FOTfIMN4MdOrYFXuoLceCQVxE,7108
17
- meteostat/interface/point.py,sha256=lnKyvaclcsOXaErpPpaH0_3T1j2X7kgCKlIhk4s-EGQ,3801
18
- meteostat/interface/stations.py,sha256=hC2DmtE24u--lb3jbkFVMkFDKCR-LP5h8uXSOIb4_hg,6683
19
- meteostat/interface/timeseries.py,sha256=Dm8s59X3S9GcSOZ1mSrUv_xxjVOU6XJr06hQjbo73z8,7960
20
- meteostat/series/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- meteostat/series/aggregate.py,sha256=dhYx1c2OzOgEcdUNCrmT4zdYY1UuT4PhkWYRirmx7v0,1200
22
- meteostat/series/convert.py,sha256=Uu76hw-M1QzwYuliA2hp0Dl9f1YyNaLE3AQTyaask60,641
23
- meteostat/series/count.py,sha256=kV0Oztmy1K0E3Z1h8Na9twxUhujRepRMtGzM_CNInJc,358
24
- meteostat/series/coverage.py,sha256=76PlEoVPM_-4Oys-6THggV-7gESbPM6Cx0m1n0-1YcM,534
25
- meteostat/series/fetch.py,sha256=MIrkhhtAucThO06Bcc92c6rrc3v5G31VBI0TkQd0oZ0,620
26
- meteostat/series/interpolate.py,sha256=tM41T_Hgc4Q2tAlommB5aRLvA3QVjX82WXXLVImSAJ4,1193
27
- meteostat/series/normalize.py,sha256=-eOa21NbV5vMSy3MSIiKhDbni5KCa2UV_CNf3A_JWTk,2151
28
- meteostat/series/stations.py,sha256=pHDQR1t7Z7jN5Vaj8wdNnSsZI8s6SiH5bNeTbys3TjA,447
29
- meteostat/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- meteostat/utilities/aggregations.py,sha256=-t4ZBNM8cnwnuiR7Bzt7OlUQxNJMZkqS3E4AIMrJg3M,915
31
- meteostat/utilities/endpoint.py,sha256=ndHSMGi5LhB1yrjA3f6pDbe-0glnnDAX7IInp0Gscik,806
32
- meteostat/utilities/helpers.py,sha256=wt11OXHzIDw3DY98XGIfcrh1bPCC9dClVnNdGtqvz4U,1691
33
- meteostat/utilities/mutations.py,sha256=yzOXJquXGaroDAv_Xb7G4nxQE7vpoQojqGiTJn3cyq0,2274
34
- meteostat/utilities/validations.py,sha256=MlKY1gkeqmovFr4lR_iM6Bk7yuGdSgy0NGceiqYI7Vs,646
35
- meteostat-1.7.6.dist-info/LICENSE,sha256=kqpl7FVzWOCe11BZqJBZ1aRQi-aK87j3ljtG7P3VxLc,1066
36
- meteostat-1.7.6.dist-info/METADATA,sha256=yckdIiOARcU5WqCR5PdSfc9l6Ysxg5H5IXcFTj2O1xE,4633
37
- meteostat-1.7.6.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
38
- meteostat-1.7.6.dist-info/top_level.txt,sha256=s8LP1xi5iF2zhVv5ULkHwW-tPeMrljxnA8VqZibQqro,10
39
- meteostat-1.7.6.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- meteostat
File without changes
File without changes
File without changes
File without changes
File without changes