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 = "6.0.1";
14
15 src = fetchPypi {
16 inherit pname version;
17 hash = "sha256-YdeEb8G58m7CFnjpkHQmkJX5ZNe72M1kbrbIxML4jcE=";
18 };
19
20 postPatch = ''
21 sed -i 's/flake8.*/flake8/' requirements.txt
22 substituteInPlace hacking/checks/python23.py \
23 --replace 'H236: class Foo(object):\n __metaclass__ = \' 'Okay: class Foo(object):\n __metaclass__ = \'
24 substituteInPlace hacking/checks/except_checks.py \
25 --replace 'H201: except:' 'Okay: except:'
26 '';
27
28 nativeBuildInputs = [ pbr ];
29
30 propagatedBuildInputs = [
31 flake8
32 ];
33
34 nativeCheckInputs = [
35 ddt
36 stestr
37 testscenarios
38 ];
39
40 checkPhase = ''
41 # tries to trigger flake8 and fails
42 rm hacking/tests/test_doctest.py
43
44 stestr run
45 '';
46
47 pythonImportsCheck = [ "hacking" ];
48
49 meta = with lib; {
50 description = "OpenStack Hacking Guideline Enforcement";
51 homepage = "https://github.com/openstack/hacking";
52 license = licenses.asl20;
53 maintainers = teams.openstack.members;
54 };
55}