Source code for setup

#!/usr/bin/env python3
'''
|info_cname| is available as package, you can find the newest version here:

:pypy: |info_pkg_url|

Most requirements are not necessary for normal operations, only for developing.
The most notable exception is **PyYAML**.

.. literalinclude:: ../requirements.txt
    :linenos:

:meth:`find_requirements` figures out what dependencies are required.

To install/update latest version of |info_name|::

    sudo pip3 install -U ffflash

To install all requirements from a local clone for developing::

    sudo pip3 install -U -r requirements.txt

'''
from os import path
from sys import argv

from setuptools import setup

from ffflash.info import info
from ffflash.lib.files import read_file


[docs]def local_file(name): ''' :param name: filename to read relative from current directory :returns str: content of ``name`` or empty string on failure ''' return read_file(path.join( path.dirname(path.abspath(__file__)), name ), fallback='')
long_description = '{}\n{}'.format(info.description, local_file('README.rst')) requirements = [r for r in local_file('requirements.txt').split('\n') if r]
[docs]def find_requirements(*names): ''' :param names: one or more required package names :returns list: package lines from ``requirements.txt`` whose lowercased name is in ``names`` ''' return [req for name in names for req in [ r for r in requirements if r.lower().startswith(name) ]]
setup_requires = ( find_requirements('pytest') if {'pytest', 'test', 'ptr'}.intersection(argv) else [] ) + ( find_requirements('sphinx') if {'build_sphinx', 'upload_docs'}.intersection(argv) else [] ) setup_params = dict( name=info.name, version=info.release, url=info.url, download_url=info.download_url, license='BSD', author=info.author, author_email=info.author_email, description=info.description, long_description=long_description, packages=['ffflash', 'ffflash.lib', 'ffflash.inc'], include_package_data=True, platforms='posix', scripts=['ffflash.py'], provides=[info.name], install_requires=find_requirements('pyyaml'), setup_requires=setup_requires, tests_require=find_requirements('pytest', 'python_dateutil', 'pyyaml'), zip_safe=True, classifiers=[ 'Environment :: Console', 'Intended Audience :: System Administrators', 'Intended Audience :: Telecommunications Industry', 'License :: OSI Approved :: BSD License', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python :: 3', 'Topic :: System :: Networking', 'Topic :: System :: Systems Administration', ] ) if __name__ == '__main__': setup(**setup_params)