Merge commit '47296980495f8bbfc9493e93de85dd62de6fa6b9' as 'paste-framework'
This commit is contained in:
@@ -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"
|
||||
Reference in New Issue
Block a user