1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 flit-core,
6 pythonOlder,
7 defusedxml,
8 docutils,
9 jinja2,
10 markdown-it-py,
11 mdit-py-plugins,
12 pyyaml,
13 sphinx,
14 typing-extensions,
15 beautifulsoup4,
16 pytest-param-files,
17 pytest-regressions,
18 sphinx-pytest,
19 pytestCheckHook,
20}:
21buildPythonPackage rec {
22 pname = "myst-parser";
23 version = "4.0.1";
24 pyproject = true;
25
26 disabled = pythonOlder "3.10";
27
28 src = fetchFromGitHub {
29 owner = "executablebooks";
30 repo = "myst-parser";
31 tag = "v${version}";
32 hash = "sha256-/Prauz4zuJY39EK2BmgBbH1uwjF4K38e5X5hPYwRBl0=";
33 };
34
35 build-system = [ flit-core ];
36
37 dependencies = [
38 docutils
39 jinja2
40 mdit-py-plugins
41 markdown-it-py
42 pyyaml
43 sphinx
44 typing-extensions
45 ];
46
47 nativeCheckInputs = [
48 beautifulsoup4
49 defusedxml
50 pytest-param-files
51 pytest-regressions
52 sphinx-pytest
53 pytestCheckHook
54 ]
55 ++ markdown-it-py.optional-dependencies.linkify;
56
57 disabledTests = [
58 # sphinx 8.2 compat
59 # https://github.com/executablebooks/MyST-Parser/issues/1030
60 "test_sphinx_directives"
61 "test_references_singlehtml"
62 "test_extended_syntaxes"
63 "test_fieldlist_extension"
64 "test_includes"
65 ];
66
67 pythonImportsCheck = [ "myst_parser" ];
68
69 pythonRelaxDeps = [ "docutils" ];
70
71 meta = with lib; {
72 description = "Sphinx and Docutils extension to parse MyST";
73 homepage = "https://myst-parser.readthedocs.io/";
74 changelog = "https://raw.githubusercontent.com/executablebooks/MyST-Parser/v${version}/CHANGELOG.md";
75 license = licenses.mit;
76 maintainers = with maintainers; [ loicreynier ];
77 };
78}