Red-DiscordBot/setup.py
Tobotimus 7a70d12efd
[V3] Add tox (#1641)
* Configure tox environments for install, dev install and docs build

* Configure Travis to run tox

* Use 3.5.1 since it's our minimum supported version

* Bump lower travis build version to 3.5.2

Turns out a dependency is incompatible with 3.5.1.

* Modify Travis config to install from pipenv

* Try without skipping the lock

* Try without pip cache

* D the dev install with pipenv

* See if adding the pip cache back in breaks

* Remove the development installation

It doesn't really make any sense considering we already should be installed in develop mode, as does Travis.

* Oops, tox should go under dev packages

* Do black --check with tox

* Uncache pip again...

* Try a build matrix, and try ignoring virtualenvs

* Activate pipenv shell on travis

* Try installing prereleases

* Try the build matrix like this

* Try exclusion

* Upgrade pip

* Try this environment marker

* Back to stages...

* Try run over shell

* Try skipping the lock again

* This'll be faster but probably ignore 3.5

Because Travis

* Just manually list sources for black to check

* Magic?

* What if I told you...

That this worked perfectly on Tobotimus/Red-DiscordBot@test_travis_matrix

* It couldn't possibly be this easy

* Let's add some comments to be nice

* Let's change back to trusty just in case the stages fuck up

* Add another comment because why not

* Let's try caching pip one more time

* We don't need to whitelist these
2018-05-15 13:10:14 +10:00

121 lines
3.3 KiB
Python

from distutils.core import setup
from pathlib import Path
import re
import os
import sys
from setuptools import find_packages
IS_TRAVIS = "TRAVIS" in os.environ
IS_DEPLOYING = "DEPLOYING" in os.environ
IS_RTD = "READTHEDOCS" in os.environ
dep_links = ["https://github.com/Rapptz/discord.py/tarball/rewrite#egg=discord.py-1.0"]
if IS_TRAVIS:
dep_links = []
def get_package_list():
core = find_packages(include=["redbot", "redbot.*"])
return core
def get_requirements():
with open("requirements.txt") as f:
requirements = f.read().splitlines()
try:
requirements.remove(
"git+https://github.com/Rapptz/discord.py.git@rewrite#egg=discord.py[voice]"
)
except ValueError:
pass
if IS_DEPLOYING or not (IS_TRAVIS or IS_RTD):
requirements.append("discord.py>=1.0.0a0")
if sys.platform.startswith("linux"):
requirements.append("distro")
return requirements
def get_version():
with open("redbot/core/__init__.py") as f:
version = re.search(
r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', f.read(), re.MULTILINE
).group(
1
)
return version
def find_locale_folders():
"""
Ignore this tomfoolery in the desire for automation. It works, that's
all you gotta know. Don't fuck with this unless you really know what
you're doing, otherwise we lose all translations.
"""
def glob_locale_files(path: Path):
msgs = path.glob("*.po")
parents = path.parents
return [str(m.relative_to(parents[0])) for m in msgs]
ret = {"redbot.core": glob_locale_files(Path("redbot/core/locales"))}
cogs_path = Path("redbot/cogs")
for cog_folder in cogs_path.iterdir():
locales_folder = cog_folder / "locales"
if not locales_folder.is_dir():
continue
pkg_name = str(cog_folder).replace("/", ".")
ret[pkg_name] = glob_locale_files(locales_folder)
return ret
setup(
name="Red-DiscordBot",
version=get_version(),
packages=get_package_list(),
package_data=find_locale_folders(),
include_package_data=True,
url="https://github.com/Cog-Creators/Red-DiscordBot",
license="GPLv3",
author="Cog-Creators",
author_email="",
description="A highly customizable Discord bot",
classifiers=[
"Development Status :: 4 - Beta",
"Framework :: AsyncIO",
"Intended Audience :: Developers",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Communications :: Chat",
"Topic :: Documentation :: Sphinx",
],
entry_points={
"console_scripts": [
"redbot=redbot.__main__:main",
"redbot-setup=redbot.setup:main",
"redbot-launcher=redbot.launcher:main",
]
},
python_requires=">=3.5,<3.7",
setup_requires=get_requirements(),
install_requires=get_requirements(),
dependency_links=dep_links,
extras_require={
"test": ["pytest>3", "pytest-asyncio"],
"mongo": ["motor"],
"docs": ["sphinx>=1.7", "sphinxcontrib-asyncio", "sphinx_rtd_theme"],
"voice": ["red-lavalink>=0.0.4"],
"style": ["black"],
},
)