Quellcode durchsuchen

:tada: create sutta pitaka importer project

Jeremy Zheng vor 1 Woche
Ursprung
Commit
a0c4f1fac3

+ 3 - 3
langchain-server/pyproject.toml

@@ -7,16 +7,16 @@ authors = [
 ]
 description = "A LLM service"
 readme = "README.md"
-requires-python = ">=3.12"
+requires-python = ">=3.14"
 classifiers = [
     "Programming Language :: Python :: 3",
     "Operating System :: OS Independent",
 ]
 license = "MIT"
-dependencies = ["bottle>=0.13", "langchain>=1.2"]
+dependencies = ["bottle", "langchain"]
 
 [project.urls]
-Homepage = "https://github.com/iapt-platform/mint/tree/master/rhododendron"
+Homepage = "https://github.com/iapt-platform/mint/tree/master/langchain-server"
 Issues = "https://github.com/iapt-platform/mint/issues"
 
 [project.scripts]

+ 6 - 0
sutta-pitaka-importer/.gitignore

@@ -0,0 +1,6 @@
+/tmp/
+
+/config.toml
+
+*.egg-info
+__pycache__/

+ 19 - 0
sutta-pitaka-importer/README.md

@@ -0,0 +1,19 @@
+# SUTTA-PITAKA
+
+## Usage
+
+```bash
+# Initial python3 virtual env
+$ python3 -m venv $PWD/tmp/python3
+
+# Load virtual env vars
+$ source $PWD/tmp/python3/bin/activate
+# Install dependencies
+> python -m pip install -e .
+
+> python -m dahlia -h
+```
+
+## Documents
+
+- [ORM Quick Start](https://docs.sqlalchemy.org/en/20/orm/quickstart.html)

+ 28 - 0
sutta-pitaka-importer/pyproject.toml

@@ -0,0 +1,28 @@
+[project]
+name = "dahlia"
+version = "2026.5.8"
+authors = [
+    { name = "Visuddhinanda", email = "visuddhinanda@gmail.com" },
+    { name = "Kassapa", email = "ven.kassapa@qq.com" },
+]
+description = "A rbac service"
+readme = "README.md"
+requires-python = ">=3.14"
+classifiers = [
+    "Programming Language :: Python :: 3",
+    "Operating System :: OS Independent",
+]
+license = "MIT"
+dependencies = [
+    "SQLAlchemy",
+    "psycopg[binary,pool]",
+    "mysql-connector-python",
+    "langchain",
+]
+
+[project.urls]
+Homepage = "https://github.com/iapt-platform/mint/tree/master/sutta-pitaka-importer"
+Issues = "https://github.com/iapt-platform/mint/issues"
+
+[project.scripts]
+dahlia = "dahlia:main"

+ 49 - 0
sutta-pitaka-importer/src/dahlia/__init__.py

@@ -0,0 +1,49 @@
+import logging
+import argparse
+import tomllib
+import signal
+import threading
+from concurrent import futures
+from time import sleep
+
+from sqlalchemy import create_engine
+
+from . import yuanhengsi, zhuangchunjiang
+
+
+logger = logging.getLogger(__name__)
+
+
+def main():
+    parser = argparse.ArgumentParser(description="A rbac service(gRPC).")
+    parser.add_argument('-c', '--config', default='config.toml')
+    parser.add_argument('-y', '--yuanhengsi', help="元亨寺's data folder")
+    parser.add_argument('-z', '--zhuangchunjiang', help="庄春江工作站's data folder")
+    parser.add_argument('-d', '--debug',
+                        action='store_true', help='run on debug mode')
+    parser.add_argument('-v', '--verbose',
+                        action='version', version='2026.5.8')
+    args = parser.parse_args()
+    logging.basicConfig(
+        format='%(asctime)s %(levelname).1s %(message)s', level=logging.DEBUG if args.debug else logging.INFO)
+    logger.debug("running on debug mode")
+
+    logger.debug("load configuration from %s", args.config)
+    with open(args.config, "rb") as file:
+        config = tomllib.load(file)
+        db = open_db(config['postgresql'], args.debug)
+        if args.zhuangchunjiang is not None:
+            zhuangchunjiang.launch(db, args.zhuangchunjiang)
+        if args.yuanhengsi is not None:
+            yuanhengsi.launch(db, args.yuanhengsi)
+        logging.info('done.')
+
+
+# https://docs.sqlalchemy.org/en/20/dialects/postgresql.html#dialect-postgresql-psycopg-connect
+# https://docs.sqlalchemy.org/en/20/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mariadbconnector
+# https://docs.sqlalchemy.org/en/20/dialects/sqlite.html#module-sqlalchemy.dialects.sqlite.pysqlite
+def open_db(config, debug):
+    logger.debug("open postgresql://%s@%s:%d/%s",
+                 config['user'], config['host'], config['port'], config['db-name'])
+    return create_engine(
+        f"postgresql+psycopg://{config['user']}:{config['password']}@{config['host']}:{config['port']}/{config['db-name']}?sslmode=disable", echo=debug)

+ 4 - 0
sutta-pitaka-importer/src/dahlia/__main__.py

@@ -0,0 +1,4 @@
+from . import main
+
+if __name__ == '__main__':
+    main()

+ 9 - 0
sutta-pitaka-importer/src/dahlia/yuanhengsi/__init__.py

@@ -0,0 +1,9 @@
+import logging
+
+
+logger = logging.getLogger(__name__)
+
+
+def launch(db, folder):
+    logger.info("load 元亨寺 from %s", folder)
+    # TODO

+ 9 - 0
sutta-pitaka-importer/src/dahlia/zhuangchunjiang/__init__.py

@@ -0,0 +1,9 @@
+import logging
+
+
+logger = logging.getLogger(__name__)
+
+
+def launch(db, folder):
+    logger.info("load 庄春江工作站 from %s", folder)
+    # TODO