replx 1.6.1__tar.gz → 1.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {replx-1.6.1/replx.egg-info → replx-1.6.2}/PKG-INFO +1 -1
- {replx-1.6.1 → replx-1.6.2}/replx/__init__.py +1 -1
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/client/core.py +6 -3
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/core.py +0 -6
- {replx-1.6.1 → replx-1.6.2/replx.egg-info}/PKG-INFO +1 -1
- {replx-1.6.1 → replx-1.6.2}/LICENSE +0 -0
- {replx-1.6.1 → replx-1.6.2}/README.md +0 -0
- {replx-1.6.1 → replx-1.6.2}/pyproject.toml +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/client/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/client/session.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/protocol.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/__main__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/command_dispatcher.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/connection_manager.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/exec.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/filesystem.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/repl.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/session.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/handlers/transfer.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/agent/server/session_manager.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/app.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/device.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/exec.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/file.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/firmware.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/package.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/commands/utility.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/config.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/connection.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/compiler.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/environment.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/output.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/registry.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/scanner.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/store.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/cli/helpers/updater.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/commands.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/protocol/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/protocol/repl.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/protocol/storage.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/terminal.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/transport/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/transport/base.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/transport/serial.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/_thread.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/aioble/__init__.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/array.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/asyncio/__init__.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/binascii.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/bluetooth.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/builtins.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/cmath.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/collections.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/cryptolib.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/deflate.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/errno.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/framebuf.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/gc.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/hashlib.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/heapq.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/io.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/json.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/lwip.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/machine.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/math.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/micropython.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/mip/__init__.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/network.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/ntptime.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/os.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/platform.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/random.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/re.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/requests/__init__.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/select.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/socket.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/ssl.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/struct.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/sys.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/time.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/tls.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/uasyncio.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/uctypes.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/urequests.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm/vfs.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/binascii.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/errno.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/hashlib.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/io.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/json.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/machine.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/math.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/micropython.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/network.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/os.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/select.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/socket.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ssl.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/struct.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/sys.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/time.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ubinascii.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ucryptolib.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/uerrno.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/uhashlib.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/uio.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ujson.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/umachine.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/uos.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/uselect.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/usocket.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ussl.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/ustruct.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/comm_separate/EFR32MG/utime.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/ESP32/aioespnow.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/ESP32/esp.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/ESP32/esp32.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/ESP32/espnow.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/MIMXRT1062DVJ6A/mimxrt.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/typehints/core/RP2350/rp2.pyi +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/utils/__init__.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/utils/constants.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/utils/device_info.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx/utils/exceptions.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx.egg-info/SOURCES.txt +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx.egg-info/dependency_links.txt +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx.egg-info/entry_points.txt +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx.egg-info/requires.txt +0 -0
- {replx-1.6.1 → replx-1.6.2}/replx.egg-info/top_level.txt +0 -0
- {replx-1.6.1 → replx-1.6.2}/setup.cfg +0 -0
- {replx-1.6.1 → replx-1.6.2}/test/test_line_mode_terminal.py +0 -0
- {replx-1.6.1 → replx-1.6.2}/test/test_termio.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: replx
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.2
|
|
4
4
|
Summary: replx is a fast, modern MicroPython CLI: turbo REPL, robust file sync (put/get), project install, mpy-cross integration, and smart port discovery.
|
|
5
5
|
Author-email: "chanmin.park" <devcamp@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import locale
|
|
1
2
|
import os
|
|
2
3
|
import sys
|
|
3
4
|
import socket
|
|
@@ -322,6 +323,7 @@ class AgentClient:
|
|
|
322
323
|
import subprocess
|
|
323
324
|
python_exe = sys.executable
|
|
324
325
|
agent_module = 'replx.cli.agent.server'
|
|
326
|
+
agent_port = port or DEFAULT_AGENT_PORT
|
|
325
327
|
|
|
326
328
|
cmd = [python_exe, '-m', agent_module]
|
|
327
329
|
if port:
|
|
@@ -335,7 +337,7 @@ class AgentClient:
|
|
|
335
337
|
try:
|
|
336
338
|
fd, stderr_path = tempfile.mkstemp(prefix='replx_agent_', suffix='.err')
|
|
337
339
|
os.close(fd)
|
|
338
|
-
stderr_file = open(stderr_path, '
|
|
340
|
+
stderr_file = open(stderr_path, 'wb')
|
|
339
341
|
except Exception:
|
|
340
342
|
stderr_file = None
|
|
341
343
|
stderr_path = None
|
|
@@ -375,8 +377,9 @@ class AgentClient:
|
|
|
375
377
|
detail = ''
|
|
376
378
|
if stderr_path:
|
|
377
379
|
try:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
+
enc = locale.getpreferredencoding(False) or 'utf-8'
|
|
381
|
+
with open(stderr_path, 'rb') as f:
|
|
382
|
+
detail = f.read().decode(enc, errors='replace').strip()
|
|
380
383
|
except Exception:
|
|
381
384
|
pass
|
|
382
385
|
msg = f"Failed to start agent (process exited with code {proc.returncode})"
|
|
@@ -400,9 +400,6 @@ class AgentServer(
|
|
|
400
400
|
self.connection_manager.disconnect(port)
|
|
401
401
|
self.session_manager.remove_connection_from_all_sessions(port)
|
|
402
402
|
|
|
403
|
-
if not self.connection_manager.get_connected_ports():
|
|
404
|
-
self.running = False
|
|
405
|
-
|
|
406
403
|
self._last_command_time = time.time()
|
|
407
404
|
|
|
408
405
|
return zombie_counter, gc_counter
|
|
@@ -734,9 +731,6 @@ class AgentServer(
|
|
|
734
731
|
failed_port = active_conn.port
|
|
735
732
|
self.connection_manager.disconnect(failed_port)
|
|
736
733
|
self.session_manager.remove_connection_from_all_sessions(failed_port)
|
|
737
|
-
if not self.connection_manager.get_connected_ports():
|
|
738
|
-
self.running = False
|
|
739
|
-
return AgentProtocol.create_response(seq=seq, error=f"Connection {failed_port} lost: {str(e)}. No connections remain, agent shutting down.")
|
|
740
734
|
return AgentProtocol.create_response(seq=seq, error=f"Connection {failed_port} lost: {str(e)}. Connection removed.")
|
|
741
735
|
else:
|
|
742
736
|
return AgentProtocol.create_response(seq=seq, error=f"Connection error: {str(e)}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: replx
|
|
3
|
-
Version: 1.6.
|
|
3
|
+
Version: 1.6.2
|
|
4
4
|
Summary: replx is a fast, modern MicroPython CLI: turbo REPL, robust file sync (put/get), project install, mpy-cross integration, and smart port discovery.
|
|
5
5
|
Author-email: "chanmin.park" <devcamp@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|