[build-system] requires = ["setuptools>=69", "wheel"] build-backend = "setuptools.build_meta" [project] name = "iti-flask" dynamic = ["version"] description = "iTi-Flask is a lightweight APIFlask backend foundation for business applications." readme = "README.md" requires-python = ">=3.11" license = "MIT" keywords = ["apiflask", "flask", "backend", "framework"] authors = [{ name = "NoahLan", email = "6995syu@163.com" }] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", ] dependencies = [ "flask>=3.1.0", "apiflask>=2.4.0", "flask-cors>=6.0.0", "flask-sqlalchemy>=3.1.0", "SQLAlchemy>=2.0.0", "flask-migrate>=4.1.0", "flask-marshmallow>=1.3.0", "Flask-JWT-Extended>=4.7.0", "Flask-Limiter>=4.0.0", "flask-moment>=1.0.0", "Flask-Caching>=2.3.0", "validators>=0.35.0", "marshmallow>=4.0.0", "marshmallow-sqlalchemy>=1.4.0", "marshmallow-dataclass>=8.7.0", "Werkzeug>=3.1.0", "python-dotenv>=1.0.0", "httpx>=0.27.0", "tenacity>=8.2.0", ] [project.optional-dependencies] mysql = ["PyMySQL>=1.1.0"] storage-aliyun = ["oss2>=2.19.1"] storage-tencent = ["cos-python-sdk-v5>=1.9.38"] storage-qiniu = ["qiniu>=7.17.0"] storage-huawei = ["esdk-obs-python>=3.25.8"] storage-s3 = ["boto3>=1.40.62"] storage-minio = ["minio>=7.2.18"] erp = ["pyodbc>=5.3.0"] excel = ["pandas>=2.3.3", "openpyxl>=3.1.5"] image = ["Pillow>=12.0.0"] prod = ["waitress>=2.1.0"] dev = [ "mypy>=1.0.0", "pytest>=7.0.0", "pytest-cov>=4.0.0", "pytest-mock>=3.0.0", "pytest-asyncio>=0.21.0", "watchdog>=6.0.0", ] [project.urls] Documentation = "https://github.com/NoahLan/iti-flask#readme" Issues = "https://github.com/NoahLan/iti-flask/issues" Source = "https://github.com/NoahLan/iti-flask" [tool.setuptools.dynamic] version = { attr = "iti.__about__.__version__" } [tool.setuptools.packages.find] include = ["iti*"] [tool.setuptools.package-data] iti = [ "framework_migrations/versions/*.py", "templates/**/*.html", "static/favicon.ico", "static/images/*", ] [tool.setuptools.exclude-package-data] iti = [ ".env*", "runtime/*", "static/dist/*", "**/__pycache__/*", ] [tool.coverage.run] source_pkgs = ["iti", "tests"] branch = true parallel = true omit = ["iti/__about__.py"] [tool.coverage.paths] iti = ["iti", "*/iti"] tests = ["tests", "*/tests"] [tool.coverage.report] exclude_lines = ["no cov", "if __name__ == .__main__.:", "if TYPE_CHECKING:"] [tool.mypy] python_version = "3.11" ignore_missing_imports = true warn_unused_configs = true files = [ "iti/config.py", "iti/cli.py", "iti/modules", "iti/service_client", "iti/tasks", ] [[tool.mypy.overrides]] module = [ "iti.applications.*", ] follow_imports = "skip" [tool.pytest.ini_options] testpaths = ["tests"]