#!/usr/bin/env python3 import sys import setuptools import setuptools.command.test def get_requirements(filename): """ Read requirements from file. """ with open(filename, mode='rt', encoding='utf-8') as f: for line in f: # TODO: Will not work with #egg-info requirement = line.partition('#')[0].strip() if not requirement: continue yield requirement def get_textfile(filename): """ Get contents from a text file. """ with open(filename, mode='rt', encoding='utf-8') as f: return f.read().lstrip() def get_packages(): """ List of (sub)packages to install. """ return setuptools.find_packages('.', include=('setra_client', 'setra_client.*')) class PyTest(setuptools.command.test.test): """ Run tests using pytest. From `http://doc.pytest.org/en/latest/goodpractices.html`. """ user_options = [('pytest-args=', 'a', "Arguments to pass to pytest")] def initialize_options(self): super().initialize_options() self.pytest_args = [] def run_tests(self): import shlex import pytest args = self.pytest_args if args: args = shlex.split(args) errno = pytest.main(args) raise SystemExit(errno) def run_setup(): setup_requirements = ['setuptools_scm'] test_requirements = list(get_requirements('requirements-test.txt')) install_requirements = list(get_requirements('requirements.txt')) if {'build_sphinx', 'upload_docs'}.intersection(sys.argv): setup_requirements.extend(get_requirements('docs/requirements.txt')) setup_requirements.extend(install_requirements) setuptools.setup( name='setra-client', description='Client for the SETRA API', long_description=get_textfile('README.md'), long_description_content_type='text/markdown', url='https://git.app.uib.no/it-bott-integrasjoner/setra-client', author='BOTT-INT', author_email='bnt-int@usit.uio.no', use_scm_version=True, packages=get_packages(), setup_requires=setup_requirements, install_requires=install_requirements, tests_require=test_requirements, cmdclass={ 'test': PyTest, }, classifiers=[ 'Development Status :: 3 - Alpha', 'Intended Audience :: Developers', 'Topic :: Software Development :: Libraries', 'Programming Language :: Python :: 3 :: Only', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', ], keywords='SETRA API client', ) if __name__ == '__main__': run_setup()