1{ lib
2, fetchFromGitHub
3, python3
4}:
5
6
7let
8 python = python3.override {
9 packageOverrides = self: super: {
10 pydantic = self.pydantic_1;
11 };
12 };
13in python.pkgs.buildPythonApplication rec {
14 pname = "cfripper";
15 version = "1.15.6";
16 pyproject = true;
17
18 src = fetchFromGitHub {
19 owner = "Skyscanner";
20 repo = "cfripper";
21 rev = "refs/tags/v${version}";
22 hash = "sha256-h/NNTE5u1coyD4owiGjsK6SIuvDq1SQOPW4RM4yJtno=";
23 };
24
25 pythonRelaxDeps = [
26 "pluggy"
27 ];
28
29 nativeBuildInputs = with python.pkgs; [
30 pythonRelaxDepsHook
31 setuptools
32 setuptools-scm
33 ];
34
35 propagatedBuildInputs = with python.pkgs; [
36 boto3
37 cfn-flip
38 click
39 pluggy
40 pycfmodel
41 pydash
42 pyyaml
43 setuptools
44 ];
45
46 nativeCheckInputs = with python.pkgs; [
47 moto
48 pytestCheckHook
49 ];
50
51 disabledTestPaths = [
52 # Tests are failing
53 "tests/test_boto3_client.py"
54 "tests/config/test_pluggy.py"
55 ];
56
57 disabledTests = [
58 # Assertion fails
59 "test_multiple_resources_with_wildcard_resources_are_detected"
60 ];
61
62 pythonImportsCheck = [
63 "cfripper"
64 ];
65
66 meta = with lib; {
67 description = "Tool for analysing CloudFormation templates";
68 mainProgram = "cfripper";
69 homepage = "https://github.com/Skyscanner/cfripper";
70 changelog = "https://github.com/Skyscanner/cfripper/releases/tag/v${version}";
71 license = with licenses; [ asl20 ];
72 maintainers = with maintainers; [ fab ];
73 };
74}