about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py')
-rw-r--r--.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py b/.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py
new file mode 100644
index 00000000..16db8426
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/pythonjsonlogger/orjson.py
@@ -0,0 +1,71 @@
+"""JSON Formatter using [orjson](https://github.com/ijl/orjson)"""
+
+### IMPORTS
+### ============================================================================
+## Future
+from __future__ import annotations
+
+## Standard Library
+from typing import Any
+
+## Installed
+
+## Application
+from . import core
+from . import defaults as d
+from .utils import package_is_available
+
+# We import msgspec after checking it is available
+package_is_available("orjson", throw_error=True)
+import orjson  # pylint: disable=wrong-import-position,wrong-import-order
+
+
+### FUNCTIONS
+### ============================================================================
+def orjson_default(obj: Any) -> Any:
+    """orjson default encoder function for non-standard types"""
+    if d.use_exception_default(obj):
+        return d.exception_default(obj)
+    if d.use_traceback_default(obj):
+        return d.traceback_default(obj)
+    if d.use_bytes_default(obj):
+        return d.bytes_default(obj)
+    if d.use_enum_default(obj):
+        return d.enum_default(obj)
+    if d.use_type_default(obj):
+        return d.type_default(obj)
+    return d.unknown_default(obj)
+
+
+### CLASSES
+### ============================================================================
+class OrjsonFormatter(core.BaseJsonFormatter):
+    """JSON formatter using [orjson](https://github.com/ijl/orjson) for encoding."""
+
+    def __init__(
+        self,
+        *args,
+        json_default: core.OptionalCallableOrStr = orjson_default,
+        json_indent: bool = False,
+        **kwargs,
+    ) -> None:
+        """
+        Args:
+            args: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
+            json_default: a function for encoding non-standard objects
+            json_indent: indent output with 2 spaces.
+            kwargs: see [BaseJsonFormatter][pythonjsonlogger.core.BaseJsonFormatter]
+        """
+        super().__init__(*args, **kwargs)
+
+        self.json_default = core.str_to_object(json_default)
+        self.json_indent = json_indent
+        return
+
+    def jsonify_log_record(self, log_record: core.LogRecord) -> str:
+        """Returns a json string of the log record."""
+        opt = orjson.OPT_NON_STR_KEYS
+        if self.json_indent:
+            opt |= orjson.OPT_INDENT_2
+
+        return orjson.dumps(log_record, default=self.json_default, option=opt).decode("utf8")