summaryrefslogtreecommitdiffstats
path: root/lib/python.tcl
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2026-02-06 20:29:43 +0000
committerOmar Rizwan <omar@omar.website>2026-02-06 20:29:54 +0000
commit507d189e7f72f15f9718429f34ba6db6ffbc7bda (patch)
tree5bace6aa510d0eda8e036aa7d8d93ab16f03d989 /lib/python.tcl
parentlib/python: WIP: Start on argtype registration (diff)
downloadfolk-507d189e7f72f15f9718429f34ba6db6ffbc7bda.tar.gz
folk-507d189e7f72f15f9718429f34ba6db6ffbc7bda.zip
python: WIP: Working on Image / argtype support.
Add python to prelude.
Diffstat (limited to 'lib/python.tcl')
-rw-r--r--lib/python.tcl21
1 files changed, 5 insertions, 16 deletions
diff --git a/lib/python.tcl b/lib/python.tcl
index 0df6dd9a..27710c17 100644
--- a/lib/python.tcl
+++ b/lib/python.tcl
@@ -128,7 +128,7 @@ while True:
for argtype in fn_argtypes:
if argtype in registered_argtypes:
# Use registered deserializer, giving it direct socket access
- deserialized = argtypes[arg_type](socket)
+ deserialized = registered_argtypes[argtype](socket)
parsed_args.append(deserialized)
else:
# Standard JSON decode
@@ -178,6 +178,7 @@ Uvx method unknown {fnName args} {
# Check if this is a custom argtype
if {[dict exists $registeredArgtypes $schema]} {
set serializerCode [dict get $registeredArgtypes $schema]
+ puts "zmq ($zmq) socket ($socket) arg ($arg) sc ($serializerCode)"
apply [list {zmq socket arg} $serializerCode] $zmq $socket $arg
} else {
# Use JSON encoding
@@ -205,18 +206,10 @@ Uvx method run {code} {
}
Uvx method argtype {typeName serializer deserializer} {
- # Store the Tcl serializer
+ # Store the Tcl serializer:
dict set registeredArgtypes $typeName $serializer
-
- # Register the Python deserializer with Python
- $zmq zmqSendMore $socket "__register_argtype__"
- $zmq zmqSendMore $socket $typeName
- $zmq zmqSendMore $socket $deserializer
- $zmq zmqSend $socket "" 0
-
- set response [$zmq zmqRecvMulti $socket]
- lassign $response status value
- if {$status eq "error"} { error $value }
+ # Store the Python deserializer:
+ $self __register_argtype__ $typeName $deserializer
}
Uvx method def {fnName argSpec body} {
@@ -236,10 +229,6 @@ Uvx method def {fnName argSpec body} {
# Register function signature with Python
$self __register_function__ $fnName {*}$argTypes
- set response [$zmq zmqRecvMulti $socket]
- lassign $response status value
- if {$status eq "error"} { error $value }
-
# Create Python function
set pythonArgs [join $argNames ", "]
set pythonDef "def $fnName\($pythonArgs):\n"