@ai-devtools/dbspec-linux-x64 0.7.11 → 0.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dbspec/_internal/base_library.zip +0 -0
- package/bin/dbspec/_internal/dbspec.egg-info/PKG-INFO +175 -0
- package/bin/dbspec/_internal/dbspec.egg-info/SOURCES.txt +187 -0
- package/bin/dbspec/_internal/dbspec.egg-info/dependency_links.txt +1 -0
- package/bin/dbspec/_internal/dbspec.egg-info/entry_points.txt +2 -0
- package/bin/dbspec/_internal/dbspec.egg-info/requires.txt +8 -0
- package/bin/dbspec/_internal/dbspec.egg-info/top_level.txt +1 -0
- package/bin/dbspec/_internal/greenlet/_greenlet.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/libbz2.so.1.0 +0 -0
- package/bin/dbspec/_internal/libcom_err-2abe824b.so.2.1 +0 -0
- package/bin/dbspec/_internal/libcrypt-13f4f5d0.so.1 +0 -0
- package/bin/dbspec/_internal/libcrypto-e7530dde.so.3 +0 -0
- package/bin/dbspec/_internal/libcrypto.so.3 +0 -0
- package/bin/dbspec/_internal/libffi.so.8 +0 -0
- package/bin/dbspec/_internal/libgcc_s.so.1 +0 -0
- package/bin/dbspec/_internal/libgssapi_krb5-497db0c6.so.2.2 +0 -0
- package/bin/dbspec/_internal/libk5crypto-b1f99d5c.so.3.1 +0 -0
- package/bin/dbspec/_internal/libkeyutils-dfe70bd6.so.1.5 +0 -0
- package/bin/dbspec/_internal/libkrb5-fcafa220.so.3.3 +0 -0
- package/bin/dbspec/_internal/libkrb5support-d0bcff84.so.0.1 +0 -0
- package/bin/dbspec/_internal/liblber-9320a7df.so.2.0.200 +0 -0
- package/bin/dbspec/_internal/libldap-fa0f4823.so.2.0.200 +0 -0
- package/bin/dbspec/_internal/liblzma.so.5 +0 -0
- package/bin/dbspec/_internal/libncursesw.so.6 +0 -0
- package/bin/dbspec/_internal/libobjc.so.4 +0 -0
- package/bin/dbspec/_internal/libpcre-9513aab5.so.1.2.0 +0 -0
- package/bin/dbspec/_internal/libpq-2be5f14a.so.5.18 +0 -0
- package/bin/{dbspec → dbspec/_internal/libpython3.13.so.1.0} +0 -0
- package/bin/dbspec/_internal/libreadline.so.8 +0 -0
- package/bin/dbspec/_internal/libsasl2-84219a89.so.3.0.0 +0 -0
- package/bin/dbspec/_internal/libselinux-0922c95c.so.1 +0 -0
- package/bin/dbspec/_internal/libsqlite3.so.0 +0 -0
- package/bin/dbspec/_internal/libssl-4a840876.so.3 +0 -0
- package/bin/dbspec/_internal/libssl.so.3 +0 -0
- package/bin/dbspec/_internal/libstdc++.so.6 +0 -0
- package/bin/dbspec/_internal/libtinfo.so.6 +0 -0
- package/bin/dbspec/_internal/libuuid.so.1 +0 -0
- package/bin/dbspec/_internal/libz.so.1 +0 -0
- package/bin/dbspec/_internal/markupsafe/_speedups.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/METADATA +74 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/RECORD +14 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/WHEEL +7 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/licenses/LICENSE.txt +28 -0
- package/bin/dbspec/_internal/markupsafe-3.0.3.dist-info/top_level.txt +1 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/METADATA +110 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/RECORD +174 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/WHEEL +5 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/licenses/LICENSE.txt +165 -0
- package/bin/dbspec/_internal/psycopg-3.3.4.dist-info/top_level.txt +1 -0
- package/bin/dbspec/_internal/psycopg_binary/_psycopg.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/psycopg_binary/pq.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/METADATA +67 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/RECORD +35 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/WHEEL +6 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/licenses/LICENSE.txt +165 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/sboms/auditwheel.cdx.json +1 -0
- package/bin/dbspec/_internal/psycopg_binary-3.3.4.dist-info/top_level.txt +1 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libcom_err-2abe824b.so.2.1 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libcrypt-13f4f5d0.so.1 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libcrypto-e7530dde.so.3 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libgssapi_krb5-497db0c6.so.2.2 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libk5crypto-b1f99d5c.so.3.1 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libkeyutils-dfe70bd6.so.1.5 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libkrb5-fcafa220.so.3.3 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libkrb5support-d0bcff84.so.0.1 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/liblber-9320a7df.so.2.0.200 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libldap-fa0f4823.so.2.0.200 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libpcre-9513aab5.so.1.2.0 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libpq-2be5f14a.so.5.18 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libsasl2-84219a89.so.3.0.0 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libselinux-0922c95c.so.1 +0 -0
- package/bin/dbspec/_internal/psycopg_binary.libs/libssl-4a840876.so.3 +0 -0
- package/bin/dbspec/_internal/pydantic-2.13.4.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/pydantic-2.13.4.dist-info/METADATA +1294 -0
- package/bin/dbspec/_internal/pydantic-2.13.4.dist-info/RECORD +217 -0
- package/bin/dbspec/_internal/pydantic-2.13.4.dist-info/WHEEL +4 -0
- package/bin/dbspec/_internal/pydantic-2.13.4.dist-info/licenses/LICENSE +21 -0
- package/bin/dbspec/_internal/pydantic_core/_pydantic_core.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/pyproject.toml +30 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_asyncio.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_bisect.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_blake2.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_bz2.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_cn.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_hk.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_iso2022.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_jp.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_kr.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_codecs_tw.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_contextvars.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_csv.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_ctypes.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_curses.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_datetime.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_decimal.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_elementtree.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_hashlib.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_heapq.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_json.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_lzma.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_md5.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_multibytecodec.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_multiprocessing.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_opcode.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_pickle.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_posixshmem.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_posixsubprocess.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_queue.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_random.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_sha1.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_sha2.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_sha3.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_socket.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_sqlite3.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_ssl.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_statistics.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_struct.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_uuid.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/_zoneinfo.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/array.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/binascii.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/fcntl.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/grp.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/math.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/mmap.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/pyexpat.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/readline.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/resource.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/select.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/syslog.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/termios.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/unicodedata.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/python3.13/lib-dynload/zlib.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA +133 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD +21 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED +0 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL +5 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +73 -0
- package/bin/dbspec/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt +1 -0
- package/bin/dbspec/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +2 -0
- package/bin/dbspec/_internal/sqlalchemy/cyextension/collections.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/sqlalchemy/cyextension/immutabledict.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/sqlalchemy/cyextension/processors.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/sqlalchemy/cyextension/resultproxy.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/sqlalchemy/cyextension/util.cpython-313-x86_64-linux-gnu.so +0 -0
- package/bin/dbspec/_internal/src/resources/sqlalchemy_templates/README.md +59 -0
- package/bin/dbspec/_internal/src/resources/sqlalchemy_templates/base.py.j2 +23 -0
- package/bin/dbspec/_internal/src/resources/sqlalchemy_templates/domain_init.py.j2 +17 -0
- package/bin/dbspec/_internal/src/resources/sqlalchemy_templates/model.py.j2 +315 -0
- package/bin/dbspec/_internal/src/resources/sqlalchemy_templates/package_init.py.j2 +34 -0
- package/bin/dbspec/_internal/textual-8.2.5.dist-info/INSTALLER +1 -0
- package/bin/dbspec/_internal/textual-8.2.5.dist-info/METADATA +266 -0
- package/bin/dbspec/_internal/textual-8.2.5.dist-info/RECORD +516 -0
- package/bin/dbspec/_internal/textual-8.2.5.dist-info/WHEEL +4 -0
- package/bin/dbspec/_internal/textual-8.2.5.dist-info/licenses/LICENSE +21 -0
- package/bin/dbspec/dbspec +0 -0
- package/package-metadata.json +2 -2
- package/package.json +4 -4
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: textual
|
|
3
|
+
Version: 8.2.5
|
|
4
|
+
Summary: Modern Text User Interface framework
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Author: Will McGugan
|
|
8
|
+
Author-email: will@textualize.io
|
|
9
|
+
Requires-Python: >=3.9,<4.0
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
|
|
16
|
+
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
|
|
17
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Typing :: Typed
|
|
26
|
+
Provides-Extra: syntax
|
|
27
|
+
Requires-Dist: markdown-it-py[linkify] (>=2.1.0)
|
|
28
|
+
Requires-Dist: mdit-py-plugins
|
|
29
|
+
Requires-Dist: platformdirs (>=3.6.0,<5)
|
|
30
|
+
Requires-Dist: pygments (>=2.19.2,<3.0.0)
|
|
31
|
+
Requires-Dist: rich (>=14.2.0)
|
|
32
|
+
Requires-Dist: tree-sitter (>=0.25.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
33
|
+
Requires-Dist: tree-sitter-bash (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
34
|
+
Requires-Dist: tree-sitter-css (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
35
|
+
Requires-Dist: tree-sitter-go (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
36
|
+
Requires-Dist: tree-sitter-html (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
37
|
+
Requires-Dist: tree-sitter-java (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
38
|
+
Requires-Dist: tree-sitter-javascript (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
39
|
+
Requires-Dist: tree-sitter-json (>=0.24.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
40
|
+
Requires-Dist: tree-sitter-markdown (>=0.3.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
41
|
+
Requires-Dist: tree-sitter-python (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
42
|
+
Requires-Dist: tree-sitter-regex (>=0.24.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
43
|
+
Requires-Dist: tree-sitter-rust (>=0.23.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
44
|
+
Requires-Dist: tree-sitter-sql (>=0.3.11) ; (python_version >= "3.10") and (extra == "syntax")
|
|
45
|
+
Requires-Dist: tree-sitter-toml (>=0.6.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
46
|
+
Requires-Dist: tree-sitter-xml (>=0.7.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
47
|
+
Requires-Dist: tree-sitter-yaml (>=0.6.0) ; (python_version >= "3.10") and (extra == "syntax")
|
|
48
|
+
Requires-Dist: typing-extensions (>=4.4.0,<5.0.0)
|
|
49
|
+
Project-URL: Bug Tracker, https://github.com/Textualize/textual/issues
|
|
50
|
+
Project-URL: Documentation, https://textual.textualize.io/
|
|
51
|
+
Project-URL: Homepage, https://github.com/Textualize/textual
|
|
52
|
+
Project-URL: Repository, https://github.com/Textualize/textual
|
|
53
|
+
Description-Content-Type: text/markdown
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
[](https://discord.gg/Enf6Z3qhVr)
|
|
58
|
+
[](https://pypi.org/project/textual/)
|
|
59
|
+
[](https://badge.fury.io/py/textual)
|
|
60
|
+

|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
66
|
+
# Textual
|
|
67
|
+
|
|
68
|
+
<img align="right" width="250" alt="clock" src="https://github.com/user-attachments/assets/63e839c3-5b8e-478d-b78e-cf7647eb85e8" />
|
|
69
|
+
|
|
70
|
+
Build cross-platform user interfaces with a simple Python API. Run your apps in the terminal *or* a web browser.
|
|
71
|
+
|
|
72
|
+
Textual's API combines modern Python with the best of developments from the web world, for a lean app development experience.
|
|
73
|
+
De-coupled components and an advanced [testing](https://textual.textualize.io/guide/testing/) framework ensure you can maintain your app for the long-term.
|
|
74
|
+
|
|
75
|
+
Want some more examples? See the [examples](https://github.com/Textualize/textual/tree/main/examples) directory.
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
"""
|
|
79
|
+
An App to show the current time.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
from datetime import datetime
|
|
83
|
+
|
|
84
|
+
from textual.app import App, ComposeResult
|
|
85
|
+
from textual.widgets import Digits
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class ClockApp(App):
|
|
89
|
+
CSS = """
|
|
90
|
+
Screen { align: center middle; }
|
|
91
|
+
Digits { width: auto; }
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
def compose(self) -> ComposeResult:
|
|
95
|
+
yield Digits("")
|
|
96
|
+
|
|
97
|
+
def on_ready(self) -> None:
|
|
98
|
+
self.update_clock()
|
|
99
|
+
self.set_interval(1, self.update_clock)
|
|
100
|
+
|
|
101
|
+
def update_clock(self) -> None:
|
|
102
|
+
clock = datetime.now().time()
|
|
103
|
+
self.query_one(Digits).update(f"{clock:%T}")
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
if __name__ == "__main__":
|
|
107
|
+
app = ClockApp()
|
|
108
|
+
app.run()
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
> [!TIP]
|
|
112
|
+
> Textual is an asynchronous framework under the hood. Which means you can integrate your apps with async libraries — if you want to.
|
|
113
|
+
> If you don't want or need to use async, Textual won't force it on you.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="64"/>
|
|
118
|
+
|
|
119
|
+
## Widgets
|
|
120
|
+
|
|
121
|
+
Textual's library of [widgets](https://textual.textualize.io/widget_gallery/) covers everything from buttons, tree controls, data tables, inputs, text areas, and more…
|
|
122
|
+
Combined with a flexible [layout](https://textual.textualize.io/how-to/design-a-layout/) system, you can realize any User Interface you need.
|
|
123
|
+
|
|
124
|
+
Predefined themes ensure your apps will look good out of the box.
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
<table>
|
|
128
|
+
|
|
129
|
+
<tr>
|
|
130
|
+
|
|
131
|
+
<td>
|
|
132
|
+
|
|
133
|
+

|
|
134
|
+
|
|
135
|
+
</td>
|
|
136
|
+
|
|
137
|
+
<td>
|
|
138
|
+
|
|
139
|
+

|
|
140
|
+
|
|
141
|
+
</td>
|
|
142
|
+
|
|
143
|
+
</tr>
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
<tr>
|
|
147
|
+
|
|
148
|
+
<td>
|
|
149
|
+
|
|
150
|
+

|
|
151
|
+
|
|
152
|
+
</td>
|
|
153
|
+
|
|
154
|
+
<td>
|
|
155
|
+
|
|
156
|
+

|
|
157
|
+
|
|
158
|
+
</td>
|
|
159
|
+
|
|
160
|
+
</tr>
|
|
161
|
+
<tr>
|
|
162
|
+
|
|
163
|
+
<td>
|
|
164
|
+
|
|
165
|
+

|
|
166
|
+
|
|
167
|
+
</td>
|
|
168
|
+
|
|
169
|
+
<td>
|
|
170
|
+
|
|
171
|
+

|
|
172
|
+
|
|
173
|
+
</td>
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
</tr>
|
|
177
|
+
|
|
178
|
+
</table>
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
182
|
+
|
|
183
|
+
## Installing
|
|
184
|
+
|
|
185
|
+
Install Textual via pip:
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
pip install textual textual-dev
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
See [getting started](https://textual.textualize.io/getting_started/) for details.
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
195
|
+
|
|
196
|
+
## Demo
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
Run the following command to see a little of what Textual can do:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
python -m textual
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Or try the [textual demo](https://github.com/textualize/textual-demo) *without* installing (requires [uv](https://docs.astral.sh/uv/)):
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
uvx --python 3.12 textual-demo
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
212
|
+
|
|
213
|
+
## Dev Console
|
|
214
|
+
|
|
215
|
+
<img align="right" width="40%" alt="devtools" src="https://github.com/user-attachments/assets/12c60d65-e342-4b2f-9372-bae0459a7552" />
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
How do you debug an app in the terminal that is also running in the terminal?
|
|
219
|
+
|
|
220
|
+
The `textual-dev` package supplies a dev console that connects to your application from another terminal.
|
|
221
|
+
In addition to system messages and events, your logged messages and print statements will appear in the dev console.
|
|
222
|
+
|
|
223
|
+
See [the guide](https://textual.textualize.io/guide/devtools/) for other helpful tools provided by the `textual-dev` package.
|
|
224
|
+
|
|
225
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
226
|
+
|
|
227
|
+
## Command Palette
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
Textual apps have a *fuzzy search* command palette.
|
|
231
|
+
Hit `ctrl+p` to open the command palette.
|
|
232
|
+
|
|
233
|
+
It is easy to extend the command palette with [custom commands](https://textual.textualize.io/guide/command_palette/) for your application.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+

|
|
237
|
+
|
|
238
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
239
|
+
|
|
240
|
+
# Textual ❤️ Web
|
|
241
|
+
|
|
242
|
+
<img align="right" width="40%" alt="textual-serve" src="https://github.com/user-attachments/assets/a25820fb-87ae-433a-858b-ac3940169242">
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
Textual apps are equally at home in the browser as they are the terminal. Any Textual app may be served with `textual serve` — so you can share your creations on the web.
|
|
246
|
+
Here's how to serve the demo app:
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
textual serve "python -m textual"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
In addition to serving your apps locally, you can serve apps with [Textual Web](https://github.com/Textualize/textual-web).
|
|
253
|
+
|
|
254
|
+
Textual Web's firewall-busting technology can serve an unlimited number of applications.
|
|
255
|
+
|
|
256
|
+
Since Textual apps have low system requirements, you can install them anywhere Python also runs. Turning any device into a connected device.
|
|
257
|
+
No desktop required!
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
<img src="https://img.spacergif.org/spacer.gif" width="1" height="32"/>
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
## Join us on Discord
|
|
264
|
+
|
|
265
|
+
Join the Textual developers and community on our [Discord Server](https://discord.gg/Enf6Z3qhVr).
|
|
266
|
+
|