1{
2 lib,
3 attrs,
4 buildPythonPackage,
5 commonmark,
6 fetchFromGitHub,
7 flit-core,
8 linkify-it-py,
9 markdown,
10 mdit-py-plugins,
11 mdurl,
12 mistletoe,
13 mistune,
14 myst-parser,
15 panflute,
16 pyyaml,
17 sphinx,
18 sphinx-book-theme,
19 sphinx-copybutton,
20 sphinx-design,
21 stdenv,
22 pytest-regressions,
23 pytestCheckHook,
24 pythonRelaxDepsHook,
25 pythonOlder,
26}:
27
28buildPythonPackage rec {
29 pname = "markdown-it-py";
30 version = "3.0.0";
31 format = "pyproject";
32
33 disabled = pythonOlder "3.6";
34
35 src = fetchFromGitHub {
36 owner = "executablebooks";
37 repo = pname;
38 rev = "refs/tags/v${version}";
39 hash = "sha256-cmjLElJA61EysTUFMVY++Kw0pI4wOIXOyCY3To9fpQc=";
40 };
41
42 # fix downstrem usage of markdown-it-py[linkify]
43 pythonRelaxDeps = [ "linkify-it-py" ];
44
45 nativeBuildInputs = [
46 pythonRelaxDepsHook
47 flit-core
48 ];
49
50 propagatedBuildInputs = [ mdurl ];
51
52 nativeCheckInputs = [
53 pytest-regressions
54 pytestCheckHook
55 ] ++ passthru.optional-dependencies.linkify;
56
57 # disable and remove benchmark tests
58 preCheck = ''
59 rm -r benchmarking
60 '';
61 doCheck = !stdenv.isi686;
62
63 pythonImportsCheck = [ "markdown_it" ];
64
65 passthru.optional-dependencies = {
66 compare = [
67 commonmark
68 markdown
69 mistletoe
70 mistune
71 panflute
72 ];
73 linkify = [ linkify-it-py ];
74 plugins = [ mdit-py-plugins ];
75 rtd = [
76 attrs
77 myst-parser
78 pyyaml
79 sphinx
80 sphinx-copybutton
81 sphinx-design
82 sphinx-book-theme
83 ];
84 };
85
86 meta = with lib; {
87 description = "Markdown parser in Python";
88 homepage = "https://markdown-it-py.readthedocs.io/";
89 changelog = "https://github.com/executablebooks/markdown-it-py/blob/${src.rev}/CHANGELOG.md";
90 license = licenses.mit;
91 maintainers = with maintainers; [ bhipple ];
92 mainProgram = "markdown-it";
93 };
94}