mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-16 12:07:13 +00:00
Allow to use RapidJSON. Allow to disable uvloop, ujson or rapidjson by env. variables.
This commit is contained in:
parent
23211fc283
commit
afbe7bb458
3 changed files with 45 additions and 17 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import asyncio
|
||||
import os
|
||||
|
||||
from .bot import Bot
|
||||
from .dispatcher import Dispatcher
|
||||
|
|
@ -8,7 +9,8 @@ try:
|
|||
except ImportError:
|
||||
uvloop = None
|
||||
else:
|
||||
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
if 'DISABLE_UVLOOP' not in os.environ:
|
||||
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
||||
|
||||
__version__ = '2.0.dev1'
|
||||
__api_version__ = '3.6'
|
||||
|
|
|
|||
|
|
@ -1,27 +1,52 @@
|
|||
import json
|
||||
import os
|
||||
|
||||
JSON = 'json'
|
||||
RAPIDJSON = 'rapidjson'
|
||||
UJSON = 'ujson'
|
||||
|
||||
try:
|
||||
import ujson
|
||||
if 'DISABLE_UJSON' not in os.environ:
|
||||
import ujson as json
|
||||
|
||||
_UJSON_IS_AVAILABLE = True
|
||||
mode = UJSON
|
||||
|
||||
|
||||
def dumps(data):
|
||||
return json.dumps(data, ensure_ascii=False)
|
||||
|
||||
else:
|
||||
mode = JSON
|
||||
except ImportError:
|
||||
_UJSON_IS_AVAILABLE = False
|
||||
mode = JSON
|
||||
|
||||
_use_ujson = _UJSON_IS_AVAILABLE
|
||||
try:
|
||||
if 'DISABLE_RAPIDJSON' not in os.environ:
|
||||
import rapidjson as json
|
||||
|
||||
mode = RAPIDJSON
|
||||
|
||||
|
||||
def disable_ujson():
|
||||
global _use_ujson
|
||||
_use_ujson = False
|
||||
def dumps(data):
|
||||
return json.dumps(data, ensure_ascii=False, number_mode=json.NM_NATIVE,
|
||||
datetime_mode=json.DM_ISO8601 | json.DM_NAIVE_IS_UTC)
|
||||
|
||||
|
||||
def dumps(data):
|
||||
if _use_ujson:
|
||||
return ujson.dumps(data)
|
||||
return json.dumps(data)
|
||||
def loads(data):
|
||||
return json.loads(data, number_mode=json.NM_NATIVE,
|
||||
datetime_mode=json.DM_ISO8601 | json.DM_NAIVE_IS_UTC)
|
||||
|
||||
else:
|
||||
mode = JSON
|
||||
except ImportError:
|
||||
mode = JSON
|
||||
|
||||
if mode == JSON:
|
||||
import json
|
||||
|
||||
|
||||
def loads(data):
|
||||
if _use_ujson:
|
||||
return ujson.loads(data)
|
||||
return json.loads(data)
|
||||
def dumps(data):
|
||||
return json.dumps(data, ensure_ascii=False)
|
||||
|
||||
|
||||
def loads(data):
|
||||
return json.loads(data)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
-r requirements.txt
|
||||
|
||||
ujson>=1.35
|
||||
python-rapidjson>=0.6.3
|
||||
emoji>=0.5.0
|
||||
pytest>=3.5.0
|
||||
pytest-asyncio>=0.8.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue