Unverified Commit 7269f051 authored by Pol Dellaiera's avatar Pol Dellaiera Committed by GitHub
Browse files

python3Packages.ddgs: 9.10.0 -> 9.11.4; primp: re-init at 1.1.3 (#496738)

parents bfe64176 f90b2520
Loading
Loading
Loading
Loading
+24 −33
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
  click,
  fastapi,
  fetchFromGitHub,
  lib,
  lxml,
  httpx,
  h2,
  fake-useragent,
  mcp,
  primp,
  setuptools,
  uvicorn,
  versionCheckHook,
}:

buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
  pname = "ddgs";
  version = "9.10.0";
  version = "9.11.4";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "deedy5";
    repo = "ddgs";
    tag = "v${version}";
    hash = "sha256-NNXGvDGynu6QtVqxVr74b/qehQ7qhq1NiVxyuKw2C4w=";
    tag = "v${finalAttrs.version}";
    hash = "sha256-+UefNpWKq1Rcm90M+hQavEORYZF4FWC1FzH7TfAH6WA=";
  };

  patches = [
    # We're removing the HTTP client primp below for security reasons,
    # but can use the already included httpx instead.
    # Note that while httpx is only used for HTTP/2 by upstream,
    # it can handle HTTP/1.1 just fine as well.
    ./replace-primp.patch
  ];

  pythonRemoveDeps = [
    # primp requires a very outdated, potentially insecure version of boringssl
    "primp"
  ];

  build-system = [ setuptools ];

  dependencies = [
    click
    lxml
    httpx
    h2
    fake-useragent
  ]
  ++ httpx.optional-dependencies.http2
  ++ httpx.optional-dependencies.socks
  ++ httpx.optional-dependencies.brotli;
    primp
  ];

  optional-dependencies = {
    api = [
      fastapi
      mcp
      uvicorn
    ];
  };

  nativeCheckInputs = [ versionCheckHook ];
  versionCheckProgramArg = "version";
@@ -55,11 +46,11 @@ buildPythonPackage rec {
  pythonImportsCheck = [ "ddgs" ];

  meta = {
    description = "D.D.G.S. | Dux Distributed Global Search. A metasearch library that aggregates results from diverse web search services";
    description = "A metasearch library that aggregates results from diverse web search services";
    mainProgram = "ddgs";
    homepage = "https://github.com/deedy5/ddgs";
    changelog = "https://github.com/deedy5/ddgs/releases/tag/${src.tag}";
    changelog = "https://github.com/deedy5/ddgs/releases/tag/${finalAttrs.src.tag}";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ drawbu ];
  };
}
})
+0 −39
Original line number Diff line number Diff line
diff --git a/ddgs/base.py b/ddgs/base.py
index 11111acc7a..b71ee337d9 100644
--- a/ddgs/base.py
+++ b/ddgs/base.py
@@ -9,7 +9,7 @@
 from lxml import html
 from lxml.etree import HTMLParser as LHTMLParser
 
-from .http_client import HttpClient
+from .http_client2 import HttpClient2 as HttpClient
 from .results import BooksResult, ImagesResult, NewsResult, TextResult, VideosResult
 
 logger = logging.getLogger(__name__)
diff --git a/ddgs/cli.py b/ddgs/cli.py
index 36cf2f373c..7cf0b2f35d 100644
--- a/ddgs/cli.py
+++ b/ddgs/cli.py
@@ -9,11 +9,11 @@
 from urllib.parse import unquote
 
 import click
-import primp
 
 from . import __version__
 from .ddgs import DDGS
 from .utils import _expand_proxy_tb_alias
+from .http_client2 import HttpClient2
 
 logger = logging.getLogger(__name__)
 
@@ -103,7 +103,7 @@
 
 def _download_file(url: str, dir_path: str, filename: str, proxy: str | None, *, verify: bool) -> None:
     try:
-        resp = primp.Client(proxy=proxy, impersonate="random", impersonate_os="random", timeout=10, verify=verify).get(
+        resp = HttpClient2(proxy=proxy, timeout=10, verify=verify).get(
             url,
         )
         if resp.status_code == 200:
+4156 −0

File added.

Preview size limit exceeded, changes collapsed.

+61 −0
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  buildPythonPackage,
  fetchFromGitHub,
  rustPlatform,
  libiconv,
  pytestCheckHook,
  pytest-asyncio,
}:

buildPythonPackage (finalAttrs: {
  pname = "primp";
  version = "1.1.3";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "deedy5";
    repo = "primp";
    tag = "v${finalAttrs.version}";
    hash = "sha256-ahTIEStYQ5M7EYidQYpYEVbYwwFFRfBXErWOMDdgNnk=";
  };

  # The Cargo.lock is not pushed upstream
  cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; };
  postPatch = ''
    cp ${./Cargo.lock} Cargo.lock
  '';

  buildAndTestSubdir = "crates/primp-python";

  nativeBuildInputs = [
    rustPlatform.bindgenHook
    rustPlatform.cargoSetupHook
    rustPlatform.maturinBuildHook
  ];

  buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
    libiconv
  ];

  nativeCheckInputs = [
    pytestCheckHook
    pytest-asyncio
  ];
  disabledTestPaths = [ "crates/primp-python/tests/test_impersonate.py" ];

  # Tests crash with Abort trap: 6 on Darwin due to tokio runtime
  # initialization in PyInit_pyo3_async_runtimes being blocked by the sandbox.
  doCheck = !stdenv.isDarwin;

  pythonImportsCheck = [ "primp" ];

  meta = {
    changelog = "https://github.com/deedy5/primp/releases/tag/${finalAttrs.src.tag}";
    description = " HTTP client that can impersonate web browsers";
    homepage = "https://github.com/deedy5/primp";
    license = lib.licenses.mit;
    maintainers = with lib.maintainers; [ drawbu ];
  };
})
+0 −1
Original line number Diff line number Diff line
@@ -358,7 +358,6 @@ mapAliases {
  postgrest-py = postgrest; # added 2025-08-29
  powerlineMemSegment = throw "'powerlineMemSegment' has been renamed to/replaced by 'powerline-mem-segment'"; # Converted to throw 2025-10-29
  prayer-times-calculator = throw "'prayer-times-calculator' has been renamed to/replaced by 'prayer-times-calculator-offline'"; # Converted to throw 2025-10-29
  primp = throw "primp was removed as it required a very outdated version of boringssl"; # added 2025-10-20
  prometheus_client = throw "'prometheus_client' has been renamed to/replaced by 'prometheus-client'"; # Converted to throw 2025-10-29
  prompt_toolkit = throw "'prompt_toolkit' has been renamed to/replaced by 'prompt-toolkit'"; # Converted to throw 2025-10-29
  protonup = throw "'protonup' has been renamed to/replaced by 'protonup-ng'"; # Converted to throw 2025-10-29
Loading