cfdb 0.1.0__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.
- cfdb-0.1.0/.gitignore +119 -0
- cfdb-0.1.0/LICENSE +16 -0
- cfdb-0.1.0/PKG-INFO +57 -0
- cfdb-0.1.0/README.md +34 -0
- cfdb-0.1.0/cfdb/__init__.py +6 -0
- cfdb-0.1.0/cfdb/combine.py +501 -0
- cfdb-0.1.0/cfdb/core.py +1232 -0
- cfdb-0.1.0/cfdb/creation.py +345 -0
- cfdb-0.1.0/cfdb/data_models.py +189 -0
- cfdb-0.1.0/cfdb/indexers.py +452 -0
- cfdb-0.1.0/cfdb/main.py +857 -0
- cfdb-0.1.0/cfdb/support_classes.py +1187 -0
- cfdb-0.1.0/cfdb/utils.py +2079 -0
- cfdb-0.1.0/pyproject.toml +194 -0
cfdb-0.1.0/.gitignore
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
2
|
+
__pycache__/
|
3
|
+
*.py[cod]
|
4
|
+
*$py.class
|
5
|
+
|
6
|
+
# C extensions
|
7
|
+
*.so
|
8
|
+
|
9
|
+
# Distribution / packaging
|
10
|
+
.Python
|
11
|
+
env/
|
12
|
+
build/
|
13
|
+
develop-eggs/
|
14
|
+
dist/
|
15
|
+
downloads/
|
16
|
+
eggs/
|
17
|
+
.eggs/
|
18
|
+
lib/
|
19
|
+
lib64/
|
20
|
+
parts/
|
21
|
+
sdist/
|
22
|
+
var/
|
23
|
+
wheels/
|
24
|
+
*.egg-info/
|
25
|
+
.installed.cfg
|
26
|
+
*.egg
|
27
|
+
|
28
|
+
# PyInstaller
|
29
|
+
# Usually these files are written by a python script from a template
|
30
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
31
|
+
*.manifest
|
32
|
+
*.spec
|
33
|
+
|
34
|
+
# Installer logs
|
35
|
+
pip-log.txt
|
36
|
+
pip-delete-this-directory.txt
|
37
|
+
|
38
|
+
# Unit test / coverage reports
|
39
|
+
htmlcov/
|
40
|
+
.tox/
|
41
|
+
.coverage
|
42
|
+
.coverage.*
|
43
|
+
.cache
|
44
|
+
nosetests.xml
|
45
|
+
coverage.xml
|
46
|
+
*.cover
|
47
|
+
.hypothesis/
|
48
|
+
.pytest_cache/
|
49
|
+
junit/
|
50
|
+
junit.xml
|
51
|
+
test.db
|
52
|
+
|
53
|
+
# Translations
|
54
|
+
*.mo
|
55
|
+
*.pot
|
56
|
+
|
57
|
+
# Django stuff:
|
58
|
+
*.log
|
59
|
+
local_settings.py
|
60
|
+
|
61
|
+
# Flask stuff:
|
62
|
+
instance/
|
63
|
+
.webassets-cache
|
64
|
+
|
65
|
+
# Scrapy stuff:
|
66
|
+
.scrapy
|
67
|
+
|
68
|
+
# Sphinx documentation
|
69
|
+
docs/_build/
|
70
|
+
|
71
|
+
# PyBuilder
|
72
|
+
target/
|
73
|
+
|
74
|
+
# Jupyter Notebook
|
75
|
+
.ipynb_checkpoints
|
76
|
+
|
77
|
+
# pyenv
|
78
|
+
.python-version
|
79
|
+
|
80
|
+
# celery beat schedule file
|
81
|
+
celerybeat-schedule
|
82
|
+
|
83
|
+
# SageMath parsed files
|
84
|
+
*.sage.py
|
85
|
+
|
86
|
+
# dotenv
|
87
|
+
.env
|
88
|
+
|
89
|
+
# virtualenv
|
90
|
+
.venv
|
91
|
+
venv/
|
92
|
+
ENV/
|
93
|
+
.ruff*
|
94
|
+
|
95
|
+
# Spyder project settings
|
96
|
+
.spyderproject
|
97
|
+
.spyproject
|
98
|
+
|
99
|
+
# Rope project settings
|
100
|
+
.ropeproject
|
101
|
+
|
102
|
+
# mkdocs documentation
|
103
|
+
/site
|
104
|
+
|
105
|
+
# mypy
|
106
|
+
.mypy_cache/
|
107
|
+
|
108
|
+
# .vscode
|
109
|
+
.vscode/
|
110
|
+
|
111
|
+
# OS files
|
112
|
+
.DS_Store
|
113
|
+
|
114
|
+
# Temp data
|
115
|
+
data/*
|
116
|
+
|
117
|
+
# Test config files
|
118
|
+
/cfdb/tests/*.toml
|
119
|
+
/cfdb/tests/*.yml
|
cfdb-0.1.0/LICENSE
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
Apache Software License 2.0
|
2
|
+
|
3
|
+
Copyright (c) 2025, Mike Kittridge
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
|
cfdb-0.1.0/PKG-INFO
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: cfdb
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: CF conventions multi-dimensional array storage on top of Booklet
|
5
|
+
Project-URL: Documentation, https://mullenkamp.github.io/cfdb/
|
6
|
+
Project-URL: Source, https://github.com/mullenkamp/cfdb
|
7
|
+
Author-email: mullenkamp <mullenkamp1@gmail.com>
|
8
|
+
License-File: LICENSE
|
9
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
10
|
+
Requires-Python: >=3.10
|
11
|
+
Requires-Dist: booklet>=0.9.2
|
12
|
+
Requires-Dist: cftime
|
13
|
+
Requires-Dist: lz4
|
14
|
+
Requires-Dist: msgspec
|
15
|
+
Requires-Dist: numpy
|
16
|
+
Requires-Dist: rechunkit>=0.1.0
|
17
|
+
Requires-Dist: zstandard
|
18
|
+
Provides-Extra: ebooklet
|
19
|
+
Requires-Dist: ebooklet>=0.5.10; extra == 'ebooklet'
|
20
|
+
Provides-Extra: netcdf4
|
21
|
+
Requires-Dist: h5netcdf; extra == 'netcdf4'
|
22
|
+
Description-Content-Type: text/markdown
|
23
|
+
|
24
|
+
# cfdb
|
25
|
+
|
26
|
+
<p align="center">
|
27
|
+
<em>CF conventions multi-dimensional array storage on top of Booklet</em>
|
28
|
+
</p>
|
29
|
+
|
30
|
+
[](https://github.com/mullenkamp/cfdb/actions)
|
31
|
+
[](https://codecov.io/gh/mullenkamp/cfdb)
|
32
|
+
[](https://badge.fury.io/py/cfdb)
|
33
|
+
|
34
|
+
---
|
35
|
+
|
36
|
+
**Documentation**: <a href="https://mullenkamp.github.io/cfdb/" target="_blank">https://mullenkamp.github.io/cfdb/</a>
|
37
|
+
|
38
|
+
**Source Code**: <a href="https://github.com/mullenkamp/cfdb" target="_blank">https://github.com/mullenkamp/cfbdb</a>
|
39
|
+
|
40
|
+
---
|
41
|
+
|
42
|
+
## Development
|
43
|
+
|
44
|
+
### Coordinate variables
|
45
|
+
Must be 1D.
|
46
|
+
They should have an "ordered" parameter (bool) that defined whether the coord should always be ordered. Int, float, and datetime should default to True. Only string and category dtypes should default to False.
|
47
|
+
There should be a "regular" parameter (bool) with an associated "step" parameter (int or float). It should work similarly to np.arange. Only ints, floats, and datetimes can use this.
|
48
|
+
~~Should I add a "unique" parameter (bool)? Maybe I should just enforce this normally?~~ It should enforce uniqueness in the coords.
|
49
|
+
There can be a groupby method datasets that would use the rechunker. The rechunker would have the groupby dims set to 1 and the other dims set to the full length.
|
50
|
+
|
51
|
+
#### Multi-dimensional coords
|
52
|
+
It is possible to create a composite index from multiple 1D coords. But it seems best to implement this type of thing on top of sqlite (or something equivalent).
|
53
|
+
Keeping each coord 1D makes implementations quite a bit simpler.
|
54
|
+
|
55
|
+
## License
|
56
|
+
|
57
|
+
This project is licensed under the terms of the Apache Software License 2.0.
|
cfdb-0.1.0/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# cfdb
|
2
|
+
|
3
|
+
<p align="center">
|
4
|
+
<em>CF conventions multi-dimensional array storage on top of Booklet</em>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
[](https://github.com/mullenkamp/cfdb/actions)
|
8
|
+
[](https://codecov.io/gh/mullenkamp/cfdb)
|
9
|
+
[](https://badge.fury.io/py/cfdb)
|
10
|
+
|
11
|
+
---
|
12
|
+
|
13
|
+
**Documentation**: <a href="https://mullenkamp.github.io/cfdb/" target="_blank">https://mullenkamp.github.io/cfdb/</a>
|
14
|
+
|
15
|
+
**Source Code**: <a href="https://github.com/mullenkamp/cfdb" target="_blank">https://github.com/mullenkamp/cfbdb</a>
|
16
|
+
|
17
|
+
---
|
18
|
+
|
19
|
+
## Development
|
20
|
+
|
21
|
+
### Coordinate variables
|
22
|
+
Must be 1D.
|
23
|
+
They should have an "ordered" parameter (bool) that defined whether the coord should always be ordered. Int, float, and datetime should default to True. Only string and category dtypes should default to False.
|
24
|
+
There should be a "regular" parameter (bool) with an associated "step" parameter (int or float). It should work similarly to np.arange. Only ints, floats, and datetimes can use this.
|
25
|
+
~~Should I add a "unique" parameter (bool)? Maybe I should just enforce this normally?~~ It should enforce uniqueness in the coords.
|
26
|
+
There can be a groupby method datasets that would use the rechunker. The rechunker would have the groupby dims set to 1 and the other dims set to the full length.
|
27
|
+
|
28
|
+
#### Multi-dimensional coords
|
29
|
+
It is possible to create a composite index from multiple 1D coords. But it seems best to implement this type of thing on top of sqlite (or something equivalent).
|
30
|
+
Keeping each coord 1D makes implementations quite a bit simpler.
|
31
|
+
|
32
|
+
## License
|
33
|
+
|
34
|
+
This project is licensed under the terms of the Apache Software License 2.0.
|