puffpastry - 轻量级Python依赖注入框架
项目描述
:bread: puffpastry
一个轻量级、直观的Pythonic依赖注入框架。
亮点
- :mushroom: 微型框架,开销极小 - 单文件实现和少量公共API方法,最小化第三方包需求。
- :full_moon: 单元测试覆盖所有核心功能,使用ruff和pre-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 查看哈希值)
关闭
puffpastry-0.0.3.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 66ad0bf522d307bb58d6d16b294be45179fdf53aad5b8a7bc05d5af7d3c338f0 |
|
MD5 | 07cb5429c768a0dcb571b6604f986d69 |
|
BLAKE2b-256 | 412b0fb9e0a1272b8867c8f0d277e573dc0398391558430ea70c5bb0dc718167 |
关闭
puffpastry-0.0.3-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9fc11d951be53c0cc4a88550085b35df25ae7c70228cb9d752b0443ceefa22ce |
|
MD5 | 72cbdba6d331501e666a937205a0853c |
|
BLAKE2b-256 | 07286672f8b1ba48bc83acfb0a0f25a295e33fc862a3f08c2cdcebf7b3389007 |