Metadata-Version: 2.4
Name: files_collections
Version: 2.0.0
Summary: Read a collection of files using information from their names
Author-email: Robin Chevrier <rchevrier@groupcls.com>, Anne-Sophie Tonneau <atonneau@groupcls.com>
Maintainer-email: Robin Chevrier <rchevrier@groupcls.com>, Anne-Sophie Tonneau <atonneau@groupcls.com>
Project-URL: Repository, https://github.com/robin-cls/fcollections
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Oceanography
Classifier: Development Status :: 4 - Beta
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: docstring_parser
Requires-Dist: fsspec
Requires-Dist: jinja2
Requires-Dist: netCDF4
Requires-Dist: numpy
Requires-Dist: pandas>=3
Requires-Dist: requests
Requires-Dist: typer
Requires-Dist: xarray[io]
Provides-Extra: testing
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-cov; extra == "testing"
Requires-Dist: sympy; extra == "testing"
Requires-Dist: beautifulsoup4; extra == "testing"
Requires-Dist: pyftpdlib; extra == "testing"
Requires-Dist: pyasynchat; extra == "testing"
Provides-Extra: geo
Requires-Dist: shapely; extra == "geo"
Requires-Dist: geopandas; extra == "geo"
Requires-Dist: pyinterp>=2026.4.0; extra == "geo"
Requires-Dist: dask; extra == "geo"
Requires-Dist: numba; extra == "geo"
Provides-Extra: doc
Requires-Dist: cartopy; extra == "doc"
Requires-Dist: matplotlib; extra == "doc"
Requires-Dist: sphinx; extra == "doc"
Requires-Dist: sphinx-copybutton; extra == "doc"
Requires-Dist: sphinx-design; extra == "doc"
Requires-Dist: sphinx-book-theme; extra == "doc"
Requires-Dist: myst-nb; extra == "doc"
Dynamic: license-file

# Files Collections

[![Linting](https://github.com/CNES/fcollections/actions/workflows/pre-commit.yaml/badge.svg)](https://github.com/CNES/fcollections/actions/workflows/pre-commit.yaml)
[![Tests](https://github.com/CNES/fcollections/actions/workflows/tests.yaml/badge.svg)](https://github.com/CNES/fcollections/actions/workflows/tests.yaml)
[![Documentation](https://github.com/CNES/fcollections/actions/workflows/doc.yaml/badge.svg)](https://github.com/CNES/fcollections/actions/workflows/doc.yaml)
![License](https://img.shields.io/github/license/cnes/fcollections)


Select and read a collection of files

- Information contained in files and folders names are used to create basic
  selection filters
- Both local and remote file systems (FTP, S3, ...) can be explored
- Multiple implementations for handling different products and their specificities
- Easy building of an implementation for a new product


## Installation

```bash
conda install files_collections -c conda-forge
```

## Use

```python
from fcollections.implementations import NetcdfFilesDatabaseSwotLRL3

fc = NetcdfFilesDatabaseSwotLRL3("data_dir")
ds = fc.query(subset='Basic', cycle_number=1, pass_number=1)

print(ds.sizes)
```

Output:

```text
Frozen({'num_lines': 9860, 'num_pixels': 69})

```

```python
print(list(ds.data_vars))
```

Output:

```text
['mdt', 'ssha_filtered', 'ssha_unfiltered', 'cycle_number', 'pass_number']
```

## Documentation

📘 **Full documentation:**
https://cnes.github.io/fcollections/index.html

Key pages:
- [Getting started](https://cnes.github.io/fcollections/getting_started.html)
- [Installation](https://cnes.github.io/fcollections/install.html)
- [Catalog](https://cnes.github.io/fcollections/implementations/catalog.html)
- [Changelog](https://cnes.github.io/fcollections/changelog.html)

## Project status

⚠️ This project is still subject to breaking changes. Versioning will reflects
the breaking changes using SemVer convention

## License

Apache 2.0 — see [LICENSE](LICENSE)
