Allow to use RapidJSON. Allow to disable uvloop, ujson or rapidjson by env. variables.

This commit is contained in:
Alex Root Junior 2018-07-14 01:19:35 +03:00
parent 23211fc283
commit afbe7bb458
3 changed files with 45 additions and 17 deletions

View file

@ -1,4 +1,5 @@
import asyncio import asyncio
import os
from .bot import Bot from .bot import Bot
from .dispatcher import Dispatcher from .dispatcher import Dispatcher
@ -8,7 +9,8 @@ try:
except ImportError: except ImportError:
uvloop = None uvloop = None
else: 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' __version__ = '2.0.dev1'
__api_version__ = '3.6' __api_version__ = '3.6'

View file

@ -1,27 +1,52 @@
import json import os
JSON = 'json'
RAPIDJSON = 'rapidjson'
UJSON = 'ujson'
try: 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: 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(): def dumps(data):
global _use_ujson return json.dumps(data, ensure_ascii=False, number_mode=json.NM_NATIVE,
_use_ujson = False datetime_mode=json.DM_ISO8601 | json.DM_NAIVE_IS_UTC)
def dumps(data): def loads(data):
if _use_ujson: return json.loads(data, number_mode=json.NM_NATIVE,
return ujson.dumps(data) datetime_mode=json.DM_ISO8601 | json.DM_NAIVE_IS_UTC)
return json.dumps(data)
else:
mode = JSON
except ImportError:
mode = JSON
if mode == JSON:
import json
def loads(data): def dumps(data):
if _use_ujson: return json.dumps(data, ensure_ascii=False)
return ujson.loads(data)
return json.loads(data)
def loads(data):
return json.loads(data)

View file

@ -1,6 +1,7 @@
-r requirements.txt -r requirements.txt
ujson>=1.35 ujson>=1.35
python-rapidjson>=0.6.3
emoji>=0.5.0 emoji>=0.5.0
pytest>=3.5.0 pytest>=3.5.0
pytest-asyncio>=0.8.0 pytest-asyncio>=0.8.0