{"id":34110270,"url":"https://github.com/altxriainc/janus","last_synced_at":"2026-04-06T01:31:27.445Z","repository":{"id":267009981,"uuid":"898558204","full_name":"altxriainc/janus","owner":"altxriainc","description":"Janus is a Python library designed for robust data validation, serialization, and schema versioning. It offers a comprehensive toolkit to handle input validation, data transformation, and API schema evolution, making it ideal for modern Python applications that require data integrity and compatibility.","archived":false,"fork":false,"pushed_at":"2024-12-07T21:38:59.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-17T02:38:36.562Z","etag":null,"topics":["api-schema","data-integrity","data-validation","input-validation","json-serialization","nested-data-validation","python-library","python-validation","schema-versioning","yaml-serialization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/altxriainc.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-12-04T15:57:50.000Z","updated_at":"2024-12-07T21:39:02.000Z","dependencies_parsed_at":"2024-12-07T17:37:26.445Z","dependency_job_id":null,"html_url":"https://github.com/altxriainc/janus","commit_stats":null,"previous_names":["altxriainc/janus"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/altxriainc/janus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altxriainc%2Fjanus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altxriainc%2Fjanus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altxriainc%2Fjanus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altxriainc%2Fjanus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/altxriainc","download_url":"https://codeload.github.com/altxriainc/janus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/altxriainc%2Fjanus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31456591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["api-schema","data-integrity","data-validation","input-validation","json-serialization","nested-data-validation","python-library","python-validation","schema-versioning","yaml-serialization"],"created_at":"2025-12-14T18:49:27.849Z","updated_at":"2026-04-06T01:31:27.440Z","avatar_url":"https://github.com/altxriainc.png","language":"Python","funding_links":["https://github.com/sponsors/altxriainc","https://ko-fi.com/N4N516SMZ6"],"categories":[],"sub_categories":[],"readme":"\n# Janus\n\n![Latest Version](https://img.shields.io/pypi/v/janus-validation)\n![Downloads](https://img.shields.io/pypi/dm/janus-validation)\n![Status](https://img.shields.io/badge/status-alpha-orange)\n![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey.svg)\n\n**Janus** is a modern Python library for data validation, serialization, and schema versioning. It provides developers with a flexible, performant, and extensible toolkit to handle input validation, data transformation, and API schema compatibility with ease.\n\n[Click here for the documentation](https://github.com/altxriainc/janus/wiki)\n\n---\n\n## 🚀 Key Features\n\n- **Robust Data Validation**: Includes a comprehensive set of validators for strings, numbers, dates, collections, and more.\n- **Nested Schema Validation**: Supports complex and deeply nested data structures.\n- **Schema Versioning**: Seamlessly handle schema evolution and data migration between API versions.\n- **Serialization**: Convert Python objects to JSON or YAML formats with error handling.\n- **Custom Validators**: Easily extend Janus with custom validation rules.\n- **Open for Personal \u0026 Commercial Use**: Use Janus freely in personal and commercial projects (not for resale as a standalone product).\n\n---\n\n## 🛠️ How to Use Janus\n\n### Step 1: Install Janus\n\nInstall Janus via pip:\n\n```bash\npip install janus-validation\n```\n\n### Step 2: Validate Your First Data\n\nDefine a validation schema:\n\n```python\nfrom janus.utils.validators import is_required, is_type, is_email\nfrom janus.core.validator import SchemaValidator\n\nschema = {\n    \"name\": [is_required, is_type(str)],\n    \"email\": [is_required, is_email],\n    \"age\": [is_type(int)],\n}\n\nvalidator = SchemaValidator(schema)\n\ndata = {\"name\": \"Alice\", \"email\": \"alice@example.com\", \"age\": 30}\nvalidated_data = validator.validate(data)\nprint(\"Validated Data:\", validated_data)\n```\n\n### Step 3: Use Schema Versioning\n\nManage schema evolution with ease:\n\n```python\nfrom janus.core.schema_versioning import SchemaVersioning\n\nversioning = SchemaVersioning()\n\n# Register schemas\nversioning.register_schema(\"v1\", {\"name\": [is_required]})\nversioning.register_schema(\"v2\", {\"name\": [is_required], \"email\": [is_email]})\n\n# Validate data with specific schema versions\ndata = {\"name\": \"Alice\", \"email\": \"alice@example.com\"}\nvalidated = versioning.validate_with_version(\"v2\", data)\nprint(\"Validated:\", validated)\n```\n\n### Step 4: Serialize Data\n\nConvert Python objects to JSON or YAML:\n\n```python\nfrom janus.core.serializer import JSONSerializer, YAMLSerializer\n\nserializer = JSONSerializer()\njson_data = serializer.serialize({\"name\": \"Alice\", \"age\": 30})\nprint(\"Serialized JSON:\", json_data)\n\nyaml_serializer = YAMLSerializer()\nyaml_data = yaml_serializer.serialize({\"name\": \"Alice\", \"age\": 30})\nprint(\"Serialized YAML:\", yaml_data)\n```\n\n---\n\n## 🔍 Project Status\n\n![Issues Closed](https://img.shields.io/github/issues-closed/altxriainc/janus)\n![Bug Issues](https://img.shields.io/github/issues/altxriainc/janus/bug)\n![Enhancement Issues](https://img.shields.io/github/issues/altxriainc/janus/enhancement)\n\n---\n\n## 📜 License and Usage\n\nJanus is free to use for both personal and commercial projects. However, Janus itself cannot be resold or distributed as a standalone product.\n\n---\n\n## 🤝 Contributors\n\nDeveloped and maintained by **Altxria Inc.** with contributions from a growing community of passionate developers.\n\n![Contributors](https://contrib.rocks/image?repo=altxriainc/janus)\n\n[See All Contributors](https://github.com/altxriainc/janus/graphs/contributors)\n\n---\n\n## ❤️ Support Janus\n\nIf you find Janus useful, consider sponsoring us to support ongoing development and new features!\n\n[![Sponsor Janus](https://img.shields.io/badge/Sponsor-Janus-blue?logo=github-sponsors)](https://github.com/sponsors/altxriainc)\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/N4N516SMZ6)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltxriainc%2Fjanus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faltxriainc%2Fjanus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faltxriainc%2Fjanus/lists"}