{"id":19226035,"url":"https://github.com/openpmd/openpmd-updater","last_synced_at":"2025-04-21T00:32:28.310Z","repository":{"id":143748753,"uuid":"120907300","full_name":"openPMD/openPMD-updater","owner":"openPMD","description":":arrow_double_up: Update openPMD files to newer versions of the openPMD standard","archived":false,"fork":false,"pushed_at":"2024-04-17T19:59:16.000Z","size":131,"stargazers_count":2,"open_issues_count":3,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T07:22:48.270Z","etag":null,"topics":["community","fileformat","modernizer","openpmd","openscience","research","updater"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openPMD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-02-09T13:12:27.000Z","updated_at":"2024-04-17T19:58:21.000Z","dependencies_parsed_at":"2024-04-17T21:02:18.308Z","dependency_job_id":"c33e4b3f-0a43-4000-af24-dd56cc682141","html_url":"https://github.com/openPMD/openPMD-updater","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openPMD%2FopenPMD-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openPMD%2FopenPMD-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openPMD%2FopenPMD-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openPMD%2FopenPMD-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openPMD","download_url":"https://codeload.github.com/openPMD/openPMD-updater/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249980581,"owners_count":21355466,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["community","fileformat","modernizer","openpmd","openscience","research","updater"],"created_at":"2024-11-09T15:17:07.818Z","updated_at":"2025-04-21T00:32:28.032Z","avatar_url":"https://github.com/openPMD.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openPMD Updater\n\n[![CI:ubuntu](https://github.com/openPMD/openPMD-updater/actions/workflows/ci.yml/badge.svg)](https://github.com/openPMD/openPMD-updater/actions/workflows/ci.yml)\n![Supported Python Versions](https://img.shields.io/pypi/pyversions/openPMD-updater.svg)\n[![License](https://img.shields.io/badge/license-ISC-blue.svg)](https://opensource.org/licenses/ISC)\n\nThis repository contains scripts to update existing files to *newer versions of the openPMD standard*.\n\n\n## Rationale\n\nWe want our community to be able to move fast without pulling up a long legacy code trail for old versions.\nWe therefore motivate developers to always implement the latest stable version of the [openPMD standard](https://github.com/openPMD/openPMD-standard).\n\nAt the same time, we want that existing user data can always be read.\nIn order to achieve this, this repository provides a tool and modular library for lightweight meta-data updates.\nUpdates are only supported to go *forward* to newer releases.\n\n**Developer perspective:** You only want to implement the latest version(s) of openPMD in order to reduce your development effort.\nYou update timely to new openPMD versions and deprecate or remove support for previous openPMD versions.\nNow a user provides an openPMD file but the openPMD-standard version in it is too old compared to the standard implementation you rely on.\nIn a Python application, just import the module and (after a confirmation) auto-update the user-given file.\nIf you are not in a python environment, just reject the file gracefully with a note the version in the file is too old and point the user *here* to update their existing files.\n\n**User perspective:** You are restoring \"old\" files from an archive and want to process it with a modern software that supports openPMD.\nThis software might only implement recent versions of openPMD, has no auto-update functionality and rejects your files.\nJust run the updater command-line tool to update your files manually, then load it in aforementioned software.\n\n## Install\n\n[![pypi version](https://img.shields.io/pypi/v/openPMD-updater.svg)](https://pypi.python.org/pypi/openPMD-updater)\n[![Spack Package](https://img.shields.io/badge/spack-py--openpmd--updater-blue.svg)](https://spack.io)\n[![Conda Package](https://anaconda.org/ax3l/openpmd_updater/badges/version.svg)](https://anaconda.org/ax3l/updater)\n\nChoose *one* of the install methods below to get started:\n\n*TBD*\n\n### From Source\n\n```bash\ngit clone https://github.com/openPMD/openPMD-updater.git\ncd openPMD-updater\n\n# install dependencies\npip install .\n\n# with optional dependencies for testing\npip install .[test]\n```\n\n## Usage\n\n### CLI\n\nWe provide the command-line tools for individual files:\n\n```bash\n# optional: append --backup\nopenPMD_updater_h5 -i example.h5\n```\n\n### Module\n\nAdditionally, the updater tools can be used as *Python module* in your projects.\nThis allows you to offer a file update to users that try to use your tool with old versions of the openPMD standard (but you might only support newer versions).\n\n```python\nfrom openpmd_updater.Updater import Updater\n\nupdater = Updater(\"example.h5\", verbose=False)\nupdater.update(target_version=\"2.0.0\", in_place=True)\n\n```\n\n## Development\n\n### Testing\n\nAdditional packages need to be installed for the tests. To install them do:\n```bash\npip install .[test]\n```\n\nThen one can run the tests as follows:\n```bash\n# all\npytest\n\n# specific\npytest tests/test_backend_h5.py\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenpmd%2Fopenpmd-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenpmd%2Fopenpmd-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenpmd%2Fopenpmd-updater/lists"}