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