2016-10-02 03:48:50 +01:00
|
|
|
"""
|
|
|
|
Sanic
|
|
|
|
"""
|
2016-10-25 09:49:43 +01:00
|
|
|
import codecs
|
|
|
|
import os
|
|
|
|
import re
|
2017-03-28 10:50:09 +01:00
|
|
|
from distutils.errors import DistutilsPlatformError
|
|
|
|
from distutils.util import strtobool
|
2016-10-02 03:48:50 +01:00
|
|
|
|
2017-03-28 10:50:09 +01:00
|
|
|
from setuptools import setup
|
2016-10-25 09:49:43 +01:00
|
|
|
|
2017-05-02 10:04:58 +01:00
|
|
|
|
2017-05-02 17:37:17 +01:00
|
|
|
def open_local(paths, mode='r', encoding='utf8'):
|
2017-05-02 10:04:58 +01:00
|
|
|
path = os.path.join(
|
|
|
|
os.path.abspath(os.path.dirname(__file__)),
|
|
|
|
*paths
|
|
|
|
)
|
|
|
|
|
|
|
|
return codecs.open(path, mode, encoding)
|
|
|
|
|
|
|
|
|
2017-05-02 17:37:17 +01:00
|
|
|
with open_local(['sanic', '__init__.py'], encoding='latin1') as fp:
|
2016-10-25 09:49:43 +01:00
|
|
|
try:
|
|
|
|
version = re.findall(r"^__version__ = '([^']+)'\r?$",
|
|
|
|
fp.read(), re.M)[0]
|
|
|
|
except IndexError:
|
|
|
|
raise RuntimeError('Unable to determine version.')
|
|
|
|
|
2017-05-02 10:04:58 +01:00
|
|
|
|
|
|
|
with open_local(['README.rst']) as rm:
|
|
|
|
long_description = rm.read()
|
|
|
|
|
2017-03-28 10:50:09 +01:00
|
|
|
setup_kwargs = {
|
2017-03-12 05:46:31 +00:00
|
|
|
'name': 'sanic',
|
|
|
|
'version': version,
|
|
|
|
'url': 'http://github.com/channelcat/sanic/',
|
|
|
|
'license': 'MIT',
|
|
|
|
'author': 'Channel Cat',
|
|
|
|
'author_email': 'channelcat@gmail.com',
|
|
|
|
'description': (
|
|
|
|
'A microframework based on uvloop, httptools, and learnings of flask'),
|
2017-05-02 10:04:58 +01:00
|
|
|
'long_description': long_description,
|
2017-03-12 05:46:31 +00:00
|
|
|
'packages': ['sanic'],
|
|
|
|
'platforms': 'any',
|
|
|
|
'classifiers': [
|
2018-01-31 07:19:01 +00:00
|
|
|
'Development Status :: 4 - Beta',
|
2017-03-12 05:46:31 +00:00
|
|
|
'Environment :: Web Environment',
|
|
|
|
'License :: OSI Approved :: MIT License',
|
|
|
|
'Programming Language :: Python :: 3.5',
|
|
|
|
'Programming Language :: Python :: 3.6',
|
|
|
|
],
|
2017-03-12 03:09:01 +00:00
|
|
|
}
|
2017-02-27 16:14:47 +00:00
|
|
|
|
2018-02-07 00:56:25 +00:00
|
|
|
env_dependency = '; sys_platform != "win32" and implementation_name == "cpython"'
|
2018-02-06 14:57:16 +00:00
|
|
|
ujson = 'ujson>=1.35' + env_dependency
|
|
|
|
uvloop = 'uvloop>=0.5.3' + env_dependency
|
2017-03-28 10:50:09 +01:00
|
|
|
|
|
|
|
requirements = [
|
|
|
|
'httptools>=0.0.9',
|
|
|
|
uvloop,
|
|
|
|
ujson,
|
|
|
|
'aiofiles>=0.3.0',
|
2018-07-04 06:07:08 +01:00
|
|
|
'websockets>=5.0,<6.0',
|
2017-03-28 10:50:09 +01:00
|
|
|
]
|
|
|
|
if strtobool(os.environ.get("SANIC_NO_UJSON", "no")):
|
|
|
|
print("Installing without uJSON")
|
|
|
|
requirements.remove(ujson)
|
|
|
|
|
2017-12-29 18:04:22 +00:00
|
|
|
# 'nt' means windows OS
|
2018-02-06 14:57:16 +00:00
|
|
|
if strtobool(os.environ.get("SANIC_NO_UVLOOP", "no")):
|
2017-03-28 10:50:09 +01:00
|
|
|
print("Installing without uvLoop")
|
|
|
|
requirements.remove(uvloop)
|
|
|
|
|
2018-02-06 14:57:16 +00:00
|
|
|
setup_kwargs['install_requires'] = requirements
|
|
|
|
setup(**setup_kwargs)
|