Name | CryptoSqlite JSON |
Version |
0.0.3
JSON |
| download |
home_page | None |
Summary | python version of sqlcipher |
upload_time | 2024-12-06 02:38:47 |
maintainer | None |
docs_url | None |
author | zkh |
requires_python | <4.0,>=3.7 |
license | MIT License |
keywords |
sqlite3
cipher
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# CryptoSqlite
正儿八经的`sqlite3`结合`sqlcipher`, 且符合`dbapi2`标准的python模块。 兼容各个python版本。
## 安装
本项目python版本要求>= 3.7, 支持Linux、Windows。已有预编译版本`>=3.7 and <=3.12`。
### 源码安装
> 源码安装请确保网络能够流畅访问`github`
默认情况下, 会下载最新的sqlcipher进行编译安装, 如果需要指定版本, 确保在编译前设置环境变量`SQLCIPHER_VERSION`,如`v4.6.1`。
如果系统已经存在sqlcipher, 请设置环境变量`SQLCIPHER_INCLUDE_DIRS`为`sqlite.h`头文件位置,`SQLCIPHER_LIBRARY_DIRS`为`sqlcipher.lib`或`libsqlcipher.a`所在位置。
> 如果设置了`SQLCIPHER_VERSION`将会忽略`SQLCIPHER_INCLUDE_DIRS`及`SQLCIPHER_LIBRARY_DIRS`环境变量
#### Windows
要求:
- msvc 编译器
- nmake
- 如果python版本低于3.9, 需要确保系统安装了`tclsh`, 且在`PATH`环境变量中
#### Linux
要求:
- gcc 编译器
- make
- libtool
## 示例
### 加密
```python
key='123456'
exist_db = 'test.db3'
newdb = 'encrypt_db.db3'
conn = sqlite3.connect(exist_db)
cur = conn.cursor()
cur.execute(f"ATTACH DATABASE '{newdb}' AS encrypted KEY '{self.key}'")
cur.execute("SELECT sqlcipher_export('encrypted')")
cur.execute("DETACH DATABASE encrypted")
assert os.path.exists(newdb)
cur.close()
conn.close()
```
### 解密
```python
key='123456'
encrypt_db = 'test.db3'
conn = sqlite3.connect(encrypt_db)
cur = conn.cursor()
cur.execute(f"PRAGMA key='{key}'")
res = cur.execute("SELECT name FROM sqlite_master")
assert res.fetchone()[0] == 'movie'
cur.close()
conn.close()
```
### 导出为非加密db
```python
olddbname = 'encrypt_xxx.db3'
plaindbname = 'plain_xxx.db3'
key = '123456'
con = sqlite3.connect(olddbname)
cur = con.cursor()
dbname = 'plaindb'
cur.execute(f"PRAGMA key='{key}'")
cur.execute(f"ATTACH DATABASE '{plaindbname}' AS {dbname} KEY ''")
cur.execute(f"SELECT sqlcipher_export('{dbname}')")
cur.execute(f"DETACH DATABASE {dbname}")
cur.close()
con.close()
# 判断是否导出成功
assert os.path.exists(plaindbname)
```
### 修改密码
```python
dbname = 'dbtest.db3'
oldkey = '123456'
newkey = '654321'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute(f"PRAGMA key='{oldkey}'")
cur.execute(f"PRAGMA rekey='{newkey}'")
cur.close()
conn.close()
```
Raw data
{
"_id": null,
"home_page": null,
"name": "CryptoSqlite",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.7",
"maintainer_email": null,
"keywords": "sqlite3, cipher",
"author": "zkh",
"author_email": "404937333@qq.com",
"download_url": "https://files.pythonhosted.org/packages/5d/2b/3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7/cryptosqlite-0.0.3.tar.gz",
"platform": "Windows",
"description": "# CryptoSqlite\r\n\r\n\u6b63\u513f\u516b\u7ecf\u7684`sqlite3`\u7ed3\u5408`sqlcipher`, \u4e14\u7b26\u5408`dbapi2`\u6807\u51c6\u7684python\u6a21\u5757\u3002 \u517c\u5bb9\u5404\u4e2apython\u7248\u672c\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n\u672c\u9879\u76eepython\u7248\u672c\u8981\u6c42>= 3.7\uff0c \u652f\u6301Linux\u3001Windows\u3002\u5df2\u6709\u9884\u7f16\u8bd1\u7248\u672c`>=3.7 and <=3.12`\u3002\r\n\r\n### \u6e90\u7801\u5b89\u88c5\r\n\r\n> \u6e90\u7801\u5b89\u88c5\u8bf7\u786e\u4fdd\u7f51\u7edc\u80fd\u591f\u6d41\u7545\u8bbf\u95ee`github`\r\n\r\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c \u4f1a\u4e0b\u8f7d\u6700\u65b0\u7684sqlcipher\u8fdb\u884c\u7f16\u8bd1\u5b89\u88c5\uff0c \u5982\u679c\u9700\u8981\u6307\u5b9a\u7248\u672c\uff0c \u786e\u4fdd\u5728\u7f16\u8bd1\u524d\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf`SQLCIPHER_VERSION`,\u5982`v4.6.1`\u3002\r\n\r\n\u5982\u679c\u7cfb\u7edf\u5df2\u7ecf\u5b58\u5728sqlcipher, \u8bf7\u8bbe\u7f6e\u73af\u5883\u53d8\u91cf`SQLCIPHER_INCLUDE_DIRS`\u4e3a`sqlite.h`\u5934\u6587\u4ef6\u4f4d\u7f6e\uff0c`SQLCIPHER_LIBRARY_DIRS`\u4e3a`sqlcipher.lib`\u6216`libsqlcipher.a`\u6240\u5728\u4f4d\u7f6e\u3002\r\n\r\n\r\n> \u5982\u679c\u8bbe\u7f6e\u4e86`SQLCIPHER_VERSION`\u5c06\u4f1a\u5ffd\u7565`SQLCIPHER_INCLUDE_DIRS`\u53ca`SQLCIPHER_LIBRARY_DIRS`\u73af\u5883\u53d8\u91cf\r\n\r\n#### Windows\r\n\r\n\u8981\u6c42: \r\n- msvc \u7f16\u8bd1\u5668\r\n- nmake\r\n- \u5982\u679cpython\u7248\u672c\u4f4e\u4e8e3.9\uff0c \u9700\u8981\u786e\u4fdd\u7cfb\u7edf\u5b89\u88c5\u4e86`tclsh`, \u4e14\u5728`PATH`\u73af\u5883\u53d8\u91cf\u4e2d\r\n\r\n\r\n#### Linux\r\n\r\n\u8981\u6c42: \r\n- gcc \u7f16\u8bd1\u5668\r\n- make\r\n- libtool\r\n\r\n## \u793a\u4f8b\r\n\r\n### \u52a0\u5bc6\r\n\r\n```python\r\nkey='123456'\r\nexist_db = 'test.db3'\r\nnewdb = 'encrypt_db.db3'\r\n\r\nconn = sqlite3.connect(exist_db)\r\ncur = conn.cursor()\r\ncur.execute(f\"ATTACH DATABASE '{newdb}' AS encrypted KEY '{self.key}'\")\r\ncur.execute(\"SELECT sqlcipher_export('encrypted')\")\r\ncur.execute(\"DETACH DATABASE encrypted\")\r\nassert os.path.exists(newdb)\r\n\r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n### \u89e3\u5bc6\r\n\r\n```python\r\nkey='123456'\r\nencrypt_db = 'test.db3'\r\n\r\nconn = sqlite3.connect(encrypt_db)\r\ncur = conn.cursor()\r\ncur.execute(f\"PRAGMA key='{key}'\") \r\nres = cur.execute(\"SELECT name FROM sqlite_master\")\r\nassert res.fetchone()[0] == 'movie'\r\n\r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n\r\n### \u5bfc\u51fa\u4e3a\u975e\u52a0\u5bc6db\r\n\r\n```python\r\nolddbname = 'encrypt_xxx.db3'\r\nplaindbname = 'plain_xxx.db3'\r\nkey = '123456'\r\ncon = sqlite3.connect(olddbname)\r\n\r\ncur = con.cursor()\r\ndbname = 'plaindb'\r\ncur.execute(f\"PRAGMA key='{key}'\")\r\ncur.execute(f\"ATTACH DATABASE '{plaindbname}' AS {dbname} KEY ''\")\r\ncur.execute(f\"SELECT sqlcipher_export('{dbname}')\")\r\ncur.execute(f\"DETACH DATABASE {dbname}\")\r\ncur.close()\r\ncon.close()\r\n\r\n# \u5224\u65ad\u662f\u5426\u5bfc\u51fa\u6210\u529f\r\nassert os.path.exists(plaindbname)\r\n```\r\n\r\n### \u4fee\u6539\u5bc6\u7801\r\n\r\n```python\r\ndbname = 'dbtest.db3'\r\noldkey = '123456'\r\nnewkey = '654321'\r\n\r\nconn = sqlite3.connect(dbname)\r\ncur = conn.cursor()\r\ncur.execute(f\"PRAGMA key='{oldkey}'\") \r\ncur.execute(f\"PRAGMA rekey='{newkey}'\") \r\ncur.close()\r\nconn.close()\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "python version of sqlcipher",
"version": "0.0.3",
"project_urls": null,
"split_keywords": [
"sqlite3",
" cipher"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0aa3f150844e3716fdc7f03ebb7b6866663e59f82161d57654b2e83a0ef89909",
"md5": "8ef3123127d893a7561555bb30bdda72",
"sha256": "3c86865eff71506f18fe6e634293f7412ab64f89e263c9394a80eb1f4457ce11"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "8ef3123127d893a7561555bb30bdda72",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 4541516,
"upload_time": "2024-12-06T02:38:18",
"upload_time_iso_8601": "2024-12-06T02:38:18.060990Z",
"url": "https://files.pythonhosted.org/packages/0a/a3/f150844e3716fdc7f03ebb7b6866663e59f82161d57654b2e83a0ef89909/CryptoSqlite-0.0.3-cp310-cp310-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f64a17970d3c48e1a0a0a4e788776b1d938fccf75c846c391a6563a8dad56ea4",
"md5": "c1addde8166aea61b1e2b45fca2453ec",
"sha256": "cf41120a8f1af59184b5f8dd71b9ad3a48c550eefa819233fc969f8e6399253e"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "c1addde8166aea61b1e2b45fca2453ec",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": "<4.0,>=3.7",
"size": 1325525,
"upload_time": "2024-12-06T02:38:20",
"upload_time_iso_8601": "2024-12-06T02:38:20.678496Z",
"url": "https://files.pythonhosted.org/packages/f6/4a/17970d3c48e1a0a0a4e788776b1d938fccf75c846c391a6563a8dad56ea4/CryptoSqlite-0.0.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5fe7aea73cb78a0d499a96cc51240baac7e50ba09012cd94e0e9a99e6c124d60",
"md5": "77f21ee6568b0ad895f0a60af6bbf5f8",
"sha256": "ff60318c8efc1d607e84df4ffce14ab70b372958118149e3a9d5b0d09b7c6dc8"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "77f21ee6568b0ad895f0a60af6bbf5f8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 4549899,
"upload_time": "2024-12-06T02:38:23",
"upload_time_iso_8601": "2024-12-06T02:38:23.296318Z",
"url": "https://files.pythonhosted.org/packages/5f/e7/aea73cb78a0d499a96cc51240baac7e50ba09012cd94e0e9a99e6c124d60/CryptoSqlite-0.0.3-cp311-cp311-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "817dfec5c3c07b5e102d6345e332038c08207f2b08745ec2abf1ebb6f133ca49",
"md5": "4a35a8faa55deb6e596df0a1e790836b",
"sha256": "a37242beb8e9885b5c4b05a6950fce271e94ea75fda0859fa333e14a5974ef0b"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "4a35a8faa55deb6e596df0a1e790836b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": "<4.0,>=3.7",
"size": 1332001,
"upload_time": "2024-12-06T02:38:25",
"upload_time_iso_8601": "2024-12-06T02:38:25.165638Z",
"url": "https://files.pythonhosted.org/packages/81/7d/fec5c3c07b5e102d6345e332038c08207f2b08745ec2abf1ebb6f133ca49/CryptoSqlite-0.0.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9a0a78a8c89f51086e839a39f32d6ced69960f6a6f684373b0e6cf2aa3dec038",
"md5": "8151793f9cbdfbbd6878bbcb964e56ad",
"sha256": "24c0e30b379d52e4fdf4fdedc02351267fcc7ccf438e9cdc0e137c8f7da8d9a2"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "8151793f9cbdfbbd6878bbcb964e56ad",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 4551691,
"upload_time": "2024-12-06T02:38:28",
"upload_time_iso_8601": "2024-12-06T02:38:28.442082Z",
"url": "https://files.pythonhosted.org/packages/9a/0a/78a8c89f51086e839a39f32d6ced69960f6a6f684373b0e6cf2aa3dec038/CryptoSqlite-0.0.3-cp312-cp312-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2c2f804a1566f78db3cb44d8b6d1247606cf76bbcf4fb2c4280fe2b25dd913f3",
"md5": "582004cb645174e3466d72726580c0a1",
"sha256": "a1c8d7ec994e67c2da946769063b2ab948cc2a26a5d95c91a7897441738a20b3"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "582004cb645174e3466d72726580c0a1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": "<4.0,>=3.7",
"size": 1333755,
"upload_time": "2024-12-06T02:38:30",
"upload_time_iso_8601": "2024-12-06T02:38:30.922763Z",
"url": "https://files.pythonhosted.org/packages/2c/2f/804a1566f78db3cb44d8b6d1247606cf76bbcf4fb2c4280fe2b25dd913f3/CryptoSqlite-0.0.3-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3ed25fa4465514ccec524d6cc12aa77db2bf5c0af1d10a39c2b098efc25d267c",
"md5": "1fcbfbc08a43df8fd3f196549acb02d2",
"sha256": "844352bbd17d92dc97a8a948e8d90113213cb133f549ab4e59f0966a80288c58"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp37-cp37m-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "1fcbfbc08a43df8fd3f196549acb02d2",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": "<4.0,>=3.7",
"size": 2592710,
"upload_time": "2024-12-06T02:38:33",
"upload_time_iso_8601": "2024-12-06T02:38:33.530648Z",
"url": "https://files.pythonhosted.org/packages/3e/d2/5fa4465514ccec524d6cc12aa77db2bf5c0af1d10a39c2b098efc25d267c/CryptoSqlite-0.0.3-cp37-cp37m-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fda748d41e9aef1a554e57d5c91e31c920901653e1b54a75da6b08149d80e067",
"md5": "b7932df2872a24702e47e6b95d02b1c9",
"sha256": "fc997f516f64636caa172c2bf52b2fb7bbf817b4d838b66d04d92cf06e8345dd"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "b7932df2872a24702e47e6b95d02b1c9",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": "<4.0,>=3.7",
"size": 1316879,
"upload_time": "2024-12-06T02:38:35",
"upload_time_iso_8601": "2024-12-06T02:38:35.701368Z",
"url": "https://files.pythonhosted.org/packages/fd/a7/48d41e9aef1a554e57d5c91e31c920901653e1b54a75da6b08149d80e067/CryptoSqlite-0.0.3-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae4821302efb24604d1b283a457a66137422ead8831540364e1b2273c9cd8927",
"md5": "607bc35e6ba3ff0a16317ba160604768",
"sha256": "48ceaa438bcf1463c784af27491cb2052fdc878f80a0b061322493a030837d74"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp38-cp38-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "607bc35e6ba3ff0a16317ba160604768",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 4627506,
"upload_time": "2024-12-06T02:38:39",
"upload_time_iso_8601": "2024-12-06T02:38:39.157393Z",
"url": "https://files.pythonhosted.org/packages/ae/48/21302efb24604d1b283a457a66137422ead8831540364e1b2273c9cd8927/CryptoSqlite-0.0.3-cp38-cp38-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fbeb6de9c997bbb2369bf841c70a7306ea87a4049e3f99195a61a5ecded36e2b",
"md5": "5b5fddf2ac3a84636055ceb02b7a2875",
"sha256": "6bf3afef4a68be3e4f61c7d6fcaba8e5e701b961e12a38a2d4fcaefee173e603"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "5b5fddf2ac3a84636055ceb02b7a2875",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": "<4.0,>=3.7",
"size": 1318077,
"upload_time": "2024-12-06T02:38:41",
"upload_time_iso_8601": "2024-12-06T02:38:41.573446Z",
"url": "https://files.pythonhosted.org/packages/fb/eb/6de9c997bbb2369bf841c70a7306ea87a4049e3f99195a61a5ecded36e2b/CryptoSqlite-0.0.3-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "336ecc49fa443d03515644c63f30d7c5c8191a6b781e48fc519400ba5e74dfce",
"md5": "c7f6275a926781e788a2288336c4bcb9",
"sha256": "d2bbffbd6f13911acc34b1573afd66b6dc2c8f0583c0bc50bf6f4c49bf2706e3"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp39-cp39-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "c7f6275a926781e788a2288336c4bcb9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 4535768,
"upload_time": "2024-12-06T02:38:44",
"upload_time_iso_8601": "2024-12-06T02:38:44.482033Z",
"url": "https://files.pythonhosted.org/packages/33/6e/cc49fa443d03515644c63f30d7c5c8191a6b781e48fc519400ba5e74dfce/CryptoSqlite-0.0.3-cp39-cp39-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "00c1a51debd64101350c099decca28075e16a3b942816715d970359489c51578",
"md5": "8add59bf4b2e8535ff710a69aea5582b",
"sha256": "872491b0648f93191bb523ecaaae604c742172cdd061095088e60772a4d18e98"
},
"downloads": -1,
"filename": "CryptoSqlite-0.0.3-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "8add59bf4b2e8535ff710a69aea5582b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": "<4.0,>=3.7",
"size": 1320469,
"upload_time": "2024-12-06T02:38:46",
"upload_time_iso_8601": "2024-12-06T02:38:46.559887Z",
"url": "https://files.pythonhosted.org/packages/00/c1/a51debd64101350c099decca28075e16a3b942816715d970359489c51578/CryptoSqlite-0.0.3-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5d2b3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7",
"md5": "a5947de21a76be00b0ca6697c934d448",
"sha256": "ccd7c8a2a3305d91a8c530e6ddc6e2ab8750a14a19bb822089c7315b987895c3"
},
"downloads": -1,
"filename": "cryptosqlite-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "a5947de21a76be00b0ca6697c934d448",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.7",
"size": 38928,
"upload_time": "2024-12-06T02:38:47",
"upload_time_iso_8601": "2024-12-06T02:38:47.993543Z",
"url": "https://files.pythonhosted.org/packages/5d/2b/3cf51f933c36a97445144063f56f6bfd4313d36670d9acd47c8ba0fd68b7/cryptosqlite-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-06 02:38:47",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "cryptosqlite"
}