跳转到主要内容

puffpastry - 轻量级Python依赖注入框架

项目描述

CircleCI

:bread: puffpastry

一个轻量级、直观的Pythonic依赖注入框架。

亮点

  • :mushroom: 微型框架,开销极小 - 单文件实现和少量公共API方法,最小化第三方包需求。
  • :full_moon: 单元测试覆盖所有核心功能,使用ruffpre-commit确保代码库健康。
  • :snake: 兼容最新的Python 3.x版本

入门指南

要从PyPI安装,请使用pip

pip install puffpastry

以下示例展示了使用从环境(或从.env文件,如我们使用python-dotenv)读取的配置来引导webapp使用fastapi。当然,对于这种极简的单文件实现,依赖注入似乎多余;但对于跨多个文件的较大代码库,这是管理依赖和配置的绝佳方式。

from fastapi import FastAPI
from puffpastry import create, provides
from requests import get


class IpifyClient:
    def __init__(self, base_url):
        self.base_url = base_url

    def ipv4(self):
        return get(self.base_url).content.decode("utf8")


@provides("fastapi")
def fastapi_provider(app):
    return FastAPI()


@provides("ipify_client")
def ipify_client(app):
    # The base url will be read from IPIFY_BASE_URL env variable or .env file.
    # To run this example set this value to 'https://api.ipify.org'
    return IpifyClient(base_url=app.config.ipify_base_url)


@provides("home_route")
def home_route_provider(app):
    @app.fastapi.get("/")
    def home():
        public_ip = app.ipify_client.ipv4()

        return {"message": f"your public IP is {public_ip}"}


def create_app():
    return create("my_app").load("fastapi", "ipify_client", "home_route")


app = create_app().fastapi

您可以使用fastapi CLI运行此示例,假设您已将文件保存为app.py

fastapi dev app.py

有关更多用法示例,请参阅examples/。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。

源分布

puffpastry-0.0.3.tar.gz (5.7 KB 查看哈希值)

上传于

构建分发

puffpastry-0.0.3-py3-none-any.whl (4.6 kB 查看哈希值)

上传于 Python 3

由以下支持