From d93ada9027705ecbe80e1149c8c5d4368612c6d1 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 08:50:52 +0800
Subject: [PATCH 01/24] Update README.md
---
README.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2737b6d..d563e0d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@

+
# PySQLit - 增强版SQLite数据库引擎
[](https://www.python.org/downloads/)
@@ -6,6 +7,7 @@
[](tests/)
[](tests/)
+
## 🚀 项目简介
PySQLit是一个纯Python实现的SQLite数据库引擎,采用现代Python架构设计,提供完整的SQL支持、ACID事务保证、并发控制和高级备份恢复功能。项目基于经典的C语言SQLite教程重构,使用面向对象设计模式,为教育、研究和生产环境提供可靠的数据存储解决方案。
@@ -395,4 +397,4 @@ mypy pysqlit/
---
-**PySQLit** - 让数据存储更简单、更可靠、更高效!
\ No newline at end of file
+**PySQLit** - 让数据存储更简单、更可靠、更高效!
From 449c6609d54a69bcd4f6217136d120e8224cbd36 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 08:52:47 +0800
Subject: [PATCH 02/24] Update README.md
---
README.md | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/README.md b/README.md
index d563e0d..a269e71 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,12 @@

-
+::: center
# PySQLit - 增强版SQLite数据库引擎
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](tests/)
[](tests/)
-
-
+:::
## 🚀 项目简介
PySQLit是一个纯Python实现的SQLite数据库引擎,采用现代Python架构设计,提供完整的SQL支持、ACID事务保证、并发控制和高级备份恢复功能。项目基于经典的C语言SQLite教程重构,使用面向对象设计模式,为教育、研究和生产环境提供可靠的数据存储解决方案。
From c0feb950607767e9f3ab09d1da183db3a8bf3ee2 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 08:55:41 +0800
Subject: [PATCH 03/24] Update README.md
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index a269e71..c0a1d86 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,12 @@

-::: center
+
# PySQLit - 增强版SQLite数据库引擎
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](tests/)
[](tests/)
-:::
+
## 🚀 项目简介
PySQLit是一个纯Python实现的SQLite数据库引擎,采用现代Python架构设计,提供完整的SQL支持、ACID事务保证、并发控制和高级备份恢复功能。项目基于经典的C语言SQLite教程重构,使用面向对象设计模式,为教育、研究和生产环境提供可靠的数据存储解决方案。
From 164ebc4865861129a1eee4982f55144bd5824d38 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 08:57:59 +0800
Subject: [PATCH 04/24] Update README.md
From dff6e1e68a7ab9e3ec83a09933a2d21ffe2049c8 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 09:02:16 +0800
Subject: [PATCH 05/24] Update README.md
---
README.md | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/README.md b/README.md
index c0a1d86..88f3c0a 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@

+
+
# PySQLit - 增强版SQLite数据库引擎
[](https://www.python.org/downloads/)
@@ -7,6 +9,9 @@
[](tests/)
[](tests/)
+
+
+
## 🚀 项目简介
PySQLit是一个纯Python实现的SQLite数据库引擎,采用现代Python架构设计,提供完整的SQL支持、ACID事务保证、并发控制和高级备份恢复功能。项目基于经典的C语言SQLite教程重构,使用面向对象设计模式,为教育、研究和生产环境提供可靠的数据存储解决方案。
From 390cd3fdeed9023b254af0a7fdbae146fd46f80c Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 09:53:17 +0800
Subject: [PATCH 06/24] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 88f3c0a..bfd5d15 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# PySQLit - 增强版SQLite数据库引擎
-
+[API文档](READ.API.md)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](tests/)
From 77c1a4cc6d6db45e981fe50033b6ff2f1cdcd548 Mon Sep 17 00:00:00 2001
From: "A.Chao5858" <39320196+Python51888@users.noreply.github.com>
Date: Mon, 8 Sep 2025 09:53:51 +0800
Subject: [PATCH 07/24] Update README.md
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index bfd5d15..b7a41b3 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,8 @@
# PySQLit - 增强版SQLite数据库引擎
-[API文档](READ.API.md)
+[API文档](README.API.md)
+
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](tests/)
From 686d3c9e28e6fffa30411f620824e3dd5c2573d9 Mon Sep 17 00:00:00 2001
From: Python51888
Date: Sun, 14 Sep 2025 11:24:22 +0800
Subject: [PATCH 08/24] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pysqlit/pysqlit_api.py | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/pysqlit/pysqlit_api.py b/pysqlit/pysqlit_api.py
index cb931a1..b44988d 100644
--- a/pysqlit/pysqlit_api.py
+++ b/pysqlit/pysqlit_api.py
@@ -1,5 +1,6 @@
import sys
import os
+import json
# 添加项目根目录到Python路径
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -95,10 +96,15 @@ def select_data(self,tablename,condition=None):
re = self.db.select(tablename,condition)
if re:
print('查询成功')
+ results = []
for i in re:
- print(i)
+ # 将字典转换为JSON格式并添加到结果列表中
+ json_result = json.dumps(i, ensure_ascii=False)
+ results.append(json_result)
+ return results
else:
print('查询失败')
+ return []
pass
@@ -126,8 +132,20 @@ def executor(self,sql):
re = self.db.execute_sql(sql)
if re:
print('执行成功')
+ # 如果是查询语句,返回结果
+ if sql.strip().upper().startswith('SELECT'):
+ results = []
+ for i in re:
+ # 将字典转换为JSON格式并添加到结果列表中
+ json_result = json.dumps(i, ensure_ascii=False)
+ results.append(json_result)
+ return results
+ else:
+ # 对于非查询语句,返回影响的行数
+ return re
else:
print('执行失败')
+ return None
pass
From a2d0406a9ce2a854492c5da6161787e7e3af9de4 Mon Sep 17 00:00:00 2001
From: Python51888
Date: Sun, 14 Sep 2025 18:55:58 +0800
Subject: [PATCH 09/24] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B7=A5=E4=BD=9C?=
=?UTF-8?q?=E6=B5=81=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/ci.yml | 35 +++++++++++++++++++++++++++++++++++
pyproject.toml | 2 +-
2 files changed, 36 insertions(+), 1 deletion(-)
create mode 100644 .github/workflows/ci.yml
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..47e7e05
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,35 @@
+name: CI
+
+on:
+ push:
+ branches: [ main, master ]
+ pull_request:
+ branches: [ main, master ]
+
+jobs:
+ test:
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ python-version: [3.8, 3.9, '3.10', '3.11']
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r requirements.txt
+
+ - name: Install package in development mode
+ run: |
+ pip install -e .
+
+ - name: Run tests
+ run: |
+ python -m pytest tests/ -v
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index d2c0069..6bb4215 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "pysqlit"
-version = "0.2.1"
+version = "0.2.2"
description = "Python版sqlite"
readme = "README.md"
requires-python = ">=3.11"
From 82bab15828c6ce5899f333709d6be6aff0b9f986 Mon Sep 17 00:00:00 2001
From: Python51888
Date: Tue, 23 Sep 2025 11:41:45 +0800
Subject: [PATCH 10/24] =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1?=
=?UTF-8?q?=E4=BA=86=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.github/workflows/publish.yml | 38 +
examples/enhanced_datafile_example.py | 5 +
examples/test_drop_table_repl.py | 3 +-
main.py | 8 +-
pyproject.toml | 43 +-
pysqlit/__pycache__/__init__.cpython-311.pyc | Bin 284 -> 0 bytes
pysqlit/__pycache__/__init__.cpython-313.pyc | Bin 740 -> 0 bytes
pysqlit/__pycache__/art.cpython-311.pyc | Bin 1195 -> 0 bytes
pysqlit/__pycache__/art.cpython-313.pyc | Bin 656 -> 0 bytes
pysqlit/__pycache__/backup.cpython-311.pyc | Bin 15480 -> 0 bytes
pysqlit/__pycache__/backup.cpython-313.pyc | Bin 11952 -> 0 bytes
pysqlit/__pycache__/btree.cpython-311.pyc | Bin 34617 -> 0 bytes
pysqlit/__pycache__/btree.cpython-313.pyc | Bin 24048 -> 0 bytes
.../concurrent_storage.cpython-311.pyc | Bin 19516 -> 0 bytes
.../concurrent_storage.cpython-313.pyc | Bin 15508 -> 0 bytes
pysqlit/__pycache__/constants.cpython-311.pyc | Bin 2176 -> 0 bytes
pysqlit/__pycache__/constants.cpython-313.pyc | Bin 2008 -> 0 bytes
pysqlit/__pycache__/core.cpython-311.pyc | Bin 29117 -> 0 bytes
pysqlit/__pycache__/cursor.cpython-311.pyc | Bin 7331 -> 0 bytes
pysqlit/__pycache__/database.cpython-311.pyc | Bin 45813 -> 0 bytes
pysqlit/__pycache__/database.cpython-313.pyc | Bin 36364 -> 0 bytes
pysqlit/__pycache__/ddl.cpython-311.pyc | Bin 21813 -> 0 bytes
pysqlit/__pycache__/ddl.cpython-313.pyc | Bin 9923 -> 0 bytes
.../enhanced_btree.cpython-311.pyc | Bin 24317 -> 0 bytes
.../enhanced_database.cpython-311.pyc | Bin 13471 -> 0 bytes
.../enhanced_parser.cpython-311.pyc | Bin 18796 -> 0 bytes
.../__pycache__/enhanced_repl.cpython-311.pyc | Bin 8107 -> 0 bytes
.../__pycache__/exceptions.cpython-311.pyc | Bin 5843 -> 0 bytes
.../__pycache__/exceptions.cpython-313.pyc | Bin 2254 -> 0 bytes
pysqlit/__pycache__/integrity.cpython-311.pyc | Bin 6530 -> 0 bytes
pysqlit/__pycache__/models.cpython-311.pyc | Bin 36127 -> 0 bytes
pysqlit/__pycache__/models.cpython-313.pyc | Bin 25424 -> 0 bytes
pysqlit/__pycache__/parser.cpython-311.pyc | Bin 47984 -> 0 bytes
pysqlit/__pycache__/parser.cpython-313.pyc | Bin 30778 -> 0 bytes
pysqlit/__pycache__/repl.cpython-311.pyc | Bin 32429 -> 0 bytes
pysqlit/__pycache__/repl.cpython-313.pyc | Bin 19499 -> 0 bytes
pysqlit/__pycache__/storage.cpython-311.pyc | Bin 22404 -> 0 bytes
pysqlit/__pycache__/storage.cpython-313.pyc | Bin 16128 -> 0 bytes
.../__pycache__/transaction.cpython-311.pyc | Bin 21042 -> 0 bytes
.../__pycache__/transaction.cpython-313.pyc | Bin 13371 -> 0 bytes
requirements.txt | 1 -
{pysqlit => src/pysqlit}/__init__.py | 6 +-
src/pysqlit/__version__.py | 2 +
{pysqlit => src/pysqlit}/art.py | 0
{pysqlit => src/pysqlit}/backup.py | 0
{pysqlit => src/pysqlit}/btree.py | 0
.../pysqlit}/concurrent_storage.py | 0
{pysqlit => src/pysqlit}/constants.py | 0
{pysqlit => src/pysqlit}/core.py | 0
{pysqlit => src/pysqlit}/cursor.py | 0
{pysqlit => src/pysqlit}/database.py | 0
{pysqlit => src/pysqlit}/ddl.py | 0
{pysqlit => src/pysqlit}/enhanced_datafile.py | 0
{pysqlit => src/pysqlit}/exceptions.py | 0
{pysqlit => src/pysqlit}/integrity.py | 0
{pysqlit => src/pysqlit}/models.py | 0
{pysqlit => src/pysqlit}/parser.py | 0
{pysqlit => src/pysqlit}/pysqlit_api.py | 0
{pysqlit => src/pysqlit}/repl.py | 0
{pysqlit => src/pysqlit}/storage.py | 0
{pysqlit => src/pysqlit}/transaction.py | 0
uv.lock | 1081 +----------------
62 files changed, 112 insertions(+), 1075 deletions(-)
create mode 100644 .github/workflows/publish.yml
delete mode 100644 pysqlit/__pycache__/__init__.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/__init__.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/art.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/art.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/backup.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/backup.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/btree.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/btree.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/concurrent_storage.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/concurrent_storage.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/constants.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/constants.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/core.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/cursor.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/database.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/database.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/ddl.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/ddl.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/enhanced_btree.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/enhanced_database.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/enhanced_parser.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/enhanced_repl.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/exceptions.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/exceptions.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/integrity.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/models.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/models.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/parser.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/parser.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/repl.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/repl.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/storage.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/storage.cpython-313.pyc
delete mode 100644 pysqlit/__pycache__/transaction.cpython-311.pyc
delete mode 100644 pysqlit/__pycache__/transaction.cpython-313.pyc
rename {pysqlit => src/pysqlit}/__init__.py (58%)
create mode 100644 src/pysqlit/__version__.py
rename {pysqlit => src/pysqlit}/art.py (100%)
rename {pysqlit => src/pysqlit}/backup.py (100%)
rename {pysqlit => src/pysqlit}/btree.py (100%)
rename {pysqlit => src/pysqlit}/concurrent_storage.py (100%)
rename {pysqlit => src/pysqlit}/constants.py (100%)
rename {pysqlit => src/pysqlit}/core.py (100%)
rename {pysqlit => src/pysqlit}/cursor.py (100%)
rename {pysqlit => src/pysqlit}/database.py (100%)
rename {pysqlit => src/pysqlit}/ddl.py (100%)
rename {pysqlit => src/pysqlit}/enhanced_datafile.py (100%)
rename {pysqlit => src/pysqlit}/exceptions.py (100%)
rename {pysqlit => src/pysqlit}/integrity.py (100%)
rename {pysqlit => src/pysqlit}/models.py (100%)
rename {pysqlit => src/pysqlit}/parser.py (100%)
rename {pysqlit => src/pysqlit}/pysqlit_api.py (100%)
rename {pysqlit => src/pysqlit}/repl.py (100%)
rename {pysqlit => src/pysqlit}/storage.py (100%)
rename {pysqlit => src/pysqlit}/transaction.py (100%)
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
new file mode 100644
index 0000000..e04762f
--- /dev/null
+++ b/.github/workflows/publish.yml
@@ -0,0 +1,38 @@
+name: Publish Python Package
+
+on:
+ release:
+ types: [published] # 创建GitHub Release时触发
+
+jobs:
+ build-and-publish:
+ runs-on: windows-latest # Windows环境
+ permissions:
+ id-token: write # 必需:用于PyPI可信发布者验证
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0 # 获取完整提交历史(版本管理需要)
+
+ - name: Install uv
+ uses: astral-sh/setup-uv@v6
+ with:
+ version: "0.7.2"
+
+ - name: Set up Python
+ run: |
+ uv python install 3.11 # 安装指定Python版本
+
+ - name: Build package
+ run: |
+ uv build
+ ls dist
+
+ - name: Publish to PyPI
+ run: uv publish
+
+ - name: Bump version
+ if: github.event_name == 'release'
+ run: uv version ${{ github.event.release.tag_name }}
diff --git a/examples/enhanced_datafile_example.py b/examples/enhanced_datafile_example.py
index bc8a7c8..36b3e33 100644
--- a/examples/enhanced_datafile_example.py
+++ b/examples/enhanced_datafile_example.py
@@ -4,9 +4,14 @@
"""
import os
+import sys
import json
import csv
import xml.etree.ElementTree as ET
+
+# 添加项目src目录到Python路径,确保可以正确导入pysqlit模块
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
+
from pysqlit.enhanced_datafile import EnhancedDataFile
from pysqlit.exceptions import DatabaseError
diff --git a/examples/test_drop_table_repl.py b/examples/test_drop_table_repl.py
index c8fb34a..f8f50c6 100644
--- a/examples/test_drop_table_repl.py
+++ b/examples/test_drop_table_repl.py
@@ -1,6 +1,7 @@
import sys
import os
-sys.path.insert(0, os.path.join(os.path.dirname(__file__)))
+# 添加项目src目录到Python路径,确保可以正确导入pysqlit模块
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'src'))
from pysqlit.repl import EnhancedREPL
diff --git a/main.py b/main.py
index 573b420..8acc8c9 100644
--- a/main.py
+++ b/main.py
@@ -3,6 +3,10 @@
import sys
import os
+
+# 添加src目录到Python路径,确保可以正确导入pysqlit模块
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'src'))
+
from pysqlit.repl import EnhancedREPL
from pysqlit.art import pr_art
@@ -26,11 +30,11 @@ def main():
# 创建空数据库文件
open(database_file, 'w').close()
print(f"已创建数据库: {db_name}")
-
+ print('')
pr_art()
repl = EnhancedREPL(database_file)
repl.run()
if __name__ == "__main__":
- main()
+ main()
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 6bb4215..dc44909 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,16 +1,43 @@
+[build-system]
+requires = ["uv-build>=0.7.2"]
+build-backend = "uv_build"
+
[project]
-name = "pysqlit"
-version = "0.2.2"
-description = "Python版sqlite"
+name = "PySqlit"
+version = "0.2.5"
+description = "Python版sqlite引擎"
+authors = [
+ {name = "Python51888"},
+]
readme = "README.md"
requires-python = ">=3.11"
+license = {text = "MIT"}
+keywords = ["pysqlite", "sqlite", "sqlite3", "pysqlit", "PySqlit", "PySqlite"]
dependencies = [
"black>=22.0",
- "fastmcp>=2.12.2",
"mypy>=1.0",
"pytest>=7.0",
- "pytest-cov>=4.0",
-]
+ "pytest-cov>=4.0"
+ ]
+classifiers = [
+ "Development Status :: 5 - Production/Stable",
+ "Programming Language :: Python :: 3.11",
+ "License :: OSI Approved :: MIT License",
+ "Operating System :: Microsoft :: Windows",
+ "Intended Audience :: Developers",
+ "Topic :: Software Development :: Libraries :: Python Modules",
+ "Typing :: Typed"
+ ]
+
+[project.urls]
+Homepage = "https://github.com/Python51888/PySqlit"
+Documentation = "https://zread.ai/Python51888/PySqlit"
+Repository = "https://github.com/Python51888/PySqlit"
-[tool.setuptools.packages.find]
-include = ["pysqlit*"]
+[tool.uv]
+dev-dependencies = [
+ "black>=22.0",
+ "mypy>=1.0",
+ "pytest>=7.0",
+ "pytest-cov>=4.0"
+ ]
\ No newline at end of file
diff --git a/pysqlit/__pycache__/__init__.cpython-311.pyc b/pysqlit/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 5c23a7cc051cbc0c1ea3dd3c7742d547d3f4b62b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 284
zcmZ3^%ge<81Tpb@Gb(}fV-N=h7@>^MLO{lJh7^Vlm!57s9XR5
diff --git a/pysqlit/__pycache__/__init__.cpython-313.pyc b/pysqlit/__pycache__/__init__.cpython-313.pyc
deleted file mode 100644
index 2eaa4fb6b1a67c31dc30996e9cf1cfde02bbba22..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 740
zcmZuu%Wl&^6dlJ&?AT67Q@TKrklB$%LtzOBwKNr~ouahPveIZ`Piw2=2iH!cWEDPw
zFJQ&@uz``HA|V#+5cvUS+(z9ni!t@qH;w(SU!lHuEPboG>=<=*HaeYD_
z0^}*6conF4s#kSYrwTP230`ySjs{xE>#puJpy3!`lv;C5#{#S5y4!SG&?=3C-lO|!cM5ikaW;YL-t
zdX~<(E~kv=8Rh1fOc?e2kj8|!4^uXclL5Vml1NVJ8Mmp@5LAUzs7a_x&?M**8WQCH
zfhoZf@V>XhHH?GQ$C#TKUsK3MKOqc^$yB@{2(AZr%YrHkn*w+hXvWG}+$`?*y&uf$
zlXAh*09S*6l`eQaP6NvF|GAM?2xAz3L2EGs@u$Jd^H~a487ac^Y`&X+U{N8+?TxWq
zALD*D=lW~WcFO1*=!!!5S$SW;A5~G5@95-5YiDVGYj&5$FZ5!C9^ar>EA(WAx;JS5
QE872CHOO!Xj`8v8Fq@K6Gtn%#{j1Hns9&b-YA8zFdb9y@Qoelzpt?e6BpgqHxl
zi#4v^v=efGibZrF^n4(ciA-Wdrg;*hvMoyd_RKjj&qQZ~!A`NRS896oh4!q>jxpm=
zwOzlbKlx(3s$a-Puf@~G)4cYerroKYpF2CJJuG!z-um%+N6&5Q8*6%H`yh8?(JG2N
zG{T?WJ_u!!wi*FVrf)#o8d~UKuWhW?KGrLY^*Y9SonyVOQLpTV0eUhUa3H<7uHD@k
zj_Hqi;;djYUIxTjyRiqOoe4*SoyK`$A}D9fG-RJYXEbJjHx`Wst(etBWSSunF@iI0HLy@0EUVxERzkmrH!Dm
zwSW~bax9koM>N#n#N#oQ-^4;s+=Lvv8T4?tHlC4_iV{G8pcQNaA3QK_h~^y8ed-PS
zY0HsR;>+o`qz5kt=`;DXIJ>ZXC6p2IPM6|oF_}&AeL+bdPi9-rq#}W+xFH-roKyl>
zj{Ncwhqvjy_*IB}6CzC^@?G%!N3}4u8p?-qd?`+-81~y*E=iJC7A1-IqBy|HU5X2&
ozI!^cB4?H^pHc9SgCB5e3Ru@pDcvXGCJA?iBh=R=e>0xtH@wPJ_5c6?
diff --git a/pysqlit/__pycache__/art.cpython-313.pyc b/pysqlit/__pycache__/art.cpython-313.pyc
deleted file mode 100644
index 37fdf081e6276e8143d4b0cdf114ab2983aa6f93..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 656
zcmZ`%%}T>S5T0!|=@0Y;>}5gx$w4cMAe!_Mdg(ENP^`4Y#>Q<#TlU~l@Z5*+0elY+
z@e;iG019~lXErJ3kbWWG%zX3BY+#eM+bux6|2$1z8NfFc8(^)Gk!1}7*Z~P+X4kHZ
zh7JZYz1a)W8obRE4A^;*i?Uj)REEYW=HYux56=rxdmE
z%_|+c<#lxAHjvL|sTs-XUHk?a-AlSVy7V9C@-`aA6F*uWE$(O27?V5>WqcehQ!A1I
zrm~I`bXkiFq-Xfz&5xFoa91Z+33s+AZo+%H=aW0q#Nocp^ft+{(2BG$OB+r&A3e-&
Vda{9~K8t>Yg#2FJ*C$&9kz
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
diff --git a/pysqlit/__pycache__/btree.cpython-311.pyc b/pysqlit/__pycache__/btree.cpython-311.pyc
deleted file mode 100644
index 585ab7d4b5c2d6c373a832d4a79f76358b5a3df2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 34617
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
YXK-b2vzmd0>D@oF_&;SxWhnap0m+Z}ssI20
diff --git a/pysqlit/__pycache__/btree.cpython-313.pyc b/pysqlit/__pycache__/btree.cpython-313.pyc
deleted file mode 100644
index 457917beb24e999449100b95cef00f788e1a96ed..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 24048
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
diff --git a/pysqlit/__pycache__/concurrent_storage.cpython-311.pyc b/pysqlit/__pycache__/concurrent_storage.cpython-311.pyc
deleted file mode 100644
index 556b714bed6b8b64170866d5056226e8fcb24906..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 19516
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
AiU0rr
diff --git a/pysqlit/__pycache__/concurrent_storage.cpython-313.pyc b/pysqlit/__pycache__/concurrent_storage.cpython-313.pyc
deleted file mode 100644
index f646538023cc6e36121b19e58fda6782e571ea74..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 15508
zcmcgzdr%xldY|2yeJ{Jf0=vs|kif7=Ab~_|JuFVVEQGZ)Dyz9R_@MUD7~LPrtk8>)-eFubZ`u3@Zcf+RsM&b1E6;Q+$yfmk6x=0s_~V07IC7
zE}(DM5gmQ%iJm@L!luP@gge7^(t72pq~{K%J`oXM4~{ZS2wI>ejl@WwCSrmo*KR&;
zA(rD-V&$2DAz*B`9k&xZ&v=*}Ou&@S1kCk%sUng=<17$oRpK0ddY^6l$&>vg66&cI
zLcI|_6z$=M$xt{V2vUR)8zP~;2tPUy>*sq11|$67Q26{nw6Eqftl2M`o*#(z42=pt
zy=d+jjtvY&LxZBZaUdEZV{ILu=^&F&CuTH`uwNhG@|l-77=3oYc*bbhn5V>;!zl#}3@lqD#myG=m#nZtzf=jti
zz?*f|T{yvAv9Cckl*-t^g~-rIOf-^6Y=lJ9W)^3G&g>HqxCV3CsmvvomK@BGPF^Wx
zFhAo3N5e0V43G#f^oK~Khp)s{4PIhihzr7^L(U~t
zBf6F0rYCr?U@myCG7p@t6=&(9vvj_E!M)_Hy=$%|d64oa7*vTosK~|e;D|8rN`$W*
zB?GZYVqhmpJ~TuMu`|-wl}3>zcUCDU=5HE^l17WG$5OUnT5|5aYu-!8B3hK(Vf;3-
zvp|4;tAB;&>9>+oQl5H-$FGPTR5^fZ>Oz3B#fYKsBY#z%>C+cuIb~HO3oGRcm@RT>
zt+mur-Pm*Lpal(#53q7SU?nO&@3zaOIvsK-`3!IePk}aoPXcvjCFAALscgAU0X0tA
zSj(^sN}$SZU#67l&XEh4n9wA{L|N_eI6wpK(?_{tCS~MYz$o`f&qNJfhE7}$D%b6m
zBT`0>VyALRB&$!XSNRFrPc_<(tWst-BY%$`$lt5ynG%o_p6OtpW=oh}(9o$US^{-M
z*`uhT)8?&DUkYVP;Ae|;Q=&Fnx>wiBNbg&>-=~vu_{`%zdHErzN;)>2t}29);o%_?
ztMQ-QV9B{%qCOhiFw{^C){VCM93&HFiJ&Zy4Ddu_cyLIF^oZQha3m_>xqe6xxoGG@
zM9ftnYE)9%5}0Qz(Ie4;i&C7WLZ>y3L6Ag6C>s+K%ulthYxAOm*4^5Wn^7F{o3hOr|ar>uYPyc
zU9fIo9G;2OadUP?DZEZ!n!dD<^M3L5;uYT!_`P55TPSGd*uMtQM546x1&k)ZZ9bDrj4GK~0xW$Mcv%ex;ypv7qk8fu(}hbvKRv;&DEc
zQ?$ldGD;tmRletc*ME2Cz8m#-OAkys;(B9N>3wg}Omrc5(>ITJ?D6OtYq+u|I2k
zukG*J{=R*Q-@ELoU1yp6eJkF&-+1db9_*}u-aLD+pk&=gNAN|wN(Z$R@axs|{eR;5
z(ALI!0lZx~y&;^3@n3PZ+)0}6z
zone9S?L2F9ne8_3z;F!*Wp5wSx7bX#pVmSC+ea|wj*W%z9ftwxx#MCnCePYZW=exv
zGzTcu>M7L1GSIiBIYIDNWM^pu`NVs$3_UAu1;u
z#9f>WD6r@OiUyT>`y}JqL}3QaE|rsOh#CQgwn^_YRs&pj=?{X0hrWes1IDJblB{$G
z0_xZ7{i&u-T(2ruZDN?MN7ZKl5XRL;9e^+ZGS9#mP@$?^fJ;JR3Dd#JVDvRc4B!65
zUw{d9*k>Gf%kb0%xRA73YY6Hq|H;0$XVHDw(CV{^hTd>AHYl2&?PzKbwwy`?0>>Z$
zS9b!PdcmrU4pF=kIkeFd`TUKdvk~)wsoB;+HwmIa7>q=QeI^yukSC$>gpnE>8;+2}
z_-++qArcE>l>$s>0(E!^cB(N)!DiS|;O-z~5Pk*TtIVh7oPRH`nQWOp@y3Z8E&q7p
zmnSAH4{X_&8&>UESKEKoKEus9W*sY@>P1iWl4s8i@3Q?6K+Ht*>(8#b+@IRrV4co+
zXT3ium^i+goj2{9^1Zoh-ny7wweb8>_WroukX5#tzDW^
zKk)v`*_&q<4|Fc)1Xd;BfQsWrCdd25V*}%