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