@ai-devtools/dbspec-linux-x64 0.7.12 → 0.7.15
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
|
Binary file
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dbspec
|
|
3
|
+
Version: 0.7.15
|
|
4
|
+
Summary: DBSpec: CLI/TUI for database design (Excel as DSL)
|
|
5
|
+
Requires-Python: >=3.11
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: textual
|
|
8
|
+
Requires-Dist: rich
|
|
9
|
+
Requires-Dist: openpyxl
|
|
10
|
+
Requires-Dist: pydantic>=2.0.0
|
|
11
|
+
Requires-Dist: sqlalchemy
|
|
12
|
+
Requires-Dist: alembic
|
|
13
|
+
Requires-Dist: psycopg[binary]
|
|
14
|
+
Requires-Dist: jinja2
|
|
15
|
+
|
|
16
|
+
# DBSpec
|
|
17
|
+
|
|
18
|
+

|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
**Проектирование реляционных баз данных со скоростью продуктовой команды.**
|
|
22
|
+
|
|
23
|
+
DBSpec — CLI/TUI-инструмент для команд, которые моделируют данные в таблицах, но хотят инженерную воспроизводимость и контроль качества.
|
|
24
|
+
Он превращает привычный spreadsheet-процесс в проверяемый delivery pipeline:
|
|
25
|
+
|
|
26
|
+
- XLSX как удобная поверхность редактирования для аналитиков;
|
|
27
|
+
- JSONL (`.dbspec/data/*.jsonl`) как SSOT;
|
|
28
|
+
- CLI/TUI-операции для sync, validation, import, code generation и migrations.
|
|
29
|
+
|
|
30
|
+
## Why DBSpec
|
|
31
|
+
|
|
32
|
+
Проектирование БД часто ломается между бизнес-смыслом и техническими деталями:
|
|
33
|
+
|
|
34
|
+
- аналитики быстро работают в spreadsheets, но такие изменения сложно проверять и ревьюить;
|
|
35
|
+
- инженерам нужен структурированный источник данных для автоматизации, проверок и генерации кода;
|
|
36
|
+
- команды теряют время на перенос смысла схемы в SQL/models и поддержку синхронизации.
|
|
37
|
+
|
|
38
|
+
DBSpec решает это через единый operational flow: от spreadsheet-ввода до валидированных schema artifacts, пригодных для автоматизации.
|
|
39
|
+
|
|
40
|
+
## What You Get
|
|
41
|
+
|
|
42
|
+
- быструю итерацию схем без отказа от spreadsheet workflows;
|
|
43
|
+
- воспроизводимую синхронизацию XLSX и SSOT JSONL;
|
|
44
|
+
- встроенную validation для targets `ssot` и `db`;
|
|
45
|
+
- PostgreSQL import в SSOT;
|
|
46
|
+
- генерацию SQLAlchemy models из SSOT;
|
|
47
|
+
- управление Alembic migrations из CLI и TUI;
|
|
48
|
+
- установку CLI через npm package `@ai-devtools/dbspec`.
|
|
49
|
+
|
|
50
|
+
## Product Vision
|
|
51
|
+
|
|
52
|
+
DBSpec делает проектирование баз данных общим языком для analytics, backend и platform teams.
|
|
53
|
+
Вместо разрозненных инструментов он дает один source of truth и один workflow, понятный людям и исполняемый tooling.
|
|
54
|
+
|
|
55
|
+
## Quick Start
|
|
56
|
+
|
|
57
|
+
### 1. Установить CLI
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm i -g @ai-devtools/dbspec
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
После установки команда остается стабильной:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
dbspec --help
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. Инициализировать проект
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
dbspec init
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 3. Сгенерировать XLSX template
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
dbspec xlsx --template
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 4. Синхронизировать и проверить SSOT
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
dbspec sync
|
|
85
|
+
dbspec validate --target=ssot
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 5. Сгенерировать models
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
dbspec gen models
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Local Development
|
|
95
|
+
|
|
96
|
+
Для разработки из исходников установите зависимости:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
make install-deps
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Run CLI
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
dbspec --help
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
or
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
uv run python -m src --help
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Полный command reference: `docs/cli.md`.
|
|
115
|
+
|
|
116
|
+
## Run TUI
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
dbspec tui
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
TUI включает project workflows для init/xlsx/sync/import/validate/codegen/logs/migrations.
|
|
123
|
+
|
|
124
|
+
Migrations user guide: `docs/tui-migrations.md`.
|
|
125
|
+
|
|
126
|
+
## Configuration
|
|
127
|
+
|
|
128
|
+
Локальная конфигурация: `.dbspec/config.toml`.
|
|
129
|
+
|
|
130
|
+
Подробнее:
|
|
131
|
+
|
|
132
|
+
- `docs/config.md` — все ключи и defaults;
|
|
133
|
+
- `docs/jsonl-format.md` — формат SSOT JSONL;
|
|
134
|
+
- `docs/xlsx-template-structure.md` — структура XLSX и template resources.
|
|
135
|
+
|
|
136
|
+
## Development and Quality
|
|
137
|
+
|
|
138
|
+
После изменений в коде запускайте:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
make lint
|
|
142
|
+
make format
|
|
143
|
+
make test
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Environment и tooling: `docs/development.md`.
|
|
147
|
+
|
|
148
|
+
## Distribution
|
|
149
|
+
|
|
150
|
+
Пользовательский канал установки DBSpec — npm root package:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npm i -g @ai-devtools/dbspec
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Root package `@ai-devtools/dbspec` устанавливает команду `dbspec` и подтягивает matching platform package для поддерживаемой ОС/архитектуры. PyInstaller binary остается внутренним release artifact для сборки npm platform packages, но не является отдельным пользовательским install channel.
|
|
157
|
+
|
|
158
|
+
Для maintainer release flow:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
make build-binary
|
|
162
|
+
make smoke-binary
|
|
163
|
+
make npm-trust-setup DRY_RUN=1
|
|
164
|
+
make npm-trust-setup
|
|
165
|
+
make release TAG=v0.1.0
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Release process и maintainer checklist:
|
|
169
|
+
|
|
170
|
+
- `docs/process/release-process.md`;
|
|
171
|
+
- `docs/process/release-checklist.md`.
|
|
172
|
+
|
|
173
|
+
## Documentation Index
|
|
174
|
+
|
|
175
|
+
Главный индекс документации: `docs/README.md`.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
dbspec.egg-info/PKG-INFO
|
|
4
|
+
dbspec.egg-info/SOURCES.txt
|
|
5
|
+
dbspec.egg-info/dependency_links.txt
|
|
6
|
+
dbspec.egg-info/entry_points.txt
|
|
7
|
+
dbspec.egg-info/requires.txt
|
|
8
|
+
dbspec.egg-info/top_level.txt
|
|
9
|
+
src/__init__.py
|
|
10
|
+
src/__main__.py
|
|
11
|
+
src/cli.py
|
|
12
|
+
src/cli_output.py
|
|
13
|
+
src/cli_progress.py
|
|
14
|
+
src/ssot_manifest.py
|
|
15
|
+
src/cli_commands/__init__.py
|
|
16
|
+
src/cli_commands/common.py
|
|
17
|
+
src/cli_commands/gen.py
|
|
18
|
+
src/cli_commands/import_.py
|
|
19
|
+
src/cli_commands/init.py
|
|
20
|
+
src/cli_commands/migrations.py
|
|
21
|
+
src/cli_commands/sync.py
|
|
22
|
+
src/cli_commands/tui.py
|
|
23
|
+
src/cli_commands/validate.py
|
|
24
|
+
src/cli_commands/xlsx.py
|
|
25
|
+
src/db_import/__init__.py
|
|
26
|
+
src/db_import/cli_renderer.py
|
|
27
|
+
src/db_import/importer.py
|
|
28
|
+
src/db_import/result.py
|
|
29
|
+
src/db_import/tui_adapter.py
|
|
30
|
+
src/generators/__init__.py
|
|
31
|
+
src/generators/sqlalchemy/__init__.py
|
|
32
|
+
src/generators/sqlalchemy/context.py
|
|
33
|
+
src/generators/sqlalchemy/enums.py
|
|
34
|
+
src/generators/sqlalchemy/generate.py
|
|
35
|
+
src/generators/sqlalchemy/indexes.py
|
|
36
|
+
src/generators/sqlalchemy/naming.py
|
|
37
|
+
src/generators/sqlalchemy/templates.py
|
|
38
|
+
src/generators/sqlalchemy/types.py
|
|
39
|
+
src/logic/__init__.py
|
|
40
|
+
src/logic/check_rules.py
|
|
41
|
+
src/logic/db_validation.py
|
|
42
|
+
src/logic/diagnostics.py
|
|
43
|
+
src/logic/parser.py
|
|
44
|
+
src/logic/validator.py
|
|
45
|
+
src/logic/validation_rules/__init__.py
|
|
46
|
+
src/logic/validation_rules/base.py
|
|
47
|
+
src/logic/validation_rules/check_rules.py
|
|
48
|
+
src/logic/validation_rules/domains.py
|
|
49
|
+
src/logic/validation_rules/enums.py
|
|
50
|
+
src/logic/validation_rules/foreign_keys.py
|
|
51
|
+
src/logic/validation_rules/indexes.py
|
|
52
|
+
src/logic/validation_rules/names.py
|
|
53
|
+
src/logic/validation_rules/references.py
|
|
54
|
+
src/models/__init__.py
|
|
55
|
+
src/models/base.py
|
|
56
|
+
src/models/domain.py
|
|
57
|
+
src/models/project.py
|
|
58
|
+
src/models/table.py
|
|
59
|
+
src/models/tech.py
|
|
60
|
+
src/resources/__init__.py
|
|
61
|
+
src/resources/sqlalchemy_templates/README.md
|
|
62
|
+
src/resources/sqlalchemy_templates/__init__.py
|
|
63
|
+
src/resources/sqlalchemy_templates/base.py.j2
|
|
64
|
+
src/resources/sqlalchemy_templates/domain_init.py.j2
|
|
65
|
+
src/resources/sqlalchemy_templates/model.py.j2
|
|
66
|
+
src/resources/sqlalchemy_templates/package_init.py.j2
|
|
67
|
+
src/reveng/__init__.py
|
|
68
|
+
src/storage/__init__.py
|
|
69
|
+
src/storage/atomic.py
|
|
70
|
+
src/storage/config.py
|
|
71
|
+
src/storage/file_utils.py
|
|
72
|
+
src/storage/init.py
|
|
73
|
+
src/storage/paths.py
|
|
74
|
+
src/storage/sheets.py
|
|
75
|
+
src/storage/config_creators/__init__.py
|
|
76
|
+
src/storage/config_creators/conditional_formatting.py
|
|
77
|
+
src/storage/config_creators/formats.py
|
|
78
|
+
src/storage/config_creators/formulas.py
|
|
79
|
+
src/storage/config_creators/sheet_meta.py
|
|
80
|
+
src/storage/config_creators/styles.py
|
|
81
|
+
src/storage/config_creators/template_data.py
|
|
82
|
+
src/storage/config_creators/validation.py
|
|
83
|
+
src/styles/__init__.py
|
|
84
|
+
src/styles/cli.py
|
|
85
|
+
src/styles/tokens.py
|
|
86
|
+
src/styles/tui.py
|
|
87
|
+
src/tui/__init__.py
|
|
88
|
+
src/tui/app.py
|
|
89
|
+
src/tui/constants.py
|
|
90
|
+
src/tui/db_status.py
|
|
91
|
+
src/tui/initialization.py
|
|
92
|
+
src/tui/keymap.py
|
|
93
|
+
src/tui/registry.py
|
|
94
|
+
src/tui/registry_builder.py
|
|
95
|
+
src/tui/routing.py
|
|
96
|
+
src/tui/screen_helpers.py
|
|
97
|
+
src/tui/startup_metrics.py
|
|
98
|
+
src/tui/state.py
|
|
99
|
+
src/tui/adapters/__init__.py
|
|
100
|
+
src/tui/adapters/alembic_api.py
|
|
101
|
+
src/tui/adapters/config_editor.py
|
|
102
|
+
src/tui/components/__init__.py
|
|
103
|
+
src/tui/components/command_palette.py
|
|
104
|
+
src/tui/components/footer.py
|
|
105
|
+
src/tui/components/header.py
|
|
106
|
+
src/tui/components/help_overlay.py
|
|
107
|
+
src/tui/components/init_dialog.py
|
|
108
|
+
src/tui/components/screen_host.py
|
|
109
|
+
src/tui/components/sidebar.py
|
|
110
|
+
src/tui/components/status_badge.py
|
|
111
|
+
src/tui/jobs/__init__.py
|
|
112
|
+
src/tui/jobs/logs.py
|
|
113
|
+
src/tui/jobs/models.py
|
|
114
|
+
src/tui/jobs/runner.py
|
|
115
|
+
src/tui/layout/__init__.py
|
|
116
|
+
src/tui/layout/responsive.py
|
|
117
|
+
src/tui/layout/shell.py
|
|
118
|
+
src/tui/screens/__init__.py
|
|
119
|
+
src/tui/screens/_base/__init__.py
|
|
120
|
+
src/tui/screens/_base/base.py
|
|
121
|
+
src/tui/screens/codegen/__init__.py
|
|
122
|
+
src/tui/screens/codegen/actions.py
|
|
123
|
+
src/tui/screens/codegen/context.py
|
|
124
|
+
src/tui/screens/codegen/job_flow.py
|
|
125
|
+
src/tui/screens/codegen/screen.py
|
|
126
|
+
src/tui/screens/import_/__init__.py
|
|
127
|
+
src/tui/screens/import_/actions.py
|
|
128
|
+
src/tui/screens/import_/context.py
|
|
129
|
+
src/tui/screens/import_/job_flow.py
|
|
130
|
+
src/tui/screens/import_/screen.py
|
|
131
|
+
src/tui/screens/loading/__init__.py
|
|
132
|
+
src/tui/screens/loading/context.py
|
|
133
|
+
src/tui/screens/loading/screen.py
|
|
134
|
+
src/tui/screens/logs/__init__.py
|
|
135
|
+
src/tui/screens/logs/actions.py
|
|
136
|
+
src/tui/screens/logs/dialogs.py
|
|
137
|
+
src/tui/screens/logs/log_data.py
|
|
138
|
+
src/tui/screens/logs/screen.py
|
|
139
|
+
src/tui/screens/migrations/__init__.py
|
|
140
|
+
src/tui/screens/migrations/context.py
|
|
141
|
+
src/tui/screens/migrations/dialogs.py
|
|
142
|
+
src/tui/screens/migrations/screen.py
|
|
143
|
+
src/tui/screens/project/__init__.py
|
|
144
|
+
src/tui/screens/project/actions.py
|
|
145
|
+
src/tui/screens/project/context.py
|
|
146
|
+
src/tui/screens/project/rendering.py
|
|
147
|
+
src/tui/screens/project/screen.py
|
|
148
|
+
src/tui/screens/sync/__init__.py
|
|
149
|
+
src/tui/screens/sync/actions.py
|
|
150
|
+
src/tui/screens/sync/context.py
|
|
151
|
+
src/tui/screens/sync/job_flow.py
|
|
152
|
+
src/tui/screens/sync/result_view.py
|
|
153
|
+
src/tui/screens/sync/screen.py
|
|
154
|
+
src/tui/screens/validate/__init__.py
|
|
155
|
+
src/tui/screens/validate/actions.py
|
|
156
|
+
src/tui/screens/validate/context.py
|
|
157
|
+
src/tui/screens/validate/job_flow.py
|
|
158
|
+
src/tui/screens/validate/rendering.py
|
|
159
|
+
src/tui/screens/validate/screen.py
|
|
160
|
+
src/tui/screens/xlsx/__init__.py
|
|
161
|
+
src/tui/screens/xlsx/actions.py
|
|
162
|
+
src/tui/screens/xlsx/context.py
|
|
163
|
+
src/tui/screens/xlsx/job_flow.py
|
|
164
|
+
src/tui/screens/xlsx/screen.py
|
|
165
|
+
src/tui/styles/__init__.py
|
|
166
|
+
src/tui/styles/build.py
|
|
167
|
+
src/tui/styles/tokens.py
|
|
168
|
+
src/utils/__init__.py
|
|
169
|
+
src/utils/parsing.py
|
|
170
|
+
src/utils/postgres_types.py
|
|
171
|
+
src/utils/progress.py
|
|
172
|
+
src/utils/sheets.py
|
|
173
|
+
src/utils/type_casting.py
|
|
174
|
+
src/xlsx/__init__.py
|
|
175
|
+
src/xlsx/formatting.py
|
|
176
|
+
src/xlsx/reader.py
|
|
177
|
+
src/xlsx/style_utils.py
|
|
178
|
+
src/xlsx/writer.py
|
|
179
|
+
src/xlsx/template/__init__.py
|
|
180
|
+
src/xlsx/template/apply_conditional.py
|
|
181
|
+
src/xlsx/template/apply_formulas.py
|
|
182
|
+
src/xlsx/template/apply_styles.py
|
|
183
|
+
src/xlsx/template/apply_validation.py
|
|
184
|
+
src/xlsx/template/constants.py
|
|
185
|
+
src/xlsx/template/generator.py
|
|
186
|
+
src/xlsx/template/sheet_data.py
|
|
187
|
+
src/xlsx/template/utils.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
src
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pip
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: MarkupSafe
|
|
3
|
+
Version: 3.0.3
|
|
4
|
+
Summary: Safely add untrusted strings to HTML/XML markup.
|
|
5
|
+
Maintainer-email: Pallets <contact@palletsprojects.com>
|
|
6
|
+
License-Expression: BSD-3-Clause
|
|
7
|
+
Project-URL: Donate, https://palletsprojects.com/donate
|
|
8
|
+
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
|
9
|
+
Project-URL: Changes, https://markupsafe.palletsprojects.com/page/changes/
|
|
10
|
+
Project-URL: Source, https://github.com/pallets/markupsafe/
|
|
11
|
+
Project-URL: Chat, https://discord.gg/pallets
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Web Environment
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
18
|
+
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.9
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE.txt
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
<div align="center"><img src="https://raw.githubusercontent.com/pallets/markupsafe/refs/heads/stable/docs/_static/markupsafe-name.svg" alt="" height="150"></div>
|
|
26
|
+
|
|
27
|
+
# MarkupSafe
|
|
28
|
+
|
|
29
|
+
MarkupSafe implements a text object that escapes characters so it is
|
|
30
|
+
safe to use in HTML and XML. Characters that have special meanings are
|
|
31
|
+
replaced so that they display as the actual characters. This mitigates
|
|
32
|
+
injection attacks, meaning untrusted user input can safely be displayed
|
|
33
|
+
on a page.
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Examples
|
|
37
|
+
|
|
38
|
+
```pycon
|
|
39
|
+
>>> from markupsafe import Markup, escape
|
|
40
|
+
|
|
41
|
+
>>> # escape replaces special characters and wraps in Markup
|
|
42
|
+
>>> escape("<script>alert(document.cookie);</script>")
|
|
43
|
+
Markup('<script>alert(document.cookie);</script>')
|
|
44
|
+
|
|
45
|
+
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
|
46
|
+
>>> Markup("<strong>Hello</strong>")
|
|
47
|
+
Markup('<strong>hello</strong>')
|
|
48
|
+
|
|
49
|
+
>>> escape(Markup("<strong>Hello</strong>"))
|
|
50
|
+
Markup('<strong>hello</strong>')
|
|
51
|
+
|
|
52
|
+
>>> # Markup is a str subclass
|
|
53
|
+
>>> # methods and operators escape their arguments
|
|
54
|
+
>>> template = Markup("Hello <em>{name}</em>")
|
|
55
|
+
>>> template.format(name='"World"')
|
|
56
|
+
Markup('Hello <em>"World"</em>')
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Donate
|
|
60
|
+
|
|
61
|
+
The Pallets organization develops and supports MarkupSafe and other
|
|
62
|
+
popular packages. In order to grow the community of contributors and
|
|
63
|
+
users, and allow the maintainers to devote more time to the projects,
|
|
64
|
+
[please donate today][].
|
|
65
|
+
|
|
66
|
+
[please donate today]: https://palletsprojects.com/donate
|
|
67
|
+
|
|
68
|
+
## Contributing
|
|
69
|
+
|
|
70
|
+
See our [detailed contributing documentation][contrib] for many ways to
|
|
71
|
+
contribute, including reporting issues, requesting features, asking or answering
|
|
72
|
+
questions, and making PRs.
|
|
73
|
+
|
|
74
|
+
[contrib]: https://palletsprojects.com/contributing/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
markupsafe-3.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
|
2
|
+
markupsafe-3.0.3.dist-info/METADATA,sha256=ErTMYaf6KIz3Zn7j8hN4bZYZ21f7M_9vk0r7y1wS7IE,2690
|
|
3
|
+
markupsafe-3.0.3.dist-info/RECORD,,
|
|
4
|
+
markupsafe-3.0.3.dist-info/WHEEL,sha256=2iHh9e2o6T3nHtu_NVT7Cs7pebIqF94rZK8zrQfgoJI,190
|
|
5
|
+
markupsafe-3.0.3.dist-info/licenses/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
|
6
|
+
markupsafe-3.0.3.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
|
7
|
+
markupsafe/__init__.py,sha256=u1fLcNCx0P8E7LT6z3OXf6ipnSmgm6aefne5y-d7o40,13248
|
|
8
|
+
markupsafe/__pycache__/__init__.cpython-313.pyc,,
|
|
9
|
+
markupsafe/__pycache__/_native.cpython-313.pyc,,
|
|
10
|
+
markupsafe/_native.py,sha256=hSLs8Jmz5aqayuengJJ3kdT5PwNpBWpKrmQSdipndC8,210
|
|
11
|
+
markupsafe/_speedups.c,sha256=t3tC6oVV7-bmKUqvCO5pVSky-G8ACIXpWMaJwkNtJjg,4327
|
|
12
|
+
markupsafe/_speedups.cpython-313-x86_64-linux-gnu.so,sha256=HtQydhaq_IkA-gj5GwTaSmjPSgib8LF8sqv-_kqzl6g,44048
|
|
13
|
+
markupsafe/_speedups.pyi,sha256=ENd1bYe7gbBUf2ywyYWOGUpnXOHNJ-cgTNqetlW8h5k,41
|
|
14
|
+
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Copyright 2010 Pallets
|
|
2
|
+
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions are
|
|
5
|
+
met:
|
|
6
|
+
|
|
7
|
+
1. Redistributions of source code must retain the above copyright
|
|
8
|
+
notice, this list of conditions and the following disclaimer.
|
|
9
|
+
|
|
10
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
11
|
+
notice, this list of conditions and the following disclaimer in the
|
|
12
|
+
documentation and/or other materials provided with the distribution.
|
|
13
|
+
|
|
14
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
15
|
+
contributors may be used to endorse or promote products derived from
|
|
16
|
+
this software without specific prior written permission.
|
|
17
|
+
|
|
18
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
19
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
20
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
|
21
|
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
22
|
+
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
23
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
|
24
|
+
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
25
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
26
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
27
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
28
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
markupsafe
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pip
|