zappend


Namezappend JSON
Version 0.7.0 PyPI version JSON
download
home_pagehttps://github.com/bcdev/zappend
SummaryTool for robustly creating and updating Zarr datacubes from smaller slices
upload_time2024-03-19 16:37:07
maintainer
docs_urlNone
authorNorman Fomferra
requires_python>=3.10
licenseMIT
keywords analysis ready data data science datacube xarray zarr
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">
    <img src="docs/assets/logo.png" width="64" title="zappend">
    &nbsp;zappend
</h1>

<div align="center">

[![CI](https://github.com/bcdev/zappend/actions/workflows/tests.yml/badge.svg)](https://github.com/bcdev/zappend/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/bcdev/zappend/graph/badge.svg?token=B3R6bNmAUp)](https://codecov.io/gh/bcdev/zappend)
[![PyPI Version](https://img.shields.io/pypi/v/zappend)](https://pypi.org/project/zappend/)
[![Conda Version](https://anaconda.org/conda-forge/zappend/badges/version.svg)](https://anaconda.org/conda-forge/zappend)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/bcdev/zappend/HEAD?labpath=examples%2Fzappend-demo.ipynb)
[![GitHub License](https://img.shields.io/github/license/bcdev/zappend)](https://github.com/bcdev/zappend)

</div>

<!--- Align following sections with docs/index.md -->

---

`zappend` is a tool written in Python that is used for robustly creating and 
updating Zarr datacubes from smaller dataset slices. It is built on top of the 
awesome Python packages [xarray](https://docs.xarray.dev/) and [zarr](https://zarr.readthedocs.io/).

## Motivation

The objective of `zappend` is enabling geodata scientists and developers to 
robustly create large data cubes. The tool performs transaction-based dataset 
appends to existing data cubes in the 
[Zarr format](https://zarr.readthedocs.io/en/stable/spec/v2.html). If an error 
occurs during an append step — typically due to I/O problems or out-of-memory 
conditions — `zappend` will automatically roll back the operation, ensuring that 
the existing data cube maintains its structural integrity. The design drivers 
behind zappend are first ease of use and secondly, high configurability 
regarding filesystems, data source types, data cube outline and encoding. 

The tool comprises a command-line interface, a Python API for programmatic 
control, and a comprehensible documentation to guide users effectively. 
You can easily install `zappend` as a plain Python package using either 
`pip install zappend` or `conda install -conda-forge zappend`.

## Features

The `zappend` tool provides the following features:

* **Locking**: While the target dataset is being modified, a file lock is 
  created, effectively preventing concurrent dataset modifications.
* **Transaction-based dataset appends**: On failure during an append step, 
  the transaction is rolled back, so that the target dataset remains valid and 
  preserves its integrity.
* **Filesystem transparency**: The target dataset may be generated and updated 
  in any writable filesystems supported by the 
  [fsspec](https://filesystem-spec.readthedocs.io/) package. 
  The same holds for the slice datasets to be appended.
* **Dataset polling**: The tool can be configured to wait for slice datasets to 
  become available. 
* **Dynamic attributes**: Use syntax `{{ expression }}` to update the target 
  dataset with dynamically computed attribute values. 
* **CLI and Python API**: The tool can be used in a shell using the 
  [`zappend`](cli.md) command or from Python. When used from Python using the 
  [`zappend()`](api.md) function, slice datasets can be passed as local file 
  paths, URIs, as datasets of type 
  [xarray.Dataset](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.html), or as custom
  [slice sources](https://bcdev.github.io/zappend/guide/#slice-sources).

  
More about zappend can be found in its 
[documentation](https://bcdev.github.io/zappend/).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/bcdev/zappend",
    "name": "zappend",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "",
    "keywords": "analysis ready data,data science,datacube,xarray,zarr",
    "author": "Norman Fomferra",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/bd/f7/de279d35ae566bc26ec0fcd9b46e31bdb413ba266851701b89c28f7a631c/zappend-0.7.0.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">\n    <img src=\"docs/assets/logo.png\" width=\"64\" title=\"zappend\">\n    &nbsp;zappend\n</h1>\n\n<div align=\"center\">\n\n[![CI](https://github.com/bcdev/zappend/actions/workflows/tests.yml/badge.svg)](https://github.com/bcdev/zappend/actions/workflows/tests.yml)\n[![codecov](https://codecov.io/gh/bcdev/zappend/graph/badge.svg?token=B3R6bNmAUp)](https://codecov.io/gh/bcdev/zappend)\n[![PyPI Version](https://img.shields.io/pypi/v/zappend)](https://pypi.org/project/zappend/)\n[![Conda Version](https://anaconda.org/conda-forge/zappend/badges/version.svg)](https://anaconda.org/conda-forge/zappend)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/bcdev/zappend/HEAD?labpath=examples%2Fzappend-demo.ipynb)\n[![GitHub License](https://img.shields.io/github/license/bcdev/zappend)](https://github.com/bcdev/zappend)\n\n</div>\n\n<!--- Align following sections with docs/index.md -->\n\n---\n\n`zappend` is a tool written in Python that is used for robustly creating and \nupdating Zarr datacubes from smaller dataset slices. It is built on top of the \nawesome Python packages [xarray](https://docs.xarray.dev/) and [zarr](https://zarr.readthedocs.io/).\n\n## Motivation\n\nThe objective of `zappend` is enabling geodata scientists and developers to \nrobustly create large data cubes. The tool performs transaction-based dataset \nappends to existing data cubes in the \n[Zarr format](https://zarr.readthedocs.io/en/stable/spec/v2.html). If an error \noccurs during an append step \u2014 typically due to I/O problems or out-of-memory \nconditions \u2014 `zappend` will automatically roll back the operation, ensuring that \nthe existing data cube maintains its structural integrity. The design drivers \nbehind zappend are first ease of use and secondly, high configurability \nregarding filesystems, data source types, data cube outline and encoding. \n\nThe tool comprises a command-line interface, a Python API for programmatic \ncontrol, and a comprehensible documentation to guide users effectively. \nYou can easily install `zappend` as a plain Python package using either \n`pip install zappend` or `conda install -conda-forge zappend`.\n\n## Features\n\nThe `zappend` tool provides the following features:\n\n* **Locking**: While the target dataset is being modified, a file lock is \n  created, effectively preventing concurrent dataset modifications.\n* **Transaction-based dataset appends**: On failure during an append step, \n  the transaction is rolled back, so that the target dataset remains valid and \n  preserves its integrity.\n* **Filesystem transparency**: The target dataset may be generated and updated \n  in any writable filesystems supported by the \n  [fsspec](https://filesystem-spec.readthedocs.io/) package. \n  The same holds for the slice datasets to be appended.\n* **Dataset polling**: The tool can be configured to wait for slice datasets to \n  become available. \n* **Dynamic attributes**: Use syntax `{{ expression }}` to update the target \n  dataset with dynamically computed attribute values. \n* **CLI and Python API**: The tool can be used in a shell using the \n  [`zappend`](cli.md) command or from Python. When used from Python using the \n  [`zappend()`](api.md) function, slice datasets can be passed as local file \n  paths, URIs, as datasets of type \n  [xarray.Dataset](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.html), or as custom\n  [slice sources](https://bcdev.github.io/zappend/guide/#slice-sources).\n\n  \nMore about zappend can be found in its \n[documentation](https://bcdev.github.io/zappend/).\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Tool for robustly creating and updating Zarr datacubes from smaller slices",
    "version": "0.7.0",
    "project_urls": {
        "Changelog": "https://github.com/bcdev/zappend/blob/main/CHANGES.md",
        "Documentation": "https://bcdev.github.io/zappend/",
        "Homepage": "https://github.com/bcdev/zappend",
        "Issues": "https://github.com/bcdev/zappend/issues"
    },
    "split_keywords": [
        "analysis ready data",
        "data science",
        "datacube",
        "xarray",
        "zarr"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1763f5502243c78d7269959c74676ad89608d81c4dcb78eb002a9f0cc64254f6",
                "md5": "b47859a64d5d8a82433f8125bf40fede",
                "sha256": "df6b465b7c5c1350757fc8a5871ad90c0277c15cd127864ff951252cdbf297ee"
            },
            "downloads": -1,
            "filename": "zappend-0.7.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b47859a64d5d8a82433f8125bf40fede",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 47649,
            "upload_time": "2024-03-19T16:37:05",
            "upload_time_iso_8601": "2024-03-19T16:37:05.877223Z",
            "url": "https://files.pythonhosted.org/packages/17/63/f5502243c78d7269959c74676ad89608d81c4dcb78eb002a9f0cc64254f6/zappend-0.7.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bdf7de279d35ae566bc26ec0fcd9b46e31bdb413ba266851701b89c28f7a631c",
                "md5": "91efeb95c24c4ba2d77386a7aa6a57df",
                "sha256": "62799d150c0f42ee25a1cb419cd0ef2b76279dcfc6eb7308701a0ff17e3723e2"
            },
            "downloads": -1,
            "filename": "zappend-0.7.0.tar.gz",
            "has_sig": false,
            "md5_digest": "91efeb95c24c4ba2d77386a7aa6a57df",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 48405,
            "upload_time": "2024-03-19T16:37:07",
            "upload_time_iso_8601": "2024-03-19T16:37:07.561817Z",
            "url": "https://files.pythonhosted.org/packages/bd/f7/de279d35ae566bc26ec0fcd9b46e31bdb413ba266851701b89c28f7a631c/zappend-0.7.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-19 16:37:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bcdev",
    "github_project": "zappend",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "zappend"
}
        
Elapsed time: 0.20505s