Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / urllib3 / default.nix
blob70d8750a84d02d467ba28d00a6825a86e42dff59
1 { lib
2 , buildPythonPackage
3 , fetchPypi
4 , isPyPy
6 # build-system
7 , hatchling
9 # optional-dependencies
10 , brotli
11 , brotlicffi
12 , pysocks
14 # tests
15 , backports-zoneinfo
16 , pytestCheckHook
17 , pytest-timeout
18 , pythonOlder
19 , tornado
20 , trustme
23 let self = buildPythonPackage rec {
24   pname = "urllib3";
25   version = "2.2.1";
26   pyproject = true;
28   src = fetchPypi {
29     inherit pname version;
30     hash = "sha256-0FcIdsYaueUg13bDisu7WwWndtP5/5ilyP1RYqREzxk=";
31   };
33   nativeBuildInputs = [
34     hatchling
35   ];
37   passthru.optional-dependencies = {
38     brotli = if isPyPy then [
39       brotlicffi
40     ] else [
41       brotli
42     ];
43     socks = [
44       pysocks
45     ];
46   };
48   nativeCheckInputs = [
49     pytest-timeout
50     pytestCheckHook
51     tornado
52     trustme
53   ] ++ lib.optionals (pythonOlder "3.9") [
54     backports-zoneinfo
55   ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
57   # Tests in urllib3 are mostly timeout-based instead of event-based and
58   # are therefore inherently flaky. On your own machine, the tests will
59   # typically build fine, but on a loaded cluster such as Hydra random
60   # timeouts will occur.
61   #
62   # The urllib3 test suite has two different timeouts in their test suite
63   # (see `test/__init__.py`):
64   # - SHORT_TIMEOUT
65   # - LONG_TIMEOUT
66   # When CI is in the env, LONG_TIMEOUT will be significantly increased.
67   # Still, failures can occur and for that reason tests are disabled.
68   doCheck = false;
70   passthru.tests.pytest = self.overridePythonAttrs (_: { doCheck = true; });
72   preCheck = ''
73     export CI # Increases LONG_TIMEOUT
74   '';
76   pythonImportsCheck = [
77     "urllib3"
78   ];
80   meta = with lib; {
81     description = "Powerful, user-friendly HTTP client for Python";
82     homepage = "https://github.com/urllib3/urllib3";
83     changelog = "https://github.com/urllib3/urllib3/blob/${version}/CHANGES.rst";
84     license = licenses.mit;
85     maintainers = with maintainers; [ fab ];
86   };
88 in self