#!/usr/bin/env python import ast import re import subprocess import sys from setuptools import Command, find_packages, setup from setuptools.command.test import test as TestCommand _version_re = re.compile(r'__version__\s+=\s+(.*)') with open('mycli/__init__.py', 'rb') as f: version = str(ast.literal_eval(_version_re.search( f.read().decode('utf-8')).group(1))) description = 'CLI for MySQL Database. With auto-completion and syntax highlighting.' install_requirements = [ 'click >= 4.1', 'Pygments >= 1.6', 'prompt_toolkit>=2.0.0,<2.0.5', 'PyMySQL >= 0.9.2', 'sqlparse>=0.2.2,<0.3.0', 'configobj >= 5.0.5', 'cryptography >= 1.0.0', 'cli_helpers[styles] >= 1.0.1', ] class lint(Command): description = 'check code against PEP 8 (and fix violations)' user_options = [ ('branch=', 'b', 'branch/revision to compare against (e.g. master)'), ('fix', 'f', 'fix the violations in place') ] def initialize_options(self): """Set the default options.""" self.branch = 'master' self.fix = False def finalize_options(self): pass def run(self): cmd = 'pep8radius {} {}'.format( self.branch, '--in-place' if self.fix else '') sys.exit(subprocess.call(cmd, shell=True)) class test(TestCommand): user_options = [('pytest-args=', 'a', 'Arguments to pass to pytest')] def initialize_options(self): TestCommand.initialize_options(self) self.pytest_args = '' def run_tests(self): unit_test_errno = subprocess.call( 'pytest ' + self.pytest_args, shell=True ) cli_errno = subprocess.call('behave test/features', shell=True) sys.exit(unit_test_errno or cli_errno) setup( name='mycli', author='Mycli Core Team', author_email='mycli-dev@googlegroups.com', version=version, url='http://mycli.net', packages=find_packages(), package_data={'mycli': ['myclirc', 'AUTHORS', 'SPONSORS']}, description=description, long_description=description, install_requires=install_requirements, entry_points={ 'console_scripts': ['mycli = mycli.main:cli'], }, cmdclass={'lint': lint, 'test': test}, classifiers=[ 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: Unix', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: SQL', 'Topic :: Database', 'Topic :: Database :: Front-Ends', 'Topic :: Software Development', 'Topic :: Software Development :: Libraries :: Python Modules', ], extras_require={ 'ssh': ['paramiko'], }, )