discord.py/setup.py
khazhyk 98a054e19e Use local version identifer for SHA
local version identifier seems to be the only PEP440
way to add arbitrary string to the version. Makes
pip stop complaining about invalid version label.
2017-10-14 20:41:45 -07:00

74 lines
2.3 KiB
Python

from setuptools import setup, find_packages
import re, os
on_rtd = os.getenv('READTHEDOCS') == 'True'
requirements = []
with open('requirements.txt') as f:
requirements = f.read().splitlines()
if on_rtd:
requirements.append('sphinxcontrib-napoleon')
requirements.append('sphinxcontrib-asyncio')
requirements.append('sphinx==1.6.3')
version = ''
with open('discord/__init__.py') as f:
version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE).group(1)
if not version:
raise RuntimeError('version is not set')
if version.endswith(('a', 'b', 'rc')):
# append version identifier based on commit count
try:
import subprocess
p = subprocess.Popen(['git', 'rev-list', '--count', 'HEAD'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
if out:
version += out.decode('utf-8').strip()
p = subprocess.Popen(['git', 'rev-parse', '--short', 'HEAD'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
if out:
version += '+' + out.decode('utf-8').strip()
except Exception:
pass
readme = ''
with open('README.rst') as f:
readme = f.read()
extras_require = {
'voice': ['PyNaCl==1.1.2'],
'docs': ['sphinxcontrib-asyncio']
}
setup(name='discord.py',
author='Rapptz',
url='https://github.com/Rapptz/discord.py',
version=version,
packages=['discord', 'discord.ext.commands'],
license='MIT',
description='A python wrapper for the Discord API',
long_description=readme,
include_package_data=True,
install_requires=requirements,
extras_require=extras_require,
classifiers=[
'Development Status :: 4 - Beta',
'License :: OSI Approved :: MIT License',
'Intended Audience :: Developers',
'Natural Language :: English',
'Operating System :: OS Independent',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Internet',
'Topic :: Software Development :: Libraries',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Utilities',
]
)