wxdata 1.5__tar.gz → 1.6__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-1.5 → wxdata-1.6}/PKG-INFO +143 -29
  2. wxdata-1.5/src/wxdata.egg-info/PKG-INFO → wxdata-1.6/README.md +129 -47
  3. {wxdata-1.5 → wxdata-1.6}/pyproject.toml +14 -12
  4. {wxdata-1.5 → wxdata-1.6}/src/wxdata/__init__.py +25 -5
  5. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/url_scanners.py +6 -6
  6. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/aigfs.py +0 -1
  7. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/url_scanners.py +2 -2
  8. wxdata-1.6/src/wxdata/cfs/__init__.py +4 -0
  9. wxdata-1.6/src/wxdata/cfs/cfs.py +692 -0
  10. wxdata-1.6/src/wxdata/cfs/file_scanner.py +44 -0
  11. wxdata-1.6/src/wxdata/cfs/url_scanners.py +1048 -0
  12. {wxdata-1.5 → wxdata-1.6}/src/wxdata/client/client.py +191 -32
  13. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/url_scanners.py +6 -6
  14. {wxdata-1.5 → wxdata-1.6}/src/wxdata/fems/__init__.py +1 -1
  15. wxdata-1.5/src/wxdata/fems/fems.py → wxdata-1.6/src/wxdata/fems/observations.py +8 -8
  16. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/url_scanners.py +13 -6
  17. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/url_scanners.py +13 -6
  18. {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/url_scanner.py +2 -2
  19. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/__init__.py +1 -0
  20. wxdata-1.6/src/wxdata/post_processors/cfs_post_processing.py +1761 -0
  21. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/gefs_post_processing.py +3 -3
  22. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/gfs_post_processing.py +1 -0
  23. wxdata-1.6/src/wxdata/radar/__init__.py +4 -0
  24. wxdata-1.6/src/wxdata/radar/nexrad2.py +220 -0
  25. wxdata-1.6/src/wxdata/radar/url_scanner.py +245 -0
  26. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/__init__.py +1 -0
  27. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/nomads_gribfilter.py +2 -2
  28. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/xmacis2_cleanup.py +16 -0
  29. wxdata-1.5/README.md → wxdata-1.6/src/wxdata.egg-info/PKG-INFO +161 -17
  30. {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/SOURCES.txt +9 -1
  31. wxdata-1.6/src/wxdata.egg-info/requires.txt +15 -0
  32. wxdata-1.5/src/wxdata.egg-info/requires.txt +0 -13
  33. {wxdata-1.5 → wxdata-1.6}/LICENSE +0 -0
  34. {wxdata-1.5 → wxdata-1.6}/setup.cfg +0 -0
  35. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/__init__.py +0 -0
  36. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/aigefs.py +0 -0
  37. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigefs/paths.py +0 -0
  38. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/__init__.py +0 -0
  39. {wxdata-1.5 → wxdata-1.6}/src/wxdata/aigfs/paths.py +0 -0
  40. {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/__init__.py +0 -0
  41. {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/derived_fields.py +0 -0
  42. {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/kinematics.py +0 -0
  43. {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/thermodynamics.py +0 -0
  44. {wxdata-1.5 → wxdata-1.6}/src/wxdata/calc/unit_conversion.py +0 -0
  45. {wxdata-1.5 → wxdata-1.6}/src/wxdata/client/__init__.py +0 -0
  46. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/__init__.py +0 -0
  47. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/ecmwf.py +0 -0
  48. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/file_funcs.py +0 -0
  49. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/keys.py +0 -0
  50. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/parsers.py +0 -0
  51. {wxdata-1.5 → wxdata-1.6}/src/wxdata/ecmwf/paths.py +0 -0
  52. {wxdata-1.5 → wxdata-1.6}/src/wxdata/fems/meta_data.py +0 -0
  53. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/__init__.py +0 -0
  54. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/exception_messages.py +0 -0
  55. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/file_funcs.py +0 -0
  56. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/gefs.py +0 -0
  57. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/paths.py +0 -0
  58. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gefs/process.py +0 -0
  59. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/__init__.py +0 -0
  60. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/exception_messages.py +0 -0
  61. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/gfs.py +0 -0
  62. {wxdata-1.5 → wxdata-1.6}/src/wxdata/gfs/paths.py +0 -0
  63. {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/__init__.py +0 -0
  64. {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/hgefs.py +0 -0
  65. {wxdata-1.5 → wxdata-1.6}/src/wxdata/hgefs/paths.py +0 -0
  66. {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/__init__.py +0 -0
  67. {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/_clean_data.py +0 -0
  68. {wxdata-1.5 → wxdata-1.6}/src/wxdata/metars/metar_obs.py +0 -0
  69. {wxdata-1.5 → wxdata-1.6}/src/wxdata/noaa/__init__.py +0 -0
  70. {wxdata-1.5 → wxdata-1.6}/src/wxdata/noaa/nws.py +0 -0
  71. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/aigefs_post_processing.py +0 -0
  72. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/aigfs_post_processing.py +0 -0
  73. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/ecmwf_post_processing.py +0 -0
  74. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/hgefs_post_processing.py +0 -0
  75. {wxdata-1.5 → wxdata-1.6}/src/wxdata/post_processors/rtma_post_processing.py +0 -0
  76. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/__init__.py +0 -0
  77. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/file_funcs.py +0 -0
  78. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/keys.py +0 -0
  79. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/process.py +0 -0
  80. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/rtma.py +0 -0
  81. {wxdata-1.5 → wxdata-1.6}/src/wxdata/rtma/url_scanners.py +0 -0
  82. {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/__init__.py +0 -0
  83. {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/_exceptions.py +0 -0
  84. {wxdata-1.5 → wxdata-1.6}/src/wxdata/soundings/wyoming_soundings.py +0 -0
  85. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/coords.py +0 -0
  86. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/exceptions.py +0 -0
  87. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/file_funcs.py +0 -0
  88. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/file_scanner.py +0 -0
  89. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/progress_bar.py +0 -0
  90. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/recycle_bin.py +0 -0
  91. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/scripts.py +0 -0
  92. {wxdata-1.5 → wxdata-1.6}/src/wxdata/utils/tools.py +0 -0
  93. {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/dependency_links.txt +0 -0
  94. {wxdata-1.5 → wxdata-1.6}/src/wxdata.egg-info/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wxdata
3
- Version: 1.5
4
- Summary: A Python library that acts as a client to download, pre-process and post-process weather data. Friendly for users on VPN/PROXY connections.
3
+ Version: 1.6
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
7
7
  Project-URL: Repository, https://github.com/edrewitz/wxdata/tree/main
@@ -13,19 +13,21 @@ Classifier: Operating System :: OS Independent
13
13
  Requires-Python: >=3.10
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
- Requires-Dist: metpy>=1.5.1
17
- Requires-Dist: numpy>=1.24
18
- Requires-Dist: pandas>=2.2
19
- Requires-Dist: xarray>=2023.1.0
20
- Requires-Dist: netcdf4>=1.7.1
21
- Requires-Dist: shapeography>=1.0
22
- Requires-Dist: beautifulsoup4>=4.13.4
23
- Requires-Dist: requests>=2.32.4
24
- Requires-Dist: cfgrib>=0.9.10.4
25
- Requires-Dist: dask>=2025.5.1
16
+ Requires-Dist: metpy>=1.7.1
17
+ Requires-Dist: numpy>=2.2.6
18
+ Requires-Dist: pandas>=2.3.3
19
+ Requires-Dist: cartopy>=0.25.0
20
+ Requires-Dist: xarray>=2025.6.1
21
+ Requires-Dist: netcdf4>=1.7.3
22
+ Requires-Dist: shapeography>=1.2
23
+ Requires-Dist: beautifulsoup4>=4.14.3
24
+ Requires-Dist: requests>=2.32.5
25
+ Requires-Dist: cfgrib>=0.9.15.1
26
+ Requires-Dist: dask>=2025.11.0
26
27
  Requires-Dist: tqdm>=4.67.3
27
28
  Requires-Dist: ecmwf-opendata>=0.3.26
28
29
  Requires-Dist: openpyxl>=3.1.5
30
+ Requires-Dist: arm-pyart>=2.2.0
29
31
  Dynamic: license-file
30
32
 
31
33
  # WxData
@@ -51,11 +53,26 @@ PIP Downloads:
51
53
 
52
54
  **(C) Eric J. Drewitz 2025-2026**
53
55
 
54
- An open-source package that helps meteorologists and weather enthusiats download, pre-process and post-process various types of weather data.
56
+ A Python package consisting of the following:
55
57
 
56
- This package only retrieves open-source publicly available weather data.
58
+ 1) End-to-end weather data clients with VPN/PROXY support
59
+ 2) Raw data clients with VPN/PROXY support
60
+ 3) Data processors that decode variable keys from GRIB format into a plain-language format
61
+ 4) Various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
57
62
 
58
- This package provides the following extra functionality compared to existing packages for downloading weather data:
63
+ # Table of Contents
64
+
65
+ 1) [Installation Instructions](https://github.com/edrewitz/WxData?tab=readme-ov-file#installation-instructions)
66
+ 2) [Proxy Server Configuration](https://github.com/edrewitz/WxData?tab=readme-ov-file#proxy-server-configuration)
67
+ 3) [What makes WxData unique among various meteorological Python packages?](https://github.com/edrewitz/WxData?tab=readme-ov-file#what-makes-wxdata-unique-among-various-meteorological-python-packages)
68
+ 4) [WxData Tutorials](https://github.com/edrewitz/WxData?tab=readme-ov-file#wxdata-tutorials)
69
+ 5) [WxData Documentation](https://github.com/edrewitz/WxData?tab=readme-ov-file#wxdata-documentation)
70
+ 6) [Importing Functions from WxData](https://github.com/edrewitz/WxData?tab=readme-ov-file#importing-functions-from-wxdata)
71
+ 7) [Citations](https://github.com/edrewitz/WxData?tab=readme-ov-file#citations)
72
+ 8) [Data Sources](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-sources)
73
+
74
+
75
+ ## Installation Instructions
59
76
 
60
77
  **How To Install**
61
78
 
@@ -97,19 +114,23 @@ i) Install wxdata via Anaconda/Miniconda3 --> `conda install wxdata`
97
114
 
98
115
  ii) Set up a new environment with an earlier version of Python (must be Python >= 3.10) and then `pip install wxdata`
99
116
 
117
+ ---------------------------------------------------------
118
+
119
+ ## Proxy Server Configuration
120
+
100
121
  ***Friendly for users working on VPN/PROXY connections***
101
122
 
102
123
  Depending on which client, the proxy-address:port must be entered as either a dictionary or a string.
103
124
 
104
125
  The clients that use a string for proxies are:
105
126
 
106
- 1) All ECMWF clients
127
+ 1) All ECMWF clients.
107
128
 
108
- 2) METAR Observations Client
129
+ 2) METAR Observations Client.
109
130
 
110
- 3) `pixel_query()` tool if the user needs to download the airport station codes list.
131
+ 3) `pixel_query()` tool if the user needs to download the airport station codes list.
111
132
 
112
- All other clients use proxies as a dictionary
133
+ All other clients use proxies as a dictionary
113
134
 
114
135
  Example: We want to download the latest Observed Sounding Data for San Diego, CA (NKX)
115
136
 
@@ -128,6 +149,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
128
149
 
129
150
 
130
151
  For more information on configuring proxies: https://requests.readthedocs.io/en/latest/user/advanced/#proxies
152
+
153
+ ---------------------------------------------------------------------
154
+
155
+ ## What makes WxData unique among various meteorological Python packages?
131
156
 
132
157
  1) Converts GRIB variable keys into variable keys that are in plain language.
133
158
  - (e.g. 'r2' ---> '2m_relative_humidity')
@@ -143,7 +168,15 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
143
168
  - If a user wishes to not clear out their recycle bin `set clear_recycle_bin=False`.
144
169
  - Default: `clear_recycle_bin=False`.
145
170
 
146
- ## WxData Examples
171
+ 4) Has built-in support for users on VPN/PROXY connections.
172
+
173
+ 5) Consists of both observational and model data.
174
+
175
+ 6) Has additional tools to assist querying data, resolving gaps in data and automating your Python workflow.
176
+
177
+ -----------------------------------------------
178
+
179
+ ## WxData Tutorials
147
180
 
148
181
  *Regular Users*
149
182
  1) [Downloading METAR Data](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/metars.ipynb)
@@ -165,13 +198,28 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
165
198
  17) [Downloading the 7-Day NFDRS Forecast for Acton RAWS and Plotting Forecast 100-HR Dead Fuel Moisture](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/acton_raws_forecast.ipynb)
166
199
  18) [Downloading Current RAWS and METAR Data and Plotting Current Relative Humidity Observations Across California and Nevada](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/metar_raws_observed_rh.ipynb)
167
200
  19) [Downloading Current RAWS Data and Plotting Current Energy Release Components (ERCs) Observations Across California and Nevada](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/observed_erc_map.ipynb)
201
+ 20) [Downloading NEXRAD II Radar Data and then plotting it in Py-ART](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/NEXRADII.ipynb)
202
+ 21) [Downloading 30 Days of 6hrly CFS Data and plotting the 30-Day time-mean for mean sea level pressure across the Northern Hemisphere](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cfs.ipynb)
168
203
 
169
204
  *Advanced Users*
170
205
  1) [Using the `client` module to download the latest HadCRUT5 Analysis netCDF file and open this dataset in xarray](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/hadcrut5.ipynb)
171
206
  2) [Downloading the GFS0P25 for temperature fields and using run_external_scripts() to post-process this GFS0P25 dataset in an external Python script](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/external_scripts.ipynb)
172
207
 
208
+ ---------------------------------------------------
209
+
173
210
  ## WxData Documentation
174
211
 
212
+ ***Documentation Sections***
213
+
214
+ 1. [End-To-End Data Clients](https://github.com/edrewitz/WxData?tab=readme-ov-file#end-to-end-data-clients)
215
+ 2. [Raw Data Clients](https://github.com/edrewitz/WxData?tab=readme-ov-file#raw-data-clients)
216
+ 3. [Post-Processors](https://github.com/edrewitz/WxData?tab=readme-ov-file#post-processors)
217
+ 4. [Data Querying Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-querying-tools)
218
+ 5. [Data Transformation & Gap Filling Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-transformation--gap-filling-tools)
219
+ 6. [Automated Python Workflow Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#automated-python-workflow-tools)
220
+
221
+ ### End-To-End Data Clients
222
+
175
223
  ***Global Forecast System (GFS)***
176
224
  1. [GFS0P25](https://github.com/edrewitz/WxData/blob/main/Documentation/GFS0P25.md)
177
225
  2. [GFS0P25 SECONDARY PARAMETERS](https://github.com/edrewitz/WxData/blob/main/Documentation/GFS0P25%20Secondary%20Parameters.md)
@@ -180,6 +228,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
180
228
  ***AI Global Forecast System (AIGFS)***
181
229
  1. [AIGFS](https://github.com/edrewitz/WxData/blob/main/Documentation/aigfs.md)
182
230
 
231
+ ***Climate Forecast System (CFS)***
232
+ 1. [CFS Pressure](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_pressure.md#climate-forecast-system-cfs-pressure)
233
+ 2. [CFS Flux](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_flux.md#climate-forecast-system-cfs-flux)
234
+
183
235
  ***Hybrid Global Ensemble Forecast System (HGEFS)***
184
236
  1. [HGEFS](https://github.com/edrewitz/WxData/blob/main/Documentation/hgefs.md#hybrid-global-ensemble-forecast-system-hgefs)
185
237
 
@@ -231,6 +283,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
231
283
  ***Observed Atmospheric Soundings***
232
284
  1. [University Of Wyoming Soundings](https://github.com/edrewitz/wxdata/blob/main/Documentation/wyoming_soundings.md)
233
285
 
286
+ ***NEXRAD II Radar Data***
287
+ 1. [Single Site](https://github.com/edrewitz/WxData/blob/main/Documentation/nexrad2_single.md#nexrad-ii-single-radar)
288
+ 2. [Multi-Site](https://github.com/edrewitz/WxData/blob/main/Documentation/nexrad2_multi.md#nexrad-ii-multi-radar)
289
+
290
+ -----------------------------
291
+
292
+ ### Post-Processors
293
+
234
294
  ***GFS Post-Processing***
235
295
  1. [Primary GFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Primary%20GFS%20Post%20Processing.md)
236
296
  2. [Secondary GFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Secondary%20GFS%20Post%20Processing.md)
@@ -238,6 +298,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
238
298
  ***AIGFS Post-Processing***
239
299
  1. [AIGFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/aigfs_post_processing.md)
240
300
 
301
+ ***CFS Post-Processing***
302
+ 1. [CFS Pressure Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_pressure_post_processing.md#climate-forecast-system-cfs-pressure-post-processing)
303
+ 2. [CFS Flux Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/cfs_flux_post_processing.md#climate-forecast-system-cfs-flux-post-processing)
304
+
241
305
  ***GEFS Post-Processing***
242
306
  1. [Primary GEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Primary%20GEFS%20Post-Processing.md)
243
307
  2. [Secondary GEFS Post-Processing](https://github.com/edrewitz/WxData/blob/main/Documentation/Secondary%20GEFS%20Post%20Processing.md)
@@ -257,6 +321,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
257
321
  ***Real-Time Mesoscale Analysis Post-Processing***
258
322
  1. [RTMA](https://github.com/edrewitz/WxData/blob/main/Documentation/RTMA%20Post%20Processing.md)
259
323
 
324
+ -----------------------------------------------
325
+
326
+ ### Raw Data Clients
327
+
260
328
  ***xmACIS2 Climate Data***
261
329
  1. [xmACIS2 Client](https://github.com/edrewitz/WxData/blob/main/Documentation/xmacis2_client.md)
262
330
 
@@ -269,11 +337,12 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
269
337
  ***Custom Excel Data***
270
338
  1. [Excel Data Client](https://github.com/edrewitz/WxData/blob/main/Documentation/get_excel_data.md#get-excel-data)
271
339
 
272
- ***Cyclic Points For Hemispheric Plots***
273
- 1. [Cyclic Points](https://github.com/edrewitz/wxdata/blob/main/Documentation/cyclic_point.md#using-wxdata-to-add-cyclic-points-for-hemispheric-plots)
340
+ ***AWS Open Data***
341
+ 1. [AWS Open Data](https://github.com/edrewitz/WxData/blob/main/Documentation/get_open_aws_data.md#get-aws-open-data)
274
342
 
275
- ***Shifting Longitude From 0 to 360 --> -180 to 180***
276
- 1. [shift_longitude](https://github.com/edrewitz/WxData/blob/main/Documentation/shift_longitude.md)
343
+ ---------------------------------------------------------------
344
+
345
+ ### Data Querying Tools
277
346
 
278
347
  ***Pixel Query***
279
348
  1. [pixel_query](https://github.com/edrewitz/WxData/blob/main/Documentation/pixel_query.md)
@@ -281,13 +350,29 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
281
350
  ***Line Query***
282
351
  1. [line_query](https://github.com/edrewitz/WxData/blob/main/Documentation/line_query.md)
283
352
 
353
+ --------------------------------------------------
354
+
355
+ ### Data Transformation & Gap Filling Tools
356
+
357
+ ***Cyclic Points For Hemispheric Plots***
358
+ 1. [Cyclic Points](https://github.com/edrewitz/wxdata/blob/main/Documentation/cyclic_point.md#using-wxdata-to-add-cyclic-points-for-hemispheric-plots)
359
+
360
+ ***Shifting Longitude From 0 to 360 --> -180 to 180***
361
+ 1. [shift_longitude](https://github.com/edrewitz/WxData/blob/main/Documentation/shift_longitude.md)
362
+
284
363
  ***Linear Anti-Aliasing Between Two Points***
285
364
  1. [linear_anti_aliasing](https://github.com/edrewitz/WxData/blob/main/Documentation/linear_anti_aliasing.md#linear-anti-aliasing-between-points)
286
365
 
366
+ ------------------------------------------
367
+
368
+ ### Automated Python Workflow Tools
369
+
287
370
  ***Running External Python Scripts In Your Workflow***
288
371
 
289
372
  1 [run_external_scripts](https://github.com/edrewitz/WxData/blob/main/Documentation/run_external_scripts.md)
290
373
 
374
+ ---------------------------------------
375
+
291
376
  ## Importing Functions from WxData
292
377
 
293
378
  """
@@ -357,6 +442,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
357
442
  gefs_0p25
358
443
  )
359
444
 
445
+ # Climate Forecast System (CFS)
446
+ # - CFS Flux Products
447
+ # - CFS Pressure Products
448
+ from wxdata.cfs.cfs import(
449
+ cfs_flux,
450
+ cfs_pressure
451
+ )
452
+
360
453
  # AI Global Ensemble Forecast System (AIGEFS)
361
454
  # - AIGEFS Pressure Members (Pressure Level Variables)
362
455
  # - AIGEFS Surface Members (Surface Level Variables)
@@ -396,7 +489,7 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
396
489
  # - Multi Station NFDRS Forecast
397
490
  # - Single Station Weather Forecast
398
491
  # - Multi Station Weather Forecast
399
- from wxdata.fems.fems import(
492
+ from wxdata.fems.observations import(
400
493
  get_single_raws_station_weather_observations,
401
494
  get_single_raws_station_fuels_observations,
402
495
  get_multi_raws_station_weather_observations,
@@ -443,6 +536,14 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
443
536
  # METAR Observational Data (From NOAA)
444
537
  from wxdata.metars.metar_obs import download_metar_data
445
538
 
539
+ # NEXRAD2 Radar Data
540
+ # - NEXRAD2 Radar Single Station
541
+ # - NEXRAD2 Radar Multi Station
542
+ from wxdata.radar.nexrad2 import(
543
+ download_current_single_station_nexrad2_radar_data,
544
+ download_current_multi_station_nexrad2_radar_data
545
+ )
546
+
446
547
  """
447
548
  This section hosts all the functions and modules that involve post-processing the data.
448
549
  These are the functions and modules that:
@@ -471,6 +572,9 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
471
572
  # European Centre for Medium-Range Weather Forecasts (ECMWF)
472
573
  import wxdata.post_processors.ecmwf_post_processing as ecmwf_post_processing
473
574
 
575
+ # Climate Forecast System (CFS)
576
+ import wxdata.post_processors.cfs_post_processing as cfs_post_processing
577
+
474
578
  # Real-Time Mesoscale Analysis (RTMA)
475
579
  from wxdata.post_processors.rtma_post_processing import process_rtma_data
476
580
 
@@ -506,6 +610,9 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
506
610
  linear_anti_aliasing
507
611
  )
508
612
 
613
+ # This function executes a list of Python scripts in the order the user lists them
614
+ from wxdata.utils.scripts import run_external_scripts
615
+
509
616
  """
510
617
  This section hosts the various data clients that retrieve various types of data.
511
618
 
@@ -516,12 +623,12 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
516
623
  # Client List:
517
624
  # - get_gridded_data()
518
625
  # - get_csv_data()
519
- # - get_excel_data()
626
+ # - get_excel_data()
520
627
  # - get_xmacis_data()
628
+ # - get_aws_open_data()
521
629
  import wxdata.client.client as client
522
-
523
- # This function executes a list of Python scripts in the order the user lists them
524
- from wxdata.utils.scripts import run_external_scripts
630
+
631
+ -------------------------------------------
525
632
 
526
633
  ## Citations
527
634
 
@@ -544,6 +651,8 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
544
651
 
545
652
  **requests**: K. Reitz, "Requests: HTTP for Humans". Available: https://requests.readthedocs.io/.
546
653
 
654
+ **Beautiful Soup**: Richardson, L. (2025). Beautiful Soup (Version 4.14.3) [Computer software]. https://www.crummy.com/software/BeautifulSoup/
655
+
547
656
  **shapeography**: Eric J. Drewitz. (2026). edrewitz/shapeography: shapeography 1.0 Released (shapeography1.0). Zenodo. https://doi.org/10.5281/zenodo.18676845
548
657
 
549
658
  **geopandas**: Kelsey Jordahl, Joris Van den Bossche, Martin Fleischmann, Jacob Wasserman, James McBride, Jeffrey Gerard, … François Leblanc. (2020, July 15). geopandas/geopandas: v0.8.1 (Version v0.8.1). Zenodo. http://doi.org/10.5281/zenodo.3946761
@@ -554,6 +663,10 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
554
663
 
555
664
  **openpyxl**: Gazoni, E., & Clark, C. (2024). openpyxl: A Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files (Version 3.1.5) [Computer software]. https://openpyxl.readthedocs.io/
556
665
 
666
+ **pyart**: Helmus, J.J. & Collis, S.M., (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software. 4(1), p.e25. DOI: 10.5334/jors.119.
667
+
668
+ ----------------------------------------------------------
669
+
557
670
  ## Data Sources
558
671
 
559
672
  1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
@@ -564,5 +677,6 @@ ii) Set up a new environment with an earlier version of Python (must be Python >
564
677
  6) [National Oceanic and Atmospheric Administration/Climate Prediction Center](https://www.cpc.ncep.noaa.gov/products/GIS/GIS_DATA/us_tempprcpfcst/index.php)
565
678
  7) [Applied Climate Information System (ACIS)](https://www.rcc-acis.org/docs_webservices.html)
566
679
  8) [USDA Fire Environment Mapping System](https://fems.fs2c.usda.gov/download)
680
+ 9) [Amazon AWS Unidata NEXRAD2 Bucket](https://unidata-nexrad-level2.s3.amazonaws.com/index.html)
567
681
 
568
682