{"id":13502070,"url":"https://github.com/jacebrowning/yorm","last_synced_at":"2025-12-16T15:38:07.280Z","repository":{"id":16414406,"uuid":"19165491","full_name":"jacebrowning/yorm","owner":"jacebrowning","description":"Automatic object-YAML mapping for Python.","archived":true,"fork":false,"pushed_at":"2019-03-23T23:19:45.000Z","size":570,"stargazers_count":26,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-03-18T20:51:29.399Z","etag":null,"topics":["filesystem","orm","python","version-control","yaml"],"latest_commit_sha":null,"homepage":"https://yorm.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"google/fuzzer-test-suite","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jacebrowning.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-26T01:11:41.000Z","updated_at":"2024-11-28T16:29:12.000Z","dependencies_parsed_at":"2022-08-04T05:30:20.646Z","dependency_job_id":null,"html_url":"https://github.com/jacebrowning/yorm","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacebrowning%2Fyorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacebrowning%2Fyorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacebrowning%2Fyorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacebrowning%2Fyorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacebrowning","download_url":"https://codeload.github.com/jacebrowning/yorm/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246174207,"owners_count":20735406,"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":["filesystem","orm","python","version-control","yaml"],"created_at":"2024-07-31T22:02:00.606Z","updated_at":"2025-12-16T15:38:07.196Z","avatar_url":"https://github.com/jacebrowning.png","language":"Python","funding_links":[],"categories":["Python","Model, Schema"],"sub_categories":[],"readme":"[![Build Status](http://img.shields.io/travis/jacebrowning/yorm/master.svg)](https://travis-ci.org/jacebrowning/yorm)\n[![Coverage Status](http://img.shields.io/coveralls/jacebrowning/yorm/master.svg)](https://coveralls.io/r/jacebrowning/yorm)\n[![Scrutinizer Code Quality](http://img.shields.io/scrutinizer/g/jacebrowning/yorm.svg)](https://scrutinizer-ci.com/g/jacebrowning/yorm/?branch=master)\n[![PyPI Version](http://img.shields.io/pypi/v/yorm.svg)](https://pypi.python.org/pypi/yorm)\n\n# Overview\n\nYORM enables automatic, bidirectional, human-friendly mappings of object attributes to YAML files.\n Uses beyond typical object serialization and relational mapping include:\n\n* bidirectional conversion between basic YAML and Python types\n* attribute creation and type inference for new attributes\n* storage of content in text files optimized for version control\n* extensible converters to customize formatting on complex classes\n\n**NOTE**: This project is now in maintenance mode. Please check out [datafiles](https://github.com/jacebrowning/datafiles), its spiritual successor.\n\n## Requirements\n\n* Python 3.5+\n\n## Installation\n\nInstall YORM with pip:\n\n```sh\n$ pip install YORM\n```\n\nor directly from the source code:\n\n```sh\n$ git clone https://github.com/jacebrowning/yorm.git\n$ cd yorm\n$ python setup.py install\n```\n\n# Usage\n\nSimply take an existing class:\n\n```python\nclass Student:\n    def __init__(self, name, school, number, year=2009):\n        self.name = name\n        self.school = school\n        self.number = number\n        self.year = year\n        self.gpa = 0.0\n```\n\nand define an attribute mapping:\n\n```python\nimport yorm\nfrom yorm.types import String, Integer, Float\n\n@yorm.attr(name=String, year=Integer, gpa=Float)\n@yorm.sync(\"students/{self.school}/{self.number}.yml\")\nclass Student:\n    ...\n```\n\nModifications to each object's mapped attributes:\n\n```python\n\u003e\u003e\u003e s1 = Student(\"John Doe\", \"GVSU\", 123)\n\u003e\u003e\u003e s2 = Student(\"Jane Doe\", \"GVSU\", 456, year=2014)\n\u003e\u003e\u003e s1.gpa = 3\n```\n\nare automatically reflected on the filesytem:\n\n```sh\n$ cat students/GVSU/123.yml\nname: John Doe\ngpa: 3.0\nschool: GVSU\nyear: 2009\n```\n\nModifications and new content in each mapped file:\n\n```sh\n$ echo \"name: John Doe\n\u003e gpa: 1.8\n\u003e year: 2010\n\" \u003e students/GVSU/123.yml\n```\n\nare automatically reflected in their corresponding object:\n\n```python\n\u003e\u003e\u003e s1.gpa\n1.8\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacebrowning%2Fyorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacebrowning%2Fyorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacebrowning%2Fyorm/lists"}