pyproject.toml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. [build-system]
  2. requires = ["setuptools>=76", "wheel"]
  3. build-backend = "setuptools.build_meta"
  4. [project]
  5. name = "taipy"
  6. description = "A 360° open-source platform from Python pilots to production-ready web apps."
  7. readme = "package_desc.md"
  8. requires-python = ">=3.9,<3.13"
  9. license = {text = "Apache-2.0"}
  10. authors = [{name = "Avaiga", email = "dev@taipy.io"}]
  11. keywords = ["taipy"]
  12. classifiers = [
  13. "Intended Audience :: Developers",
  14. "License :: OSI Approved :: Apache Software License",
  15. "Natural Language :: English",
  16. "Programming Language :: Python :: 3",
  17. "Programming Language :: Python :: 3.9",
  18. "Programming Language :: Python :: 3.10",
  19. "Programming Language :: Python :: 3.11",
  20. "Programming Language :: Python :: 3.12",
  21. ]
  22. dynamic = ["version", "dependencies"]
  23. [tool.setuptools.packages]
  24. find = {include = ["taipy", "taipy.*"]}
  25. [project.optional-dependencies]
  26. ngrok = ["pyngrok>=5.1,<6.0"]
  27. image = [
  28. "python-magic>=0.4.24,<0.5",
  29. "python-magic-bin>=0.4.14,<0.5",
  30. ]
  31. rdp = ["rdp>=0.8"]
  32. mssql = ["pyodbc>=4"]
  33. test = ["pytest>=6.0"]
  34. [project.scripts]
  35. taipy = "taipy._entrypoint:_entrypoint"
  36. [project.urls]
  37. Homepage = "https://www.taipy.io"
  38. Documentation = "https://docs.taipy.io"
  39. Source = "https://github.com/Avaiga/taipy"
  40. Download = "https://pypi.org/project/taipy/#files"
  41. Tracker = "https://github.com/Avaiga/taipy/issues"
  42. Security = "https://github.com/Avaiga/taipy?tab=security-ov-file#readme"
  43. [tool.ruff]
  44. exclude = [
  45. ".git",
  46. "__pycache__",
  47. "setup.py",
  48. "build",
  49. "dist",
  50. "releases",
  51. ".venv",
  52. ".mypy_cache",
  53. ".pytest_cache",
  54. ".vscode",
  55. ".github",
  56. ]
  57. line-length = 120
  58. indent-width = 4
  59. [tool.ruff.lint]
  60. select = [
  61. "E", # pycodestyle errors
  62. "F", # pyflakes errors
  63. "W", # pycodestyle warnings
  64. "C", # mccabe complexity checker
  65. "B", # bugbear best practices checker
  66. "T", # mypy type errors
  67. "B", # flake8-bugbear best practices checker
  68. "I001", # isort import order
  69. ]
  70. ignore = []
  71. # Allow fix for all enabled rules (when `--fix`) is provided.
  72. fixable = ["ALL"]
  73. unfixable = []
  74. [tool.ruff.lint.per-file-ignores]
  75. "__init__.py" = ["F401", "F403"] # unused import
  76. "_init.py" = ["F401", "F403"] # unused import
  77. "taipy/common/config/stubs/pyi_header.py" = ["F401", "F403"] # unused import
  78. "taipy/templates/*" = ["F401", "F403", "T201"] # unused import, `print` found
  79. "taipy/gui/utils/types.py" = ["B024"] # abstract base class with no abstract methods
  80. [tool.ruff.lint.mccabe]
  81. max-complexity = 18
  82. [tool.ruff.lint.pydocstyle]
  83. convention = "google"
  84. [tool.mypy]
  85. ignore_missing_imports = true
  86. implicit_optional = true
  87. namespace_packages = false
  88. exclude = "(taipy/templates/|tools/|doc/gui/examples/.*/builder.py)"
  89. follow_imports = "skip"
  90. [tool.pyright]
  91. [tool.codespell]
  92. skip = '.git,*.pdf,*.svg,go.sum,package-lock.json,*.css'
  93. check-hidden = true
  94. ignore-regex = '^\s*"image/\S+": ".*|\b(inPort|anId|IST|Opps|Rouge|notifAction)\b'
  95. # some unfortunate names for variables
  96. ignore-words-list = 'ags,selt'