feat: v1.1.1 - Pre-bundle Python runtime packages, dual update system, and UI localization
This commit is contained in:
1 parent
e7e639b5a2
commit
2de9a13c89
9 files changed
+855
-122
No files matched your search
@@ -27,22 +27,35 @@ class AndroidLogStream:
|
||||
self.activity_context = activity_context
|
||||
self.original_stream = original_stream
|
||||
self.buffer = ""
|
||||
self._in_write = False
|
||||
|
||||
def write(self, message):
|
||||
if self.original_stream:
|
||||
try:
|
||||
self.original_stream.write(message)
|
||||
except Exception:
|
||||
pass
|
||||
self.buffer += message
|
||||
while "\n" in self.buffer:
|
||||
line, self.buffer = self.buffer.split("\n", 1)
|
||||
clean_line = line.strip()
|
||||
if clean_line and self.activity_context:
|
||||
if self._in_write:
|
||||
if self.original_stream:
|
||||
try:
|
||||
self.activity_context.onServerLog(clean_line)
|
||||
self.original_stream.write(message)
|
||||
except Exception:
|
||||
pass
|
||||
return
|
||||
|
||||
self._in_write = True
|
||||
try:
|
||||
if self.original_stream:
|
||||
try:
|
||||
self.original_stream.write(message)
|
||||
except Exception:
|
||||
pass
|
||||
self.buffer += message
|
||||
while "\n" in self.buffer:
|
||||
line, self.buffer = self.buffer.split("\n", 1)
|
||||
clean_line = line.strip()
|
||||
if clean_line and self.activity_context:
|
||||
try:
|
||||
self.activity_context.onServerLog(clean_line)
|
||||
except Exception:
|
||||
pass
|
||||
finally:
|
||||
self._in_write = False
|
||||
|
||||
def flush(self):
|
||||
if self.original_stream:
|
||||
@@ -137,15 +150,28 @@ def run_server(ppsr_path, activity_context=None):
|
||||
|
||||
ppsr_dir = os.path.dirname(os.path.abspath(ppsr_path))
|
||||
misc_dir = os.path.join(ppsr_dir, "misc")
|
||||
pkg_zip = os.path.join(ppsr_dir, "packages.zip")
|
||||
|
||||
if os.path.exists(ppsr_dir):
|
||||
os.chdir(ppsr_dir)
|
||||
print(f"Working directory locked: {os.getcwd()}")
|
||||
|
||||
for path in [ppsr_dir, misc_dir]:
|
||||
for path in [ppsr_dir, misc_dir, pkg_zip]:
|
||||
if os.path.exists(path) and path not in sys.path:
|
||||
sys.path.insert(0, path)
|
||||
|
||||
# Verify and auto-recover critical packages if needed
|
||||
for pkg_name in ["requests", "werkzeug", "flask"]:
|
||||
try:
|
||||
__import__(pkg_name)
|
||||
except ImportError:
|
||||
print(f"[Shim] Package '{pkg_name}' missing, attempting auto-install...")
|
||||
try:
|
||||
import package_fetcher
|
||||
package_fetcher.install_package(pkg_name, ppsr_dir)
|
||||
except Exception as ex:
|
||||
print(f"[Shim Warning] Fallback failed for {pkg_name}: {ex}")
|
||||
|
||||
# --- Werkzeug Patch ---
|
||||
try:
|
||||
import werkzeug.serving
|
||||
|
||||
Reference in new issue
Block a user