1{
2 lib,
3 boto3,
4 botocore,
5 buildPythonPackage,
6 fetchFromGitHub,
7 jinja2,
8 loguru,
9 mdformat,
10 packaging,
11 prompt-toolkit,
12 pytest-mock,
13 pytestCheckHook,
14 pythonOlder,
15 questionary,
16 requests-mock,
17 requests,
18 ruff,
19 setuptools,
20 versionCheckHook,
21}:
22
23buildPythonPackage rec {
24 pname = "mypy-boto3-builder";
25 version = "8.11.0";
26 pyproject = true;
27
28 disabled = pythonOlder "3.12";
29
30 src = fetchFromGitHub {
31 owner = "youtype";
32 repo = "mypy_boto3_builder";
33 tag = version;
34 hash = "sha256-7NrN42DcM+NNTjRnOdDzPBTKFRex8Ph4bVjdVgJa4Po=";
35 };
36
37 postPatch = ''
38 substituteInPlace pyproject.toml \
39 --replace-fail 'version = "8.10.1"' 'version = "${version}"'
40 '';
41
42 build-system = [ setuptools ];
43
44 dependencies = [
45 boto3
46 botocore
47 jinja2
48 loguru
49 mdformat
50 packaging
51 prompt-toolkit
52 questionary
53 requests
54 ruff
55 setuptools
56 ];
57
58 nativeCheckInputs = [
59 pytest-mock
60 pytestCheckHook
61 requests-mock
62 versionCheckHook
63 ];
64
65 versionCheckProgramArg = "--version";
66
67 pythonImportsCheck = [ "mypy_boto3_builder" ];
68
69 disabledTests = [
70 # Tests require network access
71 "TestBotocoreChangelogChangelog"
72 ];
73
74 meta = {
75 description = "Type annotations builder for boto3";
76 homepage = "https://github.com/youtype/mypy_boto3_builder";
77 changelog = "https://github.com/youtype/mypy_boto3_builder/releases/tag/${version}";
78 license = lib.licenses.bsd3;
79 maintainers = with lib.maintainers; [ fab ];
80 mainProgram = "mypy_boto3_builder";
81 };
82}