From 48fb49ee44ff5b136f0ef3db7a7033e3c2018f06 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Thu, 2 Oct 2014 00:05:29 +0200 Subject: [PATCH] distutils -> setuptools --- MANIFEST.in | 11 +++--- setup.py | 96 ++++++++++++----------------------------------------- 2 files changed, 25 insertions(+), 82 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 1cd3f0437..f492b0efd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,9 +1,6 @@ -include LICENSE -include CHANGELOG -include README.txt +include LICENSE CHANGELOG README.txt exclude README.mkd recursive-include test * -recursive-include libpathod/resources * -recursive-include libpathod/templates * -recursive-include libpathod/static * -recursive-exclude test *.swo *.swp *.pyc +recursive-include libpathod * +recursive-include examples * +recursive-exclude * *.pyc *.pyo *.swo *.swp \ No newline at end of file diff --git a/setup.py b/setup.py index 1dd0e7d2d..b756dbfe6 100644 --- a/setup.py +++ b/setup.py @@ -1,90 +1,25 @@ -from distutils.core import setup -import fnmatch, os.path +from setuptools import setup, find_packages +from codecs import open +import os from libpathod import version +# Based on https://github.com/pypa/sampleproject/blob/master/setup.py +# and https://python-packaging-user-guide.readthedocs.org/ -def _fnmatch(name, patternList): - for i in patternList: - if fnmatch.fnmatch(name, i): - return True - return False +here = os.path.abspath(os.path.dirname(__file__)) - -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 - -with open("README.txt", "rb") as f: +with open(os.path.join(here, 'README.txt'), encoding='utf-8') as f: long_description = f.read() -packages, package_data = findPackages("libpathod") setup( name="pathod", version=version.VERSION, description="A pathological HTTP/S daemon for testing and stressing clients.", long_description=long_description, + url="http://pathod.net", author="Aldo Cortesi", author_email="aldo@corte.si", - url="http://pathod.net", - packages=packages, - package_data=package_data, - entry_points={ - 'console_scripts': [ - "pathod = libpathod.main:pathod", - "pathoc = libpathod.main:pathoc" - ] - }, + license="MIT", classifiers=[ "License :: OSI Approved :: MIT License", "Development Status :: 5 - Production/Stable", @@ -92,11 +27,22 @@ setup( "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Internet", + "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Software Development :: Testing", "Topic :: Software Development :: Testing :: Traffic Generation", - "Topic :: Internet :: WWW/HTTP", ], + + packages=find_packages(), + include_package_data=True, + + entry_points={ + 'console_scripts': [ + "pathod = libpathod.main:pathod", + "pathoc = libpathod.main:pathoc" + ] + }, + install_requires=[ 'netlib>=%s' % version.MINORVERSION, "requests>=2.4.1",