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 id
43 keyring
44 packaging
45 pkginfo
46 readme-renderer
47 requests
48 requests-toolbelt
49 rfc3986
50 rich
51 urllib3
52 ]
53 ++ lib.optionals (pythonOlder "3.10") [
54 importlib-metadata
55 ];
56
57 nativeCheckInputs = [
58 build
59 pretend
60 pytest-socket
61 pytestCheckHook
62 ];
63
64 pythonImportsCheck = [ "twine" ];
65
66 meta = {
67 description = "Collection of utilities for interacting with PyPI";
68 mainProgram = "twine";
69 homepage = "https://github.com/pypa/twine";
70 license = lib.licenses.asl20;
71 };
72}