mirror of
https://github.com/jo1gi/grawlix.git
synced 2026-06-11 00:34:59 -06:00
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.
This commit is contained in:
parent
885cf1e26c
commit
8f8b955ff4
@ -1,7 +1,7 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
import tomli
|
||||
import appdirs
|
||||
from platformdirs import user_config_dir
|
||||
import os
|
||||
|
||||
|
||||
@ -27,7 +27,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:
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
12
shell.nix
12
shell.nix
@ -2,22 +2,18 @@ with import <nixpkgs> {};
|
||||
|
||||
let
|
||||
blackboxprotobuf = python3Packages.buildPythonPackage rec {
|
||||
pname = "blackboxprotobuf";
|
||||
version = "1.0.1";
|
||||
pname = "bbpb";
|
||||
version = "1.4.2";
|
||||
|
||||
src = python3Packages.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-IztxTmwkzp0cILhxRioiCvkXfk/sAcG3l6xauGoeHOo=";
|
||||
sha256 = "03446991bc500cfc9dd2049e6cc9489979e157c5ecb793e27936ab3d579d3496";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
protobuf
|
||||
];
|
||||
|
||||
patchPhase = ''
|
||||
sed 's/protobuf==3.10.0/protobuf/' requirements.txt > requirements.txt
|
||||
'';
|
||||
|
||||
doCheck = false;
|
||||
};
|
||||
ebooklib = python3Packages.buildPythonPackage rec {
|
||||
@ -36,13 +32,13 @@ in
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
(python3.withPackages(ps: with ps; [
|
||||
appdirs
|
||||
beautifulsoup4
|
||||
blackboxprotobuf
|
||||
ebooklib
|
||||
httpx
|
||||
importlib-resources
|
||||
lxml
|
||||
platformdirs
|
||||
pycryptodome
|
||||
rich
|
||||
tomli
|
||||
|
||||
Loading…
Reference in New Issue
Block a user