1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 pythonOlder,
6 id,
7 importlib-metadata,
8 keyring,
9 packaging,
10 pkginfo,
11 readme-renderer,
12 requests,
13 requests-toolbelt,
14 rich,
15 rfc3986,
16 setuptools,
17 setuptools-scm,
18 urllib3,
19 build,
20 pretend,
21 pytest-socket,
22 pytestCheckHook,
23}:
24
25buildPythonPackage rec {
26 pname = "twine";
27 version = "6.1.0";
28 pyproject = true;
29 disabled = pythonOlder "3.8";
30
31 src = fetchPypi {
32 inherit pname version;
33 hash = "sha256-vjJPYnLv+R0H7pPyUe3yMvxkeTXdWFrAA1ObQkBKjb0=";
34 };
35
36 build-system = [
37 setuptools
38 setuptools-scm
39 ];
40
41 dependencies =
42 [
43 id
44 keyring
45 packaging
46 pkginfo
47 readme-renderer
48 requests
49 requests-toolbelt
50 rfc3986
51 rich
52 urllib3
53 ]
54 ++ lib.optionals (pythonOlder "3.10") [
55 importlib-metadata
56 ];
57
58 nativeCheckInputs = [
59 build
60 pretend
61 pytest-socket
62 pytestCheckHook
63 ];
64
65 pythonImportsCheck = [ "twine" ];
66
67 meta = {
68 description = "Collection of utilities for interacting with PyPI";
69 mainProgram = "twine";
70 homepage = "https://github.com/pypa/twine";
71 license = lib.licenses.asl20;
72 };
73}