1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 pythonAtLeast,
6 flake8,
7 orderedmultidict,
8 pytestCheckHook,
9 six,
10}:
11
12buildPythonPackage rec {
13 pname = "furl";
14 version = "2.1.3";
15 format = "setuptools";
16
17 src = fetchPypi {
18 inherit pname version;
19 sha256 = "5a6188fe2666c484a12159c18be97a1977a71d632ef5bb867ef15f54af39cc4e";
20 };
21
22 # With python 3.11.4, invalid IPv6 address does throw ValueError
23 # https://github.com/gruns/furl/issues/164#issuecomment-1595637359
24 postPatch = ''
25 substituteInPlace tests/test_furl.py \
26 --replace '[0:0:0:0:0:0:0:1:1:1:1:1:1:1:1:9999999999999]' '[2001:db8::9999]'
27 '';
28
29 propagatedBuildInputs = [
30 orderedmultidict
31 six
32 ];
33
34 nativeCheckInputs = [
35 flake8
36 pytestCheckHook
37 ];
38
39 disabledTests = lib.optionals (pythonAtLeast "3.12") [
40 # AssertionError: assert '//////path' == '////path'
41 "test_odd_urls"
42 ];
43
44 pythonImportsCheck = [ "furl" ];
45
46 meta = with lib; {
47 description = "Python library that makes parsing and manipulating URLs easy";
48 homepage = "https://github.com/gruns/furl";
49 license = licenses.unlicense;
50 maintainers = with maintainers; [ vanzef ];
51 };
52}