diff options
Diffstat (limited to 'setup.py')
-rw-r--r-- | setup.py | 179 |
1 files changed, 80 insertions, 99 deletions
@@ -1,112 +1,93 @@ -from distutils.core import setup -import fnmatch, os.path +from setuptools import setup, find_packages +from codecs import open +import os from libmproxy import version +# Based on https://github.com/pypa/sampleproject/blob/master/setup.py +# and https://python-packaging-user-guide.readthedocs.org/ -def pdir(): - dirname, _ = os.path.split(__file__) - return os.path.abspath(dirname) +here = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(here, 'README.txt'), encoding='utf-8') as f: + long_description = f.read() -def _fnmatch(name, patternList): - for i in patternList: - if fnmatch.fnmatch(name, i): - return True - return False - +scripts = ["mitmdump"] +if os.name != "nt": + scripts.append("mitmproxy") -def _splitAll(path): - parts = [] - h = path - while 1: - if not h: - break - h, t = os.path.split(h) - parts.append(t) - parts.reverse() - return parts +deps = { + "netlib>=%s" % version.MINORVERSION, + "pyasn1>0.1.2", + "requests>=2.4.0", + "pyOpenSSL>=0.14", + "Flask>=0.10.1", + "tornado>=4.0.2", + "sortedcontainers>=0.9.1" +} +script_deps = { + "mitmproxy": { + "urwid>=1.1", + "lxml>=3.3.6", + "Pillow>=2.3.0", + }, + "mitmdump": set() +} +for script in scripts: + deps.update(script_deps[script]) +if os.name == "nt": + deps.add("pydivert>=0.0.4") # Transparent proxying on Windows +console_scripts = [ + "%s = libmproxy.main:%s" % (s, s) for s in scripts +] -def findPackages(path, dataExclude=[]): - """ - Recursively find all packages and data directories rooted at path. Note - that only data _directories_ and their contents are returned - - non-Python files at module scope are not, and should be manually - included. - dataExclude is a list of fnmatch-compatible expressions for files and - directories that should not be included in pakcage_data. +setup( + name="mitmproxy", + version=version.VERSION, + description="An interactive, SSL-capable, man-in-the-middle HTTP proxy for penetration testers and software developers.", + long_description=long_description, + url="http://mitmproxy.org", + author="Aldo Cortesi", + author_email="aldo@corte.si", + license="MIT", + classifiers=[ + "License :: OSI Approved :: MIT License", + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Environment :: Console :: Curses", + "Operating System :: MacOS :: MacOS X", + "Operating System :: POSIX", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 2.7", + "Topic :: Security", + "Topic :: Internet", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: Proxy Servers", + "Topic :: Software Development :: Testing" + ], - Returns a (packages, package_data) tuple, ready to be passed to the - corresponding distutils.core.setup arguments. - """ - packages = [] - datadirs = [] - for root, dirs, files in os.walk(path, topdown=True): - if "__init__.py" in files: - p = _splitAll(root) - packages.append(".".join(p)) - else: - dirs[:] = [] - if packages: - datadirs.append(root) + packages=find_packages(), + include_package_data=True, - # Now we recurse into the data directories - package_data = {} - for i in datadirs: - if not _fnmatch(i, dataExclude): - parts = _splitAll(i) - module = ".".join(parts[:-1]) - acc = package_data.get(module, []) - for root, dirs, files in os.walk(i, topdown=True): - sub = os.path.join(*_splitAll(root)[1:]) - if not _fnmatch(sub, dataExclude): - for fname in files: - path = os.path.join(sub, fname) - if not _fnmatch(path, dataExclude): - acc.append(path) - else: - dirs[:] = [] - package_data[module] = acc - return packages, package_data + entry_points={ + 'console_scripts': console_scripts + }, -with open(os.path.join(pdir(), "README.txt")) as f: - long_description = f.read() -packages, package_data = findPackages("libmproxy") -setup( - name = "mitmproxy", - version = version.VERSION, - description = "An interactive, SSL-capable, man-in-the-middle HTTP proxy for penetration testers and software developers.", - long_description = long_description, - author = "Aldo Cortesi", - author_email = "aldo@corte.si", - url = "http://mitmproxy.org", - packages = packages, - package_data = package_data, - scripts = ["mitmproxy", "mitmdump"], - classifiers = [ - "License :: OSI Approved :: MIT License", - "Development Status :: 5 - Production/Stable", - "Environment :: Console", - "Environment :: Console :: Curses", - "Operating System :: MacOS :: MacOS X", - "Operating System :: POSIX", - "Programming Language :: Python", - "Programming Language :: Python :: 2", - "Topic :: Security", - "Topic :: Internet", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Internet :: Proxy Servers", - "Topic :: Software Development :: Testing" - ], - install_requires=[ - "netlib>=%s"%version.MINORVERSION, - "urwid>=1.1", - "pyasn1>0.1.2", - "requests>=1.2.2", - "pyopenssl>=0.14", - "Pillow>=2.3.0", - "lxml", - "flask" + install_requires=list(deps), + extras_require={ + 'dev': [ + "mock>=1.0.1", + "nose>=1.3.0", + "nose-cov>=1.6", + "coveralls>=0.4.1", + "pathod>=%s" % version.MINORVERSION ], -) + 'contentviews': [ + "pyamf>=0.6.1", + "protobuf>=2.5.0", + "cssutils>=1.0" + ] + } +)
\ No newline at end of file |