1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 ply,
7 python,
8}:
9
10buildPythonPackage rec {
11 pname = "calmjs-parse";
12 version = "1.3.1";
13
14 pyproject = true;
15
16 src = fetchFromGitHub {
17 owner = "calmjs";
18 repo = "calmjs.parse";
19 rev = version;
20 hash = "sha256-xph+NuTkWfW0t/1vxWBSgsjU7YHQMnsm/W/XdkAnl7I=";
21 };
22
23 postPatch = ''
24 substituteInPlace setup.py \
25 --replace "env['PYTHONPATH'] = 'src'" "env['PYTHONPATH'] += ':src'"
26 '';
27
28 nativeBuildInputs = [ setuptools ];
29
30 propagatedBuildInputs = [
31 setuptools
32 ply
33 ];
34
35 checkPhase = ''
36 runHook preCheck
37
38 ${python.interpreter} -m unittest calmjs.parse.tests.make_suite
39
40 runHook postCheck
41 '';
42
43 pythonImportsCheck = [
44 "calmjs.parse"
45 "calmjs.parse.asttypes"
46 "calmjs.parse.parsers"
47 "calmjs.parse.rules"
48 "calmjs.parse.sourcemap"
49 "calmjs.parse.unparsers.es5"
50 "calmjs.parse.walkers"
51 ];
52
53 meta = with lib; {
54 changelog = "https://github.com/calmjs/calmjs.parse/blob/${src.rev}/CHANGES.rst";
55 description = "Various parsers for ECMA standards";
56 homepage = "https://github.com/calmjs/calmjs.parse";
57 license = licenses.mit;
58 maintainers = with maintainers; [ dotlambda ];
59 };
60}