sanic/setup.py

81 lines
2.0 KiB
Python
Raw Normal View History

2016-10-02 03:48:50 +01:00
"""
Sanic
"""
2016-10-25 09:49:43 +01:00
import codecs
import os
import re
from distutils.errors import DistutilsPlatformError
from distutils.util import strtobool
2016-10-02 03:48:50 +01:00
from setuptools import setup
2016-10-25 09:49:43 +01:00
2017-05-02 10:04:58 +01:00
def open_local(paths, mode='r', encoding='latin1'):
path = os.path.join(
os.path.abspath(os.path.dirname(__file__)),
*paths
)
return codecs.open(path, mode, encoding)
with open_local(['sanic', '__init__.py']) 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()
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': [
'Development Status :: 2 - Pre-Alpha',
'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
}
ujson = 'ujson>=1.35'
uvloop = 'uvloop>=0.5.3'
requirements = [
'httptools>=0.0.9',
uvloop,
ujson,
'aiofiles>=0.3.0',
'websockets>=3.2',
]
if strtobool(os.environ.get("SANIC_NO_UJSON", "no")):
print("Installing without uJSON")
requirements.remove(ujson)
if strtobool(os.environ.get("SANIC_NO_UVLOOP", "no")):
print("Installing without uvLoop")
requirements.remove(uvloop)
2017-03-12 03:09:01 +00:00
try:
setup_kwargs['install_requires'] = requirements
2017-03-12 03:09:01 +00:00
setup(**setup_kwargs)
except DistutilsPlatformError as exception:
requirements.remove(ujson)
requirements.remove(uvloop)
print("Installing without uJSON or uvLoop")
setup_kwargs['install_requires'] = requirements
2017-03-12 03:09:01 +00:00
setup(**setup_kwargs)