1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, poetry-core
5, mkdocs-exclude
6, markdown-it-py
7, mdit-py-plugins
8, linkify-it-py
9, importlib-metadata
10, rich
11, typing-extensions
12, aiohttp
13, click
14, jinja2
15, msgpack
16, pytest-aiohttp
17, pytestCheckHook
18, pythonOlder
19, syrupy
20, time-machine
21}:
22
23buildPythonPackage rec {
24 pname = "textual";
25 version = "0.26.0";
26 format = "pyproject";
27
28 disabled = pythonOlder "3.7";
29
30 src = fetchFromGitHub {
31 owner = "Textualize";
32 repo = pname;
33 rev = "refs/tags/v${version}";
34 hash = "sha256-l4zSSROeI55hFnf0C64bbAB+1cATUkS59Uybf7ZmSfs=";
35 };
36
37 nativeBuildInputs = [
38 poetry-core
39 ];
40
41 propagatedBuildInputs = [
42 rich
43 markdown-it-py
44 mdit-py-plugins
45 linkify-it-py
46 importlib-metadata
47 aiohttp
48 click
49 msgpack
50 mkdocs-exclude
51 ] ++ lib.optionals (pythonOlder "3.11") [
52 typing-extensions
53 ];
54
55 nativeCheckInputs = [
56 jinja2
57 pytest-aiohttp
58 pytestCheckHook
59 syrupy
60 time-machine
61 ];
62
63 disabledTestPaths = [
64 # snapshot tests require syrupy<4
65 "tests/snapshot_tests/test_snapshots.py"
66 ];
67
68 pythonImportsCheck = [
69 "textual"
70 ];
71
72 __darwinAllowLocalNetworking = true;
73
74 meta = with lib; {
75 description = "TUI framework for Python inspired by modern web development";
76 homepage = "https://github.com/Textualize/textual";
77 changelog = "https://github.com/Textualize/textual/releases/tag/v${version}";
78 license = licenses.mit;
79 maintainers = with maintainers; [ joelkoen ];
80 };
81}