<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ef663e11132026ca50ec14e54584f6fba4777992">https://github.com/macports/macports-ports/commit/ef663e11132026ca50ec14e54584f6fba4777992</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new ef663e11132 glances: fix for systems without rust
</span>ef663e11132 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit ef663e11132026ca50ec14e54584f6fba4777992
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Tue Aug 27 11:10:52 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    glances: fix for systems without rust
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/70625
</span>---
 sysutils/glances/Portfile                          |  15 +-
 .../glances/files/0001-Unrustify-glances.patch     | 467 +++++++++++++++++++++
 2 files changed, 478 insertions(+), 4 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/glances/Portfile b/sysutils/glances/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 1c95521ce91..6c5dd630609 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/sysutils/glances/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/glances/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -28,17 +28,24 @@ python.default_version \
</span>                     312
 depends_lib-append  port:py${python.version}-packaging \
                     port:py${python.version}-psutil \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:py${python.version}-orjson \
</span>                     port:py${python.version}-future \
                     port:py${python.version}-setuptools
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${os.platform} eq "darwin" && ${os.major} > 11} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.platform} ne "darwin" || ${os.major} > 11} {
</span>     depends_lib-append \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:py${python.version}-orjson \
</span>                     port:py${python.version}-pydantic
<span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Until the issue is fixed by upstream.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # https://github.com/nicolargo/glances/issues/2930
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    0001-Unrustify-glances.patch
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_run-append  port:py${python.version}-defusedxml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_run-append \
</span>                     port:py${python.version}-ujson
<span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_run-append  port:py${python.version}-defusedxml
</span> 
 post-patch {
     reinplace "s|/usr/local|${prefix}|" glances/config.py
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/sysutils/glances/files/0001-Unrustify-glances.patch b/sysutils/glances/files/0001-Unrustify-glances.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f5ad56b9d00
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/sysutils/glances/files/0001-Unrustify-glances.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,467 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c7fc967d527ef6303a47591d04b2d3a8c4991ddc Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 27 Aug 2024 09:29:18 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Unrustify glances
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+See: https://trac.macports.org/ticket/70625
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git README.rst README.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7fbc4319..d5be3b45 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- README.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ README.rst
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -86,7 +86,7 @@ Requirements
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - ``psutil`` (better with latest version)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - ``defusedxml`` (in order to monkey patch xmlrpc)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - ``packaging`` (for the version comparison)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-- ``orjson`` (an optimized alternative to the standard json module)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++- ``ujson`` (an optimized alternative to the standard json module)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *Note for Python 2 users*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git doc-requirements.txt doc-requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 28ee5654..c13c583a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- doc-requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ doc-requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ psutil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defusedxml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reuse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sphinx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sphinx_rtd_theme
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ujson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git glances/client.py glances/client.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 308f2061..a73fedb0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- glances/client.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ glances/client.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,7 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import ujson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances import __version__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances.globals import Fault, ProtocolError, ServerProxy, Transport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,7 +118,7 @@ class GlancesClient:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if __version__.split('.')[0] == client_version.split('.')[0]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Init stats
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 self.stats = GlancesStatsClient(config=self.config, args=self.args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                self.stats.set_plugins(orjson.loads(self.client.getAllPlugins()))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                self.stats.set_plugins(ujson.loads(self.client.getAllPlugins()))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 logger.debug(f"Client version: {__version__} / Server version: {client_version}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 self.log_and_exit(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -195,7 +195,7 @@ class GlancesClient:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # Update the stats
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            server_stats = orjson.loads(self.client.getAll())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            server_stats = ujson.loads(self.client.getAll())
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except OSError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # Client cannot get server stats
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return "Disconnected"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git glances/client_browser.py glances/client_browser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 12a52680..233eb0bb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- glances/client_browser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ glances/client_browser.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,7 +10,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import threading
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import ujson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances.autodiscover import GlancesAutoDiscoverServer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances.client import GlancesClient, GlancesClientTransport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -97,13 +97,13 @@ class GlancesClientBrowser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # CPU%
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # logger.info(f"CPU stats {s.getPlugin('cpu')}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # logger.info(f"CPU views {s.getPluginView('cpu')}")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                server['cpu_percent'] = orjson.loads(s.getPlugin('cpu'))['total']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                server['cpu_percent_decoration'] = orjson.loads(s.getPluginView('cpu'))['total']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                server['cpu_percent'] = ujson.loads(s.getPlugin('cpu'))['total']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                server['cpu_percent_decoration'] = ujson.loads(s.getPluginView('cpu'))['total']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # MEM%
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                server['mem_percent'] = orjson.loads(s.getPlugin('mem'))['percent']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                server['mem_percent_decoration'] = orjson.loads(s.getPluginView('mem'))['percent']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                server['mem_percent'] = ujson.loads(s.getPlugin('mem'))['percent']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                server['mem_percent_decoration'] = ujson.loads(s.getPluginView('mem'))['percent']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # OS (Human Readable name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                server['hr_name'] = orjson.loads(s.getPlugin('system'))['hr_name']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                server['hr_name'] = ujson.loads(s.getPlugin('system'))['hr_name']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 server['hr_name_decoration'] = 'DEFAULT'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             except (OSError, Fault, KeyError) as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 logger.debug(f"Error while grabbing stats form server ({e})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -124,8 +124,8 @@ class GlancesClientBrowser:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 # Optional stats (load is not available on Windows OS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     # LOAD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    server['load_min5'] = round(orjson.loads(s.getPlugin('load'))['min5'], 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                    server['load_min5_decoration'] = orjson.loads(s.getPluginView('load'))['min5']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    server['load_min5'] = round(ujson.loads(s.getPlugin('load'))['min5'], 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    server['load_min5_decoration'] = ujson.loads(s.getPluginView('load'))['min5']['decoration']
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     logger.warning(f"Error while grabbing stats form server ({e})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git glances/globals.py glances/globals.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0060e3d1..f53ee1d4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- glances/globals.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ glances/globals.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -33,7 +33,7 @@ from urllib.request import Request, urlopen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from xmlrpc.client import Fault, ProtocolError, Server, ServerProxy, Transport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from xmlrpc.server import SimpleXMLRPCRequestHandler, SimpleXMLRPCServer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-import orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++import ujson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Correct issue #1025 by monkey path the xmlrpc lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from defusedxml.xmlrpc import monkey_patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -309,9 +309,9 @@ def json_dumps(data):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     Manage the issue #815 for Windows OS with UnicodeDecodeError catching.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return orjson.dumps(data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return ujson.dumps(data)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     except UnicodeDecodeError:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return orjson.dumps(data, ensure_ascii=False)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return ujson.dumps(data, ensure_ascii=False)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ def dictlist(data, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git glances/outputs/glances_restful_api.py glances/outputs/glances_restful_api.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a4549abf..334a19b1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- glances/outputs/glances_restful_api.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ glances/outputs/glances_restful_api.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -31,7 +31,7 @@ try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi import APIRouter, Depends, FastAPI, HTTPException, Request, status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi.middleware.cors import CORSMiddleware
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi.middleware.gzip import GZipMiddleware
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    from fastapi.responses import HTMLResponse, ORJSONResponse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    from fastapi.responses import HTMLResponse, UJSONResponse
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi.security import HTTPBasic, HTTPBasicCredentials
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi.staticfiles import StaticFiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     from fastapi.templating import Jinja2Templates
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,85 +188,85 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/status',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             status_code=status.HTTP_200_OK,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             methods=['HEAD', 'GET'],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_status,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/config', response_class=ORJSONResponse, endpoint=self._api_config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/config', response_class=UJSONResponse, endpoint=self._api_config
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/config/{{section}}',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_config_section,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/config/{{section}}/{{item}}',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_config_section_item,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        router.add_api_route(f'/api/{self.API_VERSION}/args', response_class=ORJSONResponse, endpoint=self._api_args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        router.add_api_route(f'/api/{self.API_VERSION}/args', response_class=UJSONResponse, endpoint=self._api_args)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/args/{{item}}', response_class=ORJSONResponse, endpoint=self._api_args_item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/args/{{item}}', response_class=UJSONResponse, endpoint=self._api_args_item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/pluginslist', response_class=ORJSONResponse, endpoint=self._api_plugins
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/pluginslist', response_class=UJSONResponse, endpoint=self._api_plugins
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        router.add_api_route(f'/api/{self.API_VERSION}/all', response_class=ORJSONResponse, endpoint=self._api_all)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        router.add_api_route(f'/api/{self.API_VERSION}/all', response_class=UJSONResponse, endpoint=self._api_all)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/all/limits', response_class=ORJSONResponse, endpoint=self._api_all_limits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/all/limits', response_class=UJSONResponse, endpoint=self._api_all_limits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/all/views', response_class=ORJSONResponse, endpoint=self._api_all_views
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/all/views', response_class=UJSONResponse, endpoint=self._api_all_views
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        router.add_api_route(f'/api/{self.API_VERSION}/help', response_class=ORJSONResponse, endpoint=self._api_help)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        router.add_api_route(f'/api/{self.API_VERSION}/{{plugin}}', response_class=ORJSONResponse, endpoint=self._api)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        router.add_api_route(f'/api/{self.API_VERSION}/help', response_class=UJSONResponse, endpoint=self._api_help)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        router.add_api_route(f'/api/{self.API_VERSION}/{{plugin}}', response_class=UJSONResponse, endpoint=self._api)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/{{plugin}}/history', response_class=ORJSONResponse, endpoint=self._api_history
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/{{plugin}}/history', response_class=UJSONResponse, endpoint=self._api_history
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/history/{{nb}}',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_history,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/{{plugin}}/top/{{nb}}', response_class=ORJSONResponse, endpoint=self._api_top
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/{{plugin}}/top/{{nb}}', response_class=UJSONResponse, endpoint=self._api_top
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/{{plugin}}/limits', response_class=ORJSONResponse, endpoint=self._api_limits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/{{plugin}}/limits', response_class=UJSONResponse, endpoint=self._api_limits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/{{plugin}}/views', response_class=ORJSONResponse, endpoint=self._api_views
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/{{plugin}}/views', response_class=UJSONResponse, endpoint=self._api_views
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            f'/api/{self.API_VERSION}/{{plugin}}/{{item}}', response_class=ORJSONResponse, endpoint=self._api_item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            f'/api/{self.API_VERSION}/{{plugin}}/{{item}}', response_class=UJSONResponse, endpoint=self._api_item
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/{{item}}/history',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_item_history,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/{{item}}/history/{{nb}}',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_item_history,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/{{item}}/description',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_item_description,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/{{item}}/unit',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_item_unit,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         router.add_api_route(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             f'/api/{self.API_VERSION}/{{plugin}}/{{item}}/{{value:path}}',
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            response_class=ORJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            response_class=UJSONResponse,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             endpoint=self._api_value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -361,7 +361,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         See related issue:  Web server health check endpoint #1988
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse({'version': __version__})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse({'version': __version__})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_help(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -373,7 +373,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get help view data ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(plist)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(plist)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_plugins(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTFul implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -409,7 +409,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get plugin list ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(plist)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(plist)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_all(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -436,7 +436,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get stats ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_all_limits(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -452,7 +452,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get limits ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(limits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(limits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_all_views(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -468,7 +468,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get views ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(limits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(limits)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api(self, plugin):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -493,7 +493,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get plugin {plugin} ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_top(self, plugin, nb: int = 0):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -525,7 +525,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if isinstance(statval, list):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             statval = statval[:nb]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(statval)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_history(self, plugin, nb: int = 0):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -577,7 +577,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get limits for plugin {plugin} ({str(e)})"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_views(self, plugin):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -601,7 +601,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get views for plugin {plugin} ({str(e)})"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_item(self, plugin, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -629,7 +629,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 detail=f"Cannot get item {item} in plugin {plugin} ({str(e)})",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_item_history(self, plugin, item, nb: int = 0):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -657,7 +657,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get history for plugin {plugin} ({str(e)})"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_item_description(self, plugin, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -682,7 +682,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 detail=f"Cannot get {item} description for plugin {plugin} ({str(e)})",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_item_unit(self, plugin, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -707,7 +707,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 detail=f"Cannot get {item} unit for plugin {plugin} ({str(e)})",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_value(self, plugin, item, value):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -735,7 +735,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 detail=f"Cannot get {item} = {value} for plugin {plugin} ({str(e)})",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return ORJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return UJSONResponse(ret)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_config(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -750,7 +750,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get config ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return ORJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return UJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_config_section(self, section):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -772,7 +772,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get config section {section} ({str(e)})"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(ret_section)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(ret_section)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_config_section_item(self, section, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -803,7 +803,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 detail=f"Cannot get item {item} in config section {section} ({str(e)})",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(ret_item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(ret_item)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_args(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -820,7 +820,7 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get args ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     def _api_args_item(self, item):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         """Glances API RESTful implementation.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -841,4 +841,4 @@ class GlancesRestfulApi:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         except Exception as e:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=f"Cannot get args item ({str(e)})")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        return ORJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return UJSONResponse(args_json)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git glances/plugins/ip/__init__.py glances/plugins/ip/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 62a95658..6d5f55f2 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- glances/plugins/ip/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ glances/plugins/ip/__init__.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,7 +10,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ import threading
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-from orjson import loads
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++from ujson import loads
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances.globals import queue, urlopen_auth
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ from glances.logger import logger
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git requirements.txt requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 474a1f93..1b01d13b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ requirements.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,4 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ defusedxml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ packaging
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ psutil>=5.6.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ujson>=5.4.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git tox.ini tox.ini
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index aedea68a..e61d733e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- tox.ini
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ tox.ini
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,7 +18,7 @@ deps =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     psutil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     defusedxml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     packaging
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    orjson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ujson
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     fastapi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     uvicorn
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     jinja2
</span></pre><pre style='margin:0'>

</pre>