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.0";
24 format = "pyproject";
25
26 disabled = pythonOlder "3.10";
27
28 src = fetchFromGitHub {
29 owner = "executablebooks";
30 repo = pname;
31 rev = "refs/tags/v${version}";
32 hash = "sha256-QbFENC/Msc4pkEOPdDztjyl+2TXtAbMTHPJNAsUB978=";
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 ] ++ markdown-it-py.optional-dependencies.linkify;
55
56 disabledTests = [
57 # sphinx 7.4 compat
58 "test_gettext"
59 "test_gettext_additional_targets"
60 "test_amsmath"
61 ];
62
63 pythonImportsCheck = [ "myst_parser" ];
64
65 pythonRelaxDeps = [ "docutils" ];
66
67 meta = with lib; {
68 description = "Sphinx and Docutils extension to parse MyST";
69 homepage = "https://myst-parser.readthedocs.io/";
70 changelog = "https://raw.githubusercontent.com/executablebooks/MyST-Parser/v${version}/CHANGELOG.md";
71 license = licenses.mit;
72 maintainers = with maintainers; [ loicreynier ];
73 };
74}