aboutsummaryrefslogtreecommitdiffstats
path: root/setup.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-06-23 13:49:57 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-06-23 13:49:57 +1200
commit227e72abf4124cbf55328cd15be917b4af99367f (patch)
treec9100a491862a2b9059b227cb2fe1f9539a6b5e3 /setup.py
parentb7062007965ebd8c11e94bd28775ac6d6083eedf (diff)
downloadmitmproxy-227e72abf4124cbf55328cd15be917b4af99367f.tar.gz
mitmproxy-227e72abf4124cbf55328cd15be917b4af99367f.tar.bz2
mitmproxy-227e72abf4124cbf55328cd15be917b4af99367f.zip
README, setup.py, version
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 00000000..06ac8aea
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,92 @@
+from distutils.core import setup
+import fnmatch, os.path
+from netlib import version
+
+def _fnmatch(name, patternList):
+ for i in patternList:
+ if fnmatch.fnmatch(name, i):
+ return True
+ return False
+
+
+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
+
+
+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.
+
+ 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)
+
+ # 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
+
+
+long_description = file("README").read()
+packages, package_data = findPackages("libpathod")
+setup(
+ name = "netlib",
+ version = version.VERSION,
+ description = "A collection of network utilities used by pathod and mitmproxy.",
+ long_description = long_description,
+ author = "Aldo Cortesi",
+ author_email = "aldo@corte.si",
+ url = "http://cortesi.github.com/netlib",
+ packages = packages,
+ package_data = package_data,
+ classifiers = [
+ "License :: OSI Approved :: MIT License",
+ "Development Status :: 3 - Alpha",
+ "Operating System :: POSIX",
+ "Programming Language :: Python",
+ "Topic :: Internet",
+ "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
+ "Topic :: Software Development :: Testing",
+ "Topic :: Software Development :: Testing :: Traffic Generation",
+ "Topic :: Internet :: WWW/HTTP",
+ ],
+ install_requires=["pyasn1>0.1.2", "pyopenssl>=0.12"],
+)