From ac22d4a086971051cf37caf249b7318c619b7529 Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Tue, 18 Mar 2025 22:03:39 +0100 Subject: [PATCH 1/5] setup.py and MANIFEST.in: Make sure that PyPi is not missing the requirements.txt. --- MANIFEST.in | 1 + setup.py | 1 + 2 files changed, 2 insertions(+) create mode 100644 MANIFEST.in diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..f9bd145 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include requirements.txt diff --git a/setup.py b/setup.py index 505b4f7..d545db1 100644 --- a/setup.py +++ b/setup.py @@ -21,6 +21,7 @@ setup( author_email='nils.brueggemann@mpimet.mpg.de', install_requires=install_requires, packages=find_packages(), + include_package_data=True, entry_points={ 'console_scripts': [ 'pyic_intake = scripts.pyic_intake:main', -- GitLab From aa53ba53f8af072d7e66808b891f8b6cdbb890b2 Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Tue, 18 Mar 2025 22:10:40 +0100 Subject: [PATCH 2/5] Only import ipdb if it is present. --- pyicon/pyicon_plotting.py | 4 +++- pyicon/pyicon_tb.py | 4 +++- scripts/pyic_fig.py | 4 +++- scripts/pyic_intake.py | 4 +++- scripts/pyic_sec.py | 3 +++ scripts/pyic_view.py | 4 +++- 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/pyicon/pyicon_plotting.py b/pyicon/pyicon_plotting.py index 0dd734d..ec1a84e 100644 --- a/pyicon/pyicon_plotting.py +++ b/pyicon/pyicon_plotting.py @@ -15,7 +15,9 @@ import cartopy import cartopy.crs as ccrs from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter import cmocean -from ipdb import set_trace as mybreak +import importlib.util +if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak #from importlib import reload from .pyicon_tb import write_dataarray_to_nc from .pyicon_tb import identify_grid diff --git a/pyicon/pyicon_tb.py b/pyicon/pyicon_tb.py index d58ded2..9b83c69 100644 --- a/pyicon/pyicon_tb.py +++ b/pyicon/pyicon_tb.py @@ -18,7 +18,9 @@ import matplotlib.pyplot as plt import matplotlib # --- debugging #print('mybreak') -from ipdb import set_trace as mybreak +import importlib.util +if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak #print('pnadas') import pandas as pd #print('xarray') diff --git a/scripts/pyic_fig.py b/scripts/pyic_fig.py index 5ad9e7d..04d5837 100755 --- a/scripts/pyic_fig.py +++ b/scripts/pyic_fig.py @@ -166,7 +166,9 @@ def main(): import os import sys from pathlib import Path - from ipdb import set_trace as mybreak + import importlib.util + if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak #sys.path.append(f'{Path.home()}/pyicon/') import pyicon as pyic print('Done loading modules.') diff --git a/scripts/pyic_intake.py b/scripts/pyic_intake.py index a3d2306..749d2b8 100755 --- a/scripts/pyic_intake.py +++ b/scripts/pyic_intake.py @@ -3,7 +3,9 @@ import os import glob import yaml import argparse -from ipdb import set_trace as mybreak +import importlib.util +if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak import sys from netCDF4 import Dataset import pandas as pd diff --git a/scripts/pyic_sec.py b/scripts/pyic_sec.py index 87c57d8..58bd3d4 100755 --- a/scripts/pyic_sec.py +++ b/scripts/pyic_sec.py @@ -147,6 +147,9 @@ def main(): import sys from pathlib import Path from ipdb import set_trace as mybreak + import importlib.util + if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak #sys.path.append(f'{Path.home()}/pyicon/') import pyicon as pyic print('Done loading modules.') diff --git a/scripts/pyic_view.py b/scripts/pyic_view.py index 3785dc5..eb6db36 100755 --- a/scripts/pyic_view.py +++ b/scripts/pyic_view.py @@ -9,7 +9,9 @@ import pyicon as pyic import cartopy.crs as ccrs import glob from pyicon import params -from ipdb import set_trace as mybreak +import importlib.util +if importlib.util.find_spec("ipdb"): + from ipdb import set_trace as mybreak import cmocean from pyproj import Proj, CRS, Transformer -- GitLab From b753de8c36bfa8030cba819c3e1302fdf0974510 Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Tue, 18 Mar 2025 22:12:02 +0100 Subject: [PATCH 3/5] requirements.txt: Move installation of ipdb and pytest to separate file requirements_development.txt. --- requirements.txt | 2 -- requirements_development.txt | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 requirements_development.txt diff --git a/requirements.txt b/requirements.txt index 4c83d1e..86b7362 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,12 +6,10 @@ xarray pandas cmocean scipy -ipdb ipywidgets ipykernel jupytext nbconvert -pytest healpy cftime #cartopy # cannot easily be installed with pip diff --git a/requirements_development.txt b/requirements_development.txt new file mode 100644 index 0000000..5778fd9 --- /dev/null +++ b/requirements_development.txt @@ -0,0 +1,2 @@ +ipdb +pytest \ No newline at end of file -- GitLab From 791fbd972cfb01730af01d3c8303289fa271e819 Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Wed, 19 Mar 2025 11:19:03 +0100 Subject: [PATCH 4/5] setup.py: Allow for more installation option. --- setup.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/setup.py b/setup.py index d545db1..37b2e0f 100644 --- a/setup.py +++ b/setup.py @@ -10,6 +10,12 @@ with open("README.md", "r", encoding="utf-8") as f: with open("requirements.txt") as f: install_requires = f.read().strip().split("\n") +with open("requirements_documentation.txt") as f: + documentation_requires = f.read().strip().split("\n") + +with open("requirements_development.txt") as f: + development_requires = f.read().strip().split("\n") + setup( name='pyicon-diagnostics', version=version, @@ -20,6 +26,11 @@ setup( author='The pyicon development team', author_email='nils.brueggemann@mpimet.mpg.de', install_requires=install_requires, + extras_require={ + "dev": development_requires, + "doc": documentation_requires, + "full": development_requires+documentation_requires, + }, packages=find_packages(), include_package_data=True, entry_points={ -- GitLab From 15675b0994bbdae526fabde1e21a8123598a0b6a Mon Sep 17 00:00:00 2001 From: Nils Brueggemann <nils.brueggemann@mpimet.mpg.de> Date: Wed, 19 Mar 2025 11:22:56 +0100 Subject: [PATCH 5/5] doc: Introduce way to install also dependencies --- doc/doc-installation.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/doc-installation.md b/doc/doc-installation.md index 9406abb..fe2afa5 100644 --- a/doc/doc-installation.md +++ b/doc/doc-installation.md @@ -19,6 +19,12 @@ cd pyicon pip install -e . ``` +For a more complete installation that includes dependencies for testing, +debugging and compiling the documentation use: +``` +pip install -e .[full] +``` + ### On an arbitrary system pyicon is developed for python 3.8 or later. Other versions might work as well but are not supported so far. @@ -37,6 +43,12 @@ cd pyicon pip install -e . ``` +For a more complete installation that includes dependencies for testing, +debugging and compiling the documentation use: +``` +pip install -e .[full] +``` + The above instructions will provide a minimum python environment that will be sufficient for most applications. However, some more advanced features might require the installation of further python packages. For a complete list of python packages that is supposed to cover all aspects can be obtained from the latest -- GitLab