summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Bicking <ianb@colorstudy.com>2010-09-16 12:31:17 -0400
committerIan Bicking <ianb@colorstudy.com>2010-09-16 12:31:17 -0400
commit110e07e180fcfc758c0288fa47a1cf1c101451bf (patch)
treece177220221ad08a886efaa85dc7eeee90c6cb23
parent6822d899ac089f4478b696f6889c658bc0e69c45 (diff)
downloadpastedeploy-110e07e180fcfc758c0288fa47a1cf1c101451bf.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--.hgignore1
-rw-r--r--setup.cfg32
-rw-r--r--setup.py9
-rw-r--r--tests/finddata.py99
4 files changed, 108 insertions, 33 deletions
diff --git a/.hgignore b/.hgignore
index 5139889..5345d54 100644
--- a/.hgignore
+++ b/.hgignore
@@ -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
-
diff --git a/setup.py b/setup.py
index 3ea49fe..1959175 100644
--- a/setup.py
+++ b/setup.py
@@ -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))