diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000000000000000000000000000000000000..f9bd1455b374de796e12d240c1211dee9829d97e --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include requirements.txt diff --git a/doc/doc-installation.md b/doc/doc-installation.md index 9406abbaa56b4047d2dd32c51badb215a3f28391..fe2afa56c8ad6598d3368448e6f566c65cbdb5da 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 diff --git a/pyicon/pyicon_plotting.py b/pyicon/pyicon_plotting.py index 0dd734d0060dcf9ac842e74efa4db5b0b9cbe75c..ec1a84ef14b479618303c3805a7565dd0be986b8 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 d58ded2363220c14fb306a656405924a740b6201..9b83c69d98324df1d9ec39ab3ae5482e872dfa5f 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/requirements.txt b/requirements.txt index 4c83d1e66a079816df87bb982a6b0c4e4d64400d..86b73626b643e5e35eab498a7fe4292ec4c492ef 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 0000000000000000000000000000000000000000..5778fd9b7a4034ebf690052b06c204951fd6dd8e --- /dev/null +++ b/requirements_development.txt @@ -0,0 +1,2 @@ +ipdb +pytest \ No newline at end of file diff --git a/scripts/pyic_fig.py b/scripts/pyic_fig.py index 5ad9e7d88566d667d79c6770dde294542900138e..04d58373ce9323ee22771e89f5e9f5e8fb5be738 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 a3d2306557bd2f46052d13ad11b9d32a55f28925..749d2b8bb829aba8b89b8589b0f7f40d22a4c412 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 87c57d8e6aff54fb28f1afe178a7727f1d317303..58bd3d47fe919b6ddab6c0f64dfa0c52b042b692 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 3785dc51104acdbddd4f82018d932b9255b02d19..eb6db36ba0de1dbe4404e2800f6b6a11fa9a43c5 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 diff --git a/setup.py b/setup.py index 505b4f7f0817d7a0e2f0a778691e07cafac91a41..37b2e0fe54797e57ab2c11db1e56d18d64aee849 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,7 +26,13 @@ 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={ 'console_scripts': [ 'pyic_intake = scripts.pyic_intake:main',