mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2024-12-10 10:39:26 -05:00
d192eb5c48
Some checks failed
CodeQL / Analyze (python) (push) Has been cancelled
Build Debian package / build (push) Has been cancelled
Build Docker image / buildx (push) Has been cancelled
Deploy static content to Pages / deploy (push) Has been cancelled
Build Homebrew package / build (push) Has been cancelled
Build GitHub Pages website / build (push) Has been cancelled
Run linters / lint (push) Has been cancelled
Build Pip package / build (push) Has been cancelled
Run tests / python_tests (ubuntu-22.04, 3.11) (push) Has been cancelled
Run tests / docker_tests (push) Has been cancelled
Build GitHub Pages website / deploy (push) Has been cancelled
326 lines
10 KiB
TOML
326 lines
10 KiB
TOML
[project]
|
|
name = "archivebox"
|
|
version = "0.8.6rc2"
|
|
requires-python = ">=3.10"
|
|
description = "Self-hosted internet archiving solution."
|
|
authors = [{name = "Nick Sweeting", email = "pyproject.toml@archivebox.io"}]
|
|
license = {text = "MIT"}
|
|
readme = "README.md"
|
|
keywords = ["internet archiving", "web archiving", "digipres", "warc", "preservation", "backups", "archiving", "web", "bookmarks", "puppeteer", "browser", "download"]
|
|
classifiers = [
|
|
"Development Status :: 4 - Beta",
|
|
"Environment :: Console",
|
|
"Environment :: Web Environment",
|
|
"Framework :: Django",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Education",
|
|
"Intended Audience :: End Users/Desktop",
|
|
"Intended Audience :: Information Technology",
|
|
"Intended Audience :: Legal Industry",
|
|
"Intended Audience :: System Administrators",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Natural Language :: English",
|
|
"Operating System :: OS Independent",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Internet :: WWW/HTTP",
|
|
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
|
|
"Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
|
|
"Topic :: Sociology :: History",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
"Topic :: System :: Archiving",
|
|
"Topic :: System :: Archiving :: Backup",
|
|
"Topic :: System :: Recovery Tools",
|
|
"Topic :: Utilities",
|
|
"Typing :: Typed",
|
|
]
|
|
|
|
|
|
dependencies = [
|
|
# ... archivebox/pkgs/* # see vendored libs here
|
|
############# Django / Core Libraries #############
|
|
"setuptools>=74.1.0",
|
|
"django>=5.1.1,<6.0",
|
|
"django-ninja>=1.3.0",
|
|
"django-extensions>=3.2.3",
|
|
"mypy-extensions>=1.0.0",
|
|
"typing_extensions>=4.12.2",
|
|
"channels[daphne]>=4.1.0",
|
|
"django-signal-webhooks>=0.3.0",
|
|
"django-admin-data-views>=0.4.1",
|
|
"django-object-actions>=4.3.0",
|
|
"django-charid-field>=0.4",
|
|
"django-pydantic-field>=0.3.10",
|
|
"django-jsonform>=2.22.0",
|
|
"django-stubs>=5.0.4",
|
|
"django-huey>=1.2.1",
|
|
"django-huey-monitor>=0.9.0",
|
|
############# Python Helper Libraries ############
|
|
"pluggy>=1.5.0",
|
|
"requests>=2.32.3",
|
|
"dateparser>=1.2.0",
|
|
"tzdata>=2024.2", # needed for dateparser {TZ: UTC} on some systems: https://github.com/ArchiveBox/ArchiveBox/issues/1553
|
|
"feedparser>=6.0.11",
|
|
"w3lib>=2.2.1",
|
|
"rich>=13.8.0",
|
|
"rich-argparse>=1.5.2",
|
|
"ulid-py>=1.1.0",
|
|
"typeid-python>=0.3.1",
|
|
"psutil>=6.0.0",
|
|
"supervisor>=4.2.5",
|
|
"python-crontab>=3.2.0", # for: archivebox schedule
|
|
"croniter>=3.0.3", # for: archivebox schedule
|
|
"ipython>=8.27.0", # for: archivebox shell
|
|
"py-machineid>=0.6.0", # for: machine/detect.py calculating machine guid
|
|
"python-benedict[io,parse]>=0.33.2",
|
|
"pydantic-settings>=2.5.2",
|
|
"atomicwrites==1.4.1",
|
|
"django-taggit==6.1.0",
|
|
"base32-crockford==0.3.0",
|
|
"platformdirs>=4.3.6",
|
|
"abx-pkg>=0.6.0",
|
|
"pocket>=0.3.6",
|
|
"sonic-client>=1.0.0",
|
|
"yt-dlp>=2024.8.6", # for: media"
|
|
############# Plugin Dependencies ################
|
|
"abx>=0.1.0",
|
|
"abx-spec-abx-pkg>=0.1.1",
|
|
"abx-spec-config>=0.1.0",
|
|
"abx-spec-archivebox>=0.1.0",
|
|
"abx-spec-django>=0.1.0",
|
|
"abx-spec-extractor>=0.1.0",
|
|
"abx-spec-searchbackend>=0.1.0",
|
|
"abx-plugin-default-binproviders>=2024.10.24",
|
|
"abx-plugin-pip>=2024.10.24",
|
|
"abx-plugin-npm>=2024.10.24",
|
|
"abx-plugin-playwright>=2024.10.24",
|
|
"abx-plugin-puppeteer>=2024.10.28",
|
|
"abx-plugin-ripgrep-search>=2024.10.28",
|
|
"abx-plugin-sqlitefts-search>=2024.10.28",
|
|
"abx-plugin-sonic-search>=2024.10.28",
|
|
"abx-plugin-ldap-auth>=2024.10.28",
|
|
"abx-plugin-curl>=2024.10.27",
|
|
"abx-plugin-wget>=2024.10.28",
|
|
"abx-plugin-git>=2024.10.28",
|
|
"abx-plugin-chrome>=2024.10.28",
|
|
"abx-plugin-ytdlp>=2024.10.28",
|
|
"abx-plugin-title>=2024.10.27",
|
|
"abx-plugin-favicon>=2024.10.27",
|
|
# "abx-plugin-headers>=2024.10.27",
|
|
"abx-plugin-archivedotorg>=2024.10.28",
|
|
"abx-plugin-singlefile>=2024.10.28",
|
|
"abx-plugin-readability>=2024.10.28",
|
|
"abx-plugin-mercury>=2024.10.28",
|
|
"abx-plugin-htmltotext>=2024.10.28",
|
|
"python-statemachine>=2.3.6",
|
|
"click>=8.1.7",
|
|
"rich-click>=1.8.4",
|
|
"blake3>=1.0.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
sonic = [
|
|
# 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
|
|
# curl -fsSL https://packagecloud.io/valeriansaliou/sonic/gpgkey | gpg --dearmor -o /usr/share/keyrings/valeriansaliou_sonic.gpg
|
|
# apt install sonic
|
|
# no-op, now included by default:
|
|
# "sonic-client>=1.0.0",
|
|
]
|
|
ldap = [
|
|
# apt install libsasl2-dev python-dev-is-python3 libldap2-dev libssl-dev
|
|
"python-ldap>=3.4.3",
|
|
"django-auth-ldap>=4.1.0",
|
|
]
|
|
debug = [
|
|
# packages needed for running with DEBUG=True
|
|
"django-debug-toolbar>=4.4.6",
|
|
"djdt_flamegraph>=0.2.13",
|
|
"ipdb>=0.13.13",
|
|
"requests-tracker>=0.3.3",
|
|
"django-autotyping>=0.5.1",
|
|
]
|
|
all = [
|
|
"archivebox[sonic,ldap,debug]"
|
|
]
|
|
|
|
[tool.uv]
|
|
environments = ["sys_platform == 'darwin'", "sys_platform == 'linux'"]
|
|
package = true
|
|
# compile-bytecode = true
|
|
dev-dependencies = [
|
|
### BUILD
|
|
"uv>=0.4.26",
|
|
"pip>=24.2",
|
|
"setuptools>=75.1.0",
|
|
"wheel>=0.44.0",
|
|
"bumpver>=2023.1129",
|
|
#"homebrew-pypi-poet>=0.10.0", # for: generating archivebox.rb brewfile list of python packages
|
|
### DOCS
|
|
"recommonmark>=0.7.1",
|
|
"sphinx>=8.1.3",
|
|
"sphinx-rtd-theme>=2.0.0",
|
|
"myst-parser>=4.0.0",
|
|
"sphinx-autodoc2>=0.5.0",
|
|
"linkify-it-py>=2.0.3",
|
|
### DEBUGGING
|
|
"django-debug-toolbar>=4.4.6",
|
|
"requests-tracker>=0.3.3",
|
|
"djdt_flamegraph>=0.2.13",
|
|
"ipdb>=0.13.13",
|
|
"logfire[django]>=0.51.0",
|
|
"opentelemetry-instrumentation-django>=0.47b0",
|
|
"opentelemetry-instrumentation-sqlite3>=0.47b0",
|
|
"viztracer>=0.17.0", # usage: viztracer ../.venv/bin/archivebox manage check
|
|
# "snakeviz", # usage: python -m cProfile -o flamegraph.prof ../.venv/bin/archivebox manage check
|
|
### TESTING
|
|
"pytest>=8.3.3",
|
|
"bottle>=0.13.1",
|
|
### LINTING
|
|
"ruff>=0.6.6",
|
|
"flake8>=7.1.1",
|
|
"mypy>=1.11.2",
|
|
]
|
|
|
|
[tool.uv.sources]
|
|
# abx-pkg = { workspace = true }
|
|
|
|
abx = { workspace = true }
|
|
abx-spec-abx-pkg = { workspace = true }
|
|
abx-spec-config = { workspace = true }
|
|
abx-spec-archivebox = { workspace = true }
|
|
abx-spec-django = { workspace = true }
|
|
abx-spec-extractor = { workspace = true }
|
|
abx-spec-searchbackend = { workspace = true }
|
|
|
|
abx-plugin-default-binproviders = { workspace = true }
|
|
abx-plugin-pip = { workspace = true }
|
|
abx-plugin-npm = { workspace = true }
|
|
abx-plugin-playwright = { workspace = true }
|
|
abx-plugin-puppeteer = { workspace = true }
|
|
abx-plugin-ripgrep-search = { workspace = true }
|
|
abx-plugin-sqlitefts-search = { workspace = true }
|
|
abx-plugin-sonic-search = { workspace = true }
|
|
abx-plugin-ldap-auth = { workspace = true }
|
|
|
|
abx-plugin-curl = { workspace = true }
|
|
abx-plugin-wget = { workspace = true }
|
|
abx-plugin-git = { workspace = true }
|
|
abx-plugin-chrome = { workspace = true }
|
|
abx-plugin-ytdlp = { workspace = true }
|
|
|
|
abx-plugin-title = { workspace = true }
|
|
abx-plugin-favicon = { workspace = true }
|
|
# abx-plugin-headers = { workspace = true }
|
|
abx-plugin-archivedotorg = { workspace = true }
|
|
|
|
abx-plugin-singlefile = { workspace = true }
|
|
abx-plugin-readability = { workspace = true }
|
|
abx-plugin-mercury = { workspace = true }
|
|
abx-plugin-htmltotext = { workspace = true }
|
|
|
|
|
|
[tool.uv.workspace]
|
|
members = ["archivebox/pkgs/*"]
|
|
exclude = ["archivebox/pkgs/__pycache__"]
|
|
|
|
[tool.uv.pip]
|
|
all-extras = true
|
|
python-version = "3.10"
|
|
# compile-bytecode = true
|
|
|
|
[build-system]
|
|
requires = ["pdm-backend"]
|
|
build-backend = "pdm.backend"
|
|
# https://github.com/astral-sh/uv/issues/3957
|
|
|
|
[tool.setuptools]
|
|
packages = ["archivebox"]
|
|
package-dir = {"archivebox" = "archivebox"}
|
|
|
|
[tool.ruff]
|
|
line-length = 140
|
|
target-version = "py310"
|
|
src = ["archivebox"]
|
|
exclude = ["*.pyi", "typings/", "migrations/"]
|
|
|
|
# https://docs.astral.sh/ruff/rules/
|
|
[tool.ruff.lint]
|
|
ignore = ["E731", "E303", "E266", "E241", "E222"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = [ "tests" ]
|
|
|
|
[tool.mypy]
|
|
mypy_path = "archivebox,archivebox/typings"
|
|
namespace_packages = true
|
|
explicit_package_bases = true
|
|
# follow_imports = "silent"
|
|
# ignore_missing_imports = true
|
|
# disallow_incomplete_defs = true
|
|
# disallow_untyped_defs = true
|
|
# disallow_untyped_decorators = true
|
|
# exclude = "tests/.*"
|
|
plugins = ["mypy_django_plugin.main"]
|
|
|
|
[tool.django-stubs]
|
|
django_settings_module = "core.settings"
|
|
|
|
[tool.pyright]
|
|
include = [
|
|
"archivebox",
|
|
]
|
|
exclude = [
|
|
".venv",
|
|
"**/*.pyi",
|
|
"**/__init__.pyi",
|
|
"**/node_modules",
|
|
"**/__pycache__",
|
|
"**/migrations",
|
|
]
|
|
stubPath = "./archivebox/typings"
|
|
venvPath = "."
|
|
venv = ".venv"
|
|
# ignore = ["src/oldstuff"]
|
|
# defineConstant = { DEBUG = true }
|
|
reportMissingImports = true
|
|
reportMissingTypeStubs = false
|
|
pythonVersion = "3.10"
|
|
pythonPlatform = "Linux"
|
|
|
|
|
|
[project.scripts]
|
|
archivebox = "archivebox.cli:main"
|
|
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/ArchiveBox/ArchiveBox"
|
|
Source = "https://github.com/ArchiveBox/ArchiveBox"
|
|
Documentation = "https://github.com/ArchiveBox/ArchiveBox/wiki"
|
|
"Bug Tracker" = "https://github.com/ArchiveBox/ArchiveBox/issues"
|
|
Changelog = "https://github.com/ArchiveBox/ArchiveBox/releases"
|
|
Roadmap = "https://github.com/ArchiveBox/ArchiveBox/wiki/Roadmap"
|
|
Community = "https://github.com/ArchiveBox/ArchiveBox/wiki/Web-Archiving-Community"
|
|
Demo = "https://demo.archivebox.io"
|
|
Donate = "https://github.com/ArchiveBox/ArchiveBox/wiki/Donations"
|
|
|
|
|
|
|
|
[tool.bumpver]
|
|
current_version = "v0.8.5rc53"
|
|
version_pattern = "vMAJOR.MINOR.PATCH[PYTAGNUM]"
|
|
commit_message = "bump version {old_version} -> {new_version}"
|
|
tag_message = "{new_version}"
|
|
tag_scope = "default"
|
|
pre_commit_hook = ""
|
|
post_commit_hook = ""
|
|
commit = true
|
|
tag = true
|
|
push = true
|
|
|
|
[tool.bumpver.file_patterns]
|
|
"pyproject.toml" = [
|
|
'current_version = "{version}"',
|
|
'version = "{pep440_version}"',
|
|
]
|