{"id":13541895,"url":"https://github.com/Tinche/uapi","last_synced_at":"2025-04-02T09:33:00.376Z","repository":{"id":66083101,"uuid":"411862709","full_name":"Tinche/uapi","owner":"Tinche","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-02T16:38:34.000Z","size":878,"stargazers_count":88,"open_issues_count":3,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-14T12:17:32.983Z","etag":null,"topics":["api","python","web"],"latest_commit_sha":null,"homepage":"https://uapi.threeofwands.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tinche.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2021-09-29T23:50:06.000Z","updated_at":"2024-09-30T08:28:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"f00ec343-864f-4719-818e-7054a3831ac8","html_url":"https://github.com/Tinche/uapi","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinche%2Fuapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinche%2Fuapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinche%2Fuapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tinche%2Fuapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tinche","download_url":"https://codeload.github.com/Tinche/uapi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246788906,"owners_count":20834189,"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":["api","python","web"],"created_at":"2024-08-01T10:00:58.492Z","updated_at":"2025-04-02T09:32:59.977Z","avatar_url":"https://github.com/Tinche.png","language":"Python","readme":"# uapi\n\n[![Documentation](https://img.shields.io/badge/Docs-Read%20The%20Docs-black)](https://uapi.threeofwands.com)\n[![License: Apache2](https://img.shields.io/badge/license-Apache2-C06524)](https://github.com/Tinche/uapi/blob/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/uapi.svg)](https://pypi.python.org/pypi/uapi)\n[![Supported Python Versions](https://img.shields.io/pypi/pyversions/uapi.svg)](https://github.com/Tinche/uapi)\n[![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Tinche/fe982b645791164107bd8f6699ed0a38/raw/covbadge.json)](https://github.com/Tinche/uapi/actions/workflows/main.yml)\n\n_uapi_ is an elegant, high-level, extremely low-overhead Python microframework for writing HTTP APIs, either synchronously or asynchronously.\n\n_uapi_ uses a lower-level HTTP framework to run. Currently supported frameworks are aiohttp, Django, Flask, Quart, and Starlette.\nAn _uapi_ app can be easily integrated into an existing project based on one of these frameworks, and a pure _uapi_ project can be easily switched between them when needed.\n\nUsing _uapi_ enables you to:\n\n- write **either async or sync** styles of handlers, depending on the underlying framework used.\n- use and customize a [**function composition** (dependency injection) system](https://uapi.threeofwands.com/en/stable/composition.html), based on [incant](https://incant.threeofwands.com).\n- automatically **serialize and deserialize** data through [attrs](https://www.attrs.org) and [cattrs](https://catt.rs).\n- generate and use [**OpenAPI**](https://uapi.threeofwands.com/en/stable/openapi.html) descriptions of your endpoints.\n- optionally **type-check** your handlers with [Mypy](https://mypy.readthedocs.io/en/stable/).\n- write and use reusable and [**powerful middleware**](https://uapi.threeofwands.com/en/stable/addons.html), which integrates into the OpenAPI schema.\n- **integrate** with existing apps based on [Django](https://docs.djangoproject.com/en/stable/), [Starlette](https://www.starlette.io/), [Flask](https://flask.palletsprojects.com), [Quart](https://pgjones.gitlab.io/quart/) or [aiohttp](https://docs.aiohttp.org).\n\nHere's a simple taste (install Flask and gunicorn first):\n\n```python3\nfrom uapi.flask import App\n\napp = App()\n\n@app.get(\"/\")\ndef index() -\u003e str:\n    return \"Index\"\n\napp.serve_openapi()\napp.serve_elements()\n\napp.run(__name__)  # Now open http://localhost:8000/elements\n```\n\n## Project Information\n\n- [**PyPI**](https://pypi.org/project/uapi/)\n- [**Source Code**](https://github.com/Tinche/uapi)\n- [**Documentation**](https://uapi.threeofwands.com)\n- [**Changelog**](https://uapi.threeofwands.com/en/latest/changelog.html)\n\n## License\n\n_uapi_ is written by [Tin Tvrtković](https://threeofwands.com/) and distributed under the terms of the [Apache-2.0](https://spdx.org/licenses/Apache-2.0.html) license.\n","funding_links":[],"categories":["Micro-frameworks","Extensions"],"sub_categories":["More","API (REST, GraphQL...)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTinche%2Fuapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTinche%2Fuapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTinche%2Fuapi/lists"}