wxdata 2.0.1__tar.gz → 2.0.3__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 (94) hide show
  1. {wxdata-2.0.1/src/wxdata.egg-info → wxdata-2.0.3}/PKG-INFO +2 -2
  2. {wxdata-2.0.1 → wxdata-2.0.3}/README.md +1 -1
  3. {wxdata-2.0.1 → wxdata-2.0.3}/pyproject.toml +1 -1
  4. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/client/byte_range.py +1 -29
  5. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/rtma_post_processing.py +10 -7
  6. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/progress_bar.py +1 -29
  7. {wxdata-2.0.1 → wxdata-2.0.3/src/wxdata.egg-info}/PKG-INFO +2 -2
  8. {wxdata-2.0.1 → wxdata-2.0.3}/LICENSE +0 -0
  9. {wxdata-2.0.1 → wxdata-2.0.3}/setup.cfg +0 -0
  10. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/__init__.py +0 -0
  11. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigefs/__init__.py +0 -0
  12. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigefs/aigefs.py +0 -0
  13. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigefs/paths.py +0 -0
  14. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigefs/url_scanners.py +0 -0
  15. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigfs/__init__.py +0 -0
  16. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigfs/aigfs.py +0 -0
  17. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigfs/paths.py +0 -0
  18. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/aigfs/url_scanners.py +0 -0
  19. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/calc/__init__.py +0 -0
  20. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/calc/derived_fields.py +0 -0
  21. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/calc/kinematics.py +0 -0
  22. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/calc/thermodynamics.py +0 -0
  23. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/calc/unit_conversion.py +0 -0
  24. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/cfs/__init__.py +0 -0
  25. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/cfs/cfs.py +0 -0
  26. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/cfs/file_scanner.py +0 -0
  27. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/cfs/url_scanners.py +0 -0
  28. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/client/__init__.py +0 -0
  29. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/client/client.py +0 -0
  30. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/client/level_coords.py +0 -0
  31. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/__init__.py +0 -0
  32. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/ecmwf.py +0 -0
  33. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/file_funcs.py +0 -0
  34. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/keys.py +0 -0
  35. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/parsers.py +0 -0
  36. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/paths.py +0 -0
  37. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/ecmwf/url_scanners.py +0 -0
  38. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/fems/__init__.py +0 -0
  39. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/fems/meta_data.py +0 -0
  40. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/fems/observations.py +0 -0
  41. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/__init__.py +0 -0
  42. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/exception_messages.py +0 -0
  43. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/file_funcs.py +0 -0
  44. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/gefs.py +0 -0
  45. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/paths.py +0 -0
  46. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gefs/url_scanners.py +0 -0
  47. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gfs/__init__.py +0 -0
  48. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gfs/exception_messages.py +0 -0
  49. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gfs/gfs.py +0 -0
  50. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gfs/paths.py +0 -0
  51. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/gfs/url_scanners.py +0 -0
  52. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/hgefs/__init__.py +0 -0
  53. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/hgefs/hgefs.py +0 -0
  54. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/hgefs/paths.py +0 -0
  55. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/hgefs/url_scanner.py +0 -0
  56. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/metars/__init__.py +0 -0
  57. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/metars/_clean_data.py +0 -0
  58. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/metars/metar_obs.py +0 -0
  59. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/noaa/__init__.py +0 -0
  60. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/noaa/nws.py +0 -0
  61. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/__init__.py +0 -0
  62. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/aigefs_post_processing.py +0 -0
  63. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/aigfs_post_processing.py +0 -0
  64. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/cfs_post_processing.py +0 -0
  65. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/ecmwf_post_processing.py +0 -0
  66. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/gefs_post_processing.py +0 -0
  67. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/gfs_post_processing.py +0 -0
  68. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/post_processors/hgefs_post_processing.py +0 -0
  69. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/radar/__init__.py +0 -0
  70. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/radar/nexrad2.py +0 -0
  71. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/radar/url_scanner.py +0 -0
  72. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/__init__.py +0 -0
  73. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/file_funcs.py +0 -0
  74. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/file_scanner.py +0 -0
  75. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/keys.py +0 -0
  76. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/rtma.py +0 -0
  77. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/rtma/url_scanners.py +0 -0
  78. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/soundings/__init__.py +0 -0
  79. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/soundings/_exceptions.py +0 -0
  80. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/soundings/wyoming_soundings.py +0 -0
  81. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/__init__.py +0 -0
  82. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/coords.py +0 -0
  83. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/exceptions.py +0 -0
  84. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/file_funcs.py +0 -0
  85. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/file_scanner.py +0 -0
  86. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/nomads_gribfilter.py +0 -0
  87. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/recycle_bin.py +0 -0
  88. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/scripts.py +0 -0
  89. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/tools.py +0 -0
  90. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata/utils/xmacis2_cleanup.py +0 -0
  91. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata.egg-info/SOURCES.txt +0 -0
  92. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata.egg-info/dependency_links.txt +0 -0
  93. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata.egg-info/requires.txt +0 -0
  94. {wxdata-2.0.1 → wxdata-2.0.3}/src/wxdata.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wxdata
3
- Version: 2.0.1
3
+ Version: 2.0.3
4
4
  Summary: A Python package of end-to-end weather data clients & raw data clients with VPN/PROXY support, data processors that decode variable keys from GRIB format into a plain-language format & various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
5
5
  Author: Eric J. Drewitz
6
6
  Project-URL: Documentation, https://github.com/edrewitz/wxdata/blob/main/Documentation/Landing%20Page.md
@@ -298,7 +298,7 @@ End-To-End clients with multiple servers to pull data from can find the differen
298
298
 
299
299
  ***Real-Time Mesoscale Analysis (RTMA)***
300
300
  1. [RTMA](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma.md#real-time-mesoscale-analysis-rtma)
301
- 2. [RTMA Comparison](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-24-hour-comparison)
301
+ 2. [RTMA Comparison](https://github.com/edrewitz/WxData/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-comparison)
302
302
 
303
303
  ***NOAA Storm Prediction Center Outlooks/Climate Prediction Center Outlooks/National Weather Service Forecasts***
304
304
  1. [Get NDFD Grids](https://github.com/edrewitz/wxdata/blob/main/Documentation/noaa.md#noaa-get-storm-prediction-center-outlooks-and-national-weather-service-forecasts-ndfd-grids)
@@ -266,7 +266,7 @@ End-To-End clients with multiple servers to pull data from can find the differen
266
266
 
267
267
  ***Real-Time Mesoscale Analysis (RTMA)***
268
268
  1. [RTMA](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma.md#real-time-mesoscale-analysis-rtma)
269
- 2. [RTMA Comparison](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-24-hour-comparison)
269
+ 2. [RTMA Comparison](https://github.com/edrewitz/WxData/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-comparison)
270
270
 
271
271
  ***NOAA Storm Prediction Center Outlooks/Climate Prediction Center Outlooks/National Weather Service Forecasts***
272
272
  1. [Get NDFD Grids](https://github.com/edrewitz/wxdata/blob/main/Documentation/noaa.md#noaa-get-storm-prediction-center-outlooks-and-national-weather-service-forecasts-ndfd-grids)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wxdata"
3
- version = "2.0.1"
3
+ version = "2.0.3"
4
4
  description = "A Python package of end-to-end weather data clients & raw data clients with VPN/PROXY support, data processors that decode variable keys from GRIB format into a plain-language format & various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -6,35 +6,7 @@ This file hosts the function that fetches the byte-range for a variable.
6
6
 
7
7
  import requests
8
8
 
9
- import sys
10
-
11
- def is_jupyter_notebook() -> bool:
12
- """
13
- Checks if the code is running within a Jupyter Notebook environment.
14
-
15
- Returns:
16
- --------
17
- bool
18
- True if running in a Jupyter Notebook/Lab, False otherwise.
19
- """
20
- # 1. Quick check for the ipykernel module in active memory
21
- if 'ipykernel' not in sys.modules:
22
- return False
23
-
24
- # 2. Confirm by checking the active IPython shell type
25
- try:
26
- from IPython import get_ipython
27
- shell = get_ipython().__class__.__name__
28
- return shell == 'ZMQInteractiveShell'
29
- except (ImportError, NameError):
30
- return False # Probably standard Python interpreter
31
-
32
- NOTEBOOK = is_jupyter_notebook()
33
-
34
- if NOTEBOOK == False:
35
- from tqdm.auto import tqdm
36
- else:
37
- from tqdm.notebook import tqdm
9
+ from tqdm.auto import tqdm
38
10
 
39
11
 
40
12
  def fetch_range(url,
@@ -13,9 +13,9 @@ import warnings as _warnings
13
13
  _warnings.filterwarnings('ignore')
14
14
 
15
15
  from wxdata.utils.exceptions import eccodes_error_message as _eccodes_error_message
16
- from wxdata.calc.thermodynamics import relative_humidity as _relative_humidity
17
16
  from wxdata.utils.file_funcs import clear_idx_files_in_path as _clear_idx_files_in_path
18
17
  from wxdata.utils.coords import shift_longitude as _shift_longitude_regrid
18
+ from metpy.units import units
19
19
 
20
20
  _sys.tracebacklimit = 0
21
21
  _logging.disable()
@@ -81,11 +81,11 @@ def _rows_and_cols(model):
81
81
 
82
82
  return dims[model][0], dims[model][1]
83
83
 
84
+
84
85
  def process_rtma_data(
85
86
  path,
86
87
  filename,
87
- model,
88
- ):
88
+ model):
89
89
 
90
90
  """
91
91
  This function post-processes RTMA Data and returns an xarray data array of the data.
@@ -97,6 +97,8 @@ def process_rtma_data(
97
97
 
98
98
  1) path (String) - The path to the file that has the RTMA Data.
99
99
 
100
+ 2) filename (String) - The name of the RTMA GRIB file.
101
+
100
102
  2) model (String) - Default='rtma'. The RTMA model being used:
101
103
 
102
104
  RTMA Models
@@ -107,9 +109,7 @@ def process_rtma_data(
107
109
  Hawaii = 'hi rtma'
108
110
  Puerto Rico = 'pr rtma'
109
111
  Guam = 'gu rtma'
110
-
111
- 3) directory (String) - The directory path where the RTMA files are saved to.
112
-
112
+
113
113
  Optional Arguments: None
114
114
 
115
115
  Returns
@@ -172,7 +172,10 @@ def process_rtma_data(
172
172
  pass
173
173
 
174
174
  try:
175
- ds['2m_relative_humidity'] = _relative_humidity(ds['2m_temperature'], ds['2m_dew_point'])
175
+ ds['2m_relative_humidity'] = (_mpcalc.relative_humidity_from_dewpoint(ds['2m_temperature'] * units('degK'),
176
+ ds['2m_dew_point'] * units('degK'))) * 100
177
+
178
+ ds = ds.metpy.dequantify()
176
179
  except Exception as e:
177
180
  pass
178
181
 
@@ -3,36 +3,8 @@ This file hosts a function that displays a progress bar for downloading a file.
3
3
 
4
4
  (C) Eric J. Drewitz 2025-2026
5
5
  """
6
+ from tqdm.auto import tqdm
6
7
 
7
- import sys
8
-
9
- def is_jupyter_notebook() -> bool:
10
- """
11
- Checks if the code is running within a Jupyter Notebook environment.
12
-
13
- Returns:
14
- --------
15
- bool
16
- True if running in a Jupyter Notebook/Lab, False otherwise.
17
- """
18
- # 1. Quick check for the ipykernel module in active memory
19
- if 'ipykernel' not in sys.modules:
20
- return False
21
-
22
- # 2. Confirm by checking the active IPython shell type
23
- try:
24
- from IPython import get_ipython
25
- shell = get_ipython().__class__.__name__
26
- return shell == 'ZMQInteractiveShell'
27
- except (ImportError, NameError):
28
- return False # Probably standard Python interpreter
29
-
30
- NOTEBOOK = is_jupyter_notebook()
31
-
32
- if NOTEBOOK == False:
33
- from tqdm.auto import tqdm
34
- else:
35
- from tqdm.notebook import tqdm
36
8
 
37
9
  def progress_bar(response,
38
10
  path,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wxdata
3
- Version: 2.0.1
3
+ Version: 2.0.3
4
4
  Summary: A Python package of end-to-end weather data clients & raw data clients with VPN/PROXY support, data processors that decode variable keys from GRIB format into a plain-language format & various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
5
5
  Author: Eric J. Drewitz
6
6
  Project-URL: Documentation, https://github.com/edrewitz/wxdata/blob/main/Documentation/Landing%20Page.md
@@ -298,7 +298,7 @@ End-To-End clients with multiple servers to pull data from can find the differen
298
298
 
299
299
  ***Real-Time Mesoscale Analysis (RTMA)***
300
300
  1. [RTMA](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma.md#real-time-mesoscale-analysis-rtma)
301
- 2. [RTMA Comparison](https://github.com/edrewitz/wxdata/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-24-hour-comparison)
301
+ 2. [RTMA Comparison](https://github.com/edrewitz/WxData/blob/main/Documentation/rtma%20comparison.md#real-time-mesoscale-analysis-rtma-comparison)
302
302
 
303
303
  ***NOAA Storm Prediction Center Outlooks/Climate Prediction Center Outlooks/National Weather Service Forecasts***
304
304
  1. [Get NDFD Grids](https://github.com/edrewitz/wxdata/blob/main/Documentation/noaa.md#noaa-get-storm-prediction-center-outlooks-and-national-weather-service-forecasts-ndfd-grids)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes