Skip to content

About the xcube-eopf project

Changelog

You can find the complete xcube-eopf changelog here.

Reporting

If you have suggestions, ideas, feature requests, or if you have identified a malfunction or error, then please post an issue.

Contributions

The xcube-eopf project welcomes contributions of any form as long as you respect our code of conduct and follow our contribution guide.

If you'd like to submit code or documentation changes, we ask you to provide a pull request (PR) here. For code and configuration changes, your PR must be linked to a corresponding issue.

Development

To install the xcube-eopf development environment into an existing Python environment, do

pip install .[dev,doc]

or create a new environment using conda or mamba

mamba env create 

Testing and Coverage

xcube-eopf uses pytest for unit-level testing and code coverage analysis.

pytest tests/ --cov=xarray_eopf --cov-report html

Some notes on the strategy of unit-testing

The unit test suite uses pytest-recording to mock STAC catalogs. During development an actual HTTP request is performed to a STAC catalog and the responses are saved in cassettes/**.yaml files. During testing, only the cassettes/**.yaml files are used without an actual HTTP request. During development, to save the responses to cassettes/**.yaml, run

pytest -v -s --record-mode new_episodes
Note that --record-mode new_episodes overwrites all cassettes. If the user only wants to write cassettes which are not saved already, --record-mode once can be used. pytest-recording supports all records modes given by VCR.py. After recording the cassettes, testing can be performed as usual.

Code Style

The xcube-eopf source code is formatted and quality-controlled using ruff:

ruff format
ruff check

Documentation

The xcube-eopf documentation is built using the mkdocs tool.

With repository root as current working directory:

pip install .[doc]

mkdocs build
mkdocs serve
mkdocs gh-deploy

License

xcube-eopf is open source made available under the terms and conditions of the Apache 2.0 license.