From 5bf22fc7e3c392c8bd44315ca2d06d7dca7d084e Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 31 Jul 2025 17:27:24 -0400 Subject: add code for analysis of data --- .../python3.8/site-packages/plotly/serializers.py | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 venv/lib/python3.8/site-packages/plotly/serializers.py (limited to 'venv/lib/python3.8/site-packages/plotly/serializers.py') diff --git a/venv/lib/python3.8/site-packages/plotly/serializers.py b/venv/lib/python3.8/site-packages/plotly/serializers.py new file mode 100644 index 0000000..56b4b43 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/serializers.py @@ -0,0 +1,105 @@ +from .basedatatypes import Undefined +from .optional_imports import get_module + +np = get_module("numpy") + + +def _py_to_js(v, widget_manager): + """ + Python -> Javascript ipywidget serializer + + This function must repalce all objects that the ipywidget library + can't serialize natively (e.g. numpy arrays) with serializable + representations + + Parameters + ---------- + v + Object to be serialized + widget_manager + ipywidget widget_manager (unused) + + Returns + ------- + any + Value that the ipywidget library can serialize natively + """ + + # Handle dict recursively + # ----------------------- + if isinstance(v, dict): + return {k: _py_to_js(v, widget_manager) for k, v in v.items()} + + # Handle list/tuple recursively + # ----------------------------- + elif isinstance(v, (list, tuple)): + return [_py_to_js(v, widget_manager) for v in v] + + # Handle numpy array + # ------------------ + elif np is not None and isinstance(v, np.ndarray): + # Convert 1D numpy arrays with numeric types to memoryviews with + # datatype and shape metadata. + if ( + v.ndim == 1 + and v.dtype.kind in ["u", "i", "f"] + and v.dtype != "int64" + and v.dtype != "uint64" + ): + # We have a numpy array the we can directly map to a JavaScript + # Typed array + return {"buffer": memoryview(v), "dtype": str(v.dtype), "shape": v.shape} + else: + # Convert all other numpy arrays to lists + return v.tolist() + + # Handle Undefined + # ---------------- + if v is Undefined: + return "_undefined_" + + # Handle simple value + # ------------------- + else: + return v + + +def _js_to_py(v, widget_manager): + """ + Javascript -> Python ipywidget deserializer + + Parameters + ---------- + v + Object to be deserialized + widget_manager + ipywidget widget_manager (unused) + + Returns + ------- + any + Deserialized object for use by the Python side of the library + """ + # Handle dict + # ----------- + if isinstance(v, dict): + return {k: _js_to_py(v, widget_manager) for k, v in v.items()} + + # Handle list/tuple + # ----------------- + elif isinstance(v, (list, tuple)): + return [_js_to_py(v, widget_manager) for v in v] + + # Handle Undefined + # ---------------- + elif isinstance(v, str) and v == "_undefined_": + return Undefined + + # Handle simple value + # ------------------- + else: + return v + + +# Custom serializer dict for use in ipywidget traitlet definitions +custom_serializers = {"from_json": _js_to_py, "to_json": _py_to_js} -- cgit v1.2.3-70-g09d2