Skip to content

Dependencies

Dependency tree

These diagrams are generated at build time. They reflect the installed pvgis package and its resolved dependencies in that environment (pipdeptree is required).

Left–right layout

Easier to scan on wide screens.

flowchart LR
    classDef missing stroke-dasharray: 5
    annotated-doc["annotated-doc<br/>0.0.5"]
    annotated-types["annotated-types<br/>0.8.0"]
    asttokens["asttokens<br/>2.4.1"]
    bottleneck["Bottleneck<br/>1.6.0"]
    cachetools["cachetools<br/>7.1.7"]
    certifi["certifi<br/>2026.7.22"]
    charset-normalizer["charset-normalizer<br/>3.4.9"]
    click_0["click<br/>8.1.7"]
    cloudpickle["cloudpickle<br/>3.1.2"]
    compress-pickle["compress-pickle<br/>2.1.0"]
    contourpy["contourpy<br/>1.3.3"]
    crc32c["crc32c<br/>2.8"]
    cycler["cycler<br/>0.12.1"]
    dask["dask<br/>2026.7.1"]
    devtools["devtools<br/>0.12.2"]
    distributed["distributed<br/>2026.7.1"]
    donfig["donfig<br/>0.8.1.post1"]
    ephem["ephem<br/>4.2.1"]
    executing["executing<br/>2.2.1"]
    fonttools["fonttools<br/>4.63.0"]
    fsspec["fsspec<br/>2026.7.0"]
    geopandas["geopandas<br/>1.1.4"]
    h5netcdf["h5netcdf<br/>1.8.1"]
    h5py["h5py<br/>3.16.0"]
    idna["idna<br/>3.18"]
    importlib-metadata["importlib_metadata<br/>9.0.0"]
    jinja2["Jinja2<br/>3.1.6"]
    jplephem["jplephem<br/>2.24"]
    kiwisolver["kiwisolver<br/>1.5.0"]
    llvmlite["llvmlite<br/>0.48.0"]
    locket["locket<br/>1.0.0"]
    loguru["loguru<br/>0.7.3"]
    lz4["lz4<br/>4.4.5"]
    markdown-it-py["markdown-it-py<br/>4.2.0"]
    markupsafe["MarkupSafe<br/>3.0.3"]
    matplotlib["matplotlib<br/>3.11.1"]
    mdurl["mdurl<br/>0.1.2"]
    msgpack["msgpack<br/>1.2.1"]
    numba["numba<br/>0.66.0"]
    numcodecs["numcodecs<br/>0.16.5"]
    numpy["numpy<br/>2.4.6"]
    orjson["orjson<br/>3.11.9"]
    packaging["packaging<br/>26.3"]
    pandas["pandas<br/>3.0.5"]
    partd["partd<br/>1.4.2"]
    pillow["pillow<br/>12.3.0"]
    polars-runtime-32["polars-runtime-32<br/>1.43.2"]
    polars["polars<br/>1.43.2"]
    psutil["psutil<br/>7.2.2"]
    pvgis["pvgis<br/>0.1.dev150+ge2ee93156"]
    pvlib["pvlib<br/>0.15.2"]
    pyarrow["pyarrow<br/>25.0.0"]
    pydantic-core["pydantic_core<br/>2.41.5"]
    pydantic-numpy["pydantic-numpy<br/>9.0.2"]
    pydantic-settings["pydantic-settings<br/>2.15.0"]
    pydantic["pydantic<br/>2.12.5"]
    pygments["Pygments<br/>2.20.0"]
    pyogrio["pyogrio<br/>0.13.0"]
    pyparsing["pyparsing<br/>3.3.2"]
    pyproj["pyproj<br/>3.7.2"]
    pysolar["pysolar<br/>0.13"]
    python-dateutil["python-dateutil<br/>2.9.0.post0"]
    python-dotenv["python-dotenv<br/>1.2.2"]
    pytz["pytz<br/>2026.3.post1"]
    pyyaml["PyYAML<br/>6.0.3"]
    qrcode["qrcode<br/>8.2"]
    readchar["readchar<br/>4.2.2"]
    requests["requests<br/>2.34.2"]
    rich["rich<br/>15.0.0"]
    richuru["richuru<br/>0.1.1"]
    ruamel-yaml-clib["ruamel.yaml.clib<br/>0.2.15"]
    ruamel-yaml["ruamel.yaml<br/>0.18.0"]
    scipy["scipy<br/>1.17.1"]
    seaborn["seaborn<br/>0.13.2"]
    semver["semver<br/>3.0.4"]
    sgp4["sgp4<br/>2.27"]
    shapely["shapely<br/>2.1.2"]
    shellingham["shellingham<br/>1.5.4"]
    six["six<br/>1.17.0"]
    skyfield["skyfield<br/>1.54"]
    sortedcontainers["sortedcontainers<br/>2.4.0"]
    sparklines["sparklines<br/>1.0.0"]
    suncalc["suncalc<br/>0.1.3"]
    tblib["tblib<br/>3.2.2"]
    termcolor["termcolor<br/>3.3.0"]
    toolz["toolz<br/>1.1.0"]
    tornado["tornado<br/>6.5.8"]
    typer["typer<br/>0.27.1"]
    typing-extensions["typing_extensions<br/>4.16.0"]
    typing-inspection["typing-inspection<br/>0.4.2"]
    uniplot["uniplot<br/>0.23.2"]
    urllib3["urllib3<br/>2.7.0"]
    xarray-extras["xarray_extras<br/>0.6.0"]
    xarray["xarray<br/>2025.4.0"]
    zarr["zarr<br/>3.0.10"]
    zict["zict<br/>3.0.0"]
    zipp["zipp<br/>4.1.0"]
    asttokens -- ">=1.12.0" --> six
    bottleneck -- "any" --> numpy
    compress-pickle -- "[lz4] any" --> lz4
    contourpy -- ">=1.25" --> numpy
    dask -- ">=0.12.0" --> toolz
    dask -- ">=1.4.0" --> partd
    dask -- ">=20.0" --> packaging
    dask -- ">=2021.9.0" --> fsspec
    dask -- ">=3.0.0" --> cloudpickle
    dask -- ">=4.13.0" --> importlib-metadata
    dask -- ">=5.4.1" --> pyyaml
    dask -- ">=8.1" --> click_0
    devtools -- ">=1.1.1" --> executing
    devtools -- ">=2.0.0,<3.0.0" --> asttokens
    devtools -- ">=2.15.0" --> pygments
    distributed -- ">=0.12.0" --> toolz
    distributed -- ">=1.0.0" --> locket
    distributed -- ">=1.0.2" --> msgpack
    distributed -- ">=1.6.0,!=3.2.0,!=3.2.1" --> tblib
    distributed -- ">=2.0.5" --> sortedcontainers
    distributed -- ">=2.10.3" --> jinja2
    distributed -- ">=20.0" --> packaging
    distributed -- ">=2026.7.1,<2026.7.2" --> dask
    distributed -- ">=3.0.0" --> cloudpickle
    distributed -- ">=3.0.0" --> zict
    distributed -- ">=5.4.1" --> pyyaml
    distributed -- ">=5.8.0" --> psutil
    distributed -- ">=6.2.0" --> tornado
    distributed -- ">=8.0" --> click_0
    donfig -- "any" --> pyyaml
    geopandas -- ">=0.7.2" --> pyogrio
    geopandas -- ">=1.24" --> numpy
    geopandas -- ">=2.0.0" --> pandas
    geopandas -- ">=2.0.0" --> shapely
    geopandas -- ">=3.5.0" --> pyproj
    geopandas -- "any" --> packaging
    h5netcdf -- "any" --> numpy
    h5netcdf -- "any" --> packaging
    h5py -- ">=1.21.2" --> numpy
    importlib-metadata -- ">=3.20" --> zipp
    jinja2 -- ">=2.0" --> markupsafe
    jplephem -- "any" --> numpy
    markdown-it-py -- "~=0.1" --> mdurl
    matplotlib -- ">=0.10" --> cycler
    matplotlib -- ">=1.0.1" --> contourpy
    matplotlib -- ">=1.25" --> numpy
    matplotlib -- ">=1.3.1" --> kiwisolver
    matplotlib -- ">=2.7" --> python-dateutil
    matplotlib -- ">=20.0" --> packaging
    matplotlib -- ">=3" --> pyparsing
    matplotlib -- ">=4.28.2" --> fonttools
    matplotlib -- ">=9" --> pillow
    numba -- ">=0.48.0.dev0,<0.49" --> llvmlite
    numba -- ">=1.22,<2.5" --> numpy
    numcodecs -- ">=1.24" --> numpy
    numcodecs -- "[crc32c] >=2.7" --> crc32c
    numcodecs -- "any" --> typing-extensions
    pandas -- ">=1.26.0" --> numpy
    pandas -- ">=2.8.2" --> python-dateutil
    partd -- "any" --> locket
    partd -- "any" --> toolz
    polars -- "==1.43.2" --> polars-runtime-32
    pvgis -- "==2025.4.0" --> xarray
    pvgis -- "==3.0.10" --> zarr
    pvgis -- "==8.1.7" --> click_0
    pvgis -- ">=0.13.2" --> seaborn
    pvgis -- ">=0.14.0" --> geopandas
    pvgis -- ">=1.9.0" --> polars
    pvgis -- ">=2.0.0" --> shapely
    pvgis -- ">=2.5.2" --> pydantic-settings
    pvgis -- "any" --> bottleneck
    pvgis -- "any" --> cachetools
    pvgis -- "any" --> devtools
    pvgis -- "any" --> distributed
    pvgis -- "any" --> ephem
    pvgis -- "any" --> h5netcdf
    pvgis -- "any" --> llvmlite
    pvgis -- "any" --> loguru
    pvgis -- "any" --> matplotlib
    pvgis -- "any" --> numpy
    pvgis -- "any" --> orjson
    pvgis -- "any" --> pandas
    pvgis -- "any" --> pvlib
    pvgis -- "any" --> pyarrow
    pvgis -- "any" --> pydantic
    pvgis -- "any" --> pydantic-numpy
    pvgis -- "any" --> pysolar
    pvgis -- "any" --> qrcode
    pvgis -- "any" --> rich
    pvgis -- "any" --> richuru
    pvgis -- "any" --> skyfield
    pvgis -- "any" --> sparklines
    pvgis -- "any" --> suncalc
    pvgis -- "any" --> typer
    pvgis -- "any" --> uniplot
    pvgis -- "any" --> xarray-extras
    pvlib -- ">=1.21.2" --> numpy
    pvlib -- ">=1.3.3" --> pandas
    pvlib -- ">=1.7.2" --> scipy
    pvlib -- "any" --> h5py
    pvlib -- "any" --> pytz
    pvlib -- "any" --> requests
    pydantic -- "==2.41.5" --> pydantic-core
    pydantic -- ">=0.4.2" --> typing-inspection
    pydantic -- ">=0.6.0" --> annotated-types
    pydantic -- ">=4.14.1" --> typing-extensions
    pydantic-core -- ">=4.14.1" --> typing-extensions
    pydantic-numpy -- "==0.18" --> ruamel-yaml
    pydantic-numpy -- ">=2.3.5,<3" --> numpy
    pydantic-numpy -- "any" --> compress-pickle
    pydantic-numpy -- "~=2.12.5" --> pydantic
    pydantic-numpy -- "~=3.0.4" --> semver
    pydantic-settings -- ">=0.21.0" --> python-dotenv
    pydantic-settings -- ">=0.4.0" --> typing-inspection
    pydantic-settings -- ">=2.7.0" --> pydantic
    pyogrio -- "any" --> certifi
    pyogrio -- "any" --> numpy
    pyogrio -- "any" --> packaging
    pyproj -- "any" --> certifi
    pysolar -- "any" --> numpy
    python-dateutil -- ">=1.5" --> six
    requests -- ">=1.26,<3" --> urllib3
    requests -- ">=2,<4" --> charset-normalizer
    requests -- ">=2.5,<4" --> idna
    requests -- ">=2023.5.7" --> certifi
    rich -- ">=2.13.0,<3.0.0" --> pygments
    rich -- ">=2.2.0" --> markdown-it-py
    richuru -- ">=0.6.0" --> loguru
    richuru -- ">=12.4.4" --> rich
    ruamel-yaml -- ">=0.2.7" --> ruamel-yaml-clib
    scipy -- ">=1.26.4,<2.7" --> numpy
    seaborn -- ">=1.2" --> pandas
    seaborn -- ">=1.20,!=1.24.0" --> numpy
    seaborn -- ">=3.4,!=3.6.1" --> matplotlib
    shapely -- ">=1.21" --> numpy
    skyfield -- ">=2.13" --> jplephem
    skyfield -- ">=2.13" --> sgp4
    skyfield -- ">=2017.4.17" --> certifi
    skyfield -- "any" --> numpy
    sparklines -- ">=2.4.0" --> termcolor
    suncalc -- "any" --> numpy
    typer -- ">=0.0.2" --> annotated-doc
    typer -- ">=1.3.0" --> shellingham
    typer -- ">=13.8.0" --> rich
    typing-inspection -- ">=4.12.0" --> typing-extensions
    uniplot -- ">=1.22.0" --> numpy
    uniplot -- ">=4.2.1" --> readchar
    xarray -- ">=1.24" --> numpy
    xarray -- ">=2.1" --> pandas
    xarray -- ">=23.2" --> packaging
    xarray-extras -- ">=0.56" --> numba
    xarray-extras -- ">=1.23" --> numpy
    xarray-extras -- ">=1.5" --> pandas
    xarray-extras -- ">=1.9" --> scipy
    xarray-extras -- ">=2022.11.0" --> xarray
    xarray-extras -- ">=2022.6.0" --> dask
    zarr -- ">=0.14" --> numcodecs
    zarr -- ">=0.8" --> donfig
    zarr -- ">=1.25" --> numpy
    zarr -- ">=22.0" --> packaging
    zarr -- ">=4.9" --> typing-extensions

Top–down layout

flowchart TD
    classDef missing stroke-dasharray: 5
    annotated-doc["annotated-doc<br/>0.0.5"]
    annotated-types["annotated-types<br/>0.8.0"]
    asttokens["asttokens<br/>2.4.1"]
    bottleneck["Bottleneck<br/>1.6.0"]
    cachetools["cachetools<br/>7.1.7"]
    certifi["certifi<br/>2026.7.22"]
    charset-normalizer["charset-normalizer<br/>3.4.9"]
    click_0["click<br/>8.1.7"]
    cloudpickle["cloudpickle<br/>3.1.2"]
    compress-pickle["compress-pickle<br/>2.1.0"]
    contourpy["contourpy<br/>1.3.3"]
    crc32c["crc32c<br/>2.8"]
    cycler["cycler<br/>0.12.1"]
    dask["dask<br/>2026.7.1"]
    devtools["devtools<br/>0.12.2"]
    distributed["distributed<br/>2026.7.1"]
    donfig["donfig<br/>0.8.1.post1"]
    ephem["ephem<br/>4.2.1"]
    executing["executing<br/>2.2.1"]
    fonttools["fonttools<br/>4.63.0"]
    fsspec["fsspec<br/>2026.7.0"]
    geopandas["geopandas<br/>1.1.4"]
    h5netcdf["h5netcdf<br/>1.8.1"]
    h5py["h5py<br/>3.16.0"]
    idna["idna<br/>3.18"]
    importlib-metadata["importlib_metadata<br/>9.0.0"]
    jinja2["Jinja2<br/>3.1.6"]
    jplephem["jplephem<br/>2.24"]
    kiwisolver["kiwisolver<br/>1.5.0"]
    llvmlite["llvmlite<br/>0.48.0"]
    locket["locket<br/>1.0.0"]
    loguru["loguru<br/>0.7.3"]
    lz4["lz4<br/>4.4.5"]
    markdown-it-py["markdown-it-py<br/>4.2.0"]
    markupsafe["MarkupSafe<br/>3.0.3"]
    matplotlib["matplotlib<br/>3.11.1"]
    mdurl["mdurl<br/>0.1.2"]
    msgpack["msgpack<br/>1.2.1"]
    numba["numba<br/>0.66.0"]
    numcodecs["numcodecs<br/>0.16.5"]
    numpy["numpy<br/>2.4.6"]
    orjson["orjson<br/>3.11.9"]
    packaging["packaging<br/>26.3"]
    pandas["pandas<br/>3.0.5"]
    partd["partd<br/>1.4.2"]
    pillow["pillow<br/>12.3.0"]
    polars-runtime-32["polars-runtime-32<br/>1.43.2"]
    polars["polars<br/>1.43.2"]
    psutil["psutil<br/>7.2.2"]
    pvgis["pvgis<br/>0.1.dev150+ge2ee93156"]
    pvlib["pvlib<br/>0.15.2"]
    pyarrow["pyarrow<br/>25.0.0"]
    pydantic-core["pydantic_core<br/>2.41.5"]
    pydantic-numpy["pydantic-numpy<br/>9.0.2"]
    pydantic-settings["pydantic-settings<br/>2.15.0"]
    pydantic["pydantic<br/>2.12.5"]
    pygments["Pygments<br/>2.20.0"]
    pyogrio["pyogrio<br/>0.13.0"]
    pyparsing["pyparsing<br/>3.3.2"]
    pyproj["pyproj<br/>3.7.2"]
    pysolar["pysolar<br/>0.13"]
    python-dateutil["python-dateutil<br/>2.9.0.post0"]
    python-dotenv["python-dotenv<br/>1.2.2"]
    pytz["pytz<br/>2026.3.post1"]
    pyyaml["PyYAML<br/>6.0.3"]
    qrcode["qrcode<br/>8.2"]
    readchar["readchar<br/>4.2.2"]
    requests["requests<br/>2.34.2"]
    rich["rich<br/>15.0.0"]
    richuru["richuru<br/>0.1.1"]
    ruamel-yaml-clib["ruamel.yaml.clib<br/>0.2.15"]
    ruamel-yaml["ruamel.yaml<br/>0.18.0"]
    scipy["scipy<br/>1.17.1"]
    seaborn["seaborn<br/>0.13.2"]
    semver["semver<br/>3.0.4"]
    sgp4["sgp4<br/>2.27"]
    shapely["shapely<br/>2.1.2"]
    shellingham["shellingham<br/>1.5.4"]
    six["six<br/>1.17.0"]
    skyfield["skyfield<br/>1.54"]
    sortedcontainers["sortedcontainers<br/>2.4.0"]
    sparklines["sparklines<br/>1.0.0"]
    suncalc["suncalc<br/>0.1.3"]
    tblib["tblib<br/>3.2.2"]
    termcolor["termcolor<br/>3.3.0"]
    toolz["toolz<br/>1.1.0"]
    tornado["tornado<br/>6.5.8"]
    typer["typer<br/>0.27.1"]
    typing-extensions["typing_extensions<br/>4.16.0"]
    typing-inspection["typing-inspection<br/>0.4.2"]
    uniplot["uniplot<br/>0.23.2"]
    urllib3["urllib3<br/>2.7.0"]
    xarray-extras["xarray_extras<br/>0.6.0"]
    xarray["xarray<br/>2025.4.0"]
    zarr["zarr<br/>3.0.10"]
    zict["zict<br/>3.0.0"]
    zipp["zipp<br/>4.1.0"]
    asttokens -- ">=1.12.0" --> six
    bottleneck -- "any" --> numpy
    compress-pickle -- "[lz4] any" --> lz4
    contourpy -- ">=1.25" --> numpy
    dask -- ">=0.12.0" --> toolz
    dask -- ">=1.4.0" --> partd
    dask -- ">=20.0" --> packaging
    dask -- ">=2021.9.0" --> fsspec
    dask -- ">=3.0.0" --> cloudpickle
    dask -- ">=4.13.0" --> importlib-metadata
    dask -- ">=5.4.1" --> pyyaml
    dask -- ">=8.1" --> click_0
    devtools -- ">=1.1.1" --> executing
    devtools -- ">=2.0.0,<3.0.0" --> asttokens
    devtools -- ">=2.15.0" --> pygments
    distributed -- ">=0.12.0" --> toolz
    distributed -- ">=1.0.0" --> locket
    distributed -- ">=1.0.2" --> msgpack
    distributed -- ">=1.6.0,!=3.2.0,!=3.2.1" --> tblib
    distributed -- ">=2.0.5" --> sortedcontainers
    distributed -- ">=2.10.3" --> jinja2
    distributed -- ">=20.0" --> packaging
    distributed -- ">=2026.7.1,<2026.7.2" --> dask
    distributed -- ">=3.0.0" --> cloudpickle
    distributed -- ">=3.0.0" --> zict
    distributed -- ">=5.4.1" --> pyyaml
    distributed -- ">=5.8.0" --> psutil
    distributed -- ">=6.2.0" --> tornado
    distributed -- ">=8.0" --> click_0
    donfig -- "any" --> pyyaml
    geopandas -- ">=0.7.2" --> pyogrio
    geopandas -- ">=1.24" --> numpy
    geopandas -- ">=2.0.0" --> pandas
    geopandas -- ">=2.0.0" --> shapely
    geopandas -- ">=3.5.0" --> pyproj
    geopandas -- "any" --> packaging
    h5netcdf -- "any" --> numpy
    h5netcdf -- "any" --> packaging
    h5py -- ">=1.21.2" --> numpy
    importlib-metadata -- ">=3.20" --> zipp
    jinja2 -- ">=2.0" --> markupsafe
    jplephem -- "any" --> numpy
    markdown-it-py -- "~=0.1" --> mdurl
    matplotlib -- ">=0.10" --> cycler
    matplotlib -- ">=1.0.1" --> contourpy
    matplotlib -- ">=1.25" --> numpy
    matplotlib -- ">=1.3.1" --> kiwisolver
    matplotlib -- ">=2.7" --> python-dateutil
    matplotlib -- ">=20.0" --> packaging
    matplotlib -- ">=3" --> pyparsing
    matplotlib -- ">=4.28.2" --> fonttools
    matplotlib -- ">=9" --> pillow
    numba -- ">=0.48.0.dev0,<0.49" --> llvmlite
    numba -- ">=1.22,<2.5" --> numpy
    numcodecs -- ">=1.24" --> numpy
    numcodecs -- "[crc32c] >=2.7" --> crc32c
    numcodecs -- "any" --> typing-extensions
    pandas -- ">=1.26.0" --> numpy
    pandas -- ">=2.8.2" --> python-dateutil
    partd -- "any" --> locket
    partd -- "any" --> toolz
    polars -- "==1.43.2" --> polars-runtime-32
    pvgis -- "==2025.4.0" --> xarray
    pvgis -- "==3.0.10" --> zarr
    pvgis -- "==8.1.7" --> click_0
    pvgis -- ">=0.13.2" --> seaborn
    pvgis -- ">=0.14.0" --> geopandas
    pvgis -- ">=1.9.0" --> polars
    pvgis -- ">=2.0.0" --> shapely
    pvgis -- ">=2.5.2" --> pydantic-settings
    pvgis -- "any" --> bottleneck
    pvgis -- "any" --> cachetools
    pvgis -- "any" --> devtools
    pvgis -- "any" --> distributed
    pvgis -- "any" --> ephem
    pvgis -- "any" --> h5netcdf
    pvgis -- "any" --> llvmlite
    pvgis -- "any" --> loguru
    pvgis -- "any" --> matplotlib
    pvgis -- "any" --> numpy
    pvgis -- "any" --> orjson
    pvgis -- "any" --> pandas
    pvgis -- "any" --> pvlib
    pvgis -- "any" --> pyarrow
    pvgis -- "any" --> pydantic
    pvgis -- "any" --> pydantic-numpy
    pvgis -- "any" --> pysolar
    pvgis -- "any" --> qrcode
    pvgis -- "any" --> rich
    pvgis -- "any" --> richuru
    pvgis -- "any" --> skyfield
    pvgis -- "any" --> sparklines
    pvgis -- "any" --> suncalc
    pvgis -- "any" --> typer
    pvgis -- "any" --> uniplot
    pvgis -- "any" --> xarray-extras
    pvlib -- ">=1.21.2" --> numpy
    pvlib -- ">=1.3.3" --> pandas
    pvlib -- ">=1.7.2" --> scipy
    pvlib -- "any" --> h5py
    pvlib -- "any" --> pytz
    pvlib -- "any" --> requests
    pydantic -- "==2.41.5" --> pydantic-core
    pydantic -- ">=0.4.2" --> typing-inspection
    pydantic -- ">=0.6.0" --> annotated-types
    pydantic -- ">=4.14.1" --> typing-extensions
    pydantic-core -- ">=4.14.1" --> typing-extensions
    pydantic-numpy -- "==0.18" --> ruamel-yaml
    pydantic-numpy -- ">=2.3.5,<3" --> numpy
    pydantic-numpy -- "any" --> compress-pickle
    pydantic-numpy -- "~=2.12.5" --> pydantic
    pydantic-numpy -- "~=3.0.4" --> semver
    pydantic-settings -- ">=0.21.0" --> python-dotenv
    pydantic-settings -- ">=0.4.0" --> typing-inspection
    pydantic-settings -- ">=2.7.0" --> pydantic
    pyogrio -- "any" --> certifi
    pyogrio -- "any" --> numpy
    pyogrio -- "any" --> packaging
    pyproj -- "any" --> certifi
    pysolar -- "any" --> numpy
    python-dateutil -- ">=1.5" --> six
    requests -- ">=1.26,<3" --> urllib3
    requests -- ">=2,<4" --> charset-normalizer
    requests -- ">=2.5,<4" --> idna
    requests -- ">=2023.5.7" --> certifi
    rich -- ">=2.13.0,<3.0.0" --> pygments
    rich -- ">=2.2.0" --> markdown-it-py
    richuru -- ">=0.6.0" --> loguru
    richuru -- ">=12.4.4" --> rich
    ruamel-yaml -- ">=0.2.7" --> ruamel-yaml-clib
    scipy -- ">=1.26.4,<2.7" --> numpy
    seaborn -- ">=1.2" --> pandas
    seaborn -- ">=1.20,!=1.24.0" --> numpy
    seaborn -- ">=3.4,!=3.6.1" --> matplotlib
    shapely -- ">=1.21" --> numpy
    skyfield -- ">=2.13" --> jplephem
    skyfield -- ">=2.13" --> sgp4
    skyfield -- ">=2017.4.17" --> certifi
    skyfield -- "any" --> numpy
    sparklines -- ">=2.4.0" --> termcolor
    suncalc -- "any" --> numpy
    typer -- ">=0.0.2" --> annotated-doc
    typer -- ">=1.3.0" --> shellingham
    typer -- ">=13.8.0" --> rich
    typing-inspection -- ">=4.12.0" --> typing-extensions
    uniplot -- ">=1.22.0" --> numpy
    uniplot -- ">=4.2.1" --> readchar
    xarray -- ">=1.24" --> numpy
    xarray -- ">=2.1" --> pandas
    xarray -- ">=23.2" --> packaging
    xarray-extras -- ">=0.56" --> numba
    xarray-extras -- ">=1.23" --> numpy
    xarray-extras -- ">=1.5" --> pandas
    xarray-extras -- ">=1.9" --> scipy
    xarray-extras -- ">=2022.11.0" --> xarray
    xarray-extras -- ">=2022.6.0" --> dask
    zarr -- ">=0.14" --> numcodecs
    zarr -- ">=0.8" --> donfig
    zarr -- ">=1.25" --> numpy
    zarr -- ">=22.0" --> packaging
    zarr -- ">=4.9" --> typing-extensions