pyproject.toml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. arrow = ["pyarrow>=16.0.0,<19.0"]
  33. mssql = ["pyodbc>=4"]
  34. test = ["pytest>=6.0"]
  35. [project.scripts]
  36. taipy = "taipy._entrypoint:_entrypoint"
  37. [project.urls]
  38. Homepage = "https://www.taipy.io"
  39. Documentation = "https://docs.taipy.io"
  40. Source = "https://github.com/Avaiga/taipy"
  41. Download = "https://pypi.org/project/taipy/#files"
  42. Tracker = "https://github.com/Avaiga/taipy/issues"
  43. Security = "https://github.com/Avaiga/taipy?tab=security-ov-file#readme"
  44. [tool.ruff]
  45. exclude = [
  46. ".git",
  47. "__pycache__",
  48. "setup.py",
  49. "build",
  50. "dist",
  51. "releases",
  52. ".venv",
  53. ".mypy_cache",
  54. ".pytest_cache",
  55. ".vscode",
  56. ".github",
  57. ]
  58. line-length = 120
  59. indent-width = 4
  60. [tool.ruff.lint]
  61. select = [
  62. "E", # pycodestyle errors
  63. "F", # pyflakes errors
  64. "W", # pycodestyle warnings
  65. "C", # mccabe complexity checker
  66. "B", # bugbear best practices checker
  67. "T", # mypy type errors
  68. "B", # flake8-bugbear best practices checker
  69. "I001", # isort import order
  70. ]
  71. ignore = []
  72. # Allow fix for all enabled rules (when `--fix`) is provided.
  73. fixable = ["ALL"]
  74. unfixable = []
  75. [tool.ruff.lint.per-file-ignores]
  76. "__init__.py" = ["F401", "F403"] # unused import
  77. "_init.py" = ["F401", "F403"] # unused import
  78. "taipy/common/config/stubs/pyi_header.py" = ["F401", "F403"] # unused import
  79. "taipy/templates/*" = ["F401", "F403", "T201"] # unused import, `print` found
  80. "taipy/gui/utils/types.py" = ["B024"] # abstract base class with no abstract methods
  81. [tool.ruff.lint.mccabe]
  82. max-complexity = 18
  83. [tool.ruff.lint.pydocstyle]
  84. convention = "google"
  85. [tool.mypy]
  86. ignore_missing_imports = true
  87. implicit_optional = true
  88. namespace_packages = false
  89. exclude = "(taipy/templates/|tools/|doc/gui/examples/.*/builder.py)"
  90. follow_imports = "skip"
  91. [tool.pyright]
  92. [tool.codespell]
  93. skip = '.git,*.pdf,*.svg,go.sum,package-lock.json,*.css'
  94. check-hidden = true
  95. ignore-regex = '^\s*"image/\S+": ".*|\b(inPort|anId|IST|Opps|Rouge|notifAction)\b'
  96. # some unfortunate names for variables
  97. ignore-words-list = 'ags,selt'