"""Simple distutils setup for the pure Python portpicker."""

import sys
import textwrap
import distutils.core


def main():
    requires = []
    scripts = []
    py_version = sys.version_info[:2]
    if py_version < (3, 3):
        requires.append('mock(>=1.0)')
    if py_version == (3, 3):
        requires.append('asyncio(>=3.4)')
    if py_version >= (3, 3):
        # The example portserver implementation requires Python 3 and asyncio.
        scripts.append('src/portserver.py')

    distutils.core.setup(
        name='portpicker',
        version='1.0.0',
        description='A library to choose unique available network ports.',
        long_description=textwrap.dedent("""
          Portpicker provides an API to find and return an available network
          port for an application to bind to.  Ideally suited for use from
          unittests or for test harnesses that launch a local server."""),
        license='Apache 2.0',
        maintainer='Google',
        url='https://github.com/google/python_portpicker',
        package_dir={'': 'src'},
        py_modules=['portpicker'],
        platforms=['POSIX'],
        requires=requires,
        scripts=scripts,
        classifiers=
        ['Development Status :: 5 - Production/Stable',
         'License :: OSI Approved :: Apache Software License',
         'Intended Audience :: Developers', 'Programming Language :: Python',
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3.3',
         'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: Jython',
         'Programming Language :: Python :: Implementation :: PyPy'])


if __name__ == '__main__':
    main()
