calibre-web: 0.6.22 -> 0.6.24 (#356882)

This commit is contained in:
kirillrdy
2025-03-16 17:31:41 +11:00
committed by GitHub
9 changed files with 519 additions and 54 deletions
+118 -54
View File
@@ -1,57 +1,24 @@
{ lib
, fetchFromGitHub
, nixosTests
, nix-update-script
, python3
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
nixosTests,
python3Packages,
}:
let
python = python3.override {
self = python;
packageOverrides = self: super: {
sqlalchemy = super.sqlalchemy_1_4;
};
};
in
python.pkgs.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "calibre-web";
version = "0.6.22";
version = "0.6.24";
pyproject = true;
src = fetchFromGitHub {
owner = "janeczku";
repo = "calibre-web";
rev = version;
hash = "sha256-nWZmDasBH+DW/+Cvw510mOv11CXorRnoBwNFpoKPErY=";
tag = version;
hash = "sha256-DYhlD3ly6U/e5cDlsubDyW1uKeCtB+HrpagJlNDJhyI=";
};
propagatedBuildInputs = with python.pkgs; [
advocate
apscheduler
babel
bleach
chardet
flask
flask-babel
flask-limiter
flask-login
flask-principal
flask-simpleldap
flask-wtf
iso-639
jsonschema
lxml
pypdf
python-magic
pytz
regex
requests
sqlalchemy
tornado
unidecode
wand
werkzeug
];
patches = [
# default-logger.patch switches default logger to /dev/stdout. Otherwise calibre-web tries to open a file relative
# to its location, which can't be done as the store is read-only. Log file location can later be configured using UI
@@ -69,24 +36,121 @@ python.pkgs.buildPythonApplication rec {
mv cps.py src/calibreweb/__init__.py
mv cps src/calibreweb
substituteInPlace setup.cfg \
--replace-fail "cps = calibreweb:main" "calibre-web = calibreweb:main"
substituteInPlace pyproject.toml \
--replace-fail 'cps = "calibreweb:main"' 'calibre-web = "calibreweb:main"'
'';
# Upstream repo doesn't provide any tests.
doCheck = false;
build-system = [ python3Packages.setuptools ];
dependencies = with python3Packages; [
apscheduler
babel
bleach
chardet
cryptography
flask
flask-babel
flask-httpauth
flask-limiter
flask-principal
flask-wtf
iso-639
lxml
netifaces-plus
pycountry
pypdf
python-magic
pytz
regex
requests
sqlalchemy
tornado
unidecode
urllib3
wand
];
optional-dependencies = {
comics = with python3Packages; [
comicapi
natsort
];
gdrive = with python3Packages; [
gevent
google-api-python-client
greenlet
httplib2
oauth2client
pyasn1-modules
# https://github.com/NixOS/nixpkgs/commit/bf28e24140352e2e8cb952097febff0e94ea6a1e
# pydrive2
pyyaml
rsa
uritemplate
];
gmail = with python3Packages; [
google-api-python-client
google-auth-oauthlib
];
# We don't support the goodreads feature, as the `goodreads` package is
# archived and depends on other long unmaintained packages (rauth & nose)
# goodreads = [ ];
kobo = with python3Packages; [ jsonschema ];
ldap = with python3Packages; [
flask-simpleldap
python-ldap
];
metadata = with python3Packages; [
faust-cchardet
html2text
markdown2
mutagen
py7zr
pycountry
python-dateutil
rarfile
scholarly
];
oauth = with python3Packages; [
flask-dance
sqlalchemy-utils
];
};
pythonRelaxDeps = [
"apscheduler"
"bleach"
"cryptography"
"flask"
"flask-limiter"
"lxml"
"pypdf"
"regex"
];
nativeCheckInputs = lib.flatten (lib.attrValues optional-dependencies);
pythonImportsCheck = [ "calibreweb" ];
passthru = {
tests.calibre-web = nixosTests.calibre-web;
tests = lib.optionalAttrs stdenv.hostPlatform.isLinux { inherit (nixosTests) calibre-web; };
updateScript = nix-update-script { };
};
meta = with lib; {
meta = {
description = "Web app for browsing, reading and downloading eBooks stored in a Calibre database";
homepage = "https://github.com/janeczku/calibre-web";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ pborzenkov ];
platforms = platforms.all;
changelog = "https://github.com/janeczku/calibre-web/releases/tag/${src.tag}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ pborzenkov ];
mainProgram = "calibre-web";
platforms = lib.platforms.all;
};
}
@@ -0,0 +1,83 @@
{
lib,
stdenv,
buildPythonPackage,
fetchFromGitHub,
importlib-metadata,
natsort,
pillow,
py7zr,
pycountry,
pyicu,
pytestCheckHook,
pythonOlder,
rapidfuzz,
rarfile,
setuptools,
setuptools-scm,
text2digits,
wheel,
wordninja,
}:
buildPythonPackage rec {
pname = "comicapi";
version = "3.2.0";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "comictagger";
repo = "comicapi";
rev = "2bf8332114e49add0bbc0fd3d85bdbba02de3d1a";
hash = "sha256-Cd3ILy/4PqWUj1Uu9of9gCpdVp2R6CXjPOuSXgrB894=";
};
build-system = [
setuptools
setuptools-scm
wheel
];
dependencies = [
importlib-metadata
natsort
pillow
pycountry
rapidfuzz
text2digits
wordninja
];
optional-dependencies = {
_7z = [ py7zr ];
all = [
py7zr
rarfile
] ++ lib.optional (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isLinux) pyicu;
cbr = [ rarfile ];
icu = lib.optional (stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isLinux) pyicu;
};
nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
pythonRelaxDeps = [ "pycountry" ];
disabledTests = [
# AssertionError
"test_copy_from_archive"
];
pythonImportsCheck = [ "comicapi" ];
meta = {
description = "Comic archive (cbr/cbz/cbt) and metadata utilities";
homepage = "https://github.com/comictagger/comicapi";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,95 @@
{
lib,
betamax,
blinker,
buildPythonPackage,
coverage,
fetchFromGitHub,
flask,
flask-caching,
flask-login,
flask-sqlalchemy,
flit,
freezegun,
oauthlib,
pallets-sphinx-themes,
pillow,
pytest,
pytest-mock,
pytestCheckHook,
requests,
requests-oauthlib,
responses,
sphinx,
sphinxcontrib-seqdiag,
sphinxcontrib-spelling,
sqlalchemy,
urlobject,
werkzeug,
}:
buildPythonPackage rec {
pname = "flask-dance";
version = "7.1.0";
pyproject = true;
src = fetchFromGitHub {
owner = "singingwolfboy";
repo = "flask-dance";
tag = "v${version}";
hash = "sha256-rKHC0G5S7l52QSrbbweMii68AZuBAgf6tYsJdPKIeUk=";
};
build-system = [ flit ];
dependencies = [
flask
oauthlib
requests
requests-oauthlib
urlobject
werkzeug
];
optional-dependencies = {
docs = [
betamax
pallets-sphinx-themes
pillow
sphinx
sphinxcontrib-seqdiag
sphinxcontrib-spelling
sqlalchemy
];
signals = [ blinker ];
sqla = [ sqlalchemy ];
test = [
betamax
coverage
flask-caching
flask-login
flask-sqlalchemy
freezegun
oauthlib
pytest
pytest-mock
responses
sqlalchemy
];
};
nativeCheckInputs = [ pytestCheckHook ] ++ lib.flatten (lib.attrValues optional-dependencies);
pythonImportsCheck = [ "flask_dance" ];
meta = {
description = "Doing the OAuth dance with style using Flask, requests, and oauthlib";
homepage = "https://github.com/singingwolfboy/flask-dance";
changelog = "https://github.com/singingwolfboy/flask-dance/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,37 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
pythonOlder,
setuptools,
wheel,
}:
buildPythonPackage rec {
pname = "netifaces-plus";
version = "0.12.4";
pyproject = true;
disabled = pythonOlder "3.6";
src = fetchFromGitHub {
owner = "tsukumijima";
repo = "netifaces-plus";
tag = "release_${lib.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-3CYAe0doWMagcUIN9+ikH9gEST9AqglSQDlZsKOMnC8=";
};
build-system = [
setuptools
wheel
];
pythonImportsCheck = [ "netifaces" ];
meta = {
description = "Portable network interface information";
homepage = "https://github.com/tsukumijima/netifaces-plus";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,69 @@
{
lib,
arrow,
beautifulsoup4,
bibtexparser,
buildPythonPackage,
deprecated,
fake-useragent,
fetchFromGitHub,
free-proxy,
httpx,
python-dotenv,
requests,
selenium,
setuptools,
sphinx-rtd-theme,
stem,
typing-extensions,
wheel,
}:
buildPythonPackage rec {
pname = "scholarly";
version = "1.7.11";
pyproject = true;
src = fetchFromGitHub {
owner = "scholarly-python-package";
repo = "scholarly";
tag = "v${version}";
hash = "sha256-yvew63tGwSjwseHK7wDqm26xiyCztUzxMqBpwwLD798=";
};
build-system = [
setuptools
wheel
];
dependencies = [
arrow
beautifulsoup4
bibtexparser
deprecated
fake-useragent
free-proxy
httpx
python-dotenv
requests
selenium
sphinx-rtd-theme
typing-extensions
];
optional-dependencies = {
tor = [ stem ];
};
nativeCheckInputs = lib.flatten (lib.attrValues optional-dependencies);
pythonImportsCheck = [ "scholarly" ];
meta = {
description = "Retrieve author and publication information from Google Scholar";
homepage = "https://scholarly.readthedocs.io/";
changelog = "https://github.com/scholarly-python-package/scholarly/releases/tag/${src.tag}";
license = lib.licenses.unlicense;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,32 @@
{
lib,
buildPythonPackage,
fetchPypi,
pypaInstallHook,
setuptoolsBuildHook,
}:
buildPythonPackage rec {
pname = "text2digits";
version = "0.1.0";
pyproject = false;
src = fetchPypi {
inherit pname version;
hash = "sha256-oB2NyNVxediIulid9A4Ccw878t2JKrIsN1OOR5lyi7I=";
};
nativeBuildInputs = [
pypaInstallHook
setuptoolsBuildHook
];
pythonImportsCheck = [ "text2digits" ];
meta = {
description = "Converts text such as 'twenty three' to number/digit '23' in any sentence";
homepage = "https://github.com/ShailChoksi/text2digits";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,37 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
pypaInstallHook,
setuptoolsBuildHook,
}:
buildPythonPackage rec {
pname = "urlobject";
version = "2.4.3";
pyproject = false;
src = fetchFromGitHub {
owner = "zacharyvoase";
repo = "urlobject";
tag = "v${version}";
hash = "sha256-4UuQZTkVre8jXlchW7/TjeaADYvLnGMpGbJR/sdeKv4=";
};
nativeBuildInputs = [
pypaInstallHook
setuptoolsBuildHook
];
# Tests use `nose`
doInstallCheck = false;
pythonImportsCheck = [ "urlobject" ];
meta = {
description = "Python library for manipulating URLs (and some URIs) in a more natural way";
homepage = "http://zacharyvoase.github.com/urlobject";
license = lib.licenses.unlicense;
maintainers = with lib.maintainers; [ getchoo ];
};
}
@@ -0,0 +1,34 @@
{
lib,
buildPythonPackage,
fetchPypi,
setuptools,
setuptools-scm,
wheel,
}:
buildPythonPackage rec {
pname = "wordninja";
version = "2.0.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-GhzH7BRq0Z1vcZQe6CrvPTEiFwDw2L+EQTbPjfedKBo=";
};
build-system = [
setuptools
setuptools-scm
wheel
];
pythonImportsCheck = [ "wordninja" ];
meta = {
description = "Probabilistically split concatenated words using NLP based on English Wikipedia unigram frequencies";
homepage = "https://github.com/keredson/wordninja";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ getchoo ];
};
}
+14
View File
@@ -2196,6 +2196,8 @@ self: super: with self; {
inherit (pkgs) secp256k1;
};
comicapi = callPackage ../development/python-modules/comicapi { };
comicon = callPackage ../development/python-modules/comicon { };
command-runner = callPackage ../development/python-modules/command-runner { };
@@ -4800,6 +4802,8 @@ self: super: with self; {
flask-cors = callPackage ../development/python-modules/flask-cors { };
flask-dance = callPackage ../development/python-modules/flask-dance { };
flask-dramatiq = callPackage ../development/python-modules/flask-dramatiq { };
flask-elastic = callPackage ../development/python-modules/flask-elastic { };
@@ -9424,6 +9428,8 @@ self: super: with self; {
netifaces2 = callPackage ../development/python-modules/netifaces2 { };
netifaces-plus = callPackage ../development/python-modules/netifaces-plus { };
netmiko = callPackage ../development/python-modules/netmiko { };
netio = callPackage ../development/python-modules/netio { };
@@ -14846,6 +14852,8 @@ self: super: with self; {
schiene = callPackage ../development/python-modules/schiene { };
scholarly = callPackage ../development/python-modules/scholarly { };
schwifty = callPackage ../development/python-modules/schwifty { };
scienceplots = callPackage ../development/python-modules/scienceplots { };
@@ -16476,6 +16484,8 @@ self: super: with self; {
texsoup = callPackage ../development/python-modules/texsoup { };
text2digits = callPackage ../development/python-modules/text2digits { };
textblob = callPackage ../development/python-modules/textblob { };
textfsm = callPackage ../development/python-modules/textfsm { };
@@ -18118,6 +18128,8 @@ self: super: with self; {
urlmatch = callPackage ../development/python-modules/urlmatch { };
urlobject = callPackage ../development/python-modules/urlobject { };
urlpy = callPackage ../development/python-modules/urlpy { };
urwid = callPackage ../development/python-modules/urwid { };
@@ -18614,6 +18626,8 @@ self: super: with self; {
wordfreq = callPackage ../development/python-modules/wordfreq { };
wordninja = callPackage ../development/python-modules/wordninja { };
world-bank-data = callPackage ../development/python-modules/world-bank-data { };
worldengine = callPackage ../development/python-modules/worldengine { };