pyproject.toml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. [build-system]
  2. requires = ["setuptools>=77.0.0"]
  3. build-backend = "setuptools.build_meta"
  4. [project]
  5. name = "dulwich"
  6. description = "Python Git Library"
  7. readme = "README.rst"
  8. authors = [{name = "Jelmer Vernooij", email = "jelmer@jelmer.uk"}]
  9. license = "Apache-2.0 OR GPL-2.0-or-later"
  10. keywords = ["vcs", "git"]
  11. classifiers = [
  12. "Development Status :: 4 - Beta",
  13. "Programming Language :: Python :: 3.9",
  14. "Programming Language :: Python :: 3.10",
  15. "Programming Language :: Python :: 3.11",
  16. "Programming Language :: Python :: 3.12",
  17. "Programming Language :: Python :: 3.13",
  18. "Programming Language :: Python :: Implementation :: CPython",
  19. "Programming Language :: Python :: Implementation :: PyPy",
  20. "Operating System :: POSIX",
  21. "Operating System :: Microsoft :: Windows",
  22. "Topic :: Software Development :: Version Control",
  23. ]
  24. requires-python = ">=3.9"
  25. dependencies = [
  26. "urllib3>=1.25",
  27. 'typing_extensions >=4.0 ; python_version < "3.12"',
  28. ]
  29. dynamic = ["version"]
  30. license-files = ["COPYING"]
  31. [project.urls]
  32. Homepage = "https://www.dulwich.io/"
  33. Repository = "https://www.dulwich.io/code/"
  34. GitHub = "https://github.com/dulwich/dulwich"
  35. "Bug Tracker" = "https://github.com/dulwich/dulwich/issues"
  36. [project.optional-dependencies]
  37. fastimport = ["fastimport"]
  38. https = ["urllib3>=1.24.1"]
  39. pgp = ["gpg"]
  40. paramiko = ["paramiko"]
  41. colordiff = ["rich"]
  42. dev = [
  43. "ruff==0.12.9",
  44. "mypy==1.17.0",
  45. "dissolve>=0.1.1"
  46. ]
  47. merge = ["merge3"]
  48. fuzzing = ["atheris"]
  49. patiencediff = ["patiencediff"]
  50. [project.scripts]
  51. dulwich = "dulwich.cli:main"
  52. [tool.mypy]
  53. ignore_missing_imports = true
  54. [[tool.mypy.overrides]]
  55. module = "atheris"
  56. ignore_missing_imports = true
  57. [tool.setuptools]
  58. packages = [
  59. "dulwich",
  60. "dulwich.cloud",
  61. "dulwich.contrib",
  62. "dulwich.tests",
  63. ]
  64. include-package-data = true
  65. zip-safe = false
  66. script-files = [
  67. "bin/dul-receive-pack",
  68. "bin/dul-upload-pack",
  69. ]
  70. [tool.setuptools.dynamic]
  71. version = {attr = "dulwich.__version__"}
  72. [tool.ruff.lint]
  73. select = [
  74. "ANN",
  75. "D",
  76. "E",
  77. "F",
  78. "I",
  79. "PIE",
  80. "UP",
  81. "RSE",
  82. "RUF",
  83. ]
  84. ignore = [
  85. "ANN001",
  86. "ANN002",
  87. "ANN003",
  88. "ANN201",
  89. "ANN202",
  90. "ANN204",
  91. "ANN205",
  92. "ANN206",
  93. "E501", # line too long
  94. "UP007", # Use X | Y for type annotations (Python 3.10+ syntax, but we support 3.9+)
  95. ]
  96. [tool.ruff.lint.pydocstyle]
  97. convention = "google"
  98. [tool.ruff.lint.per-file-ignores]
  99. "tests/**/*.py" = ["D"] # Don't require docstrings in tests
  100. "fuzzing/**/*.py" = ["D"] # Don't require docstrings in fuzzing
  101. "examples/**/*.py" = ["D"] # Don't require docstrings in examples
  102. "devscripts/**/*.py" = ["D"] # Don't require docstrings in devscripts
  103. "docs/conf.py" = ["D"] # Don't require docstrings in docs config
  104. "setup.py" = ["D"] # Don't require docstrings in setup.py
  105. [tool.cibuildwheel]
  106. skip = "cp314-*"
  107. environment = {PATH="$HOME/.cargo/bin:$PATH"}
  108. before-build = "pip install -U setuptools-rust && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && rustup show"
  109. [tool.cibuildwheel.linux]
  110. skip = "*-musllinux_* cp314-*"
  111. archs = ["auto", "aarch64"]
  112. before-build = "pip install -U setuptools-rust && yum -y install libatomic && curl https://sh.rustup.rs -sSf | sh -s -- --profile=minimal -y && rustup show"
  113. [tool.cibuildwheel.macos]
  114. archs = ["auto", "universal2", "x86_64", "arm64"]
  115. before-all = "rustup target add x86_64-apple-darwin aarch64-apple-darwin"
  116. skip = """\
  117. cp39-macosx_x86_64 cp39-macosx_universal2 \
  118. cp310-macosx_x86_64 cp310-macosx_universal2 \
  119. cp311-macosx_x86_64 cp311-macosx_universal2 \
  120. cp312-macosx_x86_64 cp312-macosx_universal2 \
  121. cp313-macosx_x86_64 cp313-macosx_universal2 \
  122. cp314-macosx_x86_64 cp314-macosx_universal2 \
  123. """