diff --git a/setup.py b/setup.py index 78d2dd3..6a3a9d9 100644 --- a/setup.py +++ b/setup.py @@ -1,36 +1,123 @@ +"""setup module for the array2xls package + +derived from https://github.com/pypa/sampleproject +""" + +# Always prefer setuptools over distutils from setuptools import setup, find_packages -def readfile(name): - with open(name) as f: - return f.read() - -README = readfile('README.md') -CHANGES = readfile('CHANGES.txt') - -install_requires = [ - 'pyserial', - ] - -setup(name='arduino_timetable', - version='0.0.1', - description='Sending Commands From a Time Table to Arduino ', - long_description=README + '\n\n' + CHANGES, - classifiers=[ - "Development Status :: 3 - Alpha", - "Intended Audience :: Developers", - "Programming Language :: Python", - "Programming Language :: Python :: 3.6", - "Framework :: AsyncIO", - "Topic :: Scientific/Engineering", - "Topic :: Terminals :: Serial", - "License :: OSI Approved :: BSD License", - ], - keywords='arduino python', - author="Holger Frey", - author_email="frey@imtek.de", - packages=find_packages(), - include_package_data=True, - zip_safe=False, - python_requires='>=3.6', - install_requires=install_requires, +# To use a consistent encoding +import codecs +import os + +# regular expressions for version string parsing from __init___.py +import re +import io + + +# the current directory of this file +HERE = os.path.abspath(os.path.dirname(__file__)) + +# regular expression for parsing a version definition +RE_VERSION = r"^__version__ = ['\"]([^'\"]*)['\"]" + + +def read(*names, **kwargs): + ''' helper function to read the content of a file ''' + path = os.path.join(HERE, *names) + encoding=kwargs.get('encoding', 'utf-8') + with open(path, 'r', encoding=encoding) as file_handle: + return file_handle.read() + +def find_version(*file_paths): + ''' # version string parsing from __init___.py + + see https://packaging.python.org/en/latest/single_source_version/ + ''' + version_file = read(*file_paths) + version_match = re.search(RE_VERSION, version_file, re.M) + if version_match: + return version_match.group(1) + raise RuntimeError("Unable to find version string in __init__.py") + + +# load the readme and the changes +readme = read('README.md') +changes = read('CHANGES.txt') + +setup( + # the name of the project + name='arduino_timetable', + + # Versions should comply with PEP440. For a discussion on single-sourcing + # the version across setup.py and the project code, see + # https://packaging.python.org/en/latest/single_source_version.html + version=find_version('arduino_timetable', '__init__.py'), + + description='sending scheduled commands to an Arduino', + long_description=readme + '\n\n' + changes, + + # The project's main homepage. + url='https://git.cpi.imtek.uni-freiburg.de/holgi/arduino-timetable', + + # Author details + author='Holger Frey', + author_email='frey@imtek.de', + + # Choose your license + license='Simplified BSD License', + + # Choose a minimum python version + python_requires='>=3.6', + + # See https://pypi.python.org/pypi?%3Aaction=list_classifiers + classifiers=[ + # How mature is this project? Common values are + # 3 - Alpha + # 4 - Beta + # 5 - Production/Stable + 'Development Status :: 3 - Alpha', + + # Indicate who your project is intended for + 'Intended Audience :: Science/Research', + 'Topic :: Scientific/Engineering', + 'Topic :: Scientific/Engineering :: Information Analysis', + 'Topic :: Terminals :: Serial', + + # Pick your license as you wish (should match "license" above) + 'License :: OSI Approved :: BSD License', + + # Specify the Python versions you support here. In particular, ensure + # that you indicate whether you support Python 2, Python 3 or both. + "Programming Language :: Python", + "Programming Language :: Python :: 3.6", + ], + + # What does your project relate to? + keywords='arduino scheduling', + + # You can just specify the packages manually here if your project is + # simple. Or you can use find_packages(). + packages=find_packages(exclude=['tests', 'docs']), + + # Alternatively, if you want to distribute just a my_module.py, uncomment + # this: + # py_modules=["my_module"], + + # List run-time dependencies here. These will be installed by pip when + # your project is installed. For an analysis of "install_requires" vs pip's + # requirements files see: + # https://packaging.python.org/en/latest/requirements.html + install_requires=[ + 'pyserial', + ], + + # List additional groups of dependencies here (e.g. development + # dependencies). You can install these using the following syntax, + # for example: + # $ pip install -e .[dev,test] + # extras_require={ + # 'test': ['pytest'], + # }, + )