introduce orjson as an optional replacement for stdlib json, useful for those who need performance api

Commit baf9351 · patx · 2025-05-22T20:12:04-04:00

Changeset
baf9351534262cc3d2dbc77950d5e744537f2598
Parents
c2061622cfc9b441de91c0139b524e86f061231f

View source at this commit

Comments

No comments yet.

Log in to comment

Diff

diff --git a/MicroPie.py b/MicroPie.py
index 12b35d6..7f76b78 100644
--- a/MicroPie.py
+++ b/MicroPie.py
@@ -34,7 +34,6 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 import asyncio
 import contextvars
 import inspect
-import json
 import os
 import re
 import time
@@ -43,6 +42,11 @@ from abc import ABC, abstractmethod
 from typing import Any, Awaitable, Callable, Dict, List, Optional, Tuple
 from urllib.parse import parse_qs
 
+try:
+    import orjson as json  # Use `orjson` if installed as it is faster
+except ImportError:
+    import json
+
 try:
     from jinja2 import Environment, FileSystemLoader, select_autoescape
     JINJA_INSTALLED = True
diff --git a/pyproject.toml b/pyproject.toml
index 8d8f7cd..2e66675 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
 
 [project]
 name = "MicroPie"
-version = "0.9.9.7.3"
+version = "0.9.9.8"
 description = "An ultra micro ASGI web framework"
 keywords = ["micropie", "asgi", "microframework", "http"]
 readme = "README.md"
@@ -18,7 +18,7 @@ classifiers = [
 ]
 
 [project.optional-dependencies]
-all = ["jinja2", "multipart", "aiofiles"]
+all = ["jinja2", "multipart", "aiofiles", "orjson"]
 
 [project.urls]
 Homepage = "https://patx.github.io/micropie"