Metadata-Version: 2.4
Name: cfdb
Version: 0.1.0
Summary: CF conventions multi-dimensional array storage on top of Booklet
Project-URL: Documentation, https://mullenkamp.github.io/cfdb/
Project-URL: Source, https://github.com/mullenkamp/cfdb
Author-email: mullenkamp <mullenkamp1@gmail.com>
License-File: LICENSE
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.10
Requires-Dist: booklet>=0.9.2
Requires-Dist: cftime
Requires-Dist: lz4
Requires-Dist: msgspec
Requires-Dist: numpy
Requires-Dist: rechunkit>=0.1.0
Requires-Dist: zstandard
Provides-Extra: ebooklet
Requires-Dist: ebooklet>=0.5.10; extra == 'ebooklet'
Provides-Extra: netcdf4
Requires-Dist: h5netcdf; extra == 'netcdf4'
Description-Content-Type: text/markdown

# cfdb

<p align="center">
    <em>CF conventions multi-dimensional array storage on top of Booklet</em>
</p>

[![build](https://github.com/mullenkamp/cfdb/workflows/Build/badge.svg)](https://github.com/mullenkamp/cfdb/actions)
[![codecov](https://codecov.io/gh/mullenkamp/cfdb/branch/master/graph/badge.svg)](https://codecov.io/gh/mullenkamp/cfdb)
[![PyPI version](https://badge.fury.io/py/cfdb.svg)](https://badge.fury.io/py/cfdb)

---

**Documentation**: <a href="https://mullenkamp.github.io/cfdb/" target="_blank">https://mullenkamp.github.io/cfdb/</a>

**Source Code**: <a href="https://github.com/mullenkamp/cfdb" target="_blank">https://github.com/mullenkamp/cfbdb</a>

---

## Development

### Coordinate variables
Must be 1D. 
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.
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. 
~~Should I add a "unique" parameter (bool)? Maybe I should just enforce this normally?~~ It should enforce uniqueness in the coords.
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.

#### Multi-dimensional coords
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). 
Keeping each coord 1D makes implementations quite a bit simpler. 

## License

This project is licensed under the terms of the Apache Software License 2.0.
