1#!/usr/bin/env python
2
3# Copyright (c) 2017, The MITRE Corporation
4# For license information, see the LICENSE.txt file
5
6from io import open
7from os.path import abspath, dirname, join
8import sys
9
10from setuptools import setup, find_packages
11
12BASE_DIR = dirname(abspath(__file__))
13VERSION_FILE = join(BASE_DIR, 'libtaxii', 'version.py')
14
15
16def get_version():
17    with open(VERSION_FILE) as f:
18        for line in f.readlines():
19            if line.startswith("__version__"):
20                version = line.split()[-1].strip('"')
21                return version
22        raise AttributeError("Package does not have a __version__")
23
24
25def get_long_description():
26    with open('README.rst', encoding='utf-8') as f:
27        return f.read()
28
29
30py_maj, py_minor = sys.version_info[:2]
31if (py_maj, py_minor) < (2, 6) or (py_maj == 3 and py_minor < 3):
32    raise Exception('libtaxii requires Python 2.6, 2.7 or 3.3+')
33
34
35install_requires = [
36    'python-dateutil>=1.4.1',
37    'six>=1.9.0',
38]
39
40# lxml has dropped support for Python 2.6, 3.3 after version 4.2.6
41if (py_maj, py_minor) == (2, 6) or (py_maj, py_minor) == (3, 3):
42    install_requires.append('lxml>=2.2.3,<4.3.0')
43# lxml has dropped support for Python 2.6, 3.3, 3.4 after version 4.4.0
44elif (py_maj, py_minor) == (2, 6) or (py_maj, py_minor) == (3, 4):
45    install_requires.append('lxml>=2.2.3,<4.4.0')
46else:
47    install_requires.append('lxml>=2.2.3')
48
49if (py_maj, py_minor) < (2, 7):
50    install_requires.append('argparse')
51
52setup(
53    name='libtaxii',
54    description='TAXII 1.X Library.',
55    author='The MITRE Corporation',
56    author_email='taxii@mitre.org',
57    url='https://taxiiproject.github.io/',
58    version=get_version(),
59    packages=find_packages(),
60    license='BSD',
61    install_requires=install_requires,
62    scripts=[
63        'libtaxii/scripts/collection_information_client.py',
64        'libtaxii/scripts/discovery_client.py',
65        'libtaxii/scripts/fulfillment_client.py',
66        'libtaxii/scripts/inbox_client.py',
67        'libtaxii/scripts/inbox_client_10.py',
68        'libtaxii/scripts/poll_client.py',
69        'libtaxii/scripts/query_client.py',
70        'libtaxii/scripts/discovery_client_10.py',
71        'libtaxii/scripts/feed_information_client_10.py',
72        'libtaxii/scripts/poll_client_10.py',
73    ],
74    entry_points={
75        'console_scripts': [
76            'collection_information_client = libtaxii.scripts.collection_information_client:main',
77            'discovery_client = libtaxii.scripts.discovery_client:main',
78            'fulfillment_client = libtaxii.scripts.fulfillment_client:main',
79            'inbox_client = libtaxii.scripts.inbox_client:main',
80            'inbox_client_10 = libtaxii.scripts.inbox_client_10:main',
81            'poll_client = libtaxii.scripts.poll_client:main',
82            'query_client = libtaxii.scripts.query_client:main',
83            'discovery_client_10 = libtaxii.scripts.discovery_client_10:main',
84            'feed_information_client_10 = libtaxii.scripts.feed_information_client_10:main',
85            'poll_client_10 = libtaxii.scripts.poll_client_10:main',
86        ],
87    },
88    package_data={'libtaxii': ['xsd/*.xsd']},
89    long_description=get_long_description(),
90    keywords='taxii libtaxii',
91    classifiers=[
92        'Development Status :: 5 - Production/Stable',
93        'Intended Audience :: Developers',
94        'License :: OSI Approved :: BSD License',
95        'Operating System :: OS Independent',
96        'Programming Language :: Python :: 2',
97        'Programming Language :: Python :: 2.6',
98        'Programming Language :: Python :: 2.7',
99        'Programming Language :: Python :: 3',
100        'Programming Language :: Python :: 3.3',
101        'Programming Language :: Python :: 3.4',
102        'Programming Language :: Python :: 3.5',
103        'Programming Language :: Python :: 3.6',
104        'Programming Language :: Python :: 3.7',
105        'Programming Language :: Python :: 3.8',
106    ],
107    project_urls={
108        'Documentation': 'https://libtaxii.readthedocs.io/',
109        'Source Code': 'https://github.com/TAXIIProject/libtaxii/',
110        'Bug Tracker': 'https://github.com/TAXIIProject/libtaxii/issues/',
111    },
112)
113