"""setup module for the array2xls package derived from https://github.com/pypa/sampleproject """ # Always prefer setuptools over distutils from setuptools import setup, find_packages import os import re # 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', 'openpyxl', ], # 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'], # }, # if and what non python files be included? include_package_data=True, package_data={ 'arduino_timetable': ['appicons/*.ico'], }, # defining entry points, escpecially console script: entry_points={ 'console_scripts': [ 'magnetictrap = arduino_timetable.apps:run_magnetic_trap', ], }, )