From a67041ba648246b0d316cd5f18a247d9ea0a16d4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 00:18:41 +0100 Subject: [PATCH 1/8] python3Packages.flatbencode: init at 0.2.1 --- .../python-modules/flatbencode/default.nix | 39 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 41 insertions(+) create mode 100644 pkgs/development/python-modules/flatbencode/default.nix diff --git a/pkgs/development/python-modules/flatbencode/default.nix b/pkgs/development/python-modules/flatbencode/default.nix new file mode 100644 index 000000000000..c7511dd7e8aa --- /dev/null +++ b/pkgs/development/python-modules/flatbencode/default.nix @@ -0,0 +1,39 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + hypothesis, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage rec { + pname = "flatbencode"; + version = "0.2.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "acatton"; + repo = "flatbencode"; + tag = "v${version}"; + hash = "sha256-1/4w41E8IKygJTBcQOexiDytV6BvVBwIjajKz2uCfu8="; + }; + + build-system = [ + setuptools + ]; + + nativeCheckInputs = [ + hypothesis + pytestCheckHook + ]; + + pythonImportsCheck = [ "flatbencode" ]; + + meta = { + description = "Fast, safe and non-recursive implementation of Bittorrent bencoding"; + homepage = "https://github.com/acatton/flatbencode"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4351fb705a59..e4c7027d52a4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5131,6 +5131,8 @@ self: super: with self; { flask-wtf = callPackage ../development/python-modules/flask-wtf { }; + flatbencode = callPackage ../development/python-modules/flatbencode { }; + flatbuffers = callPackage ../development/python-modules/flatbuffers { inherit (pkgs) flatbuffers; }; flatdict = callPackage ../development/python-modules/flatdict { }; From 45e698bb7ee5c141c9b4c251cb8a397694efc738 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 00:24:41 +0100 Subject: [PATCH 2/8] python3Packages.torf: init at 4.3.0 --- .../python-modules/torf/default.nix | 57 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 59 insertions(+) create mode 100644 pkgs/development/python-modules/torf/default.nix diff --git a/pkgs/development/python-modules/torf/default.nix b/pkgs/development/python-modules/torf/default.nix new file mode 100644 index 000000000000..75184fcb02dc --- /dev/null +++ b/pkgs/development/python-modules/torf/default.nix @@ -0,0 +1,57 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + flatbencode, + pytest-cov-stub, + pytest-httpserver, + pytest-mock, + pytest-xdist, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage rec { + pname = "torf"; + version = "4.3.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "rndusr"; + repo = "torf"; + tag = "v${version}"; + hash = "sha256-vJapB4Tbn3tLLUIH9LemU9kTqG7TsByiotkWM52lsno="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + flatbencode + ]; + + nativeCheckInputs = [ + pytest-cov-stub + pytest-httpserver + pytest-mock + pytest-xdist + pytestCheckHook + ]; + + disabledTests = [ + # Those tests fail DNS resolution in the sandbox + "test_getting_info__xs_fails__as_fails" + "test_getting_info__xs_returns_invalid_bytes" + "test_getting_info__as_returns_invalid_bytes" + ]; + + pythonImportsCheck = [ "torf" ]; + + meta = with lib; { + description = "create, parse and edit torrent files and magnet links"; + homepage = "https://github.com/rndusr/torf"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index e4c7027d52a4..c1b3e50d9c39 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17581,6 +17581,8 @@ self: super: with self; { torchvision-bin = callPackage ../development/python-modules/torchvision/bin.nix { }; + torf = callPackage ../development/python-modules/torf { }; + tornado = callPackage ../development/python-modules/tornado { }; torpy = callPackage ../development/python-modules/torpy { }; From 5a816783f146ebf6682f5b65bcd8c162382ed787 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 00:51:10 +0100 Subject: [PATCH 3/8] python3Packages.aiobtclientrpc: init at 5.0.1 --- .../python-modules/aiobtclientrpc/default.nix | 75 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 77 insertions(+) create mode 100644 pkgs/development/python-modules/aiobtclientrpc/default.nix diff --git a/pkgs/development/python-modules/aiobtclientrpc/default.nix b/pkgs/development/python-modules/aiobtclientrpc/default.nix new file mode 100644 index 000000000000..cdc4e76c5315 --- /dev/null +++ b/pkgs/development/python-modules/aiobtclientrpc/default.nix @@ -0,0 +1,75 @@ +{ + lib, + buildPythonPackage, + fetchFromGitea, + async-timeout, + httpx, + httpx-socks, + proxy-py, + pytest-asyncio, + pytest-mock, + pytestCheckHook, + python-socks, + rencode, + setuptools, +}: + +buildPythonPackage rec { + pname = "aiobtclientrpc"; + version = "5.0.1"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "plotski"; + repo = "aiobtclientrpc"; + tag = "v${version}"; + hash = "sha256-2nBrIMlYUI4PwirkiSJSkw5zw2Kc/KoVRyIIYYx4iYs="; + }; + + pythonRelaxDeps = [ + "async-timeout" + ]; + + build-system = [ + setuptools + ]; + + dependencies = [ + async-timeout + httpx + httpx-socks + python-socks + rencode + ] ++ python-socks.optional-dependencies.asyncio; + + nativeCheckInputs = [ + proxy-py + pytest-asyncio + pytest-mock + pytestCheckHook + ]; + + disabledTests = [ + # Missing lambda parameter + "test_add_event_handler_with_autoremove" + # Try to use `htpasswd` and `nginx` with hard-coded paths + "test_authentication_error[rtorrent_http]" + "test_api_as_context_manager[rtorrent_http]" + "test_add_and_remove_torrents[rtorrent_http-paused]" + "test_add_and_remove_torrents[rtorrent_http-started]" + "test_proxy[rtorrent_http-http_proxy]" + "test_timeout[rtorrent_http]" + "test_event_subscriptions_survive_reconnecting[rtorrent_http]" + "test_waiting_for_event[rtorrent_http]" + ]; + + pythonImportsCheck = [ "aiobtclientrpc" ]; + + meta = { + description = "Asynchronous low-level communication with BitTorrent clients"; + homepage = "https://aiobtclientrpc.readthedocs.io"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c1b3e50d9c39..f1bdf2f50466 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -221,6 +221,8 @@ self: super: with self; { aiobroadlink = callPackage ../development/python-modules/aiobroadlink { }; + aiobtclientrpc = callPackage ../development/python-modules/aiobtclientrpc { }; + aiocache = callPackage ../development/python-modules/aiocache { }; aiocoap = callPackage ../development/python-modules/aiocoap { }; From 2b16a5886b947a1bfa8c0fdabf568e8534208cd5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 01:04:58 +0100 Subject: [PATCH 4/8] python3Packages.aiobtclientapi: init at 1.1.3 --- .../python-modules/aiobtclientapi/default.nix | 62 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 64 insertions(+) create mode 100644 pkgs/development/python-modules/aiobtclientapi/default.nix diff --git a/pkgs/development/python-modules/aiobtclientapi/default.nix b/pkgs/development/python-modules/aiobtclientapi/default.nix new file mode 100644 index 000000000000..49242150d55d --- /dev/null +++ b/pkgs/development/python-modules/aiobtclientapi/default.nix @@ -0,0 +1,62 @@ +{ + lib, + buildPythonPackage, + fetchFromGitea, + aiobtclientrpc, + async-timeout, + httpx, + torf, + pytest-asyncio, + pytest-mock, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage rec { + pname = "aiobtclientapi"; + version = "1.1.3"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "plotski"; + repo = "aiobtclientapi"; + tag = "v${version}"; + hash = "sha256-ZpUaMsJs1vdVGQOid7aJ+SJKaCbTtHfSw7cOwPTL0ss="; + }; + + pythonRelaxDeps = [ + "async-timeout" + ]; + + build-system = [ + setuptools + ]; + + dependencies = [ + aiobtclientrpc + async-timeout + httpx + torf + ]; + + nativeCheckInputs = [ + pytest-asyncio + pytest-mock + pytestCheckHook + ]; + + pythonImportsCheck = [ "aiobtclientapi" ]; + + disabledTestPaths = [ + # AttributeError + "tests/clients_test/rtorrent_test/rtorrent_api_test.py" + ]; + + meta = { + description = "Asynchronous high-level communication with BitTorrent clients"; + homepage = "https://aiobtclientapi.readthedocs.io"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index f1bdf2f50466..6b415d8edae9 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -221,6 +221,8 @@ self: super: with self; { aiobroadlink = callPackage ../development/python-modules/aiobroadlink { }; + aiobtclientapi = callPackage ../development/python-modules/aiobtclientapi { }; + aiobtclientrpc = callPackage ../development/python-modules/aiobtclientrpc { }; aiocache = callPackage ../development/python-modules/aiocache { }; From ab4d949e6a73b7f71433f2a94f39fb4b8645456d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 01:49:55 +0100 Subject: [PATCH 5/8] python3Packages.countryguess: init at 0.4.5 --- .../python-modules/countryguess/default.nix | 40 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 42 insertions(+) create mode 100644 pkgs/development/python-modules/countryguess/default.nix diff --git a/pkgs/development/python-modules/countryguess/default.nix b/pkgs/development/python-modules/countryguess/default.nix new file mode 100644 index 000000000000..e776ba9f2717 --- /dev/null +++ b/pkgs/development/python-modules/countryguess/default.nix @@ -0,0 +1,40 @@ +{ + lib, + buildPythonPackage, + fetchFromGitea, + pytest-mock, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage rec { + pname = "countryguess"; + version = "0.4.5"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "plotski"; + repo = "countryguess"; + tag = "v${version}"; + hash = "sha256-JzhkXHitleQ2UIxdem8PYR5QhKGmkyfHmxG6VDP7pB0="; + }; + + build-system = [ + setuptools + ]; + + nativeCheckInputs = [ + pytest-mock + pytestCheckHook + ]; + + pythonImportsCheck = [ "countryguess" ]; + + meta = { + description = "Fuzzy lookup of country information"; + homepage = "https://codeberg.org/plotski/countryguess"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6b415d8edae9..a11b9b3cb876 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2883,6 +2883,8 @@ self: super: with self; { cot = callPackage ../development/python-modules/cot { inherit (pkgs) qemu; }; + countryguess = callPackage ../development/python-modules/countryguess { }; + courlan = callPackage ../development/python-modules/courlan { }; coverage = callPackage ../development/python-modules/coverage { }; From 057f4d3c3f83da873030f2047ca80d3f0a2811d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 01:47:47 +0100 Subject: [PATCH 6/8] python3Packages.pyimgbox: init at 1.0.7 --- .../python-modules/pyimgbox/default.nix | 51 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 53 insertions(+) create mode 100644 pkgs/development/python-modules/pyimgbox/default.nix diff --git a/pkgs/development/python-modules/pyimgbox/default.nix b/pkgs/development/python-modules/pyimgbox/default.nix new file mode 100644 index 000000000000..284fcc559774 --- /dev/null +++ b/pkgs/development/python-modules/pyimgbox/default.nix @@ -0,0 +1,51 @@ +{ + lib, + buildPythonPackage, + fetchFromGitea, + beautifulsoup4, + httpx, + pytest-asyncio, + pytest-httpserver, + pytest-mock, + pytestCheckHook, + setuptools, +}: + +buildPythonPackage rec { + pname = "pyimgbox"; + version = "1.0.7"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "plotski"; + repo = "pyimgbox"; + tag = "v${version}"; + hash = "sha256-HYKi5nYXJ+5ytQEFVMMm1HxEsD1zMU7cE2mOdwuZxvk="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + httpx + beautifulsoup4 + ]; + + nativeCheckInputs = [ + pytest-asyncio + pytest-httpserver + pytest-mock + pytestCheckHook + ]; + + pythonImportsCheck = [ "pyimgbox" ]; + + meta = { + description = "API for uploading images to imgbox.com"; + homepage = "https://codeberg.org/plotski/pyimgbox"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a11b9b3cb876..ad5c8b3460ef 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12546,6 +12546,8 @@ self: super: with self; { pyicumessageformat = callPackage ../development/python-modules/pyicumessageformat { }; + pyimgbox = callPackage ../development/python-modules/pyimgbox { }; + pyimpfuzzy = callPackage ../development/python-modules/pyimpfuzzy { inherit (pkgs) ssdeep; }; pyindego = callPackage ../development/python-modules/pyindego { }; From bff6187159d84bb92e3d9f585f6bedbaa6eab4a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 01:42:52 +0100 Subject: [PATCH 7/8] python3Packages.pyparsebluray: init at 0.1.4 --- .../python-modules/pyparsebluray/default.nix | 30 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/development/python-modules/pyparsebluray/default.nix diff --git a/pkgs/development/python-modules/pyparsebluray/default.nix b/pkgs/development/python-modules/pyparsebluray/default.nix new file mode 100644 index 000000000000..100e5d651ba1 --- /dev/null +++ b/pkgs/development/python-modules/pyparsebluray/default.nix @@ -0,0 +1,30 @@ +{ + buildPythonPackage, + lib, + fetchFromGitHub, + setuptools, +}: + +buildPythonPackage rec { + pname = "pyparsebluray"; + version = "0.1.4"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Ichunjo"; + repo = "pyparsebluray"; + tag = version; + hash = "sha256-9G+pf4kZnj5ZkJj8qmymqdxCRVUTfGy3m9iF5BjiCxM="; + }; + + build-system = [ + setuptools + ]; + + meta = { + description = "Parse and extract binary data from bluray files"; + homepage = "https://github.com/Ichunjo/pyparsebluray"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ad5c8b3460ef..e17ad4610e93 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13031,6 +13031,8 @@ self: super: with self; { pypandoc = callPackage ../development/python-modules/pypandoc { }; + pyparsebluray = callPackage ../development/python-modules/pyparsebluray { }; + pyparser = callPackage ../development/python-modules/pyparser { }; pyparsing = callPackage ../development/python-modules/pyparsing { }; From 8f42d2676f0435ad2d3dbf4477d132e73860c813 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 May 2025 02:47:03 +0100 Subject: [PATCH 8/8] upsies: init at 2025.04.21 --- pkgs/by-name/up/upsies/package.nix | 101 +++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 pkgs/by-name/up/upsies/package.nix diff --git a/pkgs/by-name/up/upsies/package.nix b/pkgs/by-name/up/upsies/package.nix new file mode 100644 index 000000000000..14345ea5a0da --- /dev/null +++ b/pkgs/by-name/up/upsies/package.nix @@ -0,0 +1,101 @@ +{ + lib, + fetchFromGitea, + fetchpatch, + ffmpeg-headless, + mediainfo, + oxipng, + python3Packages, +}: +let + # Taken from `docker/alpine/Dockerfile` + runtimeDeps = [ + ffmpeg-headless + mediainfo + oxipng + ]; +in +python3Packages.buildPythonApplication rec { + pname = "upsies"; + version = "2025.04.21"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "plotski"; + repo = "upsies"; + tag = "v${version}"; + hash = "sha256-gjv0HOFV1VdfhVejGbV2+bMxP9BPfB3/3p6nOAYMS34="; + }; + + patches = [ + (fetchpatch { + name = "use-pytest-timeout.patch"; + url = "https://codeberg.org/plotski/upsies/commit/db6b564f8575c913a6fbabb61d5326a073c9b52c.patch"; + hash = "sha256-UeUrZ6ogUSS0FvyNQwwwp8q+FArEK61o+Y2Uh7mrPtw="; + revert = true; + }) + ]; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + aiobtclientapi + async-lru + beautifulsoup4 + countryguess + guessit + httpx + langcodes + natsort + packaging + prompt-toolkit + pydantic + pyimgbox + pyparsebluray + pyxdg + term-image + torf + unidecode + ]; + + nativeCheckInputs = + with python3Packages; + [ + pytest-asyncio + pytest-mock + pytest-timeout + pytest-httpserver + pytestCheckHook + trustme + ] + ++ runtimeDeps; + + disabledTestPaths = [ + # DNS resolution errors in the sandbox on some of the tests + "tests/utils_test/http_test/http_test.py" + "tests/utils_test/http_test/http_tls_test.py" + ]; + + preCheck = '' + # `utils.is_running_in_development_environment` expects it in tests + export VIRTUAL_ENV=1 + ''; + + makeWrapperArgs = [ + "--suffix" + "PATH" + ":" + (lib.makeBinPath runtimeDeps) + ]; + + meta = with lib; { + description = "a toolkit for collecting, generating, normalizing and sharing video metadata"; + homepage = "https://upsies.readthedocs.io/"; + license = with licenses; [ gpl3Plus ]; + mainProgram = "upsies"; + maintainers = with maintainers; [ ambroisie ]; + }; +}