From 82f9a4ad61301ebebae9237475b8877e15e2a376 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 3 Jan 2014 11:58:17 -0500 Subject: move to pbr for packaging Change-Id: I93e4f54d1b81f53615774aa5f79b3e6a9941a55d --- .gitignore | 4 ++ announce.rst | 1 + docs/source/history.rst | 3 +- requirements.txt | 6 ++ setup.cfg | 45 ++++++++++++ setup.py | 188 +++--------------------------------------------- 6 files changed, 67 insertions(+), 180 deletions(-) create mode 100644 requirements.txt create mode 100644 setup.cfg diff --git a/.gitignore b/.gitignore index 8a4d01b..e7117ad 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,7 @@ pip-log.txt #sample output *.log *.log.* + +# pbr output +AUTHORS +ChangeLog diff --git a/announce.rst b/announce.rst index 062c59a..2830b25 100644 --- a/announce.rst +++ b/announce.rst @@ -16,6 +16,7 @@ What's New In This Release? details. - Add bash command completion. (Contributed by Terry Howe) - Use stevedore to load formatter plugins. +- Use pbr for packaging. Documentation ============= diff --git a/docs/source/history.rst b/docs/source/history.rst index 5684138..6210b27 100644 --- a/docs/source/history.rst +++ b/docs/source/history.rst @@ -2,13 +2,14 @@ Release History ================= -1.5 +1.5.2 - Fix the arguments passed to commands when they are instantiated to pull out help. See https://github.com/dreamhost/cliff/issues/52 for details. - Add bash command completion. (Contributed by Terry Howe) - Use stevedore to load formatter plugins. +- Use pbr for packaging. 1.4.5 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a1d90fa --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +argparse +cmd2>=0.6.7 +PrettyTable>=0.6,<0.8 +pyparsing>=2.0.1 +six +stevedore diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..e019b4f --- /dev/null +++ b/setup.cfg @@ -0,0 +1,45 @@ +[metadata] +name = cliff +description-file = README.rst +author = Doug Hellmann +author-email = doug.hellmann@dreamhost.com +summary = Command Line Interface Formulation Framework +home-page = https://launchpad.net/python-cliff +classifier = + Development Status :: 5 - Production/Stable + License :: OSI Approved :: Apache Software License + Programming Language :: Python + Programming Language :: Python :: 2 + Programming Language :: Python :: 2.7 + Programming Language :: Python :: 3 + Programming Language :: Python :: 3.2 + Programming Language :: Python :: 3.3 + Intended Audience :: Developers + Environment :: Console + +[global] +setup-hooks = + pbr.hooks.setup_hook + +[files] +packages = + cliff + +[entry_points] +cliff.formatter.list = + table = cliff.formatters.table:TableFormatter + csv = cliff.formatters.commaseparated:CSVLister + +cliff.formatter.show = + table = cliff.formatters.table:TableFormatter + shell = cliff.formatters.shell:ShellFormatter + +cliff.formatter.completion = + bash = cliff.complete:CompleteBash + none = cliff.complete:CompleteNoCode + + +[build_sphinx] +all_files = 1 +build-dir = docs/build +source-dir = docs/source diff --git a/setup.py b/setup.py index 7a16b08..72b1f52 100644 --- a/setup.py +++ b/setup.py @@ -1,184 +1,14 @@ #!/usr/bin/env python +import setuptools -PROJECT = 'cliff' -VERSION = '1.4.5' - -from setuptools import setup, find_packages - -from distutils.util import convert_path -from fnmatch import fnmatchcase -import os -import sys - -try: - long_description = open('README.rst', 'rt').read() -except IOError: - long_description = '' - -install_requires = [ - 'PrettyTable>=0.6,<0.8', - 'cmd2>=0.6.7', - 'pyparsing>=2.0.1', - 'six', - 'stevedore', -] - +# In python < 2.7.4, a lazy loading of package `pbr` will break +# setuptools if some other modules registered functions in `atexit`. +# solution from: http://bugs.python.org/issue15881#msg170215 try: - import argparse # noqa + import multiprocessing # flake8: noqa except ImportError: - install_requires.append('argparse') - - -############################################################################## -# find_package_data is an Ian Bicking creation. - -# Provided as an attribute, so you can append to these instead -# of replicating them: -standard_exclude = ('*.py', '*.pyc', '*~', '.*', '*.bak', '*.swp*') -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. - - This function is by Ian Bicking. - """ - - 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')): - 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 -############################################################################## - - -setup( - name=PROJECT, - version=VERSION, - - description='Command Line Interface Formulation Framework', - long_description=long_description, - - author='Doug Hellmann', - author_email='doug.hellmann@gmail.com', - - url='https://launchpad.net/python-cliff', - - classifiers=['Development Status :: 5 - Production/Stable', - 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.2', - 'Programming Language :: Python :: 3.3', - 'Intended Audience :: Developers', - 'Environment :: Console', - ], - - platforms=['Any'], - - scripts=[], - - provides=['cliff', - ], - install_requires=install_requires, - - namespace_packages=[], - packages=find_packages(), - include_package_data=True, - # Scan the input for package information - # to grab any data files (text, images, etc.) - # associated with sub-packages. - package_data=find_package_data(PROJECT, - package=PROJECT, - only_in_packages=False, - ), - - entry_points={ - 'cliff.formatter.list': [ - 'table = cliff.formatters.table:TableFormatter', - 'csv = cliff.formatters.commaseparated:CSVLister', - ], - 'cliff.formatter.show': [ - 'table = cliff.formatters.table:TableFormatter', - 'shell = cliff.formatters.shell:ShellFormatter', - ], - 'cliff.formatter.completion': [ - 'bash = cliff.complete:CompleteBash', - 'none = cliff.complete:CompleteNoCode', - ], - }, + pass - zip_safe=False, -) +setuptools.setup( + setup_requires=['pbr'], + pbr=True) -- cgit v1.2.1