-
Notifications
You must be signed in to change notification settings - Fork 445
Description
What went wrong?
Hello, thank you once again for metpy.
I'm seeing some strangeness when parsing grib2 files across architectures. I'm not sure what the expected behaviour should be, or how to make it consistent.
For example, lets say I have the following test file, with an example grib2 file I found to help demonstrate:
import xarray as xr
import subprocess
import requests
url = 'https://github.com/SciTools/iris-test-data/raw/master/test_data/GRIB/global_t/global.grib2'
r = requests.get(url, allow_redirects=True)
open('global.grib2', 'wb').write(r.content)
command_one = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 257:104:1.0 27:52:1 globalone.grib2'
subprocess.run(command_one, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_1 = f'wgrib2 -grid globalone.grib2'
subprocess.run(command_grid_1, shell=True, check=True)
command_two = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 258:104:1.0 27:52:1 globaltwo.grib2'
subprocess.run(command_two, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_2 = f'wgrib2 -grid globaltwo.grib2'
subprocess.run(command_grid_2, shell=True, check=True)
command_three = f'wgrib2 global.grib2 -new_grid_winds earth -new_grid latlon 259:104:1.0 27:52:1.0 globalthree.grib2'
subprocess.run(command_three, shell=True, check=True)
#Diplay grid from wgrib2 point of view
command_grid_3 = f'wgrib2 -grid globalthree.grib2'
subprocess.run(command_grid_3, shell=True, check=True)
ds1 = xr.open_dataset(
'globalone.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
ds2 = xr.open_dataset(
'globaltwo.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
ds3 = xr.open_dataset(
'globalthree.grib2' # , chunks={"time": 100, "latitude": 100, "longitude": 100}
)
data1 = ds1.metpy.parse_cf()
data2 = ds2.metpy.parse_cf()
data3 = ds3.metpy.parse_cf()
print(data1.longitude)
print(data2.longitude)
print(data3.longitude)Output on an Apple M2
$ 1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 257.000000 to 0.000000 by 1.000000 #points=5408
1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 258.000000 to 1.000000 by 1.000000 #points=5408
1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 259.000000 to 2.000000 by 1.000000 #points=5408
test.py:40: UserWarning: More than one time coordinate present for variable "t".
data1 = ds1.metpy.parse_cf()
test.py:41: UserWarning: More than one time coordinate present for variable "t".
data2 = ds2.metpy.parse_cf()
test.py:42: UserWarning: More than one time coordinate present for variable "t".
data3 = ds3.metpy.parse_cf()
array([ 0., 257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267.,
268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279.,
280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291.,
292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303.,
304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315.,
316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327.,
328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339.,
340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351.,
352., 353., 354., 355., 356., 357., 358., 359.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 0.0 257.0 258.0 ... 357.0 358.0 359.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
array([ 1., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268.,
269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280.,
281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292.,
293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304.,
305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316.,
317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328.,
329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340.,
341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352.,
353., 354., 355., 356., 357., 358., 359., 360.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 1.0 258.0 259.0 ... 358.0 359.0 360.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
array([-101., -100., -99., -98., -97., -96., -95., -94., -93., -92.,
-91., -90., -89., -88., -87., -86., -85., -84., -83., -82.,
-81., -80., -79., -78., -77., -76., -75., -74., -73., -72.,
-71., -70., -69., -68., -67., -66., -65., -64., -63., -62.,
-61., -60., -59., -58., -57., -56., -55., -54., -53., -52.,
-51., -50., -49., -48., -47., -46., -45., -44., -43., -42.,
-41., -40., -39., -38., -37., -36., -35., -34., -33., -32.,
-31., -30., -29., -28., -27., -26., -25., -24., -23., -22.,
-21., -20., -19., -18., -17., -16., -15., -14., -13., -12.,
-11., -10., -9., -8., -7., -6., -5., -4., -3., -2.,
-1., 0., 1., 2.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 -101.0 -100.0 -99.0 -98.0 ... 0.0 1.0 2.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
Output on an x86_64
$
1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 257.000000 to 0.000000 by 1.000000 #points=5408
1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 258.000000 to 1.000000 by 1.000000 #points=5408
1:0:d=1998030603:TMP:1000 mb:-28587-6477 hour ave fcst:
1:0:grid_template=0:winds(N/S):
lat-lon grid:(104 x 52) units 1e-06 input WE:SN output WE:SN res 48
lat 27.000000 to 78.000000 by 1.000000
lon 259.000000 to 2.000000 by 1.000000 #points=5408
python3.11/site-packages/gribapi/__init__.py:23: UserWarning: ecCodes 2.31.0 or higher is recommended. You are running version 2.16.0
warnings.warn(
metpy_plots_pi/test.py:40: UserWarning: More than one time coordinate present for variable "t".
data1 = ds1.metpy.parse_cf()
metpy_plots_pi/test.py:41: UserWarning: More than one time coordinate present for variable "t".
data2 = ds2.metpy.parse_cf()
metpy_plots_pi/test.py:42: UserWarning: More than one time coordinate present for variable "t".
data3 = ds3.metpy.parse_cf()
array([257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268.,
269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280.,
281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292.,
293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304.,
305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316.,
317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328.,
329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340.,
341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352.,
353., 354., 355., 356., 357., 358., 359., 360.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 257.0 258.0 259.0 ... 358.0 359.0 360.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
array([258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269.,
270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281.,
282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293.,
294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305.,
306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317.,
318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329.,
330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341.,
342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353.,
354., 355., 356., 357., 358., 359., 360., 361.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 258.0 259.0 260.0 ... 359.0 360.0 361.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
array([-101., -100., -99., -98., -97., -96., -95., -94., -93., -92.,
-91., -90., -89., -88., -87., -86., -85., -84., -83., -82.,
-81., -80., -79., -78., -77., -76., -75., -74., -73., -72.,
-71., -70., -69., -68., -67., -66., -65., -64., -63., -62.,
-61., -60., -59., -58., -57., -56., -55., -54., -53., -52.,
-51., -50., -49., -48., -47., -46., -45., -44., -43., -42.,
-41., -40., -39., -38., -37., -36., -35., -34., -33., -32.,
-31., -30., -29., -28., -27., -26., -25., -24., -23., -22.,
-21., -20., -19., -18., -17., -16., -15., -14., -13., -12.,
-11., -10., -9., -8., -7., -6., -5., -4., -3., -2.,
-1., 0., 1., 2.])
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
isobaricInhPa float64 ...
* longitude (longitude) float64 -101.0 -100.0 -99.0 -98.0 ... 0.0 1.0 2.0
valid_time datetime64[ns] ...
metpy_crs object Projection: latitude_longitude
Attributes:
units: degrees_east
standard_name: longitude
long_name: longitude
_metpy_axis: x,longitude
Of the three examples, the third produces the same long array on both machines.
array([-101., -100., -99., -98., -97., -96., -95., -94., -93., -92.,
-91., -90., -89., -88., -87., -86., -85., -84., -83., -82.,
-81., -80., -79., -78., -77., -76., -75., -74., -73., -72.,
-71., -70., -69., -68., -67., -66., -65., -64., -63., -62.,
-61., -60., -59., -58., -57., -56., -55., -54., -53., -52.,
-51., -50., -49., -48., -47., -46., -45., -44., -43., -42.,
-41., -40., -39., -38., -37., -36., -35., -34., -33., -32.,
-31., -30., -29., -28., -27., -26., -25., -24., -23., -22.,
-21., -20., -19., -18., -17., -16., -15., -14., -13., -12.,
-11., -10., -9., -8., -7., -6., -5., -4., -3., -2.,
-1., 0., 1., 2.])
First array differs however:
M2:
<xarray.DataArray 'longitude' (longitude: 104)>
array([ 0., 257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267.,
268., 269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279.,
280., 281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291.,
292., 293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303.,
304., 305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315.,
316., 317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327.,
328., 329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339.,
340., 341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351.,
352., 353., 354., 355., 356., 357., 358., 359.])
x86_64
<xarray.DataArray 'longitude' (longitude: 104)>
array([257., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268.,
269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280.,
281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292.,
293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304.,
305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316.,
317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328.,
329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340.,
341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352.,
353., 354., 355., 356., 357., 358., 359., 360.])
second array also differs:
M2
<xarray.DataArray 'longitude' (longitude: 104)>
array([ 1., 258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268.,
269., 270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280.,
281., 282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292.,
293., 294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304.,
305., 306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316.,
317., 318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328.,
329., 330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340.,
341., 342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352.,
353., 354., 355., 356., 357., 358., 359., 360.])
x86_64
<xarray.DataArray 'longitude' (longitude: 104)>
array([258., 259., 260., 261., 262., 263., 264., 265., 266., 267., 268., 269.,
270., 271., 272., 273., 274., 275., 276., 277., 278., 279., 280., 281.,
282., 283., 284., 285., 286., 287., 288., 289., 290., 291., 292., 293.,
294., 295., 296., 297., 298., 299., 300., 301., 302., 303., 304., 305.,
306., 307., 308., 309., 310., 311., 312., 313., 314., 315., 316., 317.,
318., 319., 320., 321., 322., 323., 324., 325., 326., 327., 328., 329.,
330., 331., 332., 333., 334., 335., 336., 337., 338., 339., 340., 341.,
342., 343., 344., 345., 346., 347., 348., 349., 350., 351., 352., 353.,
354., 355., 356., 357., 358., 359., 360., 361.])
Which output is expected to be the "correct" one?
This difference results in very strange behaviour on the M2 (and raspberry pi, arm based as well) when trying to animate over the dateline (eg, slowly moving lon center from west to east, incrementing time, to create an animation). All of the image data appears to shift 1 degree to the right at the point the data flips. It seems fine on the x86_64 but not on an arm based machine.
Is there a way to ensure that the results are consistent across architectures?
Is there a way to always have metpy parse the data so that lat/lon is -180 to 180, or, always 0 to 360?
I will attach the pipenv graph outputs below:
M2
$ backcall==0.2.0
bokeh==3.3.4
├── contourpy [required: >=1, installed: 1.2.0]
│ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
├── Jinja2 [required: >=2.9, installed: 3.1.3]
│ └── MarkupSafe [required: >=2.0, installed: 2.1.5]
├── numpy [required: >=1.16, installed: 1.26.4]
├── packaging [required: >=16.8, installed: 23.2]
├── pandas [required: >=1.2, installed: 2.2.0]
│ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
│ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ │ └── six [required: >=1.5, installed: 1.16.0]
│ ├── pytz [required: >=2020.1, installed: 2024.1]
│ └── tzdata [required: >=2022.7, installed: 2023.4]
├── pillow [required: >=7.1.0, installed: 10.2.0]
├── PyYAML [required: >=3.10, installed: 6.0.1]
├── tornado [required: >=5.1, installed: 6.4]
└── xyzservices [required: >=2021.09.1, installed: 2023.10.1]
Bottleneck==1.3.7
└── numpy [required: Any, installed: 1.26.4]
Cartopy==0.22.0
├── matplotlib [required: >=3.4, installed: 3.8.2]
│ ├── contourpy [required: >=1.0.1, installed: 1.2.0]
│ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
│ ├── cycler [required: >=0.10, installed: 0.12.1]
│ ├── fonttools [required: >=4.22.0, installed: 4.48.1]
│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5]
│ ├── numpy [required: >=1.21,<2, installed: 1.26.4]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── pillow [required: >=8, installed: 10.2.0]
│ ├── pyparsing [required: >=2.3.1, installed: 3.1.1]
│ └── python-dateutil [required: >=2.7, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── numpy [required: >=1.21, installed: 1.26.4]
├── packaging [required: >=20, installed: 23.2]
├── pyproj [required: >=3.1.0, installed: 3.6.1]
│ └── certifi [required: Any, installed: 2024.2.2]
├── pyshp [required: >=2.1, installed: 2.3.1]
└── shapely [required: >=1.7, installed: 2.0.2]
└── numpy [required: >=1.14, installed: 1.26.4]
cfgrib==0.9.10.4
├── attrs [required: >=19.2, installed: 23.2.0]
├── click [required: Any, installed: 8.1.7]
├── eccodes [required: >=0.9.8, installed: 1.6.1]
│ ├── attrs [required: Any, installed: 23.2.0]
│ ├── cffi [required: Any, installed: 1.16.0]
│ │ └── pycparser [required: Any, installed: 2.21]
│ ├── findlibs [required: Any, installed: 0.0.5]
│ └── numpy [required: Any, installed: 1.26.4]
└── numpy [required: Any, installed: 1.26.4]
colour==0.1.5
distributed==2024.2.0
├── click [required: >=8.0, installed: 8.1.7]
├── cloudpickle [required: >=1.5.0, installed: 3.0.0]
├── dask [required: ==2024.2.0, installed: 2024.2.0]
│ ├── click [required: >=8.1, installed: 8.1.7]
│ ├── cloudpickle [required: >=1.5.0, installed: 3.0.0]
│ ├── fsspec [required: >=2021.09.0, installed: 2024.2.0]
│ ├── importlib-metadata [required: >=4.13.0, installed: 7.0.1]
│ │ └── zipp [required: >=0.5, installed: 3.17.0]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── partd [required: >=1.2.0, installed: 1.4.1]
│ │ ├── locket [required: Any, installed: 1.0.0]
│ │ └── toolz [required: Any, installed: 0.12.1]
│ ├── pyyaml [required: >=5.3.1, installed: 6.0.1]
│ └── toolz [required: >=0.10.0, installed: 0.12.1]
├── jinja2 [required: >=2.10.3, installed: 3.1.3]
│ └── MarkupSafe [required: >=2.0, installed: 2.1.5]
├── locket [required: >=1.0.0, installed: 1.0.0]
├── msgpack [required: >=1.0.0, installed: 1.0.7]
├── packaging [required: >=20.0, installed: 23.2]
├── psutil [required: >=5.7.2, installed: 5.9.8]
├── pyyaml [required: >=5.3.1, installed: 6.0.1]
├── sortedcontainers [required: >=2.0.5, installed: 2.4.0]
├── tblib [required: >=1.6.0, installed: 3.0.0]
├── toolz [required: >=0.10.0, installed: 0.12.1]
├── tornado [required: >=6.0.4, installed: 6.4]
├── urllib3 [required: >=1.24.3, installed: 2.2.0]
└── zict [required: >=3.0.0, installed: 3.0.0]
flox==0.9.2
├── numpy [required: >=1.22, installed: 1.26.4]
├── numpy-groupies [required: >=0.9.19, installed: 0.10.2]
│ └── numpy [required: Any, installed: 1.26.4]
├── packaging [required: >=21.3, installed: 23.2]
├── pandas [required: >=1.5, installed: 2.2.0]
│ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
│ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ │ └── six [required: >=1.5, installed: 1.16.0]
│ ├── pytz [required: >=2020.1, installed: 2024.1]
│ └── tzdata [required: >=2022.7, installed: 2023.4]
├── scipy [required: >=1.9, installed: 1.12.0]
│ └── numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4]
└── toolz [required: Any, installed: 0.12.1]
fqdn==1.5.1
h5netcdf==1.3.0
├── h5py [required: Any, installed: 3.10.0]
│ └── numpy [required: >=1.17.3, installed: 1.26.4]
└── packaging [required: Any, installed: 23.2]
imageio==2.33.1
├── numpy [required: Any, installed: 1.26.4]
└── pillow [required: >=8.3.2, installed: 10.2.0]
imageio-ffmpeg==0.4.9
└── setuptools [required: Any, installed: 69.0.3]
ipympl==0.9.3
├── ipython [required: <9, installed: 8.21.0]
│ ├── decorator [required: Any, installed: 5.1.1]
│ ├── jedi [required: >=0.16, installed: 0.19.1]
│ │ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
│ ├── matplotlib-inline [required: Any, installed: 0.1.6]
│ │ └── traitlets [required: Any, installed: 5.14.1]
│ ├── pexpect [required: >4.3, installed: 4.9.0]
│ │ └── ptyprocess [required: >=0.5, installed: 0.7.0]
│ ├── prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43]
│ │ └── wcwidth [required: Any, installed: 0.2.13]
│ ├── pygments [required: >=2.4.0, installed: 2.17.2]
│ ├── stack-data [required: Any, installed: 0.6.3]
│ │ ├── asttokens [required: >=2.1.0, installed: 2.4.1]
│ │ │ └── six [required: >=1.12.0, installed: 1.16.0]
│ │ ├── executing [required: >=1.2.0, installed: 2.0.1]
│ │ └── pure-eval [required: Any, installed: 0.2.2]
│ └── traitlets [required: >=5, installed: 5.14.1]
├── ipython-genutils [required: Any, installed: 0.2.0]
├── ipywidgets [required: >=7.6.0,<9, installed: 8.1.2]
│ ├── comm [required: >=0.1.3, installed: 0.2.1]
│ │ └── traitlets [required: >=4, installed: 5.14.1]
│ ├── ipython [required: >=6.1.0, installed: 8.21.0]
│ │ ├── decorator [required: Any, installed: 5.1.1]
│ │ ├── jedi [required: >=0.16, installed: 0.19.1]
│ │ │ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
│ │ ├── matplotlib-inline [required: Any, installed: 0.1.6]
│ │ │ └── traitlets [required: Any, installed: 5.14.1]
│ │ ├── pexpect [required: >4.3, installed: 4.9.0]
│ │ │ └── ptyprocess [required: >=0.5, installed: 0.7.0]
│ │ ├── prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43]
│ │ │ └── wcwidth [required: Any, installed: 0.2.13]
│ │ ├── pygments [required: >=2.4.0, installed: 2.17.2]
│ │ ├── stack-data [required: Any, installed: 0.6.3]
│ │ │ ├── asttokens [required: >=2.1.0, installed: 2.4.1]
│ │ │ │ └── six [required: >=1.12.0, installed: 1.16.0]
│ │ │ ├── executing [required: >=1.2.0, installed: 2.0.1]
│ │ │ └── pure-eval [required: Any, installed: 0.2.2]
│ │ └── traitlets [required: >=5, installed: 5.14.1]
│ ├── jupyterlab-widgets [required: ~=3.0.10, installed: 3.0.10]
│ ├── traitlets [required: >=4.3.1, installed: 5.14.1]
│ └── widgetsnbextension [required: ~=4.0.10, installed: 4.0.10]
├── matplotlib [required: >=3.4.0,<4, installed: 3.8.2]
│ ├── contourpy [required: >=1.0.1, installed: 1.2.0]
│ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
│ ├── cycler [required: >=0.10, installed: 0.12.1]
│ ├── fonttools [required: >=4.22.0, installed: 4.48.1]
│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5]
│ ├── numpy [required: >=1.21,<2, installed: 1.26.4]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── pillow [required: >=8, installed: 10.2.0]
│ ├── pyparsing [required: >=2.3.1, installed: 3.1.1]
│ └── python-dateutil [required: >=2.7, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── numpy [required: Any, installed: 1.26.4]
├── pillow [required: Any, installed: 10.2.0]
└── traitlets [required: <6, installed: 5.14.1]
isoduration==20.11.0
└── arrow [required: >=0.15.0, installed: 1.3.0]
├── python-dateutil [required: >=2.7.0, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
└── types-python-dateutil [required: >=2.8.10, installed: 2.8.19.20240106]
jsonpointer==2.4
lz4==4.3.3
MetPy==1.6.0
├── matplotlib [required: >=3.5.0, installed: 3.8.2]
│ ├── contourpy [required: >=1.0.1, installed: 1.2.0]
│ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
│ ├── cycler [required: >=0.10, installed: 0.12.1]
│ ├── fonttools [required: >=4.22.0, installed: 4.48.1]
│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5]
│ ├── numpy [required: >=1.21,<2, installed: 1.26.4]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── pillow [required: >=8, installed: 10.2.0]
│ ├── pyparsing [required: >=2.3.1, installed: 3.1.1]
│ └── python-dateutil [required: >=2.7, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── numpy [required: >=1.20.0, installed: 1.26.4]
├── pandas [required: >=1.4.0, installed: 2.2.0]
│ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
│ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ │ └── six [required: >=1.5, installed: 1.16.0]
│ ├── pytz [required: >=2020.1, installed: 2024.1]
│ └── tzdata [required: >=2022.7, installed: 2023.4]
├── pint [required: >=0.17, installed: 0.23]
│ └── typing-extensions [required: Any, installed: 4.9.0]
├── pooch [required: >=1.2.0, installed: 1.8.0]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── platformdirs [required: >=2.5.0, installed: 4.2.0]
│ └── requests [required: >=2.19.0, installed: 2.31.0]
│ ├── certifi [required: >=2017.4.17, installed: 2024.2.2]
│ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
│ ├── idna [required: >=2.5,<4, installed: 3.6]
│ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
├── pyproj [required: >=3.0.0, installed: 3.6.1]
│ └── certifi [required: Any, installed: 2024.2.2]
├── scipy [required: >=1.8.0, installed: 1.12.0]
│ └── numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4]
├── traitlets [required: >=5.0.5, installed: 5.14.1]
└── xarray [required: >=0.21.0, installed: 2024.1.1]
├── numpy [required: >=1.23, installed: 1.26.4]
├── packaging [required: >=22, installed: 23.2]
└── pandas [required: >=1.5, installed: 2.2.0]
├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── pytz [required: >=2020.1, installed: 2024.1]
└── tzdata [required: >=2022.7, installed: 2023.4]
nc-time-axis==1.4.1
├── cftime [required: >=1.5, installed: 1.6.3]
│ └── numpy [required: >1.13.3, installed: 1.26.4]
├── matplotlib [required: Any, installed: 3.8.2]
│ ├── contourpy [required: >=1.0.1, installed: 1.2.0]
│ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
│ ├── cycler [required: >=0.10, installed: 0.12.1]
│ ├── fonttools [required: >=4.22.0, installed: 4.48.1]
│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5]
│ ├── numpy [required: >=1.21,<2, installed: 1.26.4]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── pillow [required: >=8, installed: 10.2.0]
│ ├── pyparsing [required: >=2.3.1, installed: 3.1.1]
│ └── python-dateutil [required: >=2.7, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
└── numpy [required: Any, installed: 1.26.4]
netCDF4==1.6.5
├── certifi [required: Any, installed: 2024.2.2]
├── cftime [required: Any, installed: 1.6.3]
│ └── numpy [required: >1.13.3, installed: 1.26.4]
└── numpy [required: Any, installed: 1.26.4]
numbagg==0.8.0
├── numba [required: Any, installed: 0.59.0]
│ ├── llvmlite [required: >=0.42.0dev0,<0.43, installed: 0.42.0]
│ └── numpy [required: >=1.22,<1.27, installed: 1.26.4]
└── numpy [required: Any, installed: 1.26.4]
opt-einsum==3.3.0
└── numpy [required: >=1.7, installed: 1.26.4]
pickleshare==0.7.5
pillar-youtube-upload==0.3.0
├── google-api-core [required: >=1.23.0, installed: 2.17.0]
│ ├── google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0]
│ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
│ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
│ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
│ │ └── rsa [required: >=3.1.4,<5, installed: 4.9]
│ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
│ ├── googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0]
│ │ └── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2]
│ ├── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2]
│ └── requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0]
│ ├── certifi [required: >=2017.4.17, installed: 2024.2.2]
│ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
│ ├── idna [required: >=2.5,<4, installed: 3.6]
│ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
├── google-api-python-client [required: >=1.12.5, installed: 2.117.0]
│ ├── google-api-core [required: >=1.31.5,<3.0.0.dev0,!=2.3.0,!=2.2.*,!=2.1.*,!=2.0.*, installed: 2.17.0]
│ │ ├── google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0]
│ │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
│ │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
│ │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
│ │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9]
│ │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
│ │ ├── googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0]
│ │ │ └── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2]
│ │ ├── protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2]
│ │ └── requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0]
│ │ ├── certifi [required: >=2017.4.17, installed: 2024.2.2]
│ │ ├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
│ │ ├── idna [required: >=2.5,<4, installed: 3.6]
│ │ └── urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
│ ├── google-auth [required: >=1.19.0,<3.0.0.dev0, installed: 2.27.0]
│ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
│ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
│ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
│ │ └── rsa [required: >=3.1.4,<5, installed: 4.9]
│ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
│ ├── google-auth-httplib2 [required: >=0.1.0, installed: 0.2.0]
│ │ ├── google-auth [required: Any, installed: 2.27.0]
│ │ │ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
│ │ │ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
│ │ │ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
│ │ │ └── rsa [required: >=3.1.4,<5, installed: 4.9]
│ │ │ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
│ │ └── httplib2 [required: >=0.19.0, installed: 0.22.0]
│ │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
│ ├── httplib2 [required: >=0.15.0,<1.dev0, installed: 0.22.0]
│ │ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
│ └── uritemplate [required: >=3.0.1,<5, installed: 4.1.1]
├── google-auth [required: >=1.22.1, installed: 2.27.0]
│ ├── cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
│ ├── pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
│ │ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
│ └── rsa [required: >=3.1.4,<5, installed: 4.9]
│ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
├── httplib2 [required: >=0.18.1, installed: 0.22.0]
│ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
└── oauth2client [required: >=4.1.3, installed: 4.1.3]
├── httplib2 [required: >=0.9.1, installed: 0.22.0]
│ └── pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
├── pyasn1 [required: >=0.1.7, installed: 0.5.1]
├── pyasn1-modules [required: >=0.0.5, installed: 0.3.0]
│ └── pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
├── rsa [required: >=3.1.4, installed: 4.9]
│ └── pyasn1 [required: >=0.1.3, installed: 0.5.1]
└── six [required: >=1.6.1, installed: 1.16.0]
pyarrow==15.0.0
└── numpy [required: >=1.16.6,<2, installed: 1.26.4]
pyarrow-hotfix==0.6
seaborn==0.13.2
├── matplotlib [required: >=3.4,!=3.6.1, installed: 3.8.2]
│ ├── contourpy [required: >=1.0.1, installed: 1.2.0]
│ │ └── numpy [required: >=1.20,<2.0, installed: 1.26.4]
│ ├── cycler [required: >=0.10, installed: 0.12.1]
│ ├── fonttools [required: >=4.22.0, installed: 4.48.1]
│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.5]
│ ├── numpy [required: >=1.21,<2, installed: 1.26.4]
│ ├── packaging [required: >=20.0, installed: 23.2]
│ ├── pillow [required: >=8, installed: 10.2.0]
│ ├── pyparsing [required: >=2.3.1, installed: 3.1.1]
│ └── python-dateutil [required: >=2.7, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── numpy [required: >=1.20,!=1.24.0, installed: 1.26.4]
└── pandas [required: >=1.2, installed: 2.2.0]
├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ └── six [required: >=1.5, installed: 1.16.0]
├── pytz [required: >=2020.1, installed: 2024.1]
└── tzdata [required: >=2022.7, installed: 2023.4]
siphon==0.9
├── beautifulsoup4 [required: >=4.6, installed: 4.12.3]
│ └── soupsieve [required: >1.2, installed: 2.5]
├── numpy [required: >=1.8, installed: 1.26.4]
├── pandas [required: Any, installed: 2.2.0]
│ ├── numpy [required: >=1.23.2,<2, installed: 1.26.4]
│ ├── python-dateutil [required: >=2.8.2, installed: 2.8.2]
│ │ └── six [required: >=1.5, installed: 1.16.0]
│ ├── pytz [required: >=2020.1, installed: 2024.1]
│ └── tzdata [required: >=2022.7, installed: 2023.4]
├── protobuf [required: >=3.0.0a3, installed: 4.25.2]
└── requests [required: >=1.2, installed: 2.31.0]
├── certifi [required: >=2017.4.17, installed: 2024.2.2]
├── charset-normalizer [required: >=2,<4, installed: 3.3.2]
├── idna [required: >=2.5,<4, installed: 3.6]
└── urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
uri-template==1.3.0
webcolors==1.13
zarr==2.16.1
├── asciitree [required: Any, installed: 0.3.3]
├── fasteners [required: Any, installed: 0.19]
├── numcodecs [required: >=0.10.0, installed: 0.12.1]
│ └── numpy [required: >=1.7, installed: 1.26.4]
└── numpy [required: >=1.20,!=1.21.0, installed: 1.26.4]
x86_64
$ bokeh==3.3.4
- contourpy [required: >=1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- Jinja2 [required: >=2.9, installed: 3.1.3]
- MarkupSafe [required: >=2.0, installed: 2.1.5]
- numpy [required: >=1.16, installed: 1.26.4]
- packaging [required: >=16.8, installed: 23.2]
- pandas [required: >=1.2, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
- pillow [required: >=7.1.0, installed: 10.2.0]
- PyYAML [required: >=3.10, installed: 6.0.1]
- tornado [required: >=5.1, installed: 6.4]
- xyzservices [required: >=2021.09.1, installed: 2023.10.1]
Bottleneck==1.3.7
- numpy [required: Any, installed: 1.26.4]
Cartopy==0.22.0
- matplotlib [required: >=3.4, installed: 3.8.2]
- contourpy [required: >=1.0.1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- cycler [required: >=0.10, installed: 0.12.1]
- fonttools [required: >=4.22.0, installed: 4.48.1]
- kiwisolver [required: >=1.3.1, installed: 1.4.5]
- numpy [required: >=1.21,<2, installed: 1.26.4]
- packaging [required: >=20.0, installed: 23.2]
- pillow [required: >=8, installed: 10.2.0]
- pyparsing [required: >=2.3.1, installed: 3.1.1]
- python-dateutil [required: >=2.7, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- numpy [required: >=1.21, installed: 1.26.4]
- packaging [required: >=20, installed: 23.2]
- pyproj [required: >=3.1.0, installed: 3.6.1]
- certifi [required: Any, installed: 2024.2.2]
- pyshp [required: >=2.1, installed: 2.3.1]
- shapely [required: >=1.7, installed: 2.0.2]
- numpy [required: >=1.14, installed: 1.26.4]
cfgrib==0.9.10.4
- attrs [required: >=19.2, installed: 23.2.0]
- click [required: Any, installed: 8.1.7]
- eccodes [required: >=0.9.8, installed: 1.6.1]
- attrs [required: Any, installed: 23.2.0]
- cffi [required: Any, installed: 1.16.0]
- pycparser [required: Any, installed: 2.21]
- findlibs [required: Any, installed: 0.0.5]
- numpy [required: Any, installed: 1.26.4]
- numpy [required: Any, installed: 1.26.4]
colour==0.1.5
distributed==2024.2.0
- click [required: >=8.0, installed: 8.1.7]
- cloudpickle [required: >=1.5.0, installed: 3.0.0]
- dask [required: ==2024.2.0, installed: 2024.2.0]
- click [required: >=8.1, installed: 8.1.7]
- cloudpickle [required: >=1.5.0, installed: 3.0.0]
- fsspec [required: >=2021.09.0, installed: 2024.2.0]
- importlib-metadata [required: >=4.13.0, installed: 7.0.1]
- zipp [required: >=0.5, installed: 3.17.0]
- packaging [required: >=20.0, installed: 23.2]
- partd [required: >=1.2.0, installed: 1.4.1]
- locket [required: Any, installed: 1.0.0]
- toolz [required: Any, installed: 0.12.1]
- pyyaml [required: >=5.3.1, installed: 6.0.1]
- toolz [required: >=0.10.0, installed: 0.12.1]
- jinja2 [required: >=2.10.3, installed: 3.1.3]
- MarkupSafe [required: >=2.0, installed: 2.1.5]
- locket [required: >=1.0.0, installed: 1.0.0]
- msgpack [required: >=1.0.0, installed: 1.0.7]
- packaging [required: >=20.0, installed: 23.2]
- psutil [required: >=5.7.2, installed: 5.9.8]
- pyyaml [required: >=5.3.1, installed: 6.0.1]
- sortedcontainers [required: >=2.0.5, installed: 2.4.0]
- tblib [required: >=1.6.0, installed: 3.0.0]
- toolz [required: >=0.10.0, installed: 0.12.1]
- tornado [required: >=6.0.4, installed: 6.4]
- urllib3 [required: >=1.24.3, installed: 2.2.0]
- zict [required: >=3.0.0, installed: 3.0.0]
flox==0.9.2
- numpy [required: >=1.22, installed: 1.26.4]
- numpy-groupies [required: >=0.9.19, installed: 0.10.2]
- numpy [required: Any, installed: 1.26.4]
- packaging [required: >=21.3, installed: 23.2]
- pandas [required: >=1.5, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
- scipy [required: >=1.9, installed: 1.12.0]
- numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4]
- toolz [required: Any, installed: 0.12.1]
fqdn==1.5.1
h5netcdf==1.3.0
- h5py [required: Any, installed: 3.10.0]
- numpy [required: >=1.17.3, installed: 1.26.4]
- packaging [required: Any, installed: 23.2]
imageio==2.33.1
- numpy [required: Any, installed: 1.26.4]
- pillow [required: >=8.3.2, installed: 10.2.0]
imageio-ffmpeg==0.4.9
- setuptools [required: Any, installed: 69.0.3]
ipympl==0.9.3
- ipython [required: <9, installed: 8.21.0]
- decorator [required: Any, installed: 5.1.1]
- jedi [required: >=0.16, installed: 0.19.1]
- parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
- matplotlib-inline [required: Any, installed: 0.1.6]
- traitlets [required: Any, installed: 5.14.1]
- pexpect [required: >4.3, installed: 4.9.0]
- ptyprocess [required: >=0.5, installed: 0.7.0]
- prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43]
- wcwidth [required: Any, installed: 0.2.13]
- pygments [required: >=2.4.0, installed: 2.17.2]
- stack-data [required: Any, installed: 0.6.3]
- asttokens [required: >=2.1.0, installed: 2.4.1]
- six [required: >=1.12.0, installed: 1.16.0]
- executing [required: >=1.2.0, installed: 2.0.1]
- pure-eval [required: Any, installed: 0.2.2]
- traitlets [required: >=5, installed: 5.14.1]
- ipython-genutils [required: Any, installed: 0.2.0]
- ipywidgets [required: >=7.6.0,<9, installed: 8.1.2]
- comm [required: >=0.1.3, installed: 0.2.1]
- traitlets [required: >=4, installed: 5.14.1]
- ipython [required: >=6.1.0, installed: 8.21.0]
- decorator [required: Any, installed: 5.1.1]
- jedi [required: >=0.16, installed: 0.19.1]
- parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
- matplotlib-inline [required: Any, installed: 0.1.6]
- traitlets [required: Any, installed: 5.14.1]
- pexpect [required: >4.3, installed: 4.9.0]
- ptyprocess [required: >=0.5, installed: 0.7.0]
- prompt-toolkit [required: >=3.0.41,<3.1.0, installed: 3.0.43]
- wcwidth [required: Any, installed: 0.2.13]
- pygments [required: >=2.4.0, installed: 2.17.2]
- stack-data [required: Any, installed: 0.6.3]
- asttokens [required: >=2.1.0, installed: 2.4.1]
- six [required: >=1.12.0, installed: 1.16.0]
- executing [required: >=1.2.0, installed: 2.0.1]
- pure-eval [required: Any, installed: 0.2.2]
- traitlets [required: >=5, installed: 5.14.1]
- jupyterlab-widgets [required: ~=3.0.10, installed: 3.0.10]
- traitlets [required: >=4.3.1, installed: 5.14.1]
- widgetsnbextension [required: ~=4.0.10, installed: 4.0.10]
- matplotlib [required: >=3.4.0,<4, installed: 3.8.2]
- contourpy [required: >=1.0.1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- cycler [required: >=0.10, installed: 0.12.1]
- fonttools [required: >=4.22.0, installed: 4.48.1]
- kiwisolver [required: >=1.3.1, installed: 1.4.5]
- numpy [required: >=1.21,<2, installed: 1.26.4]
- packaging [required: >=20.0, installed: 23.2]
- pillow [required: >=8, installed: 10.2.0]
- pyparsing [required: >=2.3.1, installed: 3.1.1]
- python-dateutil [required: >=2.7, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- numpy [required: Any, installed: 1.26.4]
- pillow [required: Any, installed: 10.2.0]
- traitlets [required: <6, installed: 5.14.1]
isoduration==20.11.0
- arrow [required: >=0.15.0, installed: 1.3.0]
- python-dateutil [required: >=2.7.0, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- types-python-dateutil [required: >=2.8.10, installed: 2.8.19.20240106]
jsonpointer==2.4
lz4==4.3.3
MetPy==1.6.0
- matplotlib [required: >=3.5.0, installed: 3.8.2]
- contourpy [required: >=1.0.1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- cycler [required: >=0.10, installed: 0.12.1]
- fonttools [required: >=4.22.0, installed: 4.48.1]
- kiwisolver [required: >=1.3.1, installed: 1.4.5]
- numpy [required: >=1.21,<2, installed: 1.26.4]
- packaging [required: >=20.0, installed: 23.2]
- pillow [required: >=8, installed: 10.2.0]
- pyparsing [required: >=2.3.1, installed: 3.1.1]
- python-dateutil [required: >=2.7, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- numpy [required: >=1.20.0, installed: 1.26.4]
- pandas [required: >=1.4.0, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
- pint [required: >=0.17, installed: 0.23]
- typing-extensions [required: Any, installed: 4.9.0]
- pooch [required: >=1.2.0, installed: 1.8.0]
- packaging [required: >=20.0, installed: 23.2]
- platformdirs [required: >=2.5.0, installed: 4.2.0]
- requests [required: >=2.19.0, installed: 2.31.0]
- certifi [required: >=2017.4.17, installed: 2024.2.2]
- charset-normalizer [required: >=2,<4, installed: 3.3.2]
- idna [required: >=2.5,<4, installed: 3.6]
- urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
- pyproj [required: >=3.0.0, installed: 3.6.1]
- certifi [required: Any, installed: 2024.2.2]
- scipy [required: >=1.8.0, installed: 1.12.0]
- numpy [required: >=1.22.4,<1.29.0, installed: 1.26.4]
- traitlets [required: >=5.0.5, installed: 5.14.1]
- xarray [required: >=0.21.0, installed: 2024.1.1]
- numpy [required: >=1.23, installed: 1.26.4]
- packaging [required: >=22, installed: 23.2]
- pandas [required: >=1.5, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
nc-time-axis==1.4.1
- cftime [required: >=1.5, installed: 1.6.3]
- numpy [required: >1.13.3, installed: 1.26.4]
- matplotlib [required: Any, installed: 3.8.2]
- contourpy [required: >=1.0.1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- cycler [required: >=0.10, installed: 0.12.1]
- fonttools [required: >=4.22.0, installed: 4.48.1]
- kiwisolver [required: >=1.3.1, installed: 1.4.5]
- numpy [required: >=1.21,<2, installed: 1.26.4]
- packaging [required: >=20.0, installed: 23.2]
- pillow [required: >=8, installed: 10.2.0]
- pyparsing [required: >=2.3.1, installed: 3.1.1]
- python-dateutil [required: >=2.7, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- numpy [required: Any, installed: 1.26.4]
netCDF4==1.6.5
- certifi [required: Any, installed: 2024.2.2]
- cftime [required: Any, installed: 1.6.3]
- numpy [required: >1.13.3, installed: 1.26.4]
- numpy [required: Any, installed: 1.26.4]
numbagg==0.8.0
- numba [required: Any, installed: 0.59.0]
- llvmlite [required: >=0.42.0dev0,<0.43, installed: 0.42.0]
- numpy [required: >=1.22,<1.27, installed: 1.26.4]
- numpy [required: Any, installed: 1.26.4]
opt-einsum==3.3.0
- numpy [required: >=1.7, installed: 1.26.4]
pillar-youtube-upload==0.3.0
- google-api-core [required: >=1.23.0, installed: 2.17.0]
- google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0]
- cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
- pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4,<5, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0]
- protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2]
- protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2]
- requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0]
- certifi [required: >=2017.4.17, installed: 2024.2.2]
- charset-normalizer [required: >=2,<4, installed: 3.3.2]
- idna [required: >=2.5,<4, installed: 3.6]
- urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
- google-api-python-client [required: >=1.12.5, installed: 2.117.0]
- google-api-core [required: >=1.31.5,<3.0.0.dev0,!=2.3.0,!=2.2.*,!=2.1.*,!=2.0.*, installed: 2.17.0]
- google-auth [required: >=2.14.1,<3.0.dev0, installed: 2.27.0]
- cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
- pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4,<5, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- googleapis-common-protos [required: >=1.56.2,<2.0.dev0, installed: 1.62.0]
- protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=3.20.1,!=3.20.0, installed: 4.25.2]
- protobuf [required: >=3.19.5,<5.0.0.dev0,!=4.21.5,!=4.21.4,!=4.21.3,!=4.21.2,!=4.21.1,!=4.21.0,!=3.20.1,!=3.20.0, installed: 4.25.2]
- requests [required: >=2.18.0,<3.0.0.dev0, installed: 2.31.0]
- certifi [required: >=2017.4.17, installed: 2024.2.2]
- charset-normalizer [required: >=2,<4, installed: 3.3.2]
- idna [required: >=2.5,<4, installed: 3.6]
- urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
- google-auth [required: >=1.19.0,<3.0.0.dev0, installed: 2.27.0]
- cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
- pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4,<5, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- google-auth-httplib2 [required: >=0.1.0, installed: 0.2.0]
- google-auth [required: Any, installed: 2.27.0]
- cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
- pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4,<5, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- httplib2 [required: >=0.19.0, installed: 0.22.0]
- pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
- httplib2 [required: >=0.15.0,<1.dev0, installed: 0.22.0]
- pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
- uritemplate [required: >=3.0.1,<5, installed: 4.1.1]
- google-auth [required: >=1.22.1, installed: 2.27.0]
- cachetools [required: >=2.0.0,<6.0, installed: 5.3.2]
- pyasn1-modules [required: >=0.2.1, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4,<5, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- httplib2 [required: >=0.18.1, installed: 0.22.0]
- pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
- oauth2client [required: >=4.1.3, installed: 4.1.3]
- httplib2 [required: >=0.9.1, installed: 0.22.0]
- pyparsing [required: >=2.4.2,<4,!=3.0.3,!=3.0.2,!=3.0.1,!=3.0.0, installed: 3.1.1]
- pyasn1 [required: >=0.1.7, installed: 0.5.1]
- pyasn1-modules [required: >=0.0.5, installed: 0.3.0]
- pyasn1 [required: >=0.4.6,<0.6.0, installed: 0.5.1]
- rsa [required: >=3.1.4, installed: 4.9]
- pyasn1 [required: >=0.1.3, installed: 0.5.1]
- six [required: >=1.6.1, installed: 1.16.0]
pyarrow==15.0.0
- numpy [required: >=1.16.6,<2, installed: 1.26.4]
pyarrow-hotfix==0.6
seaborn==0.13.2
- matplotlib [required: >=3.4,!=3.6.1, installed: 3.8.2]
- contourpy [required: >=1.0.1, installed: 1.2.0]
- numpy [required: >=1.20,<2.0, installed: 1.26.4]
- cycler [required: >=0.10, installed: 0.12.1]
- fonttools [required: >=4.22.0, installed: 4.48.1]
- kiwisolver [required: >=1.3.1, installed: 1.4.5]
- numpy [required: >=1.21,<2, installed: 1.26.4]
- packaging [required: >=20.0, installed: 23.2]
- pillow [required: >=8, installed: 10.2.0]
- pyparsing [required: >=2.3.1, installed: 3.1.1]
- python-dateutil [required: >=2.7, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- numpy [required: >=1.20,!=1.24.0, installed: 1.26.4]
- pandas [required: >=1.2, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
siphon==0.9
- beautifulsoup4 [required: >=4.6, installed: 4.12.3]
- soupsieve [required: >1.2, installed: 2.5]
- numpy [required: >=1.8, installed: 1.26.4]
- pandas [required: Any, installed: 2.2.0]
- numpy [required: >=1.23.2,<2, installed: 1.26.4]
- python-dateutil [required: >=2.8.2, installed: 2.8.2]
- six [required: >=1.5, installed: 1.16.0]
- pytz [required: >=2020.1, installed: 2024.1]
- tzdata [required: >=2022.7, installed: 2023.4]
- protobuf [required: >=3.0.0a3, installed: 4.25.2]
- requests [required: >=1.2, installed: 2.31.0]
- certifi [required: >=2017.4.17, installed: 2024.2.2]
- charset-normalizer [required: >=2,<4, installed: 3.3.2]
- idna [required: >=2.5,<4, installed: 3.6]
- urllib3 [required: >=1.21.1,<3, installed: 2.2.0]
uri-template==1.3.0
webcolors==1.13
zarr==2.16.1
- asciitree [required: Any, installed: 0.3.3]
- fasteners [required: Any, installed: 0.19]
- numcodecs [required: >=0.10.0, installed: 0.12.1]
- numpy [required: >=1.7, installed: 1.26.4]
- numpy [required: >=1.20,!=1.21.0, installed: 1.26.4]
Thanks in advance for any help!
Operating System
Windows
Version
1.6
Python Version
3.11
Code to Reproduce
See above.Errors, Traceback, and Logs
No response