Files
2026-06-02 16:26:10 +08:00

132 lines
2.9 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "paste-framework"
version = "2.0.1"
description = "A production-ready lightweight Python framework with built-in RBAC, JWT, async tasks, Swagger, and modular utilities"
readme = "README.md"
requires-python = ">=3.11"
license = {text = "MIT"}
authors = [
{name = "Paste Contributors", email = "waynezwf@qq.com"},
]
keywords = ["framework", "tornado", "rbac", "jwt", "redis", "swagger"]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
"Topic :: Internet :: WWW/HTTP :: WSGI :: Server",
"Topic :: Software Development :: Libraries :: Application Frameworks",
]
dependencies = [
# --- Web 框架核心 ---
"tornado>=6.4",
# --- 数据库 / ORM ---
"sqlalchemy>=2.0.49,<3.0",
"PyMySQL>=1.1.0",
"aiomysql>=0.2.0",
# --- 安全 / JWT ---
"PyJWT>=1.7.1",
# --- Redis / 消息队列 ---
"redis>=5.2.1",
# --- 表单验证 ---
"WTForms>=3.2.1",
"tornado-wtforms>=0.0.1",
# --- 文件处理(PDF / SVG / Excel---
"weasyprint>=64.1",
"svgwrite>=1.4.2",
"pandas>=2.0.0",
"xlsxwriter>=3.0",
"openpyxl>=3.1.5",
# --- 日期 / 时间 ---
"python-dateutil>=2.8.0",
# --- 工具 / 序列化 ---
"PyYAML>=6.0.2",
"aiofiles>=23.0.0",
"psutil>=5.9.0",
# --- 通用 ---
"numpy>=1.24.0",
]
[project.optional-dependencies]
swagger = [
"tornado-swagger>=1.4.5",
]
async = [
"aiohttp>=3.13.0",
"aiosqlite>=0.21.0",
"aioquic>=1.2.0",
]
java = [
"javaobj-py3>=0.4.4",
]
chart = [
"matplotlib>=3.10.1",
"scipy>=1.14.0",
"seaborn>=0.13.2",
]
image = [
"pillow>=10.0.0",
"opencv-python>=4.11.0.86",
]
all = [
"paste-framework[swagger,async,java,chart,image]",
]
test = [
"pytest>=8.0.0",
"pytest-asyncio>=0.23.0",
"pytest-cov>=4.0.0",
"httpx>=0.25.0",
"httpx-sse>=0.4.0",
]
dev = [
"black>=24.0.0",
"flake8>=7.0.0",
"mypy>=1.0.0",
"pre-commit>=3.0.0",
]
[project.urls]
Homepage = "https://github.com/wayne-zwf/paste"
Documentation = "https://paste-framework.readthedocs.io"
Repository = "https://github.com/wayne-zwf/paste"
Changelog = "https://github.com/wayne-zwf/paste/blob/main/CHANGELOG.md"
[tool.setuptools.packages.find]
include = ["paste", "paste.*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = [
"--verbose",
"--cov=paste",
"--cov-report=term-missing",
"--cov-report=html",
"--asyncio-mode=auto",
]
[tool.black]
line-length = 120
target-version = ["py311"]
[tool.flake8]
max-line-length = 120
extend-ignore = ["E203", "W503"]
[project.scripts]
paste-hello = "examples.01_hello_world.main:main"
paste-task = "examples.04_tasks_service.task_service:start_service"