axsdb 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. axsdb-0.0.2/.github/dependabot.yml +6 -0
  2. axsdb-0.0.2/.github/workflows/ci.yml +98 -0
  3. axsdb-0.0.2/.github/workflows/release.yml +103 -0
  4. axsdb-0.0.2/.gitignore +13 -0
  5. axsdb-0.0.2/.pre-commit-config.yaml +31 -0
  6. axsdb-0.0.2/.python-version +1 -0
  7. axsdb-0.0.2/.readthedocs.yml +23 -0
  8. axsdb-0.0.2/.taplo.toml +8 -0
  9. axsdb-0.0.2/PKG-INFO +30 -0
  10. axsdb-0.0.2/README.md +15 -0
  11. axsdb-0.0.2/docs/Makefile +20 -0
  12. axsdb-0.0.2/docs/api.rst +10 -0
  13. axsdb-0.0.2/docs/conf.py +56 -0
  14. axsdb-0.0.2/docs/getting_started.rst +15 -0
  15. axsdb-0.0.2/docs/index.rst +32 -0
  16. axsdb-0.0.2/docs/make.bat +35 -0
  17. axsdb-0.0.2/docs/requirements.txt +212 -0
  18. axsdb-0.0.2/pyproject.toml +64 -0
  19. axsdb-0.0.2/src/axsdb/__init__.py +27 -0
  20. axsdb-0.0.2/src/axsdb/_version.py +8 -0
  21. axsdb-0.0.2/src/axsdb/cli.py +75 -0
  22. axsdb-0.0.2/src/axsdb/core.py +893 -0
  23. axsdb-0.0.2/src/axsdb/error.py +200 -0
  24. axsdb-0.0.2/src/axsdb/factory.py +135 -0
  25. axsdb-0.0.2/src/axsdb/py.typed +0 -0
  26. axsdb-0.0.2/src/axsdb/typing.py +4 -0
  27. axsdb-0.0.2/src/axsdb/units.py +72 -0
  28. axsdb-0.0.2/tests/data/afgl_1986-us_standard.nc +0 -0
  29. axsdb-0.0.2/tests/data/nanockd_v1/index.csv +12 -0
  30. axsdb-0.0.2/tests/data/nanockd_v1/metadata.json +1 -0
  31. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-295_305.nc +0 -0
  32. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-305_315.nc +0 -0
  33. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-315_325.nc +0 -0
  34. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-325_335.nc +0 -0
  35. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-335_345.nc +0 -0
  36. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-345_355.nc +0 -0
  37. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-355_365.nc +0 -0
  38. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-365_375.nc +0 -0
  39. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-375_385.nc +0 -0
  40. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-385_395.nc +0 -0
  41. axsdb-0.0.2/tests/data/nanockd_v1/nanockd_v1-395_405.nc +0 -0
  42. axsdb-0.0.2/tests/data/nanockd_v1/spectral.csv +12 -0
  43. axsdb-0.0.2/tests/data/nanomono_v1/index.csv +2 -0
  44. axsdb-0.0.2/tests/data/nanomono_v1/metadata.json +1 -0
  45. axsdb-0.0.2/tests/data/nanomono_v1/nanomono_v1.nc +0 -0
  46. axsdb-0.0.2/tests/data/nanomono_v1/spectral.csv +8166 -0
  47. axsdb-0.0.2/tests/test_core.py +224 -0
  48. axsdb-0.0.2/tests/test_error.py +0 -0
  49. axsdb-0.0.2/tests/test_factory.py +18 -0
  50. axsdb-0.0.2/uv.lock +3641 -0
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions"
4
+ directory: "/.github/workflows"
5
+ schedule:
6
+ interval: "monthly"
@@ -0,0 +1,98 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ - main
7
+
8
+ pull_request:
9
+ types:
10
+ - opened
11
+ - reopened
12
+ - synchronize
13
+ - ready_for_review
14
+
15
+ jobs:
16
+ tests:
17
+ if: ${{ !github.event.pull_request.draft }}
18
+ name: Tests
19
+
20
+ strategy:
21
+ matrix:
22
+ python-version:
23
+ - "3.9"
24
+ - "3.10"
25
+ - "3.11"
26
+ - "3.12"
27
+ - "3.13"
28
+ os:
29
+ - ubuntu-latest
30
+ # - macOS-latest
31
+ # - windows-latest
32
+
33
+ runs-on: ${{ matrix.os }}
34
+
35
+ steps:
36
+ - name: Checkout
37
+ uses: actions/checkout@v4
38
+
39
+ - name: Setup uv
40
+ uses: astral-sh/setup-uv@v6
41
+
42
+ - name: Pin active Python
43
+ run: uv python pin ${{ matrix.python-version }}
44
+
45
+ - name: Install dependencies
46
+ run: uv sync
47
+
48
+ - name: Run Tests
49
+ run: uv run coverage run -m pytest
50
+
51
+ - name: Upload coverage data
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: coverage-data-${{ matrix.python-version }}
55
+ path: .coverage.*
56
+ include-hidden-files: true
57
+ if-no-files-found: ignore
58
+
59
+ coverage:
60
+ if: ${{ !github.event.pull_request.draft }}
61
+ name: Combine coverage
62
+ runs-on: ubuntu-latest
63
+ needs: tests
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+ - uses: actions/setup-python@v5
67
+ with:
68
+ # Use latest, so it understands all syntax.
69
+ python-version: "3.13"
70
+
71
+ - run: python -m pip install --upgrade coverage[toml]
72
+
73
+ - name: Download coverage data
74
+ uses: actions/download-artifact@v4
75
+ with:
76
+ pattern: coverage-data-*
77
+ merge-multiple: true
78
+
79
+ - name: Combine coverage
80
+ run: |
81
+ python -m coverage combine
82
+ python -m coverage html --skip-covered --skip-empty
83
+ python -m coverage json
84
+
85
+ TOTAL=$(python -c "import json;print(json.load(open('reports/coverage/coverage.json'))['totals']['percent_covered_display'])")
86
+ REPORT=$(python -m coverage report)
87
+
88
+ echo "### Total coverage: ${TOTAL}%" >> $GITHUB_STEP_SUMMARY
89
+ echo "" >> $GITHUB_STEP_SUMMARY
90
+ echo '```' >> $GITHUB_STEP_SUMMARY
91
+ echo "${REPORT}" >> $GITHUB_STEP_SUMMARY
92
+ echo '```' >> $GITHUB_STEP_SUMMARY
93
+
94
+ - name: Upload HTML report
95
+ uses: actions/upload-artifact@v4
96
+ with:
97
+ name: html-report
98
+ path: reports/coverage/html
@@ -0,0 +1,103 @@
1
+ name: Publish Python distribution to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "*"
7
+
8
+ jobs:
9
+ build-wheels:
10
+ name: Build wheels
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Get current git tag
17
+ id: tag
18
+ run: |
19
+ TAG=$(git describe --tags --abbrev=0)
20
+ # Remove the leading 'v' from the tag (e.g., 'v1.2.3' -> '1.2.3')
21
+ GIT_VERSION=${TAG#v}
22
+ echo "Current git tag version: $GIT_VERSION"
23
+ echo "::set-output name=tag::$GIT_VERSION"
24
+
25
+ - name: Check if git tag matches version
26
+ run: |
27
+ # Extract version from pyproject.toml
28
+ PY_VERSION=$(grep '^version = "' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
29
+ echo "Version from pyproject.toml: $PY_VERSION"
30
+ if [ "$PY_VERSION" != "${{ steps.tag.outputs.tag }}" ]; then
31
+ echo "Git tag does not match version in pyproject.toml."
32
+ exit 1
33
+ else
34
+ echo "Git tag matches version in pyproject.toml."
35
+ fi
36
+
37
+ - name: Setup uv
38
+ uses: astral-sh/setup-uv@v6
39
+
40
+ - name: Build wheels
41
+ run: |
42
+ uv build
43
+
44
+ - name: Test build
45
+ run: |
46
+ python3 -m venv fresh_env
47
+ . fresh_env/bin/activate
48
+ pip install dist/*.whl
49
+ fresh_env/bin/python -c "import axsdb; print(axsdb.__version__)"
50
+
51
+ - name: Store distribution packages
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: python-package-distributions
55
+ path: dist/
56
+
57
+ # publish-to-testpypi: # Uncomment for tests
58
+ # name: Publish Python distribution to TestPyPI
59
+ # needs:
60
+ # - build-wheels
61
+ # runs-on: ubuntu-latest
62
+ #
63
+ # environment:
64
+ # name: testpypi
65
+ # url: https://test.pypi.org/p/axsdb
66
+ #
67
+ # permissions:
68
+ # id-token: write
69
+ #
70
+ # steps:
71
+ # - name: Download all the dists
72
+ # uses: actions/download-artifact@v4
73
+ # with:
74
+ # name: python-package-distributions
75
+ # path: dist/
76
+ #
77
+ # - name: Publish distribution to TestPyPI
78
+ # uses: pypa/gh-action-pypi-publish@release/v1
79
+ # with:
80
+ # repository-url: https://test.pypi.org/legacy/
81
+
82
+ publish-to-pypi:
83
+ name: Publish Python distribution to PyPI
84
+ needs:
85
+ - build-wheels
86
+ runs-on: ubuntu-latest
87
+
88
+ environment:
89
+ name: pypi
90
+ url: https://pypi.org/p/axsdb
91
+
92
+ permissions:
93
+ id-token: write
94
+
95
+ steps:
96
+ - name: Download all the dists
97
+ uses: actions/download-artifact@v4
98
+ with:
99
+ name: python-package-distributions
100
+ path: dist/
101
+
102
+ - name: Publish distribution to PyPI
103
+ uses: pypa/gh-action-pypi-publish@release/v1
axsdb-0.0.2/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ docs/_build/
12
+ .idea/
13
+ .coverage
@@ -0,0 +1,31 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.5.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+ - repo: https://github.com/astral-sh/ruff-pre-commit
10
+ rev: v0.9.10
11
+ # Important: If the version changes, do not forget to sync it with the
12
+ # linting CI workflow
13
+ hooks:
14
+ - id: ruff # linter
15
+ types_or: [ python, pyi, jupyter ]
16
+ args: [ --fix, --exit-non-zero-on-fix ]
17
+ - id: ruff-format
18
+ types_or: [ python, pyi, jupyter ]
19
+ - repo: https://github.com/kynan/nbstripout
20
+ rev: 0.8.1
21
+ hooks:
22
+ - id: nbstripout
23
+ - repo: https://github.com/ComPWA/taplo-pre-commit
24
+ rev: v0.9.3
25
+ hooks:
26
+ - id: taplo-format
27
+ - repo: https://github.com/astral-sh/uv-pre-commit
28
+ rev: 0.7.21 # uv version
29
+ hooks:
30
+ - id: uv-export
31
+ args: [ "--frozen", "--no-hashes", "--output-file=docs/requirements.txt" ]
@@ -0,0 +1 @@
1
+ 3.10
@@ -0,0 +1,23 @@
1
+ # .readthedocs.yml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+
8
+ # Build options
9
+ build:
10
+ os: ubuntu-24.04
11
+ tools:
12
+ python: "3.10" # Same as dev version (see .python-version file)
13
+
14
+ # Build documentation in the docs/ directory with Sphinx
15
+ sphinx:
16
+ configuration: docs/conf.py
17
+
18
+ # Optionally set the version of Python and requirements required to build your docs
19
+ python:
20
+ install:
21
+ - requirements: docs/requirements.txt
22
+ - method: pip
23
+ path: .
@@ -0,0 +1,8 @@
1
+ # Configuration file for taplo, our TOML formatter
2
+
3
+ include = ["pyproject.toml", ".taplo.toml"]
4
+
5
+ [formatting]
6
+ align_entries = false
7
+ align_comments = false
8
+ column_width = 88
axsdb-0.0.2/PKG-INFO ADDED
@@ -0,0 +1,30 @@
1
+ Metadata-Version: 2.4
2
+ Name: axsdb
3
+ Version: 0.0.2
4
+ Summary: An absorption database reader for the Eradiate radiative transfer model.
5
+ Author-email: Vincent Leroy <vincent.leroy@rayference.eu>
6
+ Requires-Python: >=3.9
7
+ Requires-Dist: attrs
8
+ Requires-Dist: cachetools
9
+ Requires-Dist: netcdf4
10
+ Requires-Dist: pint
11
+ Requires-Dist: scipy
12
+ Requires-Dist: typer
13
+ Requires-Dist: xarray
14
+ Description-Content-Type: text/markdown
15
+
16
+ # AxsDB — The Eradiate Absorption Cross-section Database Interface
17
+
18
+ [![PyPI version](https://img.shields.io/pypi/v/axsdb?color=blue)](https://pypi.org/project/axsdb)
19
+ [![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/eradiate/axsdb/ci.yml?branch=main)](https://github.com/eradiate/axsdb/actions/workflows/ci.yml)
20
+ [![Documentation Status](https://img.shields.io/readthedocs/axsdb)](https://axsdb.readthedocs.io)
21
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
22
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
23
+
24
+ This library provides an interface to read and
25
+ query [Eradiate](https://eradiate.eu)'s absorption databases.
26
+
27
+ ## License
28
+
29
+ The Eradiate Absorption Database Reader is distributed under the terms of the
30
+ [GNU Lesser General Public License v3.0](https://choosealicense.com/licenses/lgpl-3.0/).
axsdb-0.0.2/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # AxsDB — The Eradiate Absorption Cross-section Database Interface
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/axsdb?color=blue)](https://pypi.org/project/axsdb)
4
+ [![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/eradiate/axsdb/ci.yml?branch=main)](https://github.com/eradiate/axsdb/actions/workflows/ci.yml)
5
+ [![Documentation Status](https://img.shields.io/readthedocs/axsdb)](https://axsdb.readthedocs.io)
6
+ [![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
7
+ [![ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
8
+
9
+ This library provides an interface to read and
10
+ query [Eradiate](https://eradiate.eu)'s absorption databases.
11
+
12
+ ## License
13
+
14
+ The Eradiate Absorption Database Reader is distributed under the terms of the
15
+ [GNU Lesser General Public License v3.0](https://choosealicense.com/licenses/lgpl-3.0/).
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = _build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,10 @@
1
+ :tocdepth: 2
2
+
3
+ API reference
4
+ =============
5
+
6
+ .. automodule:: axsdb
7
+ :autosummary:
8
+ :members:
9
+ :show-inheritance:
10
+ :inherited-members:
@@ -0,0 +1,56 @@
1
+ # -- Project information -----------------------------------------------------
2
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
3
+
4
+ import axsdb
5
+
6
+ project = "axsdb"
7
+ copyright = "2025, Vincent Leroy"
8
+ author = "Vincent Leroy"
9
+ version = axsdb.__version__
10
+
11
+ # -- General configuration ---------------------------------------------------
12
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
13
+
14
+ extensions = [
15
+ # Core extensions
16
+ "sphinx.ext.autodoc",
17
+ "sphinx.ext.doctest",
18
+ "sphinx.ext.extlinks",
19
+ "sphinx.ext.intersphinx",
20
+ "sphinx.ext.napoleon",
21
+ "sphinx.ext.viewcode",
22
+ # Third-party
23
+ "sphinx_copybutton",
24
+ "sphinx_design",
25
+ "sphinx_iconify",
26
+ "autodocsumm",
27
+ ]
28
+
29
+ templates_path = ["_templates"]
30
+ source_suffix = [".rst", ".md"]
31
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
32
+
33
+ intersphinx_mapping = {
34
+ "python": ("https://docs.python.org/3", None),
35
+ "numpy": ("https://numpy.org/doc/stable/", None),
36
+ "xarray": ("https://docs.xarray.dev/en/stable/", None),
37
+ "pandas": ("https://pandas.pydata.org/docs/", None),
38
+ "cachetools": ("https://cachetools.readthedocs.io/en/stable/", None),
39
+ }
40
+
41
+
42
+ # -- Options for HTML output -------------------------------------------------
43
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
44
+
45
+
46
+ html_static_path = ["_static"]
47
+ html_title = "axsdb"
48
+
49
+ # Use Shibuya theme
50
+ # https://shibuya.lepture.com/
51
+ html_theme = "shibuya"
52
+ html_theme_options = {
53
+ "accent_color": "indigo",
54
+ "navigation_with_keys": True,
55
+ "github_url": "https://github.com/eradiate/axsdb",
56
+ }
@@ -0,0 +1,15 @@
1
+ Getting started
2
+ ===============
3
+
4
+ Installation
5
+ ------------
6
+
7
+ Required dependencies:
8
+
9
+ * Python 3.9 or later
10
+
11
+ Install from PyPI in your virtual environment:
12
+
13
+ .. code:: shell
14
+
15
+ python -m pip install axsdb
@@ -0,0 +1,32 @@
1
+ :hide-toc:
2
+ :layout: landing
3
+
4
+ AxsDB documentation
5
+ ===================
6
+
7
+ **Date**: |today| | **Version**: |version|
8
+
9
+ AxsDB is provides an interface to `Eradiate <https://eradiate.eu>`_\ 's
10
+ absorption cross section databases.
11
+
12
+ .. grid:: 1 1 2 3
13
+ :gutter: 2
14
+ :padding: 0
15
+
16
+ .. grid-item-card:: :iconify:`material-symbols:book-2 height=1.5em` Docs
17
+ :link: getting_started
18
+ :link-type: doc
19
+
20
+ Read about AxsDB and its API.
21
+
22
+ .. grid-item-card:: :iconify:`simple-icons:github height=1.5em` GitHub
23
+ :link: https://github.com/eradiate/axsdb/
24
+
25
+ Browse the source code.
26
+
27
+ .. toctree::
28
+ :maxdepth: 2
29
+ :hidden:
30
+
31
+ getting_started
32
+ api
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=source
11
+ set BUILDDIR=build
12
+
13
+ %SPHINXBUILD% >NUL 2>NUL
14
+ if errorlevel 9009 (
15
+ echo.
16
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
+ echo.installed, then set the SPHINXBUILD environment variable to point
18
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
+ echo.may add the Sphinx directory to PATH.
20
+ echo.
21
+ echo.If you don't have Sphinx installed, grab it from
22
+ echo.https://www.sphinx-doc.org/
23
+ exit /b 1
24
+ )
25
+
26
+ if "%1" == "" goto help
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd