From 776cdddcdbc03e0b4b87c119645b41b99f061aff Mon Sep 17 00:00:00 2001 From: Guillaume De Saint Martin Date: Mon, 28 Sep 2026 15:58:52 +0200 Subject: [PATCH 1/4] [Binary] remove gevent hiddenimports --- bin/start.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/start.spec b/bin/start.spec index b7aafc4b42..b8843bdb68 100644 --- a/bin/start.spec +++ b/bin/start.spec @@ -29,7 +29,7 @@ a = Analysis( "pyngrok", "pyngrok.ngrok", "openai", "flask", "flask_login", "flask_wtf", "flask_socketio", "flask_cors", "werkzeug.middleware", "werkzeug.middleware.proxy_fix", - "wtforms", "wtforms.fields", "gevent", "geventwebsocket", + "wtforms", "wtforms.fields", "vaderSentiment", "vaderSentiment.vaderSentiment", "coingecko_openapi_client", "certifi", From 8da77d9747188fae513ef3e61a1aac3d0f17d3c5 Mon Sep 17 00:00:00 2001 From: Guillaume De Saint Martin Date: Mon, 28 Sep 2026 16:12:14 +0200 Subject: [PATCH 2/4] [Binary] update to pyinstaller 6.22.3 --- packages/binary/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/binary/requirements.txt b/packages/binary/requirements.txt index 8908fbb60f..67da26caee 100644 --- a/packages/binary/requirements.txt +++ b/packages/binary/requirements.txt @@ -1,2 +1,2 @@ -pyinstaller==6.18.0 +pyinstaller==6.22.3 nltk From 01b3aad864d0576ad97a7a2f8c942b56e665d4e8 Mon Sep 17 00:00:00 2001 From: Guillaume De Saint Martin Date: Mon, 28 Sep 2026 16:26:52 +0200 Subject: [PATCH 3/4] [Binary] fix web3 import metadata --- bin/start.spec | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/bin/start.spec b/bin/start.spec index b8843bdb68..e0428a16ab 100644 --- a/bin/start.spec +++ b/bin/start.spec @@ -1,6 +1,6 @@ # -*- mode: python -*- -from PyInstaller.utils.hooks import collect_data_files +from PyInstaller.utils.hooks import collect_data_files, copy_metadata block_cipher = None @@ -8,6 +8,21 @@ block_cipher = None # hiddenimports only bundles Python modules; collect_data_files includes those data files. eth_account_datas = collect_data_files("eth_account") +# importlib.metadata.version() at import time; PyInstaller does not bundle .dist-info by default. +_eth_web3_dist_names = ( + "py-ecc", + "eth-account", + "eth-keyfile", + "eth-utils", + "eth-typing", + "eth-keys", + "hexbytes", + "web3", +) +eth_web3_metadata = [] +for _dist_name in _eth_web3_dist_names: + eth_web3_metadata += copy_metadata(_dist_name) + OCTOBOT_PACKAGES_FILES = REQUIRED = [s.strip() for s in open('bin/octobot_packages_files.txt').readlines()] # hiddenimports=['numpy.core._dtype_ctypes'] from https://github.com/pyinstaller/pyinstaller/issues/3982 a = Analysis( @@ -16,7 +31,7 @@ a = Analysis( datas=[ ('../octobot/config', 'octobot/config'), ('../octobot/strategy_optimizer/optimizer_data_files', 'octobot/strategy_optimizer/optimizer_data_files'), - ] + eth_account_datas, # required for node wallet mnemonic generation (web3.Account.create_with_mnemonic) + ] + eth_account_datas + eth_web3_metadata, # required for node wallet mnemonic generation (web3.Account.create_with_mnemonic) hiddenimports=[ "colorlog", "numpy.core._dtype_ctypes", "dotenv", "pgpy", "imghdr", From e58083ce2d50f5ee36a86a0e72bff7c1a0400ec1 Mon Sep 17 00:00:00 2001 From: Guillaume De Saint Martin Date: Mon, 28 Sep 2026 17:11:00 +0200 Subject: [PATCH 4/4] [Binary] add web deps --- bin/start.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/start.spec b/bin/start.spec index e0428a16ab..13d981545b 100644 --- a/bin/start.spec +++ b/bin/start.spec @@ -43,6 +43,10 @@ a = Analysis( "asyncpraw", "simplifiedpytrends", "simplifiedpytrends.exceptions", "simplifiedpytrends.request", "pyngrok", "pyngrok.ngrok", "openai", "flask", "flask_login", "flask_wtf", "flask_socketio", "flask_cors", + # Tentacles (excluded from Analysis) — ASGI stack per packages/services/full_requirements.txt + "asgiref.sync", "asgiref.wsgi", + "uvicorn", "uvicorn.config", "uvicorn.server", + "starlette", "starlette.applications", "starlette.routing", "starlette.websockets", "werkzeug.middleware", "werkzeug.middleware.proxy_fix", "wtforms", "wtforms.fields", "vaderSentiment", "vaderSentiment.vaderSentiment",