move to pbr for packaging

Change-Id: I93e4f54d1b81f53615774aa5f79b3e6a9941a55d
This commit is contained in:
Doug Hellmann 2014-01-03 11:58:17 -05:00
parent 472c11cea1
commit 82f9a4ad61
6 changed files with 67 additions and 180 deletions

4
.gitignore vendored
View File

@ -30,3 +30,7 @@ pip-log.txt
#sample output
*.log
*.log.*
# pbr output
AUTHORS
ChangeLog

View File

@ -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
=============

View File

@ -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

6
requirements.txt Normal file
View File

@ -0,0 +1,6 @@
argparse
cmd2>=0.6.7
PrettyTable>=0.6,<0.8
pyparsing>=2.0.1
six
stevedore

45
setup.cfg Normal file
View File

@ -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

188
setup.py
View File

@ -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
# 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:
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',
]
try:
import argparse # noqa
import multiprocessing # flake8: noqa
except ImportError:
install_requires.append('argparse')
pass
##############################################################################
# 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',
],
},
zip_safe=False,
)
setuptools.setup(
setup_requires=['pbr'],
pbr=True)