lol

Merge pull request #174000 from mweinelt/pep621-optional-dependencies

authored by

Martin Weinelt and committed by
GitHub
bc38fcac f01320c2

+97 -96
+4 -3
doc/languages-frameworks/python.section.md
··· 982 982 #### Optional extra dependencies 983 983 984 984 Some packages define optional dependencies for additional features. With 985 - `setuptools` this is called `extras_require` and `flit` calls it `extras-require`. A 985 + `setuptools` this is called `extras_require` and `flit` calls it 986 + `extras-require`, while PEP 621 calls these `optional-dependencies`. A 986 987 method for supporting this is by declaring the extras of a package in its 987 988 `passthru`, e.g. in case of the package `dask` 988 989 989 990 ```nix 990 - passthru.extras-require = { 991 + passthru.optional-dependencies = { 991 992 complete = [ distributed ]; 992 993 }; 993 994 ``` ··· 997 998 ```nix 998 999 propagatedBuildInputs = [ 999 1000 ... 1000 - ] ++ dask.extras-require.complete; 1001 + ] ++ dask.optional-dependencies.complete; 1001 1002 ``` 1002 1003 1003 1004 Note this method is preferred over adding parameters to builders, as that can
+1 -1
pkgs/applications/networking/syncplay/default.nix
··· 14 14 }; 15 15 16 16 propagatedBuildInputs = [ twisted certifi ] 17 - ++ twisted.extras-require.tls 17 + ++ twisted.optional-dependencies.tls 18 18 ++ lib.optional enableGUI pyside2; 19 19 nativeBuildInputs = lib.optionals enableGUI [ qt5.wrapQtAppsHook ]; 20 20
+1 -1
pkgs/applications/office/paperless-ngx/default.nix
··· 122 122 threadpoolctl 123 123 tika 124 124 tqdm 125 - twisted.extras-require.tls 125 + twisted.optional-dependencies.tls 126 126 txaio 127 127 tzlocal 128 128 urllib3
+2 -2
pkgs/development/python-modules/Mako/default.nix
··· 30 30 markupsafe 31 31 ]; 32 32 33 - passthru.extras-require = { 33 + passthru.optional-dependencies = { 34 34 babel = [ 35 35 babel 36 36 ]; ··· 39 39 checkInputs = [ 40 40 pytestCheckHook 41 41 mock 42 - ] ++ passthru.extras-require.babel; 42 + ] ++ passthru.optional-dependencies.babel; 43 43 44 44 disabledTests = lib.optionals isPyPy [ 45 45 # https://github.com/sqlalchemy/mako/issues/315
+3 -3
pkgs/development/python-modules/adb-shell/default.nix
··· 33 33 rsa 34 34 ]; 35 35 36 - passthru.extras-require = { 36 + passthru.optional-dependencies = { 37 37 async = [ 38 38 aiofiles 39 39 ]; ··· 47 47 pycryptodome 48 48 pytestCheckHook 49 49 ] 50 - ++ passthru.extras-require.async 51 - ++ passthru.extras-require.usb; 50 + ++ passthru.optional-dependencies.async 51 + ++ passthru.optional-dependencies.usb; 52 52 53 53 disabledTests = lib.optionals (pythonAtLeast "3.10") [ 54 54 # Tests are failing with Python 3.10
+4 -4
pkgs/development/python-modules/androidtv/default.nix
··· 28 28 pure-python-adb 29 29 ]; 30 30 31 - passthru.extras-require = { 31 + passthru.optional-dependencies = { 32 32 async = [ 33 33 aiofiles 34 34 ]; 35 - inherit (adb-shell.extras-require) usb; 35 + inherit (adb-shell.optional-dependencies) usb; 36 36 }; 37 37 38 38 checkInputs = [ 39 39 mock 40 40 pytestCheckHook 41 41 ] 42 - ++ passthru.extras-require.async 43 - ++ passthru.extras-require.usb; 42 + ++ passthru.optional-dependencies.async 43 + ++ passthru.optional-dependencies.usb; 44 44 45 45 disabledTests = [ 46 46 # Requires git but fails anyway
+3 -3
pkgs/development/python-modules/autobahn/default.nix
··· 68 68 mock 69 69 pytest-asyncio 70 70 pytestCheckHook 71 - ] ++ passthru.extras-require.scram 72 - ++ passthru.extras-require.serialization; 71 + ] ++ passthru.optional-dependencies.scram 72 + ++ passthru.optional-dependencies.serialization; 73 73 74 74 postPatch = '' 75 75 substituteInPlace setup.py \ ··· 89 89 "autobahn" 90 90 ]; 91 91 92 - passthru.extras-require = rec { 92 + passthru.optional-dependencies = rec { 93 93 all = accelerate ++ compress ++ encryption ++ nvx ++ serialization ++ scram ++ twisted ++ ui ++ xbr; 94 94 accelerate = [ /* wsaccel */ ]; 95 95 compress = [ python-snappy ];
+1 -1
pkgs/development/python-modules/buildbot/default.nix
··· 54 54 pyyaml 55 55 ] 56 56 # tls 57 - ++ twisted.extras-require.tls; 57 + ++ twisted.optional-dependencies.tls; 58 58 59 59 checkInputs = [ 60 60 treq
+1 -1
pkgs/development/python-modules/clize/default.nix
··· 40 40 six 41 41 ]; 42 42 43 - passthru.extras-require = { 43 + passthru.optional-dependencies = { 44 44 datetime = [ 45 45 python-dateutil 46 46 ];
+1 -1
pkgs/development/python-modules/dask/default.nix
··· 98 98 "dask.diagnostics" 99 99 ]; 100 100 101 - passthru.extras-require = { 101 + passthru.optional-dependencies = { 102 102 complete = [ distributed ]; 103 103 }; 104 104
+1 -1
pkgs/development/python-modules/datashader/default.nix
··· 46 46 param 47 47 pyct 48 48 scipy 49 - ] ++ dask.extras-require.complete; 49 + ] ++ dask.optional-dependencies.complete; 50 50 51 51 checkInputs = [ 52 52 pytestCheckHook
+2 -2
pkgs/development/python-modules/django_modelcluster/default.nix
··· 27 27 pytz 28 28 ]; 29 29 30 - passthru.extras-require.taggit = [ 30 + passthru.optional-dependencies.taggit = [ 31 31 django-taggit 32 32 ]; 33 33 34 - checkInputs = passthru.extras-require.taggit; 34 + checkInputs = passthru.optional-dependencies.taggit; 35 35 36 36 checkPhase = '' 37 37 runHook preCheck
+1 -1
pkgs/development/python-modules/fastapi/default.nix
··· 49 49 pytest-asyncio 50 50 sqlalchemy 51 51 trio 52 - ] ++ passlib.extras-require.bcrypt; 52 + ] ++ passlib.optional-dependencies.bcrypt; 53 53 54 54 patches = [ 55 55 # Bump starlette, https://github.com/tiangolo/fastapi/pull/4483
+5 -5
pkgs/development/python-modules/flask-security-too/default.nix
··· 63 63 passlib 64 64 ]; 65 65 66 - passthru.extras-require = { 66 + passthru.optional-dependencies = { 67 67 babel = [ 68 68 babel 69 69 flask-babel ··· 95 95 pytestCheckHook 96 96 zxcvbn 97 97 ] 98 - ++ passthru.extras-require.babel 99 - ++ passthru.extras-require.common 100 - ++ passthru.extras-require.fsqla 101 - ++ passthru.extras-require.mfa; 98 + ++ passthru.optional-dependencies.babel 99 + ++ passthru.optional-dependencies.common 100 + ++ passthru.optional-dependencies.fsqla 101 + ++ passthru.optional-dependencies.mfa; 102 102 103 103 104 104 pythonImportsCheck = [ "flask_security" ];
+3 -3
pkgs/development/python-modules/httpcore/default.nix
··· 42 42 sniffio 43 43 ]; 44 44 45 - passthru.extras-require = { 45 + passthru.optional-dependencies = { 46 46 http2 = [ h2 ]; 47 47 socks = [ socksio ]; 48 48 }; ··· 56 56 trio 57 57 trustme 58 58 uvicorn 59 - ] ++ passthru.extras-require.http2 60 - ++ passthru.extras-require.socks; 59 + ] ++ passthru.optional-dependencies.http2 60 + ++ passthru.optional-dependencies.socks; 61 61 62 62 pythonImportsCheck = [ "httpcore" ]; 63 63
+1 -1
pkgs/development/python-modules/httpx-socks/default.nix
··· 38 38 python-socks 39 39 ]; 40 40 41 - passthru.extras-require = { 41 + passthru.optional-dependencies = { 42 42 asyncio = [ async-timeout ]; 43 43 trio = [ trio ]; 44 44 };
+4 -4
pkgs/development/python-modules/httpx/default.nix
··· 49 49 async_generator 50 50 ]; 51 51 52 - passthru.extras-require = { 52 + passthru.optional-dependencies = { 53 53 http2 = [ h2 ]; 54 54 socks = [ socksio ]; 55 55 brotli = if isPyPy then [ brotlicffi ] else [ brotli ]; ··· 63 63 trustme 64 64 typing-extensions 65 65 uvicorn 66 - ] ++ passthru.extras-require.http2 67 - ++ passthru.extras-require.brotli 68 - ++ passthru.extras-require.socks; 66 + ] ++ passthru.optional-dependencies.http2 67 + ++ passthru.optional-dependencies.brotli 68 + ++ passthru.optional-dependencies.socks; 69 69 70 70 postPatch = '' 71 71 substituteInPlace setup.py \
+2 -2
pkgs/development/python-modules/ibis-framework/default.nix
··· 99 99 pytest-mock 100 100 pytest-randomly 101 101 pytest-xdist 102 - ] ++ lib.concatMap (name: passthru.extras-require.${name}) testBackends; 102 + ] ++ lib.concatMap (name: passthru.optional-dependencies.${name}) testBackends; 103 103 104 104 preBuild = '' 105 105 # setup.py exists only for developer convenience and is automatically generated ··· 139 139 ] ++ map (backend: "ibis.backends.${backend}") testBackends; 140 140 141 141 passthru = { 142 - extras-require = { 142 + optional-dependencies = { 143 143 clickhouse = [ clickhouse-cityhash clickhouse-driver lz4 ]; 144 144 dask = [ dask pyarrow ]; 145 145 datafusion = [ datafusion ];
+1 -1
pkgs/development/python-modules/ldaptor/default.nix
··· 27 27 six 28 28 twisted 29 29 zope_interface 30 - ] ++ twisted.extras-require.tls; 30 + ] ++ twisted.optional-dependencies.tls; 31 31 32 32 checkInputs = [ 33 33 twisted
+2 -2
pkgs/development/python-modules/magic-wormhole-mailbox-server/default.nix
··· 25 25 six 26 26 twisted 27 27 autobahn 28 - ] ++ autobahn.extras-require.twisted 29 - ++ twisted.extras-require.tls; 28 + ] ++ autobahn.optional-dependencies.twisted 29 + ++ twisted.optional-dependencies.tls; 30 30 31 31 checkInputs = [ 32 32 treq
+2 -2
pkgs/development/python-modules/magic-wormhole/default.nix
··· 42 42 click 43 43 humanize 44 44 txtorcon 45 - ] ++ autobahn.extras-require.twisted 46 - ++ twisted.extras-require.tls; 45 + ] ++ autobahn.optional-dependencies.twisted 46 + ++ twisted.optional-dependencies.tls; 47 47 48 48 checkInputs = [ 49 49 mock
+4 -4
pkgs/development/python-modules/passlib/default.nix
··· 16 16 sha256 = "defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04"; 17 17 }; 18 18 19 - passthru.extras-require = { 19 + passthru.optional-dependencies = { 20 20 argon2 = [ argon2-cffi ]; 21 21 bcrypt = [ bcrypt ]; 22 22 totp = [ cryptography ]; ··· 24 24 25 25 checkInputs = [ 26 26 pytestCheckHook 27 - ] ++ passthru.extras-require.argon2 28 - ++ passthru.extras-require.bcrypt 29 - ++ passthru.extras-require.totp; 27 + ] ++ passthru.optional-dependencies.argon2 28 + ++ passthru.optional-dependencies.bcrypt 29 + ++ passthru.optional-dependencies.totp; 30 30 31 31 meta = with lib; { 32 32 description = "A password hashing library for Python";
+2 -2
pkgs/development/python-modules/pure-python-adb/default.nix
··· 17 17 sha256 = "0kdr7w2fhgjpcf1k3l6an9im583iqkr6v8hb4q1zw30nh3bqkk0f"; 18 18 }; 19 19 20 - passthru.extras-require = { 20 + passthru.optional-dependencies = { 21 21 async = [ 22 22 aiofiles 23 23 ]; ··· 28 28 checkInputs = [ 29 29 pytestCheckHook 30 30 ] 31 - ++ passthru.extras-require.async; 31 + ++ passthru.optional-dependencies.async; 32 32 33 33 pythonImportsCheck = [ 34 34 "ppadb.client"
+2 -2
pkgs/development/python-modules/pygatt/default.nix
··· 25 25 pyserial 26 26 ]; 27 27 28 - passthru.extras-require.GATTTOOL = [ 28 + passthru.optional-dependencies.GATTTOOL = [ 29 29 pexpect 30 30 ]; 31 31 ··· 34 34 nose 35 35 pytestCheckHook 36 36 ] 37 - ++ passthru.extras-require.GATTTOOL; 37 + ++ passthru.optional-dependencies.GATTTOOL; 38 38 39 39 postPatch = '' 40 40 # Not support for Python < 3.4
+2 -2
pkgs/development/python-modules/python-barcode/default.nix
··· 23 23 setuptools-scm 24 24 ]; 25 25 26 - passthru.extras-require = { 26 + passthru.optional-dependencies = { 27 27 images = [ 28 28 pillow 29 29 ]; ··· 38 38 39 39 checkInputs = [ 40 40 pytestCheckHook 41 - ] ++ passthru.extras-require.images; 41 + ] ++ passthru.optional-dependencies.images; 42 42 43 43 pythonImportsCheck = [ "barcode" ]; 44 44
+2 -2
pkgs/development/python-modules/pytradfri/default.nix
··· 21 21 hash = "sha256-12ol+2CnoPfkxmDGJJAkoafHGpQuWC4lh0N7lSvx2DE="; 22 22 }; 23 23 24 - passthru.extras-require = { 24 + passthru.optional-dependencies = { 25 25 async = [ 26 26 aiocoap 27 27 dtlssocket ··· 31 31 checkInputs = [ 32 32 pytestCheckHook 33 33 ] 34 - ++ passthru.extras-require.async; 34 + ++ passthru.optional-dependencies.async; 35 35 36 36 pythonImportsCheck = [ 37 37 "pytradfri"
+3 -3
pkgs/development/python-modules/rdflib/default.nix
··· 43 43 importlib-metadata 44 44 ]; 45 45 46 - passthru.extras-require = { 46 + passthru.optional-dependencies = { 47 47 html = [ 48 48 html5lib 49 49 ]; ··· 55 55 checkInputs = [ 56 56 pytestCheckHook 57 57 ] 58 - ++ passthru.extras-require.networkx 59 - ++ passthru.extras-require.html; 58 + ++ passthru.optional-dependencies.networkx 59 + ++ passthru.optional-dependencies.html; 60 60 61 61 pytestFlagsArray = [ 62 62 # requires network access
+1 -1
pkgs/development/python-modules/redis/default.nix
··· 40 40 importlib-metadata 41 41 ]; 42 42 43 - passthru.extras-require = { 43 + passthru.optional-dependencies = { 44 44 hidredis = [ 45 45 hiredis 46 46 ];
+2 -2
pkgs/development/python-modules/relatorio/default.nix
··· 27 27 lxml 28 28 ]; 29 29 30 - passthru.extras-require = { 30 + passthru.optional-dependencies = { 31 31 chart = [ /* pycha */ pyyaml ]; 32 32 fodt = [ python-magic ]; 33 33 }; 34 34 35 35 checkInputs = [ 36 36 pytestCheckHook 37 - ] ++ passthru.extras-require.fodt; 37 + ] ++ passthru.optional-dependencies.fodt; 38 38 39 39 pythonImportsCheck = [ "relatorio" ]; 40 40
+2 -2
pkgs/development/python-modules/requests-aws4auth/default.nix
··· 28 28 six 29 29 ]; 30 30 31 - passthru.extras-require = { 31 + passthru.optional-dependencies = { 32 32 httpx = [ httpx ]; 33 33 }; 34 34 35 35 checkInputs = [ 36 36 pytestCheckHook 37 - ] ++ passthru.extras-require.httpx; 37 + ] ++ passthru.optional-dependencies.httpx; 38 38 39 39 pythonImportsCheck = [ 40 40 "requests_aws4auth"
+1 -1
pkgs/development/python-modules/samsungctl/default.nix
··· 15 15 sha256 = "0ipz3fd65rqkxlb02sql0awc3vnslrwb2pfrsnpfnf8bfgxpbh9g"; 16 16 }; 17 17 18 - passthru.extras-require = { 18 + passthru.optional-dependencies = { 19 19 websocket = [ 20 20 websocket-client 21 21 ];
+3 -3
pkgs/development/python-modules/samsungtvws/default.nix
··· 39 39 websocket-client 40 40 ]; 41 41 42 - passthru.extras-require = { 42 + passthru.optional-dependencies = { 43 43 async = [ 44 44 aiohttp 45 45 websockets ··· 55 55 pytest-asyncio 56 56 pytestCheckHook 57 57 ] 58 - ++ passthru.extras-require.async 59 - ++ passthru.extras-require.encrypted; 58 + ++ passthru.optional-dependencies.async 59 + ++ passthru.optional-dependencies.encrypted; 60 60 61 61 pythonImportsCheck = [ "samsungtvws" ]; 62 62
+1 -1
pkgs/development/python-modules/treq/default.nix
··· 20 20 requests 21 21 incremental 22 22 twisted 23 - ] ++ twisted.extras-require.tls; 23 + ] ++ twisted.optional-dependencies.tls; 24 24 25 25 checkInputs = [ 26 26 httpbin
+3 -3
pkgs/development/python-modules/trytond/default.nix
··· 53 53 weasyprint 54 54 gevent 55 55 pillow 56 - ] ++ relatorio.extras-require.fodt 57 - ++ passlib.extras-require.bcrypt 58 - ++ passlib.extras-require.argon2 56 + ] ++ relatorio.optional-dependencies.fodt 57 + ++ passlib.optional-dependencies.bcrypt 58 + ++ passlib.optional-dependencies.argon2 59 59 ++ lib.optional withPostgresql psycopg2; 60 60 61 61 checkPhase = ''
+1 -1
pkgs/development/python-modules/twisted/default.nix
··· 41 41 42 42 propagatedBuildInputs = [ zope_interface incremental automat constantly hyperlink pyhamcrest attrs setuptools typing-extensions ]; 43 43 44 - passthru.extras-require = rec { 44 + passthru.optional-dependencies = rec { 45 45 tls = [ pyopenssl service-identity idna ]; 46 46 conch = [ pyasn1 cryptography appdirs bcrypt ]; 47 47 conch_nacl = conch ++ [ pynacl ];
+1 -1
pkgs/development/python-modules/txtorcon/default.nix
··· 13 13 14 14 propagatedBuildInputs = [ 15 15 incremental twisted automat zope_interface 16 - ] ++ twisted.extras-require.tls 16 + ] ++ twisted.optional-dependencies.tls 17 17 ++ lib.optionals (!isPy3k) [ ipaddress ]; 18 18 19 19 checkInputs = [ pytestCheckHook mock lsof GeoIP ];
+2 -2
pkgs/development/python-modules/vivisect/default.nix
··· 43 43 cxxfilt 44 44 msgpack 45 45 pycparser 46 - ] ++ lib.optionals (withGui) passthru.extras-require.gui; 46 + ] ++ lib.optionals (withGui) passthru.optional-dependencies.gui; 47 47 48 - passthru.extras-require.gui = [ 48 + passthru.optional-dependencies.gui = [ 49 49 pyqt5 50 50 pyqtwebengine 51 51 ];
+2 -2
pkgs/development/python-modules/volvooncall/default.nix
··· 33 33 aiohttp 34 34 ]; 35 35 36 - passthru.extras-require = { 36 + passthru.optional-dependencies = { 37 37 console = [ 38 38 certifi 39 39 docopt ··· 49 49 asynctest 50 50 pytest-asyncio 51 51 pytestCheckHook 52 - ] ++ passthru.extras-require.mqtt; 52 + ] ++ passthru.optional-dependencies.mqtt; 53 53 54 54 pythonImportsCheck = [ "volvooncall" ]; 55 55
+1 -1
pkgs/development/tools/devpi-server/default.nix
··· 46 46 pyramid 47 47 strictyaml 48 48 waitress 49 - ] ++ passlib.extras-require.argon2; 49 + ] ++ passlib.optional-dependencies.argon2; 50 50 51 51 checkInputs = [ 52 52 beautifulsoup4
+9 -9
pkgs/servers/home-assistant/component-packages.nix
··· 118 118 androidtv 119 119 pure-python-adb 120 120 ] 121 - ++ adb-shell.extras-require.async 122 - ++ androidtv.extras-require.async 123 - ++ pure-python-adb.extras-require.async; 121 + ++ adb-shell.optional-dependencies.async 122 + ++ androidtv.optional-dependencies.async 123 + ++ pure-python-adb.optional-dependencies.async; 124 124 "anel_pwrctrl" = ps: with ps; [ 125 125 ]; # missing inputs: anel_pwrctrl-homeassistant 126 126 "anthemav" = ps: with ps; [ ··· 279 279 "bluetooth_le_tracker" = ps: with ps; [ 280 280 pygatt 281 281 ] 282 - ++ pygatt.extras-require.GATTTOOL; 282 + ++ pygatt.optional-dependencies.GATTTOOL; 283 283 "bluetooth_tracker" = ps: with ps; [ 284 284 bt-proximity 285 285 pybluez ··· 2273 2273 wakeonlan 2274 2274 zeroconf 2275 2275 ] 2276 - ++ samsungctl.extras-require.websocket 2277 - ++ samsungtvws.extras-require.async 2278 - ++ samsungtvws.extras-require.encrypted; 2276 + ++ samsungctl.optional-dependencies.websocket 2277 + ++ samsungtvws.optional-dependencies.async 2278 + ++ samsungtvws.optional-dependencies.encrypted; 2279 2279 "satel_integra" = ps: with ps; [ 2280 2280 ]; # missing inputs: satel_integra 2281 2281 "scene" = ps: with ps; [ ··· 2388 2388 "skybeacon" = ps: with ps; [ 2389 2389 pygatt 2390 2390 ] 2391 - ++ pygatt.extras-require.GATTTOOL; 2391 + ++ pygatt.optional-dependencies.GATTTOOL; 2392 2392 "skybell" = ps: with ps; [ 2393 2393 skybellpy 2394 2394 ]; ··· 2769 2769 "tradfri" = ps: with ps; [ 2770 2770 pytradfri 2771 2771 ] 2772 - ++ pytradfri.extras-require.async; 2772 + ++ pytradfri.optional-dependencies.async; 2773 2773 "trafikverket_ferry" = ps: with ps; [ 2774 2774 pytrafikverket 2775 2775 ];
+3 -3
pkgs/servers/home-assistant/parse-requirements.py
··· 103 103 return os.path.abspath(sys.argv[0] + "/../../../..") 104 104 105 105 106 - # For a package attribute and and an extra, check if the package exposes it via passthru.extras-require 106 + # For a package attribute and and an extra, check if the package exposes it via passthru.optional-dependencies 107 107 def has_extra(package: str, extra: str): 108 108 cmd = [ 109 109 "nix-instantiate", 110 110 repository_root(), 111 111 "-A", 112 - f"{package}.extras-require.{extra}", 112 + f"{package}.optional-dependencies.{extra}", 113 113 ] 114 114 try: 115 115 subprocess.run( ··· 209 209 attr_paths.append(pname) 210 210 for extra in extras: 211 211 # Check if package advertises extra requirements 212 - extra_attr = f"{pname}.extras-require.{extra}" 212 + extra_attr = f"{pname}.optional-dependencies.{extra}" 213 213 if has_extra(attr_path, extra): 214 214 extra_attrs.append(extra_attr) 215 215 else:
+1 -1
pkgs/servers/radicale/3.x.nix
··· 21 21 vobject 22 22 python-dateutil 23 23 pytz # https://github.com/Kozea/Radicale/issues/816 24 - ] ++ passlib.extras-require.bcrypt; 24 + ] ++ passlib.optional-dependencies.bcrypt; 25 25 26 26 checkInputs = with python3.pkgs; [ 27 27 pytestCheckHook
+2 -2
pkgs/tools/networking/p2p/tahoe-lafs/default.nix
··· 60 60 html5lib magic-wormhole netifaces pyasn1 pycrypto pyutil pyyaml recommonmark 61 61 service-identity simplejson sphinx_rtd_theme testtools treq twisted zfec 62 62 zope_interface 63 - ] ++ twisted.extras-require.tls 64 - ++ twisted.extras-require.conch; 63 + ] ++ twisted.optional-dependencies.tls 64 + ++ twisted.optional-dependencies.conch; 65 65 66 66 checkInputs = with python3Packages; [ mock hypothesis twisted ]; 67 67
+2 -2
pkgs/tools/security/wapiti/default.nix
··· 39 39 yaswfp 40 40 ] ++ lib.optionals (python3.pythonOlder "3.8") [ 41 41 importlib-metadata 42 - ] ++ httpx.extras-require.brotli 43 - ++ httpx.extras-require.socks; 42 + ] ++ httpx.optional-dependencies.brotli 43 + ++ httpx.optional-dependencies.socks; 44 44 45 45 checkInputs = with python3.pkgs; [ 46 46 respx