From 08af04ab326747f58a7bc974a401d4c2f09d4420 Mon Sep 17 00:00:00 2001 From: ^_^ <8480595+ballaballaballa@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:39:41 +0100 Subject: [PATCH] feat: migrate to bbpb and platformdirs, add dependency version constraints - Migrate from blackboxprotobuf to bbpb (new PyPI package name) - Update pyproject.toml and shell.nix dependencies - Import name remains 'blackboxprotobuf' (no code changes) - Migrate from appdirs to platformdirs - Replace deprecated appdirs with actively maintained platformdirs - Update grawlix/config.py to use platformdirs.user_config_dir - Update dependency declarations in pyproject.toml and shell.nix - Add minimum version constraints for all dependencies - Set requires-python = ">=3.9" (required by httpx and importlib.resources.files()) - Add Python version classifiers (3.9-3.13) - Specify minimum versions: beautifulsoup4>=4.9.0, bbpb>=1.0.0, EbookLib>=0.17, httpx>=0.23.0, importlib-resources>=5.0, lxml>=4.6.0, platformdirs>=3.0.0, pycryptodome>=3.10.0, rich>=10.0.0 - Make tomli conditional: only required for Python < 3.11 - Update shell.nix with correct SHA256 hash for bbpb 1.4.2 These changes ensure all dependencies meet minimum version requirements for Python 3.9+ compatibility and replace deprecated packages with actively maintained alternatives. --- grawlix/config.py | 4 ++-- pyproject.toml | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/grawlix/config.py b/grawlix/config.py index 68b9caa..12c19ee 100644 --- a/grawlix/config.py +++ b/grawlix/config.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from typing import Optional import tomli -import appdirs +from platformdirs import user_config_dir import os @@ -26,7 +26,7 @@ def load_config() -> Config: :returns: Config object """ - config_dir = appdirs.user_config_dir("grawlix", "jo1gi") + config_dir = user_config_dir("grawlix", "jo1gi") config_file = os.path.join(config_dir, "grawlix.toml") if os.path.exists(config_file): try: diff --git a/pyproject.toml b/pyproject.toml index 83ffec8..0dd718f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,21 +6,27 @@ authors = [ description = "CLI tool for downloading ebooks" readme = "README.md" keywords = ["ebook", "cli", "downloader"] +requires-python = ">=3.9" classifiers = [ "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", ] dependencies = [ - "appdirs", - "beautifulsoup4", - "blackboxprotobuf", - "EbookLib", - "httpx", - "importlib-resources", - "lxml", - "pycryptodome", - "rich", - "tomli", + "beautifulsoup4>=4.9.0", + "bbpb>=1.0.0", + "EbookLib>=0.17", + "httpx>=0.23.0", + "importlib-resources>=5.0", + "lxml>=4.6.0", + "platformdirs>=3.0.0", + "pycryptodome>=3.10.0", + "rich>=10.0.0", + "tomli>=1.0.0; python_version<'3.11'", ] dynamic = ["version"]