pikepdf>=10.3.0
rich
defusedxml

[add-text]
reportlab

[barcode]
pypdfium2
zxing-cpp<4.0,>=3.0

[crop-visible]
pypdfium2

[delete-blank]
numpy

[dev]
pytest
pytest-xdist
pytest-mock
pytest-timeout
pytest-cov
pytest-randomly
pytest-repeat
pytest-bisect-tests
filelock
black
isort
ruff
hypothesis
PyMuPDF
reportlab
mypy
cryptography
types-setuptools
pdftl[full]

[dev-all]
pdftl[dev]
pdftl[docs]

[dev:python_version < "3.11"]
toml

[diff-text]
diff-match-patch
pypdfium2

[docs]
sphinx>=7.0
sphinx-rtd-theme
myst-parser

[dump-tables]
tablers

[dump-text]
pypdfium2

[export-fonts]
fonttools<5.0,>=4.0

[extras]
pdftl[add-text]
pdftl[barcode]
pdftl[crop-visible]
pdftl[delete-blank]
pdftl[diff-text]
pdftl[dump-tables]
pdftl[dump-text]
pdftl[export-fonts]
pdftl[flatten]
pdftl[highlight]
pdftl[import-fonts]
pdftl[modify-images]
pdftl[optimize-images]
pdftl[replacement-font]
pdftl[shell-completion]
pdftl[signing]
pdftl[simplify-vectors]
pdftl[subset-fonts]
pdftl[tag]
pdftl[yaml-bookmarks]

[flatten]
pypdfium2

[full]
pdftl[extras]

[highlight]
pypdfium2

[import-fonts]
fonttools<5.0,>=4.0

[modify-images]
numpy

[optimize-images]
ocrmypdf

[replacement-font]
fonttools<5.0,>=4.0

[shell-completion]
lark
cloudpickle

[signing]
pyhanko

[simplify-vectors]
numpy
numba

[subset-fonts]
fonttools<5.0,>=4.0

[tag]
opendataloader_pdf

[yaml-bookmarks]
pyyaml
