pyproject.toml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. [project]
  2. name = "archivebox"
  3. version = "0.8.2"
  4. package-dir = "archivebox"
  5. requires-python = ">=3.10,<3.13"
  6. platform = "py3-none-any"
  7. description = "Self-hosted internet archiving solution."
  8. authors = [{name = "Nick Sweeting", email = "pyproject.toml@archivebox.io"}]
  9. license = {text = "MIT"}
  10. readme = "README.md"
  11. # pdm install
  12. # pdm update --unconstrained
  13. dependencies = [
  14. # Last Bumped: 2024-08-20
  15. # Base Framework and Language Dependencies
  16. "setuptools>=69.5.1",
  17. "django>=5.0.4,<6.0",
  18. "django-ninja>=1.1.0",
  19. "django-extensions>=3.2.3",
  20. "mypy-extensions>=1.0.0",
  21. # Python Helper Libraries
  22. "requests>=2.31.0",
  23. "dateparser>=1.0.0",
  24. "feedparser>=6.0.11",
  25. "w3lib>=2.1.2",
  26. # Feature-Specific Dependencies
  27. "python-crontab>=3.0.0", # for: archivebox schedule
  28. "croniter>=2.0.5", # for: archivebox schedule
  29. "ipython>=8.23.0", # for: archivebox shell
  30. # Extractor Dependencies
  31. "yt-dlp>=2024.4.9", # for: media
  32. # "playwright>=1.43.0; platform_machine != 'armv7l'", # WARNING: playwright doesn't have any sdist, causes trouble on build systems that refuse to install wheel-only packages
  33. # TODO: add more extractors
  34. # - gallery-dl
  35. # - scihubdl
  36. # - See Github issues for more...
  37. "django-signal-webhooks>=0.3.0",
  38. "django-admin-data-views>=0.3.1",
  39. "ulid-py>=1.1.0",
  40. "typeid-python>=0.3.0",
  41. "django-charid-field>=0.4",
  42. "django-pydantic-field>=0.3.9",
  43. "django-jsonform>=2.22.0",
  44. "django-stubs>=5.0.2",
  45. ]
  46. homepage = "https://github.com/ArchiveBox/ArchiveBox"
  47. repository = "https://github.com/ArchiveBox/ArchiveBox"
  48. documentation = "https://github.com/ArchiveBox/ArchiveBox/wiki"
  49. keywords = ["internet archiving", "web archiving", "digipres", "warc", "preservation", "backups", "archiving", "web", "bookmarks", "puppeteer", "browser", "download"]
  50. classifiers = [
  51. "Development Status :: 4 - Beta",
  52. "Environment :: Console",
  53. "Environment :: Web Environment",
  54. "Framework :: Django",
  55. "Intended Audience :: Developers",
  56. "Intended Audience :: Education",
  57. "Intended Audience :: End Users/Desktop",
  58. "Intended Audience :: Information Technology",
  59. "Intended Audience :: Legal Industry",
  60. "Intended Audience :: System Administrators",
  61. "License :: OSI Approved :: MIT License",
  62. "Natural Language :: English",
  63. "Operating System :: OS Independent",
  64. "Programming Language :: Python :: 3",
  65. "Programming Language :: Python :: 3.10",
  66. "Programming Language :: Python :: 3.11",
  67. "Programming Language :: Python :: 3.12",
  68. "Topic :: Internet :: WWW/HTTP",
  69. "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
  70. "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
  71. "Topic :: Sociology :: History",
  72. "Topic :: Software Development :: Libraries :: Python Modules",
  73. "Topic :: System :: Archiving",
  74. "Topic :: System :: Archiving :: Backup",
  75. "Topic :: System :: Recovery Tools",
  76. "Topic :: Utilities",
  77. "Typing :: Typed",
  78. ]
  79. # dynamic = ["version"] # TODO: programatticaly fetch version from package.json at build time
  80. # pdm lock --group=':all'
  81. # pdm install -G:all
  82. # pdm update --group=':all' --unconstrained
  83. [project.optional-dependencies]
  84. sonic = [
  85. # echo "deb [signed-by=/usr/share/keyrings/valeriansaliou_sonic.gpg] https://packagecloud.io/valeriansaliou/sonic/debian/ bookworm main" > /etc/apt/sources.list.d/valeriansaliou_sonic.list
  86. # curl -fsSL https://packagecloud.io/valeriansaliou/sonic/gpgkey | gpg --dearmor -o /usr/share/keyrings/valeriansaliou_sonic.gpg
  87. # apt install sonic
  88. "sonic-client>=1.0.0",
  89. ]
  90. ldap = [
  91. # apt install libldap2-dev libsasl2-dev python3-ldap
  92. "python-ldap>=3.4.3",
  93. "django-auth-ldap>=4.1.0",
  94. ]
  95. # pdm lock --group=':all' --dev
  96. # pdm install -G:all --dev
  97. # pdm update --dev --unconstrained
  98. [build-system]
  99. requires = ["pdm-backend"]
  100. build-backend = "pdm.backend"
  101. [project.scripts]
  102. archivebox = "archivebox.cli:main"
  103. [tool.pytest.ini_options]
  104. testpaths = [ "tests" ]
  105. [tool.mypy]
  106. mypy_path = "archivebox,archivebox/typings"
  107. namespace_packages = true
  108. explicit_package_bases = true
  109. # follow_imports = "silent"
  110. # ignore_missing_imports = true
  111. # disallow_incomplete_defs = true
  112. # disallow_untyped_defs = true
  113. # disallow_untyped_decorators = true
  114. # exclude = "pdm/(pep582/|models/in_process/.+\\.py)"
  115. plugins = ["mypy_django_plugin.main"]
  116. [tool.django-stubs]
  117. django_settings_module = "core.settings"
  118. [tool.pyright]
  119. include = [
  120. "archivebox",
  121. ]
  122. exclude = [
  123. ".venv",
  124. "**/*.pyi",
  125. "**/__init__.pyi",
  126. "**/node_modules",
  127. "**/__pycache__",
  128. "**/migrations",
  129. "archivebox/vendor",
  130. ]
  131. stubPath = "./typings"
  132. venvPath = "."
  133. venv = ".venv"
  134. # ignore = ["src/oldstuff"]
  135. # defineConstant = { DEBUG = true }
  136. reportMissingImports = true
  137. reportMissingTypeStubs = false
  138. pythonVersion = "3.10"
  139. pythonPlatform = "Linux"
  140. [tool.pdm.dev-dependencies]
  141. build = [
  142. # "pdm", # usually installed by apt/brew, dont double-install with pip
  143. "setuptools>=69.5.1",
  144. "pip",
  145. "wheel",
  146. "homebrew-pypi-poet>=0.10.0", # for: generating archivebox.rb brewfile list of python packages
  147. ]
  148. docs = [
  149. "recommonmark",
  150. "sphinx",
  151. "sphinx-rtd-theme",
  152. ]
  153. debug = [
  154. "django-debug-toolbar",
  155. "djdt_flamegraph",
  156. "ipdb",
  157. "requests-tracker>=0.3.3",
  158. ]
  159. test = [
  160. "pytest",
  161. "bottle",
  162. ]
  163. lint = [
  164. "flake8",
  165. "mypy",
  166. ]
  167. dev = [
  168. "django-autotyping>=0.5.1",
  169. ]
  170. [tool.pdm.scripts]
  171. lint = "./bin/lint.sh"
  172. test = "./bin/test.sh"
  173. # all = {composite = ["lint mypackage/", "test -v tests/"]}
  174. [project.urls]
  175. Homepage = "https://github.com/ArchiveBox/ArchiveBox"
  176. Source = "https://github.com/ArchiveBox/ArchiveBox"
  177. Documentation = "https://github.com/ArchiveBox/ArchiveBox/wiki"
  178. "Bug Tracker" = "https://github.com/ArchiveBox/ArchiveBox/issues"
  179. Changelog = "https://github.com/ArchiveBox/ArchiveBox/releases"
  180. Roadmap = "https://github.com/ArchiveBox/ArchiveBox/wiki/Roadmap"
  181. Community = "https://github.com/ArchiveBox/ArchiveBox/wiki/Web-Archiving-Community"
  182. Demo = "https://demo.archivebox.io"
  183. Donate = "https://github.com/ArchiveBox/ArchiveBox/wiki/Donations"