https://github.com/glotzerlab/synced_collections
Add transparent file synchronization to standard Python collections
https://github.com/glotzerlab/synced_collections
Last synced: 11 months ago
JSON representation
Add transparent file synchronization to standard Python collections
- Host: GitHub
- URL: https://github.com/glotzerlab/synced_collections
- Owner: glotzerlab
- License: bsd-3-clause
- Created: 2020-05-28T13:48:26.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2024-11-01T11:47:40.000Z (over 1 year ago)
- Last Synced: 2024-11-10T01:57:22.311Z (over 1 year ago)
- Language: Python
- Size: 479 KB
- Stars: 5
- Watchers: 5
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.txt
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
#
synced_collections - Pythonic abstractions over data collections
[](https://numfocus.org/sponsored-projects/affiliated-projects)
[](https://github.com/glotzerlab/synced_collections/actions)
[](https://github.com/glotzerlab/synced_collections/blob/main/LICENSE.txt)
[](https://signac.readthedocs.io/slack-invite/)
[](https://twitter.com/signacdata)
[](https://github.com/glotzerlab/synced_collections/)
[](https://pypi.org/project/synced_collections/)
[](https://anaconda.org/conda-forge/synced_collections)
[](https://signac.readthedocs.io)
[](https://pypistats.org/packages/synced_collections)
The [**signac** framework](https://signac.readthedocs.io) helps users manage and scale file-based workflows, facilitating data reuse, sharing, and reproducibility.
The **synced_collections** package provides Pythonic abstractions over various underlying data stores, presenting APIs that behave like standard built-in Python collections like dicts.
**synced_collections** form the backbone of **signac**'s data and metadata storage, but may be used just as easily outside of **signac**.
For instance, users wishing to access a JSON file on disk like a dictionary and automatically persist all changes could use the `synced_collections.JSONDict`.
## Resources
- [Slack Chat Support](https://signac.readthedocs.io/slack-invite/):
Get help and ask questions on the **signac** Slack workspace.
- [**signac** website](https://signac.readthedocs.io/):
Framework overview and news.
- [Framework documentation](https://signac.readthedocs.io/):
Examples, tutorials, topic guides, and package Python APIs.
- [Package documentation](https://signac.readthedocs.io/projects/synced-collections/):
API reference for the **synced_collections** package.
## Installation
The recommended installation method for **synced_collections** is through **conda** or **pip**.
The software is tested for Python 3.8+ and is built for all major platforms.
To install **synced_collections** *via* the [conda-forge](https://conda-forge.org/) channel, execute:
```bash
conda install -c conda-forge synced_collections
```
To install **synced_collections** *via* **pip**, execute:
```bash
pip install synced_collections
```
**Detailed information about alternative installation methods can be found in the [documentation](https://signac.readthedocs.io/en/latest/installation.html).**
## Quickstart
This short example demonstrates what you can do with `synced_collections`.
```python
>>> from synced_collections.backends.collection_json import JSONDict
>>> d = JSONDict("data.json")
>>> d["size"] = 10
>>> d["color"] = "blue"
>>> import json
>>> with open("data.json") as f:
... print(json.load(f))
...
{'size': 10, 'color': 'blue'}
```
## Testing
You can test this package by executing:
```bash
$ python -m pytest tests/
```
## Acknowledgment
When using **synced_collections** as part of your work towards a publication, we would really appreciate that you acknowledge the **signac** frameworkf appropriately.
We have prepared examples on how to do that [here](https://signac.readthedocs.io/en/latest/acknowledge.html).
**Thank you very much!**
The signac framework is a [NumFOCUS Affiliated Project](https://numfocus.org/sponsored-projects/affiliated-projects).