diff options
author | Ian Bicking <ianb@colorstudy.com> | 2010-09-16 12:31:17 -0400 |
---|---|---|
committer | Ian Bicking <ianb@colorstudy.com> | 2010-09-16 12:31:17 -0400 |
commit | b76c55f8f50506a33084b5f23c4f0d76eb163eb3 (patch) | |
tree | ce177220221ad08a886efaa85dc7eeee90c6cb23 | |
parent | c80e1a7186c721a1246bf344ab2fd22f1dd9ae45 (diff) | |
download | pastedeploy-git-b76c55f8f50506a33084b5f23c4f0d76eb163eb3.tar.gz |
Remove setup.cfg, which wasn't being (usefully) used, and add finddata to remove need for svn/include_package_data1.3.4
-rw-r--r-- | .hgignore | 1 | ||||
-rw-r--r-- | setup.cfg | 32 | ||||
-rw-r--r-- | setup.py | 9 | ||||
-rw-r--r-- | tests/finddata.py | 99 |
4 files changed, 108 insertions, 33 deletions
@@ -2,3 +2,4 @@ syntax: glob *.egg-info/ dist/ build/ +docs/_build/ diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index a8f5b23..0000000 --- a/setup.cfg +++ /dev/null @@ -1,32 +0,0 @@ -[egg_info] -tag_build = dev -tag_svn_revision = true - -[global] -command_packages = buildutils.pudge_command, buildutils.publish_command - -[pudge] -highlighter = pygments -title = Paste Deploy -dest = docs/html -docs = docs/index.txt docs/news.txt -settings = no_about=true - link1=/deploy/ paste.deploy - link2=/script/ paster script - link3=/download/ Download - extra_credits=Hosting courtesy of <a href="http://tummy.com">Tummy.com</a> -modules = paste.deploy -theme = pythonpaste.org -mailing_list_url = http://pythonpaste.org/community/mailing-list.html -organization = Python Paste -organization_url = http://pythonpaste.org/ -trac_url = http://pythonpaste.org/trac/ - -[publish] -doc-dest = scp://ianb@webwareforpython.org/home/paste/htdocs/deploy -make-dirs = 1 -doc-dir = docs/html - -[aliases] -distribute = register sdist bdist_egg upload pudge publish - @@ -2,6 +2,12 @@ from setuptools import setup, find_packages version = '1.3.4' +import os + +here = os.path.dirname(os.path.abspath(__file__)) +finddata_py = os.path.join(here, 'tests', 'finddata.py') +execfile(finddata_py) + setup( name="PasteDeploy", version=version, @@ -38,7 +44,8 @@ For the latest changes see the `news file license='MIT', namespace_packages=['paste'], packages=find_packages(exclude='tests'), - include_package_data=True, + package_data=find_package_data( + exclude_directories=standard_exclude_directories + ('tests',)), zip_safe=False, test_suite='nose.collector', tests_require=['nose>=0.11'], diff --git a/tests/finddata.py b/tests/finddata.py new file mode 100644 index 0000000..4d4fa90 --- /dev/null +++ b/tests/finddata.py @@ -0,0 +1,99 @@ +# (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) +# Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php +# Note: you may want to copy this into your setup.py file verbatim, as +# you can't import this from another package, when you don't know if +# that package is installed yet. + +import os +import sys +from fnmatch import fnmatchcase +from distutils.util import convert_path + +# Provided as an attribute, so you can append to these instead +# of replicating them: +standard_exclude = ('*.py', '*.pyc', '*$py.class', '*~', '.*', '*.bak') +standard_exclude_directories = ('.*', 'CVS', '_darcs', './build', + './dist', 'EGG-INFO', '*.egg-info') + +def find_package_data( + where='.', package='', + exclude=standard_exclude, + exclude_directories=standard_exclude_directories, + only_in_packages=True, + show_ignored=False): + """ + Return a dictionary suitable for use in ``package_data`` + in a distutils ``setup.py`` file. + + The dictionary looks like:: + + {'package': [files]} + + Where ``files`` is a list of all the files in that package that + don't match anything in ``exclude``. + + If ``only_in_packages`` is true, then top-level directories that + are not packages won't be included (but directories under packages + will). + + Directories matching any pattern in ``exclude_directories`` will + be ignored; by default directories with leading ``.``, ``CVS``, + and ``_darcs`` will be ignored. + + If ``show_ignored`` is true, then all the files that aren't + included in package data are shown on stderr (for debugging + purposes). + + Note patterns use wildcards, or can be exact paths (including + leading ``./``), and all searching is case-insensitive. + """ + + out = {} + stack = [(convert_path(where), '', package, only_in_packages)] + while stack: + where, prefix, package, only_in_packages = stack.pop(0) + for name in os.listdir(where): + fn = os.path.join(where, name) + if os.path.isdir(fn): + bad_name = False + for pattern in exclude_directories: + if (fnmatchcase(name, pattern) + or fn.lower() == pattern.lower()): + bad_name = True + if show_ignored: + print >> sys.stderr, ( + "Directory %s ignored by pattern %s" + % (fn, pattern)) + break + if bad_name: + continue + if (os.path.isfile(os.path.join(fn, '__init__.py')) + and not prefix): + if not package: + new_package = name + else: + new_package = package + '.' + name + stack.append((fn, '', new_package, False)) + else: + stack.append((fn, prefix + name + '/', package, only_in_packages)) + elif package or not only_in_packages: + # is a file + bad_name = False + for pattern in exclude: + if (fnmatchcase(name, pattern) + or fn.lower() == pattern.lower()): + bad_name = True + if show_ignored: + print >> sys.stderr, ( + "File %s ignored by pattern %s" + % (fn, pattern)) + break + if bad_name: + continue + out.setdefault(package, []).append(prefix+name) + return out + +if __name__ == '__main__': + import pprint + pprint.pprint( + find_package_data(show_ignored=True)) |