{"id":18286409,"url":"https://github.com/kamilrybacki/phaistos","last_synced_at":"2025-07-01T09:36:47.433Z","repository":{"id":245824733,"uuid":"819325736","full_name":"kamilrybacki/Phaistos","owner":"kamilrybacki","description":"Transcribe human-readble, advanced YAML schemas into Pydantic models for data validation pipelines","archived":false,"fork":false,"pushed_at":"2024-07-16T12:23:28.000Z","size":2044,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-28T22:07:15.346Z","etag":null,"topics":["pydantic","python3","reflections","transpilation","validation"],"latest_commit_sha":null,"homepage":"https://phaistos.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kamilrybacki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null}},"created_at":"2024-06-24T09:28:28.000Z","updated_at":"2025-02-01T19:02:06.000Z","dependencies_parsed_at":"2024-06-25T09:33:04.470Z","dependency_job_id":"295b6ad6-0986-43b9-b3ac-edb2a32652b1","html_url":"https://github.com/kamilrybacki/Phaistos","commit_stats":null,"previous_names":["kamilrybacki/confjurer","kamilrybacki/phaistos"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/kamilrybacki/Phaistos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FPhaistos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FPhaistos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FPhaistos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FPhaistos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamilrybacki","download_url":"https://codeload.github.com/kamilrybacki/Phaistos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilrybacki%2FPhaistos/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262937231,"owners_count":23387543,"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":["pydantic","python3","reflections","transpilation","validation"],"created_at":"2024-11-05T13:20:02.610Z","updated_at":"2025-07-01T09:36:47.405Z","avatar_url":"https://github.com/kamilrybacki.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Phaistos\n\n\u003cimg\n    src=\".github/assets/phaistos.png\"\n    alt=\"Phaistos logo\"\n    height=\"300\"\n/\u003e\n\nTranscribing schemas from YAML-infused tablets to magical Pydantic validation models 🧙‍♂️🧙‍♀️\n\n![Linting Status](https://github.com/kamilrybacki/Phaistos/actions/workflows/lint-code.yml/badge.svg)\n![Testing Status](https://github.com/kamilrybacki/Phaistos/actions/workflows/code-tests.yml/badge.svg)\n![Documentation Status](https://readthedocs.org/projects/phaistos/badge/?version=latest)\n\n## Main Features\n\nThe main goal of this project is to provide flexibility and utility in defining data models using YAML manifests,\nto enforce data validation of objects such as ETL pipeline payloads, API requests and responses, configurations and more.\n\nThese definitions are to be kept as easily versionable and maintainable files, which can be easily read and understood by\nboth developers and non-developers alike.\n\nThe main features of Phaistos are:\n\n* Define data models using YAML manifests for easy readability, versioning and maintainability 🗄️\n* Add custom validators to data fields that are automatically injected into Pydantic models 💉\n\n**For installation and usage instructions, please refer to the [documentation].**\n\n### Why Phaistos? (as in - why the name?)\n\nThe Phaistos name comes from the [Phaistos Disc], a disk of fired clay from the Minoan palace of Phaistos on the island of Crete, possibly dating to the middle or late Minoan Bronze Age (2nd millennium BC). These discs contain a series of symbols that are still undeciphered to this day.\n\nIn the show of unprecedented far-reaching, the resulting data models from Phaistos can be viewed as such \"discs\" containing malleable and abstract data validation dialects that can exist in a variety of forms and can be used to validate a variety of data payloads. Also - we used to burn data into disks 💽, so there's another angle to the name. 🤷‍♂️\n\n## Examples\n\nThe [`examples` folder] contains scripts and schemas that demonstrate how to use Phaistos to define and validate data models. The examples are written in Python and are intended to be run from the command line.\n\nMore information about the examples can be found in the [examples README].\n\nWant more? You can check out tests in the `tests` directory for more examples of how to use Phaistos, however, expect some Python-fu and a lot of test-related code\ne.g. monkey-patching, fixtures, etc. Viewer discretion is advised.\n\n## Contributing\n\nThank you for considering contributing to this project! We welcome contributions from everyone. By participating, you agree to abide by the following guidelines:\n\n1. **Fork the Repository**: Start by forking the repository on GitHub.\n2. **Clone Your Fork**: Clone your fork to your local machine.\n\n    ```sh\n    git clone https://github.com/your-username/your-fork.git\n    ```\n\n3. **Create a Branch**: Create a feature branch for your work.\n\n    ```sh\n    git checkout -b feature-branch\n    ```\n\n4. **Make Your Changes**: Make your changes and commit them with clear and descriptive commit messages.\n\n    ```sh\n    git commit -m \"Description of your changes\"\n    ```\n\n5. **Push to Your Fork**: Push your changes to your forked repository.\n\n    ```sh\n    git push origin feature-branch\n    ```\n\n6. **Submit a Pull Request**: Open a pull request on the original repository with a description of your changes. Please ensure your PR includes any relevant tests and follows the project’s coding conventions and guidelines.\n\n### Issues and Bug Reports\n\nIf you encounter any issues or bugs, please [open an issue] on GitHub. Be sure to include detailed information about the problem and how to reproduce it.\n\n## License\n\nThis project is licensed under the GNU General Public License Version 3 (GPLv3). See the [LICENSE](LICENSE) file for the full text.\n\n[documentation]: https://phaistos.readthedocs.io/en/latest/\n[Phaistos Disc]: https://en.wikipedia.org/wiki/Phaistos_Disc\n[examples README]: ./examples/README.md\n[`examples` folder]: ./examples\n[open an issue]: https://github.com/your-repository/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilrybacki%2Fphaistos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamilrybacki%2Fphaistos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilrybacki%2Fphaistos/lists"}