Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yezz123/fastapi-tag
Documented & Enhance the Metadata of your API ✨
https://github.com/yezz123/fastapi-tag
fastapi metadata openapi pydantic pydantic-v2
Last synced: 9 days ago
JSON representation
Documented & Enhance the Metadata of your API ✨
- Host: GitHub
- URL: https://github.com/yezz123/fastapi-tag
- Owner: yezz123
- License: mit
- Created: 2021-10-24T12:10:53.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-18T18:20:49.000Z (about 1 month ago)
- Last Synced: 2024-12-08T15:23:03.872Z (20 days ago)
- Topics: fastapi, metadata, openapi, pydantic, pydantic-v2
- Language: Python
- Homepage:
- Size: 130 KB
- Stars: 38
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# FastAPI Tag
Documented & Enhance the Metadata of your API ✨
A simple Package could be added to your FastAPI Project to enhance the metadata of your Project and documenting your API with more information.
---
**Source Code**:
**Install the project**: `pip install fastapi-tag`
---
## Features 🎉
- Add a tag to your API, which can be used to filter the API documentation.
- Add a description to your API, which can be used to describe the API.
- Add a version to your API, which can be used to describe the version of the API and app.
- Provide some others features like:
- `API_id`: A unique identifier for the API.
- `Audience`: The audience of the API (e.g. `public`, `internal`, `external`).
- Tested in python 3.8 and up.
- Last Version of FastAPI :rocket:## Usage 📚
- To Identify the Metadata of your API:
```py
from fastapi import FastAPI
from fastapi_tag.model import Contact, Metadata, Version
from fastapi_tag.application import Applicationapp = FastAPI()
def metadata(app):
return Metadata(
title="Hello World",
version=Version(app="v0.1.1", api="v0.1.0"),
description="A simple example of a FastAPI application.",
contact=Contact(
name="name",
url="http://test.com",
email=None
),
api_id="49786b4b-1889-46ec-bd72-27f332436e6f",
audience="company-internal",
)def app(metadata):
return Application("", metadata)
```- We have also `Problem` class thats depends on:
- `title`: The title of the problem.
- `status`: The status code of the problem.
- `detail`: A human-readable explanation specific to this occurrence of the problem.
- `instance`: A URI reference that identifies the specific occurrence of the problem.
- `type`: A URI reference that identifies the problem type.- `NameSpace` is a is a decorator that adds a route generator to the namespace object.
for example:
```py
from fastapi_tag.routers import Namespaceroute = Namespace([])
```## Development
### Setup environment
You should create a virtual environment and activate it:
> **Notes:** You need to have `python3.9` or higher installed.
I Use `uv` to manage virtual environments, you can install it with:
```bash
# Install uv
pip install uv# Create a virtual environment
uv venv# Activate the virtual environment
source .venv/bin/activate
```And then install the development dependencies:
```bash
# Install dependencies
uv pip install -e .[test,lint]
```### Run tests 🌝
You can run all the tests with:
```bash
bash scripts/tests.sh
```### Format the code 🍂
Execute the following command to apply `pre-commit` formatting:
```bash
bash scripts/format.sh
```## License 🍻
This project is licensed under the terms of the MIT license.