From 015547da005e5b3fd18d60cdb8c3c726d3dcb62e Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 12:27:28 +0000 Subject: [PATCH 01/19] introduce pyproject.toml --- pyproject.toml | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 pyproject.toml diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..64fa647 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,44 @@ +[build-system] +requires = ["setuptools >= 40.9.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "cso" +version = "0.1.dev0" +authors = [{ name = "Arjo Segers" }] +description = "CAMS Satellite Operator (CSO) tool." +readme = "README.md" +classifiers = [ + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "License :: MIT", + "Operating System :: OS Independent", + "Development Status :: 3 - Alpha", + "Intended Audience :: Science/Research", + "Intended Audience :: Education", + "Topic :: Scientific/Engineering :: Atmospheric Science", +] +requires-python = ">=3.10" + +dependencies = [ + "cartopy>=0.20", + "shapely", + "numpy", + "matplotlib", + "numba", + "pandas", + "tqdm", + "xarray", + "netcdf4", + "scipy >=1.1.0", + "requests", + "typer", +] + +[project.urls] +Home = "https://ci.tno.nl/gitlab/cams/cso" + +[project.optional-dependencies] +docs = ["pre-commit"] -- GitLab From 3bba4c74dd42c4074d5691be709c9f35c0471ca8 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 12:28:07 +0000 Subject: [PATCH 02/19] update README.md --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index ef6dcfc..0b75cba 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,32 @@ Note that the documenation requires 'sphinx', which is usually part of your python distribution. +Installation from source +------------------------ + +CSO can be installed from source in either conda or virtual environments. + +**Pip** + +The file py_project.toml contains the dependencies needed by CSO. + + python3 -m venv --prompt cso .venv + +This will create a new Python evironment folder called `cso`. To activate it run + + source .venv/bin/activate + +You may need to updated pip with the command + + pip install -U pip + +We can then install CSO and its dependencies simply using pip + + pip install -e . + +The `-e` flag installs CSO in editable mode, meaning that the user can change the source code and run CSO anywhere using these changes. + + Tutorial -------- -- GitLab From d990b01b7757ef4a2c8aaa2cc5d9cade7335ebf6 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 12:28:45 +0000 Subject: [PATCH 03/19] introduce .pre-commit-config-yaml --- .pre-commit-config.yaml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..1e75fd8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,6 @@ +repos: +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.5.5 + hooks: + - id: ruff-format + - id: ruff # linter \ No newline at end of file -- GitLab From bcd925434d7c61c2b72d4c013f721e0353ece632 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 12:29:35 +0000 Subject: [PATCH 04/19] add build to gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 3132557..53a7a82 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ ENV/ env.bak/ venv.bak/ .vscode + +#packaging +build/ \ No newline at end of file -- GitLab From 4a4ae2d1143691f69ebcb0eb7fc7b889762f6c90 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 12:51:17 +0000 Subject: [PATCH 05/19] shuffle things about --- src/cso/__init__.py | 0 {py => src/cso}/cso.py | 0 {py => src/cso}/cso_catalogue.py | 0 {py => src/cso}/cso_colhub.py | 0 {py => src/cso}/cso_colocate.py | 0 {py => src/cso}/cso_constants.py | 0 {py => src/cso}/cso_dataspace.py | 0 {py => src/cso}/cso_earthaccess.py | 0 {py => src/cso}/cso_file.py | 0 {py => src/cso}/cso_gridded.py | 0 {py => src/cso}/cso_inquire.py | 0 {py => src/cso}/cso_mapping.py | 0 {py => src/cso}/cso_pal.py | 0 {py => src/cso}/cso_plot.py | 0 {py => src/cso}/cso_regions.py | 0 {py => src/cso}/cso_s5p.py | 0 {py => src/cso}/cso_superobs.py | 0 {py => src/cso}/cso_tools.py | 0 src/cso/scripts/__init__.py | 0 src/cso/scripts/cli.py | 96 ++++++++++++++++++++++++++ src/utopya/__init__.py | 0 {py => src/utopya}/rc.py | 0 {py => src/utopya}/utopya.py | 0 {py => src/utopya}/utopya_base.py | 0 {py => src/utopya}/utopya_build.py | 0 {py => src/utopya}/utopya_index.py | 0 {py => src/utopya}/utopya_jobscript.py | 0 {py => src/utopya}/utopya_jobtree.py | 0 {py => src/utopya}/utopya_post.py | 0 {py => src/utopya}/utopya_rc.py | 0 {py => src/utopya}/utopya_runscript.py | 0 {py => src/utopya}/utopya_tools.py | 0 32 files changed, 96 insertions(+) create mode 100644 src/cso/__init__.py rename {py => src/cso}/cso.py (100%) rename {py => src/cso}/cso_catalogue.py (100%) rename {py => src/cso}/cso_colhub.py (100%) rename {py => src/cso}/cso_colocate.py (100%) rename {py => src/cso}/cso_constants.py (100%) rename {py => src/cso}/cso_dataspace.py (100%) rename {py => src/cso}/cso_earthaccess.py (100%) rename {py => src/cso}/cso_file.py (100%) rename {py => src/cso}/cso_gridded.py (100%) rename {py => src/cso}/cso_inquire.py (100%) rename {py => src/cso}/cso_mapping.py (100%) rename {py => src/cso}/cso_pal.py (100%) rename {py => src/cso}/cso_plot.py (100%) rename {py => src/cso}/cso_regions.py (100%) rename {py => src/cso}/cso_s5p.py (100%) rename {py => src/cso}/cso_superobs.py (100%) rename {py => src/cso}/cso_tools.py (100%) create mode 100644 src/cso/scripts/__init__.py create mode 100644 src/cso/scripts/cli.py create mode 100644 src/utopya/__init__.py rename {py => src/utopya}/rc.py (100%) rename {py => src/utopya}/utopya.py (100%) rename {py => src/utopya}/utopya_base.py (100%) rename {py => src/utopya}/utopya_build.py (100%) rename {py => src/utopya}/utopya_index.py (100%) rename {py => src/utopya}/utopya_jobscript.py (100%) rename {py => src/utopya}/utopya_jobtree.py (100%) rename {py => src/utopya}/utopya_post.py (100%) rename {py => src/utopya}/utopya_rc.py (100%) rename {py => src/utopya}/utopya_runscript.py (100%) rename {py => src/utopya}/utopya_tools.py (100%) diff --git a/src/cso/__init__.py b/src/cso/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/py/cso.py b/src/cso/cso.py similarity index 100% rename from py/cso.py rename to src/cso/cso.py diff --git a/py/cso_catalogue.py b/src/cso/cso_catalogue.py similarity index 100% rename from py/cso_catalogue.py rename to src/cso/cso_catalogue.py diff --git a/py/cso_colhub.py b/src/cso/cso_colhub.py similarity index 100% rename from py/cso_colhub.py rename to src/cso/cso_colhub.py diff --git a/py/cso_colocate.py b/src/cso/cso_colocate.py similarity index 100% rename from py/cso_colocate.py rename to src/cso/cso_colocate.py diff --git a/py/cso_constants.py b/src/cso/cso_constants.py similarity index 100% rename from py/cso_constants.py rename to src/cso/cso_constants.py diff --git a/py/cso_dataspace.py b/src/cso/cso_dataspace.py similarity index 100% rename from py/cso_dataspace.py rename to src/cso/cso_dataspace.py diff --git a/py/cso_earthaccess.py b/src/cso/cso_earthaccess.py similarity index 100% rename from py/cso_earthaccess.py rename to src/cso/cso_earthaccess.py diff --git a/py/cso_file.py b/src/cso/cso_file.py similarity index 100% rename from py/cso_file.py rename to src/cso/cso_file.py diff --git a/py/cso_gridded.py b/src/cso/cso_gridded.py similarity index 100% rename from py/cso_gridded.py rename to src/cso/cso_gridded.py diff --git a/py/cso_inquire.py b/src/cso/cso_inquire.py similarity index 100% rename from py/cso_inquire.py rename to src/cso/cso_inquire.py diff --git a/py/cso_mapping.py b/src/cso/cso_mapping.py similarity index 100% rename from py/cso_mapping.py rename to src/cso/cso_mapping.py diff --git a/py/cso_pal.py b/src/cso/cso_pal.py similarity index 100% rename from py/cso_pal.py rename to src/cso/cso_pal.py diff --git a/py/cso_plot.py b/src/cso/cso_plot.py similarity index 100% rename from py/cso_plot.py rename to src/cso/cso_plot.py diff --git a/py/cso_regions.py b/src/cso/cso_regions.py similarity index 100% rename from py/cso_regions.py rename to src/cso/cso_regions.py diff --git a/py/cso_s5p.py b/src/cso/cso_s5p.py similarity index 100% rename from py/cso_s5p.py rename to src/cso/cso_s5p.py diff --git a/py/cso_superobs.py b/src/cso/cso_superobs.py similarity index 100% rename from py/cso_superobs.py rename to src/cso/cso_superobs.py diff --git a/py/cso_tools.py b/src/cso/cso_tools.py similarity index 100% rename from py/cso_tools.py rename to src/cso/cso_tools.py diff --git a/src/cso/scripts/__init__.py b/src/cso/scripts/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/cso/scripts/cli.py b/src/cso/scripts/cli.py new file mode 100644 index 0000000..27e5c13 --- /dev/null +++ b/src/cso/scripts/cli.py @@ -0,0 +1,96 @@ +import subprocess +from typing import Optional + +import typer +import sys +import os +import webbrowser + +from cso import __package__, __version__ + +# import utopya + +# prefix of CSO installation: +prefix = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), os.pardir)) +# extend path: +sys.path.insert(0, os.path.join(prefix, "src/cso")) +sys.path.insert(0, os.path.join(prefix, "src/utopya")) + +main = typer.Typer() + + +def version_callback(value: bool): + if not value: + return + typer.echo(f"🛰️ {__package__} {__version__}") + raise typer.Exit() + + +@main.callback() +def callback( + version: Optional[bool] = typer.Option(None, "--version", "-V", callback=version_callback), +): + """🛰️ CAMS Satellite Operator (CSO) Command Line Interface""" + +@main.command() +def run(rc_file: str = typer.Argument(..., help="Provide .rc file")): + """Run cso based on settings provided in .rc file (e.g., cso run config/tutorial/tutorial.rc)""" + raise NotImplementedError + # # set environment: + # os.environ["CSO_PREFIX"] = prefix + # # dummy values to ensure that settings could be read first to setup logging: + # os.environ["CSO_RCFILE"] = "None" + # os.environ["CSO_RCDIR"] = "None" + + # # init script: + # utos = utopya.UtopyaRunScriptRc() + + # # setup standard command line arguments, and also enable rcfile arguments: + # utos.ArgumentsSetup(description="CAMS Satellite Operator", rcbase="cso") + + # # evaluate known arguments, store the other ; + # # might show help text and exit: + # args, xargs = utos.ArgumentsParse() + + # # store full path to settings: + # os.environ["CSO_RCFILE"] = os.path.abspath(args.rcfile) + # # location of settings file: + # os.environ["CSO_RCDIR"] = os.path.dirname(os.path.abspath(args.rcfile)) + + # # start, shout info: + # logging.info(f"") + # logging.info(f"** CSO - CAMS Satellite Operator **") + # logging.info(f"") + # logging.info(f"installation prefix : {prefix}") + # logging.info(f"input rcfile : {args.rcfile}") + # logging.info(f"settings base : {args.rcbase}") + # logging.info(f"") + # logging.info(f"environment:") + # for key in ["CSO_PREFIX", "CSO_RCFILE", "CSO_RCDIR"]: + # logging.info(f" {key} = {os.environ[key]}") + # # endfor + # logging.info(f"") + + # # info ... + # logging.info(f"start job tree ...") + # # import class as defined in settings by 'cso.class' key; + # # should be (derived from) 'utopya.JobStep' : + # jbs_cls = utos.ImportClass("class") + # # init job step object, use the 'rcbase' as name: + # jbs = jbs_cls(args.rcbase, args.rcfile) + # # start first: + # jbs.Start(single=args.single) + + # # info: + # logging.info(f"") + # logging.info(f"** end **") + # logging.info(f"") + + +# ------------------------------------------------- +# end +# ------------------------------------------------- + + +if __name__ == "__main__": + main() diff --git a/src/utopya/__init__.py b/src/utopya/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/py/rc.py b/src/utopya/rc.py similarity index 100% rename from py/rc.py rename to src/utopya/rc.py diff --git a/py/utopya.py b/src/utopya/utopya.py similarity index 100% rename from py/utopya.py rename to src/utopya/utopya.py diff --git a/py/utopya_base.py b/src/utopya/utopya_base.py similarity index 100% rename from py/utopya_base.py rename to src/utopya/utopya_base.py diff --git a/py/utopya_build.py b/src/utopya/utopya_build.py similarity index 100% rename from py/utopya_build.py rename to src/utopya/utopya_build.py diff --git a/py/utopya_index.py b/src/utopya/utopya_index.py similarity index 100% rename from py/utopya_index.py rename to src/utopya/utopya_index.py diff --git a/py/utopya_jobscript.py b/src/utopya/utopya_jobscript.py similarity index 100% rename from py/utopya_jobscript.py rename to src/utopya/utopya_jobscript.py diff --git a/py/utopya_jobtree.py b/src/utopya/utopya_jobtree.py similarity index 100% rename from py/utopya_jobtree.py rename to src/utopya/utopya_jobtree.py diff --git a/py/utopya_post.py b/src/utopya/utopya_post.py similarity index 100% rename from py/utopya_post.py rename to src/utopya/utopya_post.py diff --git a/py/utopya_rc.py b/src/utopya/utopya_rc.py similarity index 100% rename from py/utopya_rc.py rename to src/utopya/utopya_rc.py diff --git a/py/utopya_runscript.py b/src/utopya/utopya_runscript.py similarity index 100% rename from py/utopya_runscript.py rename to src/utopya/utopya_runscript.py diff --git a/py/utopya_tools.py b/src/utopya/utopya_tools.py similarity index 100% rename from py/utopya_tools.py rename to src/utopya/utopya_tools.py -- GitLab From d88d4b35b33419d5a91c6fe053cb1e643841cd17 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:05:52 +0000 Subject: [PATCH 06/19] update gitignore --- .gitignore | 4 +++- src/utopya/__init__.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 53a7a82..a0af670 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,8 @@ ENV/ env.bak/ venv.bak/ .vscode +.tmp #packaging -build/ \ No newline at end of file +build/ +src/cso.egg-info/* \ No newline at end of file diff --git a/src/utopya/__init__.py b/src/utopya/__init__.py index e69de29..cbc5b19 100644 --- a/src/utopya/__init__.py +++ b/src/utopya/__init__.py @@ -0,0 +1,11 @@ + +from .utopya_base import * +from .utopya_rc import * +from .utopya_jobscript import * +from .utopya_jobtree import * +from .utopya_runscript import * + +# from utopya_install import * +from .utopya_tools import * +from .utopya_index import * +from .utopya_post import * \ No newline at end of file -- GitLab From 9cbd8af03ba17183a4b6b0ed2012b7d61843e710 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:07:07 +0000 Subject: [PATCH 07/19] introduce CLI in pyproject.toml --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 64fa647..f19894e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,3 +42,6 @@ Home = "https://ci.tno.nl/gitlab/cams/cso" [project.optional-dependencies] docs = ["pre-commit"] + +[project.scripts] +cso = "cso.scripts.cli:main" -- GitLab From ac214c5df80dd89d01c2100163965fa94c665c59 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:09:37 +0000 Subject: [PATCH 08/19] mv rc.py --- src/{utopya => }/rc.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{utopya => }/rc.py (100%) diff --git a/src/utopya/rc.py b/src/rc.py similarity index 100% rename from src/utopya/rc.py rename to src/rc.py -- GitLab From 49c7d0e474433ae2eb02a509fa3c4c7a3349b0f4 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:09:52 +0000 Subject: [PATCH 09/19] new dev version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f19894e..b48864c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "cso" -version = "0.1.dev0" +version = "0.1.dev1" authors = [{ name = "Arjo Segers" }] description = "CAMS Satellite Operator (CSO) tool." readme = "README.md" -- GitLab From bfe1fcb17fa71264ad78d9425396dae94bb773fc Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:25:52 +0000 Subject: [PATCH 10/19] use relative import in subpackages --- src/cso/__init__.py | 19 +++++++++++++++++++ src/cso/cso_catalogue.py | 14 +++++++------- src/cso/cso_colhub.py | 4 ++-- src/cso/cso_colocate.py | 6 +++--- src/cso/cso_dataspace.py | 2 +- src/cso/cso_earthaccess.py | 4 ++-- src/cso/cso_gridded.py | 6 +++--- src/cso/cso_inquire.py | 2 +- src/cso/cso_pal.py | 2 +- src/cso/cso_regions.py | 14 +++++++------- src/cso/cso_s5p.py | 16 ++++++++-------- src/cso/cso_superobs.py | 4 ++-- src/utopya/utopya.py | 18 +++++++++--------- src/utopya/utopya_build.py | 12 ++++++------ src/utopya/utopya_index.py | 4 ++-- src/utopya/utopya_jobscript.py | 2 +- src/utopya/utopya_jobtree.py | 14 +++++++------- src/utopya/utopya_post.py | 2 +- src/utopya/utopya_rc.py | 2 +- src/utopya/utopya_runscript.py | 4 ++-- 20 files changed, 85 insertions(+), 66 deletions(-) diff --git a/src/cso/__init__.py b/src/cso/__init__.py index e69de29..3ce8f6d 100644 --- a/src/cso/__init__.py +++ b/src/cso/__init__.py @@ -0,0 +1,19 @@ +from importlib import metadata + +__version__ = metadata.version(__package__) + +from .cso_file import * +from .cso_catalogue import * +from .cso_inquire import * + +# from .cso_scihub import * +from .cso_pal import * +from .cso_s5p import * +from .cso_superobs import * +from .cso_gridded import * +from .cso_colocate import * +from .cso_superobs import * +from .cso_regions import * +from .cso_constants import * +from .cso_mapping import * +from .cso_plot import * \ No newline at end of file diff --git a/src/cso/cso_catalogue.py b/src/cso/cso_catalogue.py index 4b49d8f..e27d04b 100644 --- a/src/cso/cso_catalogue.py +++ b/src/cso/cso_catalogue.py @@ -114,7 +114,7 @@ class CSO_CatalogueBase(utopya.UtopyaRc): import numpy # tools: - import cso_constants + from . import cso_constants # no target units defined? if (vunits is None) or (vunits == "None"): @@ -278,8 +278,8 @@ class CSO_Catalogue(CSO_CatalogueBase): import matplotlib.pyplot as plt # tools: - import cso_file - import cso_plot + from . import cso_file + from . import cso_plot # setup graphics back-end: matplotlib.use("Agg") @@ -660,8 +660,8 @@ class CSO_SimCatalogue(CSO_CatalogueBase): import matplotlib.pyplot as plt # tools: - import cso_file - import cso_plot + from . import cso_file + from . import cso_plot # setup graphics back-end: matplotlib.use("Agg") @@ -1008,8 +1008,8 @@ class CSO_GriddedCatalogue(CSO_CatalogueBase): import matplotlib.pyplot as plt # tools: - import cso_file - import cso_plot + from . import cso_file + from . import cso_plot # setup graphics back-end: matplotlib.use("Agg") diff --git a/src/cso/cso_colhub.py b/src/cso/cso_colhub.py index 26aff59..8f179ec 100644 --- a/src/cso/cso_colhub.py +++ b/src/cso/cso_colhub.py @@ -148,7 +148,7 @@ class CSO_ColHubMirror_Inquire(utopya.UtopyaRc): import fnmatch # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") @@ -375,7 +375,7 @@ class CSO_ColHubMirror_Missing(utopya.UtopyaRc): import fnmatch # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") diff --git a/src/cso/cso_colocate.py b/src/cso/cso_colocate.py index 8b208ab..24a7b05 100644 --- a/src/cso/cso_colocate.py +++ b/src/cso/cso_colocate.py @@ -56,7 +56,7 @@ import logging # tools: import utopya -import cso_catalogue +from . import cso_catalogue ######################################################################## @@ -191,8 +191,8 @@ class CSO_CoLocate(utopya.UtopyaRc): import xarray # tools: - import cso_file - import cso_mapping + from . import cso_file + from . import cso_mapping # init base object: utopya.UtopyaRc.__init__(self, rcfile, rcbase=rcbase, env=env) diff --git a/src/cso/cso_dataspace.py b/src/cso/cso_dataspace.py index e240a90..8250df3 100644 --- a/src/cso/cso_dataspace.py +++ b/src/cso/cso_dataspace.py @@ -776,7 +776,7 @@ class CSO_DataSpace_Downloader(object): import shutil # tools: - import cso_file + from . import cso_file # no token yet? if self.access_token is None: diff --git a/src/cso/cso_earthaccess.py b/src/cso/cso_earthaccess.py index 74cbefb..c147774 100644 --- a/src/cso/cso_earthaccess.py +++ b/src/cso/cso_earthaccess.py @@ -158,7 +158,7 @@ class CSO_EarthAccess_Inquire(utopya.UtopyaRc): import pandas # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") @@ -491,7 +491,7 @@ class CSO_EarthAccess_Download(utopya.UtopyaRc): import earthaccess # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") diff --git a/src/cso/cso_gridded.py b/src/cso/cso_gridded.py index b5f0182..ca7b4c9 100644 --- a/src/cso/cso_gridded.py +++ b/src/cso/cso_gridded.py @@ -267,8 +267,8 @@ class CSO_GriddedAverage(utopya.UtopyaRc): import pandas # tools: - import cso_file - import cso_mapping + from . import cso_file + from . import cso_mapping # init base object: utopya.UtopyaRc.__init__(self, rcfile, rcbase=rcbase, env=env) @@ -1210,7 +1210,7 @@ class CSO_GriddedAverageMeans(utopya.UtopyaRc): import pandas # tools: - import cso_file + from . import cso_file # init base object: utopya.UtopyaRc.__init__(self, rcfile, rcbase=rcbase, env=env) diff --git a/src/cso/cso_inquire.py b/src/cso/cso_inquire.py index 9c19a0f..dc1ecae 100644 --- a/src/cso/cso_inquire.py +++ b/src/cso/cso_inquire.py @@ -151,7 +151,7 @@ class CSO_Inquire_Plot(utopya.UtopyaRc): import matplotlib.dates as mdates # tools: - import cso_file + from . import cso_file # setup graphics back-end: matplotlib.use("Agg") diff --git a/src/cso/cso_pal.py b/src/cso/cso_pal.py index 502991a..e13aefc 100644 --- a/src/cso/cso_pal.py +++ b/src/cso/cso_pal.py @@ -397,7 +397,7 @@ class CSO_PAL_Downloader(object): import requests # tools: - import cso_file + from . import cso_file # retry loop .. ntry = 1 diff --git a/src/cso/cso_regions.py b/src/cso/cso_regions.py index d8db155..1424620 100644 --- a/src/cso/cso_regions.py +++ b/src/cso/cso_regions.py @@ -74,7 +74,7 @@ import logging # tools: import utopya -import cso_catalogue +from . import cso_catalogue ######################################################################## @@ -1703,9 +1703,9 @@ class CSO_Catalogue_RegionsMaps(cso_catalogue.CSO_CatalogueBase): import matplotlib.pyplot as plt # tools: - import cso_file - import cso_plot - import cso_regions + from . import cso_file + from . import cso_plot + from . import cso_regions # setup graphics back-end: matplotlib.use("Agg") @@ -2063,9 +2063,9 @@ class CSO_Catalogue_RegionsTimeSeries(cso_catalogue.CSO_CatalogueBase): import xarray # tools: - import cso_file - import cso_plot - import cso_regions + from . import cso_file + from . import cso_plot + from . import cso_regions # setup graphics back-end: matplotlib.use("Agg") diff --git a/src/cso/cso_s5p.py b/src/cso/cso_s5p.py index 60976ac..ed3dcf8 100644 --- a/src/cso/cso_s5p.py +++ b/src/cso/cso_s5p.py @@ -123,7 +123,7 @@ import logging # tools: import utopya -import cso_file +from . import cso_file ######################################################################## @@ -2724,9 +2724,9 @@ class CSO_S5p_Convert(utopya.UtopyaRc): import pandas # tools: - import cso_file - import cso_dataspace - import cso_pal + from . import cso_file + from . import cso_dataspace + from . import cso_pal import utopya # info ... @@ -3231,8 +3231,8 @@ class CSO_S5p_Download(utopya.UtopyaRc): import pandas # tools: - import cso_dataspace - import cso_pal + from . import cso_dataspace + from . import cso_pal # info ... logging.info(f"{indent}") @@ -3559,7 +3559,7 @@ class CSO_S5p_Listing(utopya.UtopyaRc): import glob # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") @@ -3786,7 +3786,7 @@ class CSO_S5p_Download_Listing(utopya.UtopyaRc): import collections # tools: - import cso_file + from . import cso_file # info ... logging.info(f"{indent}") diff --git a/src/cso/cso_superobs.py b/src/cso/cso_superobs.py index a0d3394..79a75a6 100644 --- a/src/cso/cso_superobs.py +++ b/src/cso/cso_superobs.py @@ -191,8 +191,8 @@ class CSO_SuperObs(utopya.UtopyaRc): import pandas # tools: - import cso_file - import cso_mapping + from . import cso_file + from . import cso_mapping # init base object: utopya.UtopyaRc.__init__(self, rcfile, rcbase=rcbase, env=env) diff --git a/src/utopya/utopya.py b/src/utopya/utopya.py index 277ea0f..5fc65dc 100644 --- a/src/utopya/utopya.py +++ b/src/utopya/utopya.py @@ -152,15 +152,15 @@ and are defined according to the following hierchy: # imports from sub modules # ------------------------------------------------- -from utopya_base import * -from utopya_rc import * -from utopya_jobscript import * -from utopya_jobtree import * -from utopya_runscript import * -from utopya_tools import * -from utopya_build import * -from utopya_index import * -from utopya_post import * +from .utopya_base import * +from .utopya_rc import * +from .utopya_jobscript import * +from .utopya_jobtree import * +from .utopya_runscript import * +from .utopya_tools import * +from .utopya_build import * +from .utopya_index import * +from .utopya_post import * # ------------------------------------------------- diff --git a/src/utopya/utopya_build.py b/src/utopya/utopya_build.py index 69f7f08..8231fc9 100644 --- a/src/utopya/utopya_build.py +++ b/src/utopya/utopya_build.py @@ -106,7 +106,7 @@ Classes import logging # tools: -import utopya_rc +from . import utopya_rc # ------------------------------------------------- @@ -303,7 +303,7 @@ class UtopyaCopy(utopya_rc.UtopyaRc): import os # tools: - import utopya_tools + from . import utopya_tools # init base object: utopya_rc.UtopyaRc.__init__(self, rcfile=rcfile, rcbase=rcbase, env=env) @@ -797,7 +797,7 @@ class UtopyaConfigure(utopya_rc.UtopyaRc): import glob # tools: - import utopya_tools + from . import utopya_tools # info ... logging.info("configure source code ...") @@ -1236,7 +1236,7 @@ class UtopyaConfigure(utopya_rc.UtopyaRc): """ # tools: - import utopya_tools + from . import utopya_tools # info... logging.info(" macro definitions ...") @@ -2496,7 +2496,7 @@ class UtopyaDependencies(utopya_rc.UtopyaRc): """ # tools: - import utopya_tools + from . import utopya_tools # external program: prog = "makedepf90" @@ -2689,7 +2689,7 @@ class UtopyaMake(utopya_rc.UtopyaRc): import os # tools: - import utopya_tools + from . import utopya_tools # init base object: utopya_rc.UtopyaRc.__init__(self, rcfile=rcfile, rcbase=rcbase, env=env) diff --git a/src/utopya/utopya_index.py b/src/utopya/utopya_index.py index cb89cf2..63aa491 100644 --- a/src/utopya/utopya_index.py +++ b/src/utopya/utopya_index.py @@ -267,7 +267,7 @@ Classes and methods import logging # tools: -import utopya +from . import utopya # ----------------------------------------------------------------------- @@ -925,7 +925,7 @@ class IndexPart(utopya.UtopyaRc): """ # tools: - import utopya_tools + from . import utopya_tools # read list from settings: line = self.GetSetting(key) diff --git a/src/utopya/utopya_jobscript.py b/src/utopya/utopya_jobscript.py index dc93201..d2afe2d 100644 --- a/src/utopya/utopya_jobscript.py +++ b/src/utopya/utopya_jobscript.py @@ -147,7 +147,7 @@ Classes import logging # tools: -import utopya_base +from . import utopya_base # ====================================================================== diff --git a/src/utopya/utopya_jobtree.py b/src/utopya/utopya_jobtree.py index 7ae1ff2..8c6dbb0 100644 --- a/src/utopya/utopya_jobtree.py +++ b/src/utopya/utopya_jobtree.py @@ -105,7 +105,7 @@ Classes import logging # tools: -import utopya_rc +from . import utopya_rc # ====================================================================== @@ -470,7 +470,7 @@ class UtopyaJobStep(utopya_rc.UtopyaRc): import datetime # tools: - import utopya_tools + from . import utopya_tools # defined ? if len(self.logfile) > 0: @@ -754,7 +754,7 @@ class UtopyaJobStep(utopya_rc.UtopyaRc): # add lines to import tools: self.Append("") self.Append("# tools:") - self.Append("import utopya") + self.Append("from . import utopya") self.Append("") # enddef AddModules @@ -3345,7 +3345,7 @@ class UtopyaJobTaskSubmit(UtopyaJobTask): import os # tools: - import utopya + from . import utopya # parent init: UtopyaJobTask.__init__(self, msg=msg) @@ -3526,7 +3526,7 @@ class UtopyaRcCommand(utopya_rc.UtopyaRc): """ # tools: - import utopya_tools + from . import utopya_tools # init base object: utopya_rc.UtopyaRc.__init__(self, rcfile=rcfile, rcbase=rcbase, env=env) @@ -3593,8 +3593,8 @@ class UtopyaJobTreeTiming(utopya_rc.UtopyaRc): import os # tools: - import utopya_tools - import utopya_timing + from . import utopya_tools + from . import utopya_timing # init base object: utopya_rc.UtopyaRc.__init__(self, rcfile=rcfile, rcbase=rcbase, env=env) diff --git a/src/utopya/utopya_post.py b/src/utopya/utopya_post.py index 0be7490..2c58c62 100644 --- a/src/utopya/utopya_post.py +++ b/src/utopya/utopya_post.py @@ -52,7 +52,7 @@ Classes import logging # tools: -import utopya_base +from . import utopya_base ############################################################ diff --git a/src/utopya/utopya_rc.py b/src/utopya/utopya_rc.py index 697c1ba..db5eaf2 100644 --- a/src/utopya/utopya_rc.py +++ b/src/utopya/utopya_rc.py @@ -44,7 +44,7 @@ Classes import logging # tools: -from utopya_base import UtopyaBase +from .utopya_base import UtopyaBase # ------------------------------------------------- diff --git a/src/utopya/utopya_runscript.py b/src/utopya/utopya_runscript.py index 8612e74..8782b98 100644 --- a/src/utopya/utopya_runscript.py +++ b/src/utopya/utopya_runscript.py @@ -53,8 +53,8 @@ Classes import logging # tools: -from utopya_base import UtopyaBase -from utopya_rc import UtopyaRc +from .utopya_base import UtopyaBase +from .utopya_rc import UtopyaRc # ------------------------------------------------- -- GitLab From 8c853c43cbefd327b3452e42ec77d50fa33b5a6f Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:26:01 +0000 Subject: [PATCH 11/19] 0.1.dev2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b48864c..2a3ccec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "cso" -version = "0.1.dev1" +version = "0.1.dev2" authors = [{ name = "Arjo Segers" }] description = "CAMS Satellite Operator (CSO) tool." readme = "README.md" -- GitLab From 33c8db32326f39f39ca03235816eb85a0c0459e4 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:30:11 +0000 Subject: [PATCH 12/19] missing one relative import --- src/utopya/utopya_rc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utopya/utopya_rc.py b/src/utopya/utopya_rc.py index db5eaf2..61c2eb0 100644 --- a/src/utopya/utopya_rc.py +++ b/src/utopya/utopya_rc.py @@ -298,7 +298,7 @@ class UtopyaRc(UtopyaBase): import sys # tools: - import utopya_tools + from . import utopya_tools # name of model module and class: moduleclass = self.GetSetting(name) -- GitLab From a545d19d722413c151c5a8ce3dc3a744ff05c8ff Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:32:38 +0000 Subject: [PATCH 13/19] fix import in self.Append() --- src/utopya/utopya_jobtree.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utopya/utopya_jobtree.py b/src/utopya/utopya_jobtree.py index 8c6dbb0..cf3f101 100644 --- a/src/utopya/utopya_jobtree.py +++ b/src/utopya/utopya_jobtree.py @@ -754,7 +754,7 @@ class UtopyaJobStep(utopya_rc.UtopyaRc): # add lines to import tools: self.Append("") self.Append("# tools:") - self.Append("from . import utopya") + self.Append("import utopya") self.Append("") # enddef AddModules -- GitLab From 80ef6fbc31a7e31c68165f45523d5b92b454cc1c Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:34:47 +0000 Subject: [PATCH 14/19] from .cso_dataspace import * in __init__.py --- src/cso/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cso/__init__.py b/src/cso/__init__.py index 3ce8f6d..85a1b92 100644 --- a/src/cso/__init__.py +++ b/src/cso/__init__.py @@ -16,4 +16,5 @@ from .cso_superobs import * from .cso_regions import * from .cso_constants import * from .cso_mapping import * -from .cso_plot import * \ No newline at end of file +from .cso_plot import * +from .cso_dataspace import * \ No newline at end of file -- GitLab From 558b3f1b0db757b80cefa63f487fdeb6f331dda1 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Mon, 14 Apr 2025 13:40:40 +0000 Subject: [PATCH 15/19] pyproject.toml v0.1.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2a3ccec..b0e7ae6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "cso" -version = "0.1.dev2" +version = "0.1.0" authors = [{ name = "Arjo Segers" }] description = "CAMS Satellite Operator (CSO) tool." readme = "README.md" -- GitLab From 948ed7e8f8af500e488cd9a9e63d8067f08e04f9 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 24 Apr 2025 07:11:33 +0000 Subject: [PATCH 16/19] Arjo feedback --- src/cso/cso_inquire.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cso/cso_inquire.py b/src/cso/cso_inquire.py index dc1ecae..c9adcd1 100644 --- a/src/cso/cso_inquire.py +++ b/src/cso/cso_inquire.py @@ -226,8 +226,6 @@ class CSO_Inquire_Plot(utopya.UtopyaRc): skip_blank_lines=True, dtype="str", ) - # convert datetime columns, as the default is "str" - # the "parse_dates" argument could not be used: xdf["start_time"] = pandas.to_datetime( xdf["start_time"] ) xdf["end_time"] = pandas.to_datetime( xdf["end_time"] ) # combine: -- GitLab From c1539d1b629e2d0a246da4b75f6b5fe3a741581b Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 24 Apr 2025 07:56:43 +0000 Subject: [PATCH 17/19] resolve conflicts --- src/cso/cso_file.py | 1 - src/cso/cso_inquire.py | 1 - 2 files changed, 2 deletions(-) diff --git a/src/cso/cso_file.py b/src/cso/cso_file.py index 2d5ee2d..ee7024d 100644 --- a/src/cso/cso_file.py +++ b/src/cso/cso_file.py @@ -1,4 +1,3 @@ -# # Changes # # 2022-09, Arjo Segers diff --git a/src/cso/cso_inquire.py b/src/cso/cso_inquire.py index c9adcd1..875d739 100644 --- a/src/cso/cso_inquire.py +++ b/src/cso/cso_inquire.py @@ -1,4 +1,3 @@ -# # CSO data archive inquiry tools. # # CHANGES -- GitLab From e6ebb7c99eb8b67b3736ab1153fac66722073991 Mon Sep 17 00:00:00 2001 From: lewisblake Date: Thu, 24 Apr 2025 08:06:04 +0000 Subject: [PATCH 18/19] reresolve conflicts --- src/cso/cso_file.py | 1 + src/cso/cso_inquire.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/cso/cso_file.py b/src/cso/cso_file.py index ee7024d..2d5ee2d 100644 --- a/src/cso/cso_file.py +++ b/src/cso/cso_file.py @@ -1,3 +1,4 @@ +# # Changes # # 2022-09, Arjo Segers diff --git a/src/cso/cso_inquire.py b/src/cso/cso_inquire.py index 875d739..c9adcd1 100644 --- a/src/cso/cso_inquire.py +++ b/src/cso/cso_inquire.py @@ -1,3 +1,4 @@ +# # CSO data archive inquiry tools. # # CHANGES -- GitLab From e523b6075397921858daa2f7d5350263c76fdd49 Mon Sep 17 00:00:00 2001 From: Lewis Blake Date: Thu, 24 Apr 2025 08:10:00 +0000 Subject: [PATCH 19/19] resolve conflicts on web --- src/cso/cso_file.py | 1 - src/cso/cso_inquire.py | 1 - 2 files changed, 2 deletions(-) diff --git a/src/cso/cso_file.py b/src/cso/cso_file.py index 2d5ee2d..ee7024d 100644 --- a/src/cso/cso_file.py +++ b/src/cso/cso_file.py @@ -1,4 +1,3 @@ -# # Changes # # 2022-09, Arjo Segers diff --git a/src/cso/cso_inquire.py b/src/cso/cso_inquire.py index c9adcd1..875d739 100644 --- a/src/cso/cso_inquire.py +++ b/src/cso/cso_inquire.py @@ -1,4 +1,3 @@ -# # CSO data archive inquiry tools. # # CHANGES -- GitLab