fix(signarl): wrong msgpack encode

This commit is contained in:
MingxuanGame
2025-08-01 11:00:57 +00:00
parent 74e4b1cb53
commit a11ea743a7
5 changed files with 50 additions and 14 deletions

View File

@@ -5,7 +5,7 @@ class APIMod:
@property
def acronym(self) -> str: ...
@property
def settings(self) -> str: ...
def settings(self) -> dict[str, Any]: ...
def encode(obj: Any) -> bytes: ...
def decode(data: bytes) -> Any: ...

View File

@@ -13,6 +13,8 @@ pub fn read_object(
match rmp::decode::read_marker(cursor) {
Ok(marker) => match marker {
rmp::Marker::Null => Ok(py.None()),
rmp::Marker::True => Ok(true.into_py_any(py)?),
rmp::Marker::False => Ok(false.into_py_any(py)?),
rmp::Marker::FixPos(val) => Ok(val.into_pyobject(py)?.into_any().unbind()),
rmp::Marker::FixNeg(val) => Ok(val.into_pyobject(py)?.into_any().unbind()),
rmp::Marker::U8 => {
@@ -86,8 +88,6 @@ pub fn read_object(
cursor.read_exact(&mut data).map_err(to_py_err)?;
Ok(data.into_pyobject(py)?.into_any().unbind())
}
rmp::Marker::True => Ok(true.into_py_any(py)?),
rmp::Marker::False => Ok(false.into_py_any(py)?),
rmp::Marker::FixStr(len) => read_string(py, cursor, len as u32),
rmp::Marker::Str8 => {
let mut buf = [0u8; 1];

View File

@@ -110,12 +110,12 @@ pub fn write_object(buf: &mut Vec<u8>, obj: &Bound<'_, PyAny>) {
write_list(buf, list);
} else if let Ok(string) = obj.downcast::<PyString>() {
write_string(buf, string);
} else if let Ok(integer) = obj.downcast::<PyInt>() {
write_integer(buf, integer);
} else if let Ok(float) = obj.downcast::<PyFloat>() {
write_float(buf, float);
} else if let Ok(boolean) = obj.downcast::<PyBool>() {
write_bool(buf, boolean);
write_bool(buf, boolean);
} else if let Ok(float) = obj.downcast::<PyFloat>() {
write_float(buf, float);
} else if let Ok(integer) = obj.downcast::<PyInt>() {
write_integer(buf, integer);
} else if let Ok(bytes) = obj.downcast::<PyBytes>() {
write_bin(buf, bytes);
} else if let Ok(dict) = obj.downcast::<PyDict>() {