Squashed 'paste-framework/' content from commit 34e8684

git-subtree-dir: paste-framework
git-subtree-split: 34e8684c4bc3cebbe177509f42ab4ef5b5425a7a
This commit is contained in:
zwf
2026-06-02 19:09:22 +08:00
commit 4729698049
107 changed files with 21484 additions and 0 deletions
+132
View File
@@ -0,0 +1,132 @@
[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"