esmporium-processing 0.1.1__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.
- esmporium_processing-0.1.1/LICENCE +29 -0
- esmporium_processing-0.1.1/PKG-INFO +149 -0
- esmporium_processing-0.1.1/README.md +119 -0
- esmporium_processing-0.1.1/pyproject.toml +413 -0
- esmporium_processing-0.1.1/src/esmporium_processing/__init__.py +7 -0
- esmporium_processing-0.1.1/src/esmporium_processing/operations.py +35 -0
- esmporium_processing-0.1.1/src/esmporium_processing/py.typed +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, esmporium-processing contributors (https://github.com/esmporium/esmporium-processing/graphs/contributors)
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: esmporium-processing
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Processing of datasets retrieved with esmporium (https://github.com/esmporium/esmporium).
|
|
5
|
+
Author: Zebedee Nicholls
|
|
6
|
+
Author-email: Zebedee Nicholls <zebedee.nicholls@climate-energy-college.org>
|
|
7
|
+
License: 3-Clause BSD License
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Science/Research
|
|
10
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
11
|
+
Classifier: Natural Language :: English
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Classifier: Typing :: Typed
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Project-URL: Changelog, https://esmporium-processing.readthedocs.io/en/stable/changelog
|
|
24
|
+
Project-URL: Documentation, https://esmporium-processing.readthedocs.io
|
|
25
|
+
Project-URL: Homepage, https://esmporium-processing.readthedocs.io
|
|
26
|
+
Project-URL: Issues, https://github.com/esmporium/esmporium-processing/issues
|
|
27
|
+
Project-URL: Repository, https://github.com/esmporium/esmporium-processing
|
|
28
|
+
Provides-Extra: locked
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
<!--- --8<-- [start:description] -->
|
|
32
|
+
# esmporium processing
|
|
33
|
+
|
|
34
|
+
Processing of datasets retrieved with esmporium (https://github.com/esmporium/esmporium).
|
|
35
|
+
|
|
36
|
+
**Key info :**
|
|
37
|
+
[](https://esmporium-processing.readthedocs.io)
|
|
38
|
+
[](https://github.com/esmporium/esmporium-processing/blob/main/pyproject.toml)
|
|
39
|
+
[](https://github.com/esmporium/esmporium-processing/blob/main/LICENCE)
|
|
40
|
+
|
|
41
|
+
**PyPI :**
|
|
42
|
+
[](https://pypi.org/project/esmporium-processing/)
|
|
43
|
+
[](https://github.com/esmporium/esmporium-processing/actions/workflows/install-pypi.yaml)
|
|
44
|
+
|
|
45
|
+
**Tests :**
|
|
46
|
+
[](https://github.com/esmporium/esmporium-processing/actions/workflows/ci.yaml)
|
|
47
|
+
[](https://codecov.io/gh/esmporium/esmporium-processing)
|
|
48
|
+
|
|
49
|
+
**Other info :**
|
|
50
|
+
[](https://github.com/esmporium/esmporium-processing/commits/main)
|
|
51
|
+
[](https://github.com/esmporium/esmporium-processing/graphs/contributors)
|
|
52
|
+
## Status
|
|
53
|
+
|
|
54
|
+
<!---
|
|
55
|
+
|
|
56
|
+
We recommend having a status line in your repo
|
|
57
|
+
to tell anyone who stumbles on your repository where you're up to.
|
|
58
|
+
Some suggested options:
|
|
59
|
+
|
|
60
|
+
- prototype: the project is just starting up and the code is all prototype
|
|
61
|
+
- development: the project is actively being worked on
|
|
62
|
+
- finished: the project has achieved what it wanted
|
|
63
|
+
and is no longer being worked on, we won't reply to any issues
|
|
64
|
+
- dormant: the project is no longer worked on
|
|
65
|
+
but we might come back to it,
|
|
66
|
+
if you have questions, feel free to raise an issue
|
|
67
|
+
- abandoned: this project is no longer worked on
|
|
68
|
+
and we won't reply to any issues
|
|
69
|
+
-->
|
|
70
|
+
|
|
71
|
+
- prototype: the project is just starting up and the code is all prototype
|
|
72
|
+
|
|
73
|
+
<!--- --8<-- [end:description] -->
|
|
74
|
+
|
|
75
|
+
Full documentation can be found at:
|
|
76
|
+
[esmporium-processing.readthedocs.io](https://esmporium-processing.readthedocs.io/en/latest/).
|
|
77
|
+
We recommend reading the docs there because the internal documentation links
|
|
78
|
+
don't render correctly on GitHub's viewer.
|
|
79
|
+
|
|
80
|
+
## Installation
|
|
81
|
+
|
|
82
|
+
<!--- --8<-- [start:installation] -->
|
|
83
|
+
### As an application
|
|
84
|
+
|
|
85
|
+
If you want to use esmporium processing as an application,
|
|
86
|
+
then we recommend using the 'locked' version of the package.
|
|
87
|
+
This version pins the version of all dependencies too,
|
|
88
|
+
which reduces the chance of installation issues
|
|
89
|
+
because of breaking updates to dependencies.
|
|
90
|
+
|
|
91
|
+
The locked version of esmporium processing can be installed with
|
|
92
|
+
|
|
93
|
+
=== "pip"
|
|
94
|
+
```sh
|
|
95
|
+
pip install 'esmporium-processing[locked]'
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### As a library
|
|
99
|
+
|
|
100
|
+
If you want to use esmporium processing as a library,
|
|
101
|
+
for example you want to use it
|
|
102
|
+
as a dependency in another package/application that you're building,
|
|
103
|
+
then we recommend installing the package with the commands below.
|
|
104
|
+
This method provides the loosest pins possible of all dependencies.
|
|
105
|
+
This gives you, the package/application developer,
|
|
106
|
+
as much freedom as possible to set the versions of different packages.
|
|
107
|
+
However, the tradeoff with this freedom is that you may install
|
|
108
|
+
incompatible versions of esmporium processing's dependencies
|
|
109
|
+
(we cannot test all combinations of dependencies,
|
|
110
|
+
particularly ones which haven't been released yet!).
|
|
111
|
+
Hence, you may run into installation issues.
|
|
112
|
+
If you believe these are because of a problem in esmporium processing,
|
|
113
|
+
please [raise an issue](https://github.com/esmporium/esmporium-processing/issues).
|
|
114
|
+
|
|
115
|
+
The (non-locked) version of esmporium processing can be installed with
|
|
116
|
+
|
|
117
|
+
=== "pip"
|
|
118
|
+
```sh
|
|
119
|
+
pip install esmporium-processing
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### For developers
|
|
123
|
+
|
|
124
|
+
For development, we rely on [uv](https://docs.astral.sh/uv/)
|
|
125
|
+
for all our dependency management.
|
|
126
|
+
To get started, you will need to make sure that uv is installed
|
|
127
|
+
([instructions here](https://docs.astral.sh/uv/getting-started/installation/)
|
|
128
|
+
(we found that the self-managed install was best,
|
|
129
|
+
particularly for upgrading uv later).
|
|
130
|
+
|
|
131
|
+
For all of our work, we use our `Makefile`.
|
|
132
|
+
You can read the instructions out and run the commands by hand if you wish,
|
|
133
|
+
but we generally discourage this because it can be error prone.
|
|
134
|
+
In order to create your environment, run `make virtual-environment`.
|
|
135
|
+
|
|
136
|
+
If there are any issues, the messages from the `Makefile` should guide you through.
|
|
137
|
+
If not, please raise an issue in the
|
|
138
|
+
[issue tracker](https://github.com/esmporium/esmporium-processing/issues).
|
|
139
|
+
|
|
140
|
+
For the rest of our developer docs, please see [development][development].
|
|
141
|
+
|
|
142
|
+
<!--- --8<-- [end:installation] -->
|
|
143
|
+
|
|
144
|
+
## Original template
|
|
145
|
+
|
|
146
|
+
This project was generated from this template:
|
|
147
|
+
[copier core python repository](https://gitlab.com/openscm/copier-core-python-repository).
|
|
148
|
+
[copier](https://copier.readthedocs.io/en/stable/) is used to manage and
|
|
149
|
+
distribute this template.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<!--- --8<-- [start:description] -->
|
|
2
|
+
# esmporium processing
|
|
3
|
+
|
|
4
|
+
Processing of datasets retrieved with esmporium (https://github.com/esmporium/esmporium).
|
|
5
|
+
|
|
6
|
+
**Key info :**
|
|
7
|
+
[](https://esmporium-processing.readthedocs.io)
|
|
8
|
+
[](https://github.com/esmporium/esmporium-processing/blob/main/pyproject.toml)
|
|
9
|
+
[](https://github.com/esmporium/esmporium-processing/blob/main/LICENCE)
|
|
10
|
+
|
|
11
|
+
**PyPI :**
|
|
12
|
+
[](https://pypi.org/project/esmporium-processing/)
|
|
13
|
+
[](https://github.com/esmporium/esmporium-processing/actions/workflows/install-pypi.yaml)
|
|
14
|
+
|
|
15
|
+
**Tests :**
|
|
16
|
+
[](https://github.com/esmporium/esmporium-processing/actions/workflows/ci.yaml)
|
|
17
|
+
[](https://codecov.io/gh/esmporium/esmporium-processing)
|
|
18
|
+
|
|
19
|
+
**Other info :**
|
|
20
|
+
[](https://github.com/esmporium/esmporium-processing/commits/main)
|
|
21
|
+
[](https://github.com/esmporium/esmporium-processing/graphs/contributors)
|
|
22
|
+
## Status
|
|
23
|
+
|
|
24
|
+
<!---
|
|
25
|
+
|
|
26
|
+
We recommend having a status line in your repo
|
|
27
|
+
to tell anyone who stumbles on your repository where you're up to.
|
|
28
|
+
Some suggested options:
|
|
29
|
+
|
|
30
|
+
- prototype: the project is just starting up and the code is all prototype
|
|
31
|
+
- development: the project is actively being worked on
|
|
32
|
+
- finished: the project has achieved what it wanted
|
|
33
|
+
and is no longer being worked on, we won't reply to any issues
|
|
34
|
+
- dormant: the project is no longer worked on
|
|
35
|
+
but we might come back to it,
|
|
36
|
+
if you have questions, feel free to raise an issue
|
|
37
|
+
- abandoned: this project is no longer worked on
|
|
38
|
+
and we won't reply to any issues
|
|
39
|
+
-->
|
|
40
|
+
|
|
41
|
+
- prototype: the project is just starting up and the code is all prototype
|
|
42
|
+
|
|
43
|
+
<!--- --8<-- [end:description] -->
|
|
44
|
+
|
|
45
|
+
Full documentation can be found at:
|
|
46
|
+
[esmporium-processing.readthedocs.io](https://esmporium-processing.readthedocs.io/en/latest/).
|
|
47
|
+
We recommend reading the docs there because the internal documentation links
|
|
48
|
+
don't render correctly on GitHub's viewer.
|
|
49
|
+
|
|
50
|
+
## Installation
|
|
51
|
+
|
|
52
|
+
<!--- --8<-- [start:installation] -->
|
|
53
|
+
### As an application
|
|
54
|
+
|
|
55
|
+
If you want to use esmporium processing as an application,
|
|
56
|
+
then we recommend using the 'locked' version of the package.
|
|
57
|
+
This version pins the version of all dependencies too,
|
|
58
|
+
which reduces the chance of installation issues
|
|
59
|
+
because of breaking updates to dependencies.
|
|
60
|
+
|
|
61
|
+
The locked version of esmporium processing can be installed with
|
|
62
|
+
|
|
63
|
+
=== "pip"
|
|
64
|
+
```sh
|
|
65
|
+
pip install 'esmporium-processing[locked]'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### As a library
|
|
69
|
+
|
|
70
|
+
If you want to use esmporium processing as a library,
|
|
71
|
+
for example you want to use it
|
|
72
|
+
as a dependency in another package/application that you're building,
|
|
73
|
+
then we recommend installing the package with the commands below.
|
|
74
|
+
This method provides the loosest pins possible of all dependencies.
|
|
75
|
+
This gives you, the package/application developer,
|
|
76
|
+
as much freedom as possible to set the versions of different packages.
|
|
77
|
+
However, the tradeoff with this freedom is that you may install
|
|
78
|
+
incompatible versions of esmporium processing's dependencies
|
|
79
|
+
(we cannot test all combinations of dependencies,
|
|
80
|
+
particularly ones which haven't been released yet!).
|
|
81
|
+
Hence, you may run into installation issues.
|
|
82
|
+
If you believe these are because of a problem in esmporium processing,
|
|
83
|
+
please [raise an issue](https://github.com/esmporium/esmporium-processing/issues).
|
|
84
|
+
|
|
85
|
+
The (non-locked) version of esmporium processing can be installed with
|
|
86
|
+
|
|
87
|
+
=== "pip"
|
|
88
|
+
```sh
|
|
89
|
+
pip install esmporium-processing
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### For developers
|
|
93
|
+
|
|
94
|
+
For development, we rely on [uv](https://docs.astral.sh/uv/)
|
|
95
|
+
for all our dependency management.
|
|
96
|
+
To get started, you will need to make sure that uv is installed
|
|
97
|
+
([instructions here](https://docs.astral.sh/uv/getting-started/installation/)
|
|
98
|
+
(we found that the self-managed install was best,
|
|
99
|
+
particularly for upgrading uv later).
|
|
100
|
+
|
|
101
|
+
For all of our work, we use our `Makefile`.
|
|
102
|
+
You can read the instructions out and run the commands by hand if you wish,
|
|
103
|
+
but we generally discourage this because it can be error prone.
|
|
104
|
+
In order to create your environment, run `make virtual-environment`.
|
|
105
|
+
|
|
106
|
+
If there are any issues, the messages from the `Makefile` should guide you through.
|
|
107
|
+
If not, please raise an issue in the
|
|
108
|
+
[issue tracker](https://github.com/esmporium/esmporium-processing/issues).
|
|
109
|
+
|
|
110
|
+
For the rest of our developer docs, please see [development][development].
|
|
111
|
+
|
|
112
|
+
<!--- --8<-- [end:installation] -->
|
|
113
|
+
|
|
114
|
+
## Original template
|
|
115
|
+
|
|
116
|
+
This project was generated from this template:
|
|
117
|
+
[copier core python repository](https://gitlab.com/openscm/copier-core-python-repository).
|
|
118
|
+
[copier](https://copier.readthedocs.io/en/stable/) is used to manage and
|
|
119
|
+
distribute this template.
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "esmporium-processing"
|
|
3
|
+
version = "0.1.1"
|
|
4
|
+
description = "Processing of datasets retrieved with esmporium (https://github.com/esmporium/esmporium)."
|
|
5
|
+
authors = [
|
|
6
|
+
{ name = "Zebedee Nicholls", email = "zebedee.nicholls@climate-energy-college.org" },
|
|
7
|
+
]
|
|
8
|
+
requires-python = ">=3.10"
|
|
9
|
+
dependencies = []
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Development Status :: 3 - Alpha",
|
|
13
|
+
"Intended Audience :: Science/Research",
|
|
14
|
+
"License :: OSI Approved :: BSD License",
|
|
15
|
+
"Natural Language :: English",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
"Programming Language :: Python",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
25
|
+
"Typing :: Typed",
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[project.license]
|
|
29
|
+
text = "3-Clause BSD License"
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://esmporium-processing.readthedocs.io"
|
|
33
|
+
Documentation = "https://esmporium-processing.readthedocs.io"
|
|
34
|
+
Changelog = "https://esmporium-processing.readthedocs.io/en/stable/changelog"
|
|
35
|
+
Repository = "https://github.com/esmporium/esmporium-processing"
|
|
36
|
+
Issues = "https://github.com/esmporium/esmporium-processing/issues"
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
locked = []
|
|
40
|
+
|
|
41
|
+
[dependency-groups]
|
|
42
|
+
dev = [
|
|
43
|
+
"liccheck==0.9.2",
|
|
44
|
+
"mypy==1.14.0",
|
|
45
|
+
"pip==24.3.1",
|
|
46
|
+
"pre-commit==4.0.1",
|
|
47
|
+
"setuptools==75.6.0",
|
|
48
|
+
"tomli==2.2.1 ; python_full_version < '3.11'",
|
|
49
|
+
"tomli-w==1.2.0",
|
|
50
|
+
"towncrier==24.8.0",
|
|
51
|
+
"cfgv==3.4.0",
|
|
52
|
+
"click==8.1.8",
|
|
53
|
+
"colorama==0.4.6 ; sys_platform == 'win32'",
|
|
54
|
+
"distlib==0.3.9",
|
|
55
|
+
"filelock==3.16.1",
|
|
56
|
+
"identify==2.6.5",
|
|
57
|
+
"jinja2==3.1.5",
|
|
58
|
+
"markupsafe==3.0.2",
|
|
59
|
+
"mypy-extensions==1.0.0",
|
|
60
|
+
"nodeenv==1.9.1",
|
|
61
|
+
"platformdirs==4.3.6",
|
|
62
|
+
"pyyaml==6.0.2",
|
|
63
|
+
"semantic-version==2.10.0",
|
|
64
|
+
"toml==0.10.2",
|
|
65
|
+
"typing-extensions==4.12.2",
|
|
66
|
+
"virtualenv==20.28.1",
|
|
67
|
+
"ty==0.0.33",
|
|
68
|
+
]
|
|
69
|
+
docs = [
|
|
70
|
+
"attrs==25.3.0",
|
|
71
|
+
"mkdocs-autorefs==1.4.4",
|
|
72
|
+
"mkdocs-gen-files==0.6.1",
|
|
73
|
+
"mkdocs-literate-nav==0.6.3",
|
|
74
|
+
"mkdocs-material==9.7.6",
|
|
75
|
+
"mkdocs-section-index==0.3.12",
|
|
76
|
+
"mkdocstrings-python-xref==2.1.1",
|
|
77
|
+
"mkdocstrings-python==2.0.3",
|
|
78
|
+
"properdocs==1.6.7",
|
|
79
|
+
"pymdown-extensions==10.21.3",
|
|
80
|
+
"ruff==0.15.12",
|
|
81
|
+
"babel==2.18.0",
|
|
82
|
+
"backrefs==7.0",
|
|
83
|
+
"certifi==2026.5.20",
|
|
84
|
+
"charset-normalizer==3.4.7",
|
|
85
|
+
"click==8.1.8",
|
|
86
|
+
"colorama==0.4.6",
|
|
87
|
+
"ghp-import==2.1.0",
|
|
88
|
+
"griffe==2.0.2",
|
|
89
|
+
"griffecli==2.0.2",
|
|
90
|
+
"griffelib==2.0.2",
|
|
91
|
+
"idna==3.16",
|
|
92
|
+
"jinja2==3.1.5",
|
|
93
|
+
"markdown==3.10.2",
|
|
94
|
+
"markupsafe==3.0.2",
|
|
95
|
+
"mergedeep==1.3.4",
|
|
96
|
+
"mkdocs-get-deps==0.2.2",
|
|
97
|
+
"mkdocs-material-extensions==1.3.1",
|
|
98
|
+
"mkdocs==1.6.1",
|
|
99
|
+
"mkdocstrings==1.0.4",
|
|
100
|
+
"packaging==24.2",
|
|
101
|
+
"paginate==0.5.7",
|
|
102
|
+
"pathspec==1.1.1",
|
|
103
|
+
"platformdirs==4.3.6",
|
|
104
|
+
"pygments==2.19.1",
|
|
105
|
+
"python-dateutil==2.9.0.post0",
|
|
106
|
+
"pyyaml-env-tag==1.1",
|
|
107
|
+
"pyyaml==6.0.2",
|
|
108
|
+
"requests==2.34.2",
|
|
109
|
+
"six==1.17.0",
|
|
110
|
+
"typing-extensions==4.12.2 ; python_full_version < '3.11'",
|
|
111
|
+
"urllib3==2.7.0",
|
|
112
|
+
"watchdog==6.0.0",
|
|
113
|
+
"jupyterlab==4.4.5",
|
|
114
|
+
"jupytext==1.17.2",
|
|
115
|
+
"mkdocs-jupyter==0.25.1",
|
|
116
|
+
"anyio==4.13.0",
|
|
117
|
+
"appnope==0.1.4 ; sys_platform == 'darwin'",
|
|
118
|
+
"argon2-cffi-bindings==25.1.0",
|
|
119
|
+
"argon2-cffi==25.1.0",
|
|
120
|
+
"arrow==1.4.0",
|
|
121
|
+
"asttokens==3.0.1",
|
|
122
|
+
"async-lru==2.3.0",
|
|
123
|
+
"beautifulsoup4==4.14.3",
|
|
124
|
+
"bleach==6.3.0",
|
|
125
|
+
"cffi==2.0.0",
|
|
126
|
+
"comm==0.2.3",
|
|
127
|
+
"debugpy==1.8.20",
|
|
128
|
+
"decorator==5.3.1",
|
|
129
|
+
"defusedxml==0.7.1",
|
|
130
|
+
"exceptiongroup==1.3.0 ; python_full_version < '3.11'",
|
|
131
|
+
"executing==2.2.1",
|
|
132
|
+
"fastjsonschema==2.21.2",
|
|
133
|
+
"fqdn==1.5.1",
|
|
134
|
+
"h11==0.16.0",
|
|
135
|
+
"httpcore==1.0.9",
|
|
136
|
+
"httpx==0.28.1",
|
|
137
|
+
"ipykernel==6.31.0",
|
|
138
|
+
"ipython-pygments-lexers==1.1.1 ; python_full_version >= '3.11'",
|
|
139
|
+
"ipython==8.39.0 ; python_full_version < '3.11'",
|
|
140
|
+
"ipython==9.13.0 ; python_full_version >= '3.11'",
|
|
141
|
+
"isoduration==20.11.0",
|
|
142
|
+
"jedi==0.20.0",
|
|
143
|
+
"json5==0.14.0",
|
|
144
|
+
"jsonpointer==3.1.1",
|
|
145
|
+
"jsonschema-specifications==2025.9.1",
|
|
146
|
+
"jsonschema==4.26.0",
|
|
147
|
+
"jupyter-client==8.8.0",
|
|
148
|
+
"jupyter-core==5.9.1",
|
|
149
|
+
"jupyter-events==0.12.1",
|
|
150
|
+
"jupyter-lsp==2.3.1",
|
|
151
|
+
"jupyter-server-terminals==0.5.4",
|
|
152
|
+
"jupyter-server==2.18.2",
|
|
153
|
+
"jupyterlab-pygments==0.3.0",
|
|
154
|
+
"jupyterlab-server==2.28.0",
|
|
155
|
+
"lark==1.3.1",
|
|
156
|
+
"markdown-it-py==3.0.0",
|
|
157
|
+
"matplotlib-inline==0.2.2",
|
|
158
|
+
"mdit-py-plugins==0.6.1",
|
|
159
|
+
"mdurl==0.1.2",
|
|
160
|
+
"mistune==3.2.1",
|
|
161
|
+
"nbclient==0.10.4",
|
|
162
|
+
"nbconvert==7.17.1",
|
|
163
|
+
"nbformat==5.10.4",
|
|
164
|
+
"nest-asyncio==1.6.0",
|
|
165
|
+
"notebook-shim==0.2.4",
|
|
166
|
+
"overrides==7.7.0 ; python_full_version < '3.12'",
|
|
167
|
+
"pandocfilters==1.5.1",
|
|
168
|
+
"parso==0.8.7",
|
|
169
|
+
"pexpect==4.9.0 ; sys_platform != 'emscripten' and sys_platform != 'win32'",
|
|
170
|
+
"prometheus-client==0.25.0",
|
|
171
|
+
"prompt-toolkit==3.0.52",
|
|
172
|
+
"psutil==7.2.2",
|
|
173
|
+
"ptyprocess==0.7.0 ; os_name != 'nt' or (sys_platform != 'emscripten' and sys_platform != 'win32')",
|
|
174
|
+
"pure-eval==0.2.3",
|
|
175
|
+
"pycparser==3.0 ; implementation_name != 'PyPy'",
|
|
176
|
+
"python-json-logger==4.1.0",
|
|
177
|
+
"pywinpty==3.0.3 ; os_name == 'nt'",
|
|
178
|
+
"pyzmq==27.1.0",
|
|
179
|
+
"referencing==0.37.0",
|
|
180
|
+
"rfc3339-validator==0.1.4",
|
|
181
|
+
"rfc3986-validator==0.1.1",
|
|
182
|
+
"rfc3987-syntax==1.1.0",
|
|
183
|
+
"rpds-py==0.30.0",
|
|
184
|
+
"send2trash==2.1.0",
|
|
185
|
+
"setuptools==75.6.0",
|
|
186
|
+
"soupsieve==2.8.3",
|
|
187
|
+
"stack-data==0.6.3",
|
|
188
|
+
"terminado==0.18.1",
|
|
189
|
+
"tinycss2==1.4.0",
|
|
190
|
+
"tomli==2.2.1 ; python_full_version < '3.11'",
|
|
191
|
+
"tornado==6.5.5",
|
|
192
|
+
"traitlets==5.15.0",
|
|
193
|
+
"typing-extensions==4.12.2",
|
|
194
|
+
"tzdata==2026.2",
|
|
195
|
+
"uri-template==1.3.0",
|
|
196
|
+
"wcwidth==0.7.0",
|
|
197
|
+
"webcolors==25.10.0",
|
|
198
|
+
"webencodings==0.5.1",
|
|
199
|
+
"websocket-client==1.9.0",
|
|
200
|
+
]
|
|
201
|
+
tests-min = [
|
|
202
|
+
"pytest==8.3.4",
|
|
203
|
+
"colorama==0.4.6 ; sys_platform == 'win32'",
|
|
204
|
+
"exceptiongroup==1.3.0 ; python_full_version < '3.11'",
|
|
205
|
+
"iniconfig==2.0.0",
|
|
206
|
+
"packaging==24.2",
|
|
207
|
+
"pluggy==1.5.0",
|
|
208
|
+
"tomli==2.2.1 ; python_full_version < '3.11'",
|
|
209
|
+
"typing-extensions==4.12.2 ; python_full_version < '3.11'",
|
|
210
|
+
]
|
|
211
|
+
tests-full = [
|
|
212
|
+
"pytest-cov==6.0.0",
|
|
213
|
+
"colorama==0.4.6 ; sys_platform == 'win32'",
|
|
214
|
+
"coverage==7.6.10",
|
|
215
|
+
"exceptiongroup==1.3.0 ; python_full_version < '3.11'",
|
|
216
|
+
"iniconfig==2.0.0",
|
|
217
|
+
"packaging==24.2",
|
|
218
|
+
"pluggy==1.5.0",
|
|
219
|
+
"pytest==8.3.4",
|
|
220
|
+
"tomli==2.2.1 ; python_full_version <= '3.11'",
|
|
221
|
+
"typing-extensions==4.12.2 ; python_full_version < '3.11'",
|
|
222
|
+
]
|
|
223
|
+
tests = [
|
|
224
|
+
{ include-group = "tests-min" },
|
|
225
|
+
{ include-group = "tests-full" },
|
|
226
|
+
]
|
|
227
|
+
all-dev = [
|
|
228
|
+
{ include-group = "dev" },
|
|
229
|
+
{ include-group = "docs" },
|
|
230
|
+
{ include-group = "tests" },
|
|
231
|
+
]
|
|
232
|
+
|
|
233
|
+
[build-system]
|
|
234
|
+
requires = [
|
|
235
|
+
"uv_build>=0.8.7,<0.9.0",
|
|
236
|
+
]
|
|
237
|
+
build-backend = "uv_build"
|
|
238
|
+
|
|
239
|
+
[tool.uv.build-backend]
|
|
240
|
+
source-include = [
|
|
241
|
+
"src/esmporium_processing",
|
|
242
|
+
"LICENCE",
|
|
243
|
+
]
|
|
244
|
+
|
|
245
|
+
[tool.coverage.run]
|
|
246
|
+
source = [
|
|
247
|
+
"esmporium_processing",
|
|
248
|
+
]
|
|
249
|
+
branch = true
|
|
250
|
+
|
|
251
|
+
[tool.coverage.report]
|
|
252
|
+
fail_under = 90
|
|
253
|
+
skip_empty = true
|
|
254
|
+
show_missing = true
|
|
255
|
+
exclude_also = [
|
|
256
|
+
"if TYPE_CHECKING",
|
|
257
|
+
"@overload",
|
|
258
|
+
"\\.\\.\\.",
|
|
259
|
+
]
|
|
260
|
+
|
|
261
|
+
[tool.mypy]
|
|
262
|
+
strict = true
|
|
263
|
+
disallow_any_unimported = true
|
|
264
|
+
show_error_codes = true
|
|
265
|
+
show_error_context = true
|
|
266
|
+
warn_unreachable = true
|
|
267
|
+
follow_imports = "normal"
|
|
268
|
+
|
|
269
|
+
[tool.ty.environment]
|
|
270
|
+
extra-paths = [
|
|
271
|
+
"stubs",
|
|
272
|
+
]
|
|
273
|
+
python-version = "3.10"
|
|
274
|
+
|
|
275
|
+
[tool.ty.rules]
|
|
276
|
+
|
|
277
|
+
[tool.ty.src]
|
|
278
|
+
include = [
|
|
279
|
+
"src",
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
[tool.jupytext]
|
|
283
|
+
formats = "ipynb,py:percent"
|
|
284
|
+
|
|
285
|
+
[tool.pytest.ini_options]
|
|
286
|
+
addopts = [
|
|
287
|
+
"--import-mode=importlib",
|
|
288
|
+
]
|
|
289
|
+
|
|
290
|
+
[tool.ruff]
|
|
291
|
+
src = [
|
|
292
|
+
"src",
|
|
293
|
+
]
|
|
294
|
+
target-version = "py310"
|
|
295
|
+
line-length = 88
|
|
296
|
+
|
|
297
|
+
[tool.ruff.lint]
|
|
298
|
+
select = [
|
|
299
|
+
"E",
|
|
300
|
+
"W",
|
|
301
|
+
"F",
|
|
302
|
+
"I",
|
|
303
|
+
"D",
|
|
304
|
+
"PL",
|
|
305
|
+
"TRY",
|
|
306
|
+
"NPY",
|
|
307
|
+
"RUF",
|
|
308
|
+
"UP",
|
|
309
|
+
"S",
|
|
310
|
+
]
|
|
311
|
+
unfixable = [
|
|
312
|
+
"PD002",
|
|
313
|
+
]
|
|
314
|
+
ignore = [
|
|
315
|
+
"D200",
|
|
316
|
+
"D400",
|
|
317
|
+
"UP007",
|
|
318
|
+
]
|
|
319
|
+
|
|
320
|
+
[tool.ruff.lint.per-file-ignores]
|
|
321
|
+
"test*.py" = [
|
|
322
|
+
"D",
|
|
323
|
+
"S101",
|
|
324
|
+
"PLR2004",
|
|
325
|
+
]
|
|
326
|
+
"docs/*" = [
|
|
327
|
+
"D100",
|
|
328
|
+
"E402",
|
|
329
|
+
"S101",
|
|
330
|
+
]
|
|
331
|
+
"scripts/*" = [
|
|
332
|
+
"S101",
|
|
333
|
+
]
|
|
334
|
+
"stubs/*" = [
|
|
335
|
+
"PLR0913",
|
|
336
|
+
]
|
|
337
|
+
|
|
338
|
+
[tool.ruff.lint.isort]
|
|
339
|
+
known-first-party = [
|
|
340
|
+
"src",
|
|
341
|
+
]
|
|
342
|
+
|
|
343
|
+
[tool.ruff.lint.pydocstyle]
|
|
344
|
+
convention = "numpy"
|
|
345
|
+
|
|
346
|
+
[tool.ruff.format]
|
|
347
|
+
docstring-code-format = true
|
|
348
|
+
|
|
349
|
+
[tool.towncrier]
|
|
350
|
+
package = "esmporium_processing"
|
|
351
|
+
package_dir = "src"
|
|
352
|
+
filename = "docs/changelog.md"
|
|
353
|
+
directory = "changelog/"
|
|
354
|
+
title_format = "## esmporium processing {version} ({project_date})"
|
|
355
|
+
underlines = [
|
|
356
|
+
"",
|
|
357
|
+
"",
|
|
358
|
+
"",
|
|
359
|
+
]
|
|
360
|
+
issue_format = "[#{issue}](https://github.com/esmporium/esmporium-processing/pull/{issue})"
|
|
361
|
+
type = [
|
|
362
|
+
{ directory = "breaking", name = "⚠️ Breaking Changes", showcontent = true },
|
|
363
|
+
{ directory = "deprecation", name = "🗑️ Deprecations", showcontent = true },
|
|
364
|
+
{ directory = "feature", name = "🆕 Features", showcontent = true },
|
|
365
|
+
{ directory = "improvement", name = "🎉 Improvements", showcontent = true },
|
|
366
|
+
{ directory = "fix", name = "🐛 Bug Fixes", showcontent = true },
|
|
367
|
+
{ directory = "docs", name = "📚 Improved Documentation", showcontent = true },
|
|
368
|
+
{ directory = "trivial", name = "🔧 Trivial/Internal Changes", showcontent = false },
|
|
369
|
+
]
|
|
370
|
+
|
|
371
|
+
[tool.liccheck]
|
|
372
|
+
authorized_licenses = [
|
|
373
|
+
"bsd",
|
|
374
|
+
"bsd license",
|
|
375
|
+
"BSD 3-Clause",
|
|
376
|
+
"BSD-3-Clause",
|
|
377
|
+
"BSD-3-Clause AND 0BSD AND MIT AND Zlib AND CC0-1.0",
|
|
378
|
+
"CC0",
|
|
379
|
+
"apache",
|
|
380
|
+
"apache 2.0",
|
|
381
|
+
"apache-2.0",
|
|
382
|
+
"apache software",
|
|
383
|
+
"apache software license",
|
|
384
|
+
"Apache License, Version 2.0",
|
|
385
|
+
"CMU License (MIT-CMU)",
|
|
386
|
+
"Historical Permission Notice and Disclaimer (HPND)",
|
|
387
|
+
"isc",
|
|
388
|
+
"isc license",
|
|
389
|
+
"isc license (iscl)",
|
|
390
|
+
"gnu lgpl",
|
|
391
|
+
"lgpl with exceptions or zpl",
|
|
392
|
+
"LGPLv2+",
|
|
393
|
+
"GNU Lesser General Public License v2 (LGPLv2)",
|
|
394
|
+
"GNU Lesser General Public License v2 or later (LGPLv2+)",
|
|
395
|
+
"mit",
|
|
396
|
+
"mit license",
|
|
397
|
+
"Mozilla Public License 2.0 (MPL 2.0)",
|
|
398
|
+
"psf-2.0",
|
|
399
|
+
"python software foundation",
|
|
400
|
+
"python software foundation license",
|
|
401
|
+
"The Unlicense (Unlicense)",
|
|
402
|
+
"zpl 2.1",
|
|
403
|
+
]
|
|
404
|
+
unauthorized_licenses = [
|
|
405
|
+
"agpl",
|
|
406
|
+
"gnu agpl",
|
|
407
|
+
"gpl v3",
|
|
408
|
+
"gplv3",
|
|
409
|
+
"gpl v2",
|
|
410
|
+
"gplv2",
|
|
411
|
+
"gpl v1",
|
|
412
|
+
"gplv1",
|
|
413
|
+
]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Operations
|
|
3
|
+
|
|
4
|
+
This module is just there to help with doc building etc. on project creation.
|
|
5
|
+
You will probably delete it early in the project.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def add_two(a: float, b: float) -> float:
|
|
12
|
+
"""
|
|
13
|
+
Add two numbers
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
a
|
|
18
|
+
First number
|
|
19
|
+
|
|
20
|
+
b
|
|
21
|
+
Second number
|
|
22
|
+
|
|
23
|
+
Returns
|
|
24
|
+
-------
|
|
25
|
+
:
|
|
26
|
+
Sum of the numbers
|
|
27
|
+
|
|
28
|
+
Examples
|
|
29
|
+
--------
|
|
30
|
+
>>> add_two(1, 3)
|
|
31
|
+
4
|
|
32
|
+
>>> add_two(1, -3)
|
|
33
|
+
-2
|
|
34
|
+
"""
|
|
35
|
+
return a + b
|
|
File without changes
|