1{ lib
2, buildPythonPackage
3, fetchPypi
4, pbr
5, flake8
6, stestr
7, ddt
8, testscenarios
9}:
10
11buildPythonPackage rec {
12 pname = "hacking";
13 version = "4.1.0";
14
15 src = fetchPypi {
16 inherit pname version;
17 sha256 = "0fg19rlcky3n1y1ri61xyjp7534yzf8r102z9dw3zqg93f4kj20m";
18 };
19
20 postPatch = ''
21 substituteInPlace requirements.txt \
22 --replace "flake8<3.9.0,>=3.8.0" "flake8"
23 substituteInPlace hacking/checks/python23.py \
24 --replace 'H236: class Foo(object):\n __metaclass__ = \' 'Okay: class Foo(object):\n __metaclass__ = \'
25 substituteInPlace hacking/checks/except_checks.py \
26 --replace 'H201: except:' 'Okay: except:'
27 '';
28
29 nativeBuildInputs = [ pbr ];
30
31 propagatedBuildInputs = [
32 flake8
33 ];
34
35 checkInputs = [
36 ddt
37 stestr
38 testscenarios
39 ];
40
41 checkPhase = ''
42 # tries to trigger flake8 and fails
43 rm hacking/tests/test_doctest.py
44
45 stestr run
46 '';
47
48 pythonImportsCheck = [ "hacking" ];
49
50 meta = with lib; {
51 description = "OpenStack Hacking Guideline Enforcement";
52 homepage = "https://github.com/openstack/hacking";
53 license = licenses.asl20;
54 maintainers = teams.openstack.members;
55 };
56}