1{
2 lib,
3 buildPythonApplication,
4 buildPythonPackage,
5 fetchFromGitHub,
6 importlib-metadata,
7 makeWrapper,
8 markdown-it-py,
9 pytestCheckHook,
10 pythonOlder,
11 setuptools,
12 tomli,
13 typing-extensions,
14}:
15
16buildPythonPackage rec {
17 pname = "mdformat";
18 version = "0.7.17";
19 pyproject = true;
20
21 disabled = pythonOlder "3.8";
22
23 src = fetchFromGitHub {
24 owner = "executablebooks";
25 repo = "mdformat";
26 rev = "refs/tags/${version}";
27 hash = "sha256-umtfbhN6sDR/rFr1LwmJ21Ph9bK1Qq43bmMVzGCPD5s=";
28 };
29
30 nativeBuildInputs = [ setuptools ];
31
32 propagatedBuildInputs =
33 [ markdown-it-py ]
34 ++ lib.optionals (pythonOlder "3.11") [ tomli ]
35 ++ lib.optionals (pythonOlder "3.10") [ importlib-metadata ];
36
37 nativeCheckInputs = [ pytestCheckHook ];
38
39 pythonImportsCheck = [ "mdformat" ];
40
41 passthru = {
42 withPlugins = throw "Use pkgs.mdformat.withPlugins, i.e. the top-level attribute.";
43 };
44
45 meta = with lib; {
46 description = "CommonMark compliant Markdown formatter";
47 homepage = "https://mdformat.rtfd.io/";
48 changelog = "https://github.com/executablebooks/mdformat/blob/${version}/docs/users/changelog.md";
49 license = licenses.mit;
50 maintainers = with maintainers; [
51 fab
52 aldoborrero
53 ];
54 mainProgram = "mdformat";
55 };
56}