132 lines
2.9 KiB
TOML
132 lines
2.9 KiB
TOML
[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" |