{"id":14065710,"url":"https://github.com/ponytailer/schema-validator","last_synced_at":"2025-08-13T12:04:45.008Z","repository":{"id":46778527,"uuid":"410530857","full_name":"ponytailer/schema-validator","owner":"ponytailer","description":"Flask/Quart pydantic/dataclass validator","archived":true,"fork":false,"pushed_at":"2022-01-19T07:31:34.000Z","size":128,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-15T06:08:17.284Z","etag":null,"topics":["flask","quart","swagger","validator"],"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/ponytailer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["ponytailer"]}},"created_at":"2021-09-26T11:18:14.000Z","updated_at":"2024-09-26T06:02:40.000Z","dependencies_parsed_at":"2022-09-26T18:11:32.484Z","dependency_job_id":null,"html_url":"https://github.com/ponytailer/schema-validator","commit_stats":null,"previous_names":["huangxiaohen2738/schema-validator"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponytailer%2Fschema-validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponytailer%2Fschema-validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponytailer%2Fschema-validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ponytailer%2Fschema-validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ponytailer","download_url":"https://codeload.github.com/ponytailer/schema-validator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228052575,"owners_count":17862103,"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":["flask","quart","swagger","validator"],"created_at":"2024-08-13T07:04:39.020Z","updated_at":"2024-12-04T05:30:45.342Z","avatar_url":"https://github.com/ponytailer.png","language":"Python","readme":"schema-validator\n============\n\n#### Generate from quart-schema\n\n\n### Install\n\n - `pip install schema-validator`\n\n\u003cdetails\u003e\n\u003csummary\u003eHow to use\u003c/summary\u003e\n\n```\n    from dataclasses import dataclass\n    from datetime import datetime\n    from typing import Optional\n    from pydantic import BaseModel\n\n    from flask import Flask\n    from quart import Quart\n    from schema_validator import SchemaValidator\n    from schema_validator.flask import validate\n    # from schema_validator.quart import validate\n\n\n    app = Flask(__name__)\n\n    # or \n    app = Quart(__name__)\n    \n    \n    OR\n    \n    schema = SchemaValidator(app)\n    schema.init_app(app)\n\n    @dataclass\n    class Todo:\n        task: str\n        due: Optional[datetime]\n\n    class TodoResponse(BaseModel):\n        id: int\n        name: str\n\n    @app.post(\"/\")\n    @validate(body=Todo, responses=TodoResponse)\n    def create_todo():\n        # balabala\n        return dict(id=1, name=\"2\")\n        \n    @app.get(\"/\")\n    @validate(\n        query=Todo,\n        responses={200: TodoResponse, 400: TodoResponse}\n    )\n    def update_todo():\n        # balabala\n        return TodoResponse(id=1, name=\"123\")\n\n    @app.delete(\"/\")\n    @validate(\n        body=Todo,\n        responses={200: TodoResponse}\n    )\n    def delete():\n        # balabala\n        return jsonify(id=1)\n\n    @tags(\"SOME-TAG\", \"OTHER-TAG\")  # only for swagger\n    class View(MethodView):\n        @validate(...)\n        def get(self):\n            return {}\n       \n    \n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow to show the swagger \u003c/summary\u003e\n\n```\n\napp.config[\"SWAGGER_ROUTE\"] = True\n\nhttp://yourhost/swagger/docs   -\u003e show the all swagger\n\nhttp://yourhost/swagger/docs/{tag} -\u003e show the swagger which include tag\n\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow to export the swagger \u003c/summary\u003e\n\n```\nadd command in flask/quart:\n    app.cli.add_command(generate_schema_command)\n\nExport all swagger to json file:\n\n - flask/quart schema -o swagger.json\n\nExport the swagger which include the ACCOUNT tag:\n\n - flask/quart schema -o swagger.json -t ACCOUNT\n\n```\n\u003c/details\u003e\n","funding_links":["https://github.com/sponsors/ponytailer"],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponytailer%2Fschema-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fponytailer%2Fschema-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fponytailer%2Fschema-validator/lists"}