1{ lib
2, attrs
3, buildPythonPackage
4, commonmark
5, fetchFromGitHub
6, flit-core
7, linkify-it-py
8, markdown
9, mdit-py-plugins
10, mdurl
11, mistletoe
12, mistune
13, myst-parser
14, panflute
15, pyyaml
16, sphinx
17, sphinx-book-theme
18, sphinx-copybutton
19, sphinx-design
20, stdenv
21, pytest-regressions
22, pytestCheckHook
23, pythonRelaxDepsHook
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 = [
43 "linkify-it-py"
44 ];
45
46 nativeBuildInputs = [
47 pythonRelaxDepsHook
48 flit-core
49 ];
50
51 propagatedBuildInputs = [
52 mdurl
53 ];
54
55 nativeCheckInputs = [
56 pytest-regressions
57 pytestCheckHook
58 ] ++ passthru.optional-dependencies.linkify;
59
60 # disable and remove benchmark tests
61 preCheck = ''
62 rm -r benchmarking
63 '';
64 doCheck = !stdenv.isi686;
65
66 pythonImportsCheck = [
67 "markdown_it"
68 ];
69
70 passthru.optional-dependencies = {
71 compare = [ commonmark markdown mistletoe mistune panflute ];
72 linkify = [ linkify-it-py ];
73 plugins = [ mdit-py-plugins ];
74 rtd = [ attrs myst-parser pyyaml sphinx sphinx-copybutton sphinx-design sphinx-book-theme ];
75 };
76
77 meta = with lib; {
78 description = "Markdown parser in Python";
79 homepage = "https://markdown-it-py.readthedocs.io/";
80 changelog = "https://github.com/executablebooks/markdown-it-py/blob/${src.rev}/CHANGELOG.md";
81 license = licenses.mit;
82 maintainers = with maintainers; [ bhipple ];
83 };
84}