# Poetry-managed development environment for DeDRM_tools. # # Note: the DeDRM and Obok plugins are distributed as calibre plugin zips and # run inside calibre's bundled Python interpreter -- they are NOT pip-installed. # This manifest therefore manages the *development* / standalone-CLI environment # (running the scripts outside calibre, testing, etc.) and documents the real # third-party dependency set, rather than producing a distributable package. # Hence `package-mode = false`. # # Dependencies provided by the calibre runtime (do not pip-install them here): # calibre, calibre_plugins, calibre_lzma, PyQt5 / PyQt4 # # Crypto: the code imports the `Cryptodome` namespace first (pycryptodomex, # actively maintained) and only falls back to the `Crypto` namespace if it is # missing. The legacy `Crypto` namespace is satisfied by the maintained # pycryptodome package as well, so the abandoned `pycrypto` package (unmaintained # since 2014, CVE-2013-7459) is not required and is intentionally not declared. [tool.poetry] package-mode = false [tool.poetry.dependencies] python = ">=3.8,<4.0" # Actively-maintained crypto library, exposes the `Cryptodome` namespace that # all crypto imports prefer. Replaces the abandoned `pycrypto`. pycryptodomex = ">=3.20" # XML handling for Adobe ADEPT / EPUB / PDF DRM (ineptepub, ineptpdf, # epubfontdecrypt, epubwatermark, ignoblekey*). lxml = ">=5.0" # erdr2pml (eReader/.pdb support) imports the stdlib `cgi` module, which was # removed in Python 3.13. This backport restores it so eReader decryption keeps # working at runtime; only installed on 3.13+ where the stdlib module is gone. legacy-cgi = { version = ">=2.6", python = ">=3.13" } # SQLite access for Nook (Barnes & Noble) Windows Store key extraction is only # needed by DeDRM_plugin/ignoblekeyWindowsStore.py. Kept in an optional group so # the base environment installs cleanly on platforms where it is not required. [tool.poetry.group.nook] optional = true [tool.poetry.group.nook.dependencies] apsw = ">=3.46" [tool.poetry.group.dev.dependencies] pytest = ">=8.0" [tool.pytest.ini_options] testpaths = ["tests"]