1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 pbr,
6 flake8,
7 stestr,
8 ddt,
9 testscenarios,
10}:
11
12buildPythonPackage rec {
13 pname = "hacking";
14 version = "6.1.0";
15 format = "setuptools";
16
17 src = fetchPypi {
18 inherit pname version;
19 hash = "sha256-3lBqMSQDThi046acld5JjDRgvLxJwWQ9MXjRW8barBQ=";
20 };
21
22 postPatch = ''
23 sed -i 's/flake8.*/flake8/' requirements.txt
24 substituteInPlace hacking/checks/python23.py \
25 --replace 'H236: class Foo(object):\n __metaclass__ = \' 'Okay: class Foo(object):\n __metaclass__ = \'
26 substituteInPlace hacking/checks/except_checks.py \
27 --replace 'H201: except:' 'Okay: except:'
28 '';
29
30 nativeBuildInputs = [ pbr ];
31
32 propagatedBuildInputs = [ flake8 ];
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}