Files
2026-07-13 13:08:41 +08:00

132 lines
3.3 KiB
RPMSpec

# -*- mode: python ; coding: utf-8 -*-
import os
from PyInstaller.utils.hooks import collect_all, collect_submodules
def safe_collect_submodules(package_name):
try:
return collect_submodules(package_name)
except Exception:
return []
def safe_collect_all(package_name):
try:
return collect_all(package_name)
except Exception:
# Some optional packages are platform-dependent.
return [], [], []
datas_fastembed, binaries_fastembed, hiddenimports_fastembed = safe_collect_all(
"fastembed"
)
datas_fastembed_vs, binaries_fastembed_vs, hiddenimports_fastembed_vs = (
safe_collect_all("fastembed_vectorstore")
)
datas_onnx, binaries_onnx, hiddenimports_onnx = safe_collect_all("onnxruntime")
datas_pptx, binaries_pptx, hiddenimports_pptx = safe_collect_all("pptx")
datas_docx2everything, binaries_docx2everything, hiddenimports_docx2everything = (
safe_collect_all("docx2everything")
)
datas_greenlet, binaries_greenlet, hiddenimports_greenlet = safe_collect_all(
"greenlet"
)
datas_spacy, binaries_spacy, hiddenimports_spacy = safe_collect_all("spacy")
datas_spacy_model, binaries_spacy_model, hiddenimports_spacy_model = (
safe_collect_all("en_core_web_sm")
)
datas_fastembed_cache = (
[("fastembed_cache", "fastembed_cache")] if os.path.isdir("fastembed_cache") else []
)
# mem0 validates vector store configs via dynamic __import__(mem0.configs.vector_stores.{provider});
# PyInstaller does not trace those. Embedder/vector classes are loaded by string path at runtime.
hiddenimports_mem0 = safe_collect_submodules("mem0.configs.vector_stores") + [
"mem0.embeddings.fastembed",
"mem0.llms.openai",
"mem0.vector_stores.qdrant",
]
a = Analysis(
["server.py"],
pathex=[],
binaries=binaries_fastembed
+ binaries_fastembed_vs
+ binaries_onnx
+ binaries_pptx
+ binaries_docx2everything
+ binaries_greenlet
+ binaries_spacy
+ binaries_spacy_model,
datas=[
("assets", "assets"),
("static", "static"),
("alembic", "alembic"),
]
+ datas_fastembed_cache
+ datas_fastembed
+ datas_fastembed_vs
+ datas_onnx
+ datas_pptx
+ datas_docx2everything
+ datas_greenlet
+ datas_spacy
+ datas_spacy_model,
hiddenimports=[
"aiosqlite",
"alembic",
"sqlite3",
"numpy",
"pandas",
"greenlet",
"greenlet._greenlet",
"importlib.metadata",
]
+ hiddenimports_fastembed
+ hiddenimports_fastembed_vs
+ hiddenimports_onnx
+ hiddenimports_pptx
+ hiddenimports_docx2everything
+ hiddenimports_greenlet
+ hiddenimports_spacy
+ hiddenimports_spacy_model
+ hiddenimports_mem0,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name="fastapi",
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name="fastapi",
)