From f9374fce3ccb2dd1f806327fd7f6a5431fec25ae Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 7 Jun 2026 19:25:54 +0000 Subject: [PATCH 1/2] python3Packages.courlan: 1.3.2 -> 1.4.0 Changelog: https://github.com/adbar/courlan/blob/v1.4.0/HISTORY.md --- .../python-modules/courlan/default.nix | 58 +++++++++++++------ 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/pkgs/development/python-modules/courlan/default.nix b/pkgs/development/python-modules/courlan/default.nix index c87f84a308c8..d3e63da7213b 100644 --- a/pkgs/development/python-modules/courlan/default.nix +++ b/pkgs/development/python-modules/courlan/default.nix @@ -1,32 +1,49 @@ { lib, - babel, buildPythonPackage, - fetchPypi, - langcodes, - pytestCheckHook, + fetchFromGitHub, + + # build-system, setuptools, + + # dependencies + babel, + langcodes, tld, urllib3, + + # tests + pytest-httpserver, + pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "courlan"; - version = "1.3.2"; + version = "1.4.0"; pyproject = true; + __structuredAttrs = true; - src = fetchPypi { - inherit pname version; - hash = "sha256-C2b02zqcOabiLdJHxyz6pX1o6mYOlLsshOx9uHEq8ZA="; + src = fetchFromGitHub { + owner = "adbar"; + repo = "courlan"; + tag = "v${finalAttrs.version}"; + hash = "sha256-hDbeAd/gil6S8zggBjmrDmnW3DMMdRvG1vULuhYA1zc="; }; # Tests try to write to /tmp directly. use $TMPDIR instead. - postPatch = '' - substituteInPlace tests/unit_tests.py \ - --replace-fail "\"courlan --help\"" "\"$out/bin/courlan --help\"" \ - --replace-fail "courlan_bin = \"courlan\"" "courlan_bin = \"$out/bin/courlan\"" \ - --replace-fail "/tmp" "$TMPDIR" - ''; + postPatch = + let + courlanBinPath = "${placeholder "out"}/bin/courlan"; + in + '' + substituteInPlace tests/unit_tests.py \ + --replace-fail \ + 'assert os.system("courlan --help") == 0' \ + 'assert os.system("${courlanBinPath} --help") == 0' \ + --replace-fail \ + 'courlan_bin = "courlan"' \ + 'courlan_bin = "${courlanBinPath}"' + ''; build-system = [ setuptools ]; @@ -37,19 +54,24 @@ buildPythonPackage rec { urllib3 ]; - nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytest-httpserver + pytestCheckHook + ]; # disable tests that require an internet connection disabledTests = [ "test_urlcheck" ]; pythonImportsCheck = [ "courlan" ]; + __darwinAllowLocalNetworking = true; + meta = { description = "Clean, filter and sample URLs to optimize data collection"; homepage = "https://github.com/adbar/courlan"; - changelog = "https://github.com/adbar/courlan/blob/v${version}/HISTORY.md"; + changelog = "https://github.com/adbar/courlan/blob/${finalAttrs.src.tag}/HISTORY.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ jokatzke ]; mainProgram = "courlan"; }; -} +}) From 7a45c363d5e5007dc09ae6071957e6c59c433f16 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 7 Jun 2026 19:21:41 +0000 Subject: [PATCH 2/2] python3Packages.trafilatura: 2.0.0 -> 2.1.0 Diff: https://github.com/adbar/trafilatura/compare/v2.0.0...v2.1.0 Changelog: https://github.com/adbar/trafilatura/blob/v2.1.0/HISTORY.md --- .../python-modules/trafilatura/default.nix | 41 ++++++++----------- 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/pkgs/development/python-modules/trafilatura/default.nix b/pkgs/development/python-modules/trafilatura/default.nix index d730a54ab051..9feb0e285720 100644 --- a/pkgs/development/python-modules/trafilatura/default.nix +++ b/pkgs/development/python-modules/trafilatura/default.nix @@ -19,27 +19,33 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "trafilatura"; - version = "2.0.0"; + version = "2.1.0"; pyproject = true; + __structuredAttrs = true; src = fetchFromGitHub { owner = "adbar"; repo = "trafilatura"; - tag = "v${version}"; - hash = "sha256-Cf1W3JEGSMkVmRZVTXYsXzZK/Nt/aDG890Sf0/0OZAA="; + tag = "v${finalAttrs.version}"; + hash = "sha256-hSeJH+8JX8QC3zHMZ3+M2H0C3xI+BCvLnSo/Ih1wUQw="; }; - postPatch = '' + postPatch = # nixify path to the trafilatura binary in the test suite - substituteInPlace tests/cli_tests.py \ - --replace-fail 'trafilatura_bin = "trafilatura"' \ - 'trafilatura_bin = "${placeholder "out"}/bin/trafilatura"' - ''; + '' + substituteInPlace tests/cli_tests.py \ + --replace-fail \ + 'trafilatura_bin = "trafilatura"' \ + 'trafilatura_bin = "${placeholder "out"}/bin/trafilatura"' + ''; build-system = [ setuptools ]; + pythonRelaxDeps = [ + "lxml" + ]; dependencies = [ certifi charset-normalizer @@ -53,15 +59,6 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook ]; disabledTests = [ - # TypeError: argument of type 'NoneType' is not iterable - # https://github.com/adbar/trafilatura/issues/805 - "test_external" - "test_extract" - - # AttributeError: 'NoneType' object has no attribute 'find' - # https://github.com/adbar/trafilatura/issues/805 - "test_table_processing" - # Disable tests that require an internet connection "test_cli_pipeline" "test_crawl_page" @@ -75,10 +72,6 @@ buildPythonPackage rec { "test_queue" "test_redirection" "test_whole" - - # AssertionError: assert ['deflate', 'gzip', 'zstd'] == ['deflate', 'gzip'] - # https://github.com/adbar/trafilatura/issues/823 - "test_config" ]; pythonImportsCheck = [ "trafilatura" ]; @@ -86,10 +79,10 @@ buildPythonPackage rec { meta = { description = "Python package and command-line tool designed to gather text on the Web"; homepage = "https://trafilatura.readthedocs.io"; - changelog = "https://github.com/adbar/trafilatura/blob/v${version}/HISTORY.md"; + changelog = "https://github.com/adbar/trafilatura/blob/${finalAttrs.src.tag}/HISTORY.md"; downloadPage = "https://github.com/adbar/trafilatura"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ jokatzke ]; mainProgram = "trafilatura"; }; -} +})