aboutsummaryrefslogtreecommitdiff
path: root/catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py')
-rw-r--r--catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py420
1 files changed, 420 insertions, 0 deletions
diff --git a/catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py b/catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py
new file mode 100644
index 00000000..83f1c21d
--- /dev/null
+++ b/catapult/common/py_vulcanize/third_party/rcssmin/_setup/py3/setup.py
@@ -0,0 +1,420 @@
+# -*- coding: ascii -*-
+#
+# Copyright 2007 - 2013
+# Andr\xe9 Malo or his licensors, as applicable
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""
+===================
+ Main setup runner
+===================
+
+This module provides a wrapper around the distutils core setup.
+"""
+__author__ = "Andr\xe9 Malo"
+__docformat__ = "restructuredtext en"
+
+import configparser as _config_parser
+from distutils import core as _core
+import os as _os
+import posixpath as _posixpath
+import sys as _sys
+
+from _setup import commands as _commands
+from _setup import data as _data
+from _setup import ext as _ext
+from _setup import util as _util
+from _setup import shell as _shell
+
+
+def check_python_version(impl, version_min, version_max):
+ """ Check python version """
+ if impl == 'python':
+ version_info = _sys.version_info
+ elif impl == 'pypy':
+ version_info = getattr(_sys, 'pypy_version_info', None)
+ if not version_info:
+ return
+ elif impl == 'jython':
+ if not 'java' in _sys.platform.lower():
+ return
+ version_info = _sys.version_info
+ else:
+ raise AssertionError("impl not in ('python', 'pypy', 'jython')")
+
+ pyversion = list(map(int, version_info[:3]))
+ if version_min:
+ min_required = list(
+ map(int, '.'.join((version_min, '0.0.0')).split('.')[:3])
+ )
+ if pyversion < min_required:
+ raise EnvironmentError("Need at least %s %s (vs. %s)" % (
+ impl, version_min, '.'.join(map(str, pyversion))
+ ))
+ if version_max:
+ max_required = list(map(int, version_max.split('.')))
+ max_required[-1] += 1
+ if pyversion >= max_required:
+ raise EnvironmentError("Need at max %s %s (vs. %s)" % (
+ impl,
+ version_max,
+ '.'.join(map(str, pyversion))
+ ))
+
+
+def find_description(docs):
+ """
+ Determine the package description from DESCRIPTION
+
+ :Parameters:
+ `docs` : ``dict``
+ Docs config section
+
+ :Return: Tuple of summary, description and license
+ (``('summary', 'description', 'license')``)
+ (all may be ``None``)
+ :Rtype: ``tuple``
+ """
+ summary = None
+ filename = docs.get('meta.summary', 'SUMMARY').strip()
+ if filename and _os.path.isfile(filename):
+ fp = open(filename, encoding='utf-8')
+ try:
+ try:
+ summary = fp.read().strip().splitlines()[0].rstrip()
+ except IndexError:
+ summary = ''
+ finally:
+ fp.close()
+
+ description = None
+ filename = docs.get('meta.description', 'DESCRIPTION').strip()
+ if filename and _os.path.isfile(filename):
+ fp = open(filename, encoding='utf-8')
+ try:
+ description = fp.read().rstrip()
+ finally:
+ fp.close()
+
+ if summary is None and description:
+ from docutils import core
+ summary = core.publish_parts(
+ source=description,
+ source_path=filename,
+ writer_name='html',
+ )['title'].encode('utf-8')
+
+ return summary, description
+
+
+def find_classifiers(docs):
+ """
+ Determine classifiers from CLASSIFIERS
+
+ :return: List of classifiers (``['classifier', ...]``)
+ :rtype: ``list``
+ """
+ filename = docs.get('meta.classifiers', 'CLASSIFIERS').strip()
+ if filename and _os.path.isfile(filename):
+ fp = open(filename, encoding='utf-8')
+ try:
+ content = fp.read()
+ finally:
+ fp.close()
+ content = [item.strip() for item in content.splitlines()]
+ return [item for item in content if item and not item.startswith('#')]
+ return []
+
+
+def find_provides(docs):
+ """
+ Determine provides from PROVIDES
+
+ :return: List of provides (``['provides', ...]``)
+ :rtype: ``list``
+ """
+ filename = docs.get('meta.provides', 'PROVIDES').strip()
+ if filename and _os.path.isfile(filename):
+ fp = open(filename, encoding='utf-8')
+ try:
+ content = fp.read()
+ finally:
+ fp.close()
+ content = [item.strip() for item in content.splitlines()]
+ return [item for item in content if item and not item.startswith('#')]
+ return []
+
+
+def find_license(docs):
+ """
+ Determine license from LICENSE
+
+ :return: License text
+ :rtype: ``str``
+ """
+ filename = docs.get('meta.license', 'LICENSE').strip()
+ if filename and _os.path.isfile(filename):
+ fp = open(filename, encoding='utf-8')
+ try:
+ return fp.read().rstrip()
+ finally:
+ fp.close()
+ return None
+
+
+def find_packages(manifest):
+ """ Determine packages and subpackages """
+ packages = {}
+ collect = manifest.get('packages.collect', '').split()
+ lib = manifest.get('packages.lib', '.')
+ try:
+ sep = _os.path.sep
+ except AttributeError:
+ sep = _os.path.join('1', '2')[1:-1]
+ for root in collect:
+ for dirpath, _, filenames in _shell.walk(_os.path.join(lib, root)):
+ if dirpath.find('.svn') >= 0 or dirpath.find('.git') >= 0:
+ continue
+ if '__init__.py' in filenames:
+ packages[
+ _os.path.normpath(dirpath).replace(sep, '.')
+ ] = None
+ packages = list(packages.keys())
+ packages.sort()
+ return packages
+
+
+def find_data(name, docs):
+ """ Determine data files """
+ result = []
+ if docs.get('extra', '').strip():
+ result.append(_data.Documentation(docs['extra'].split(),
+ prefix='share/doc/%s' % name,
+ ))
+ if docs.get('examples.dir', '').strip():
+ tpl = ['recursive-include %s *' % docs['examples.dir']]
+ if docs.get('examples.ignore', '').strip():
+ tpl.extend(["global-exclude %s" % item
+ for item in docs['examples.ignore'].split()
+ ])
+ strip = int(docs.get('examples.strip', '') or 0)
+ result.append(_data.Documentation.from_templates(*tpl, **{
+ 'strip': strip,
+ 'prefix': 'share/doc/%s' % name,
+ 'preserve': 1,
+ }))
+ if docs.get('userdoc.dir', '').strip():
+ tpl = ['recursive-include %s *' % docs['userdoc.dir']]
+ if docs.get('userdoc.ignore', '').strip():
+ tpl.extend(["global-exclude %s" % item
+ for item in docs['userdoc.ignore'].split()
+ ])
+ strip = int(docs.get('userdoc.strip', '') or 0)
+ result.append(_data.Documentation.from_templates(*tpl, **{
+ 'strip': strip,
+ 'prefix': 'share/doc/%s' % name,
+ 'preserve': 1,
+ }))
+ if docs.get('apidoc.dir', '').strip():
+ tpl = ['recursive-include %s *' % docs['apidoc.dir']]
+ if docs.get('apidoc.ignore', '').strip():
+ tpl.extend(["global-exclude %s" % item
+ for item in docs['apidoc.ignore'].split()
+ ])
+ strip = int(docs.get('apidoc.strip', '') or 0)
+ result.append(_data.Documentation.from_templates(*tpl, **{
+ 'strip': strip,
+ 'prefix': 'share/doc/%s' % name,
+ 'preserve': 1,
+ }))
+ if docs.get('man', '').strip():
+ result.extend(_data.Manpages.dispatch(docs['man'].split()))
+ return result
+
+
+def make_manifest(manifest, config, docs, kwargs):
+ """ Create file list to pack up """
+ # pylint: disable = R0912
+ kwargs = kwargs.copy()
+ kwargs['script_args'] = ['install']
+ kwargs['packages'] = list(kwargs.get('packages') or ()) + [
+ '_setup', '_setup.py2', '_setup.py3',
+ ] + list(manifest.get('packages.extra', '').split() or ())
+ _core._setup_stop_after = "commandline"
+ try:
+ dist = _core.setup(**kwargs)
+ finally:
+ _core._setup_stop_after = None
+
+ result = ['MANIFEST', 'PKG-INFO', 'setup.py'] + list(config)
+ # TODO: work with default values:
+ for key in ('classifiers', 'description', 'summary', 'provides',
+ 'license'):
+ filename = docs.get('meta.' + key, '').strip()
+ if filename and _os.path.isfile(filename):
+ result.append(filename)
+
+ cmd = dist.get_command_obj("build_py")
+ cmd.ensure_finalized()
+ #from pprint import pprint; pprint(("build_py", cmd.get_source_files()))
+ for item in cmd.get_source_files():
+ result.append(_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ))
+
+ cmd = dist.get_command_obj("build_ext")
+ cmd.ensure_finalized()
+ #from pprint import pprint; pprint(("build_ext", cmd.get_source_files()))
+ for item in cmd.get_source_files():
+ result.append(_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ))
+ for ext in cmd.extensions:
+ if ext.depends:
+ result.extend([_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ) for item in ext.depends])
+
+ cmd = dist.get_command_obj("build_clib")
+ cmd.ensure_finalized()
+ if cmd.libraries:
+ #import pprint; pprint.pprint(("build_clib", cmd.get_source_files()))
+ for item in cmd.get_source_files():
+ result.append(_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ))
+ for lib in cmd.libraries:
+ if lib[1].get('depends'):
+ result.extend([_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ) for item in lib[1]['depends']])
+
+ cmd = dist.get_command_obj("build_scripts")
+ cmd.ensure_finalized()
+ #import pprint; pprint.pprint(("build_scripts", cmd.get_source_files()))
+ if cmd.get_source_files():
+ for item in cmd.get_source_files():
+ result.append(_posixpath.sep.join(
+ _os.path.normpath(item).split(_os.path.sep)
+ ))
+
+ cmd = dist.get_command_obj("install_data")
+ cmd.ensure_finalized()
+ #from pprint import pprint; pprint(("install_data", cmd.get_inputs()))
+ try:
+ strings = str
+ except NameError:
+ strings = (str, str)
+
+ for item in cmd.get_inputs():
+ if isinstance(item, strings):
+ result.append(item)
+ else:
+ result.extend(item[1])
+
+ for item in manifest.get('dist', '').split():
+ result.append(item)
+ if _os.path.isdir(item):
+ for filename in _shell.files(item):
+ result.append(filename)
+
+ result = list(dict([(item, None) for item in result]).keys())
+ result.sort()
+ return result
+
+
+def run(config=('package.cfg',), ext=None, script_args=None, manifest_only=0):
+ """ Main runner """
+ if ext is None:
+ ext = []
+
+ cfg = _util.SafeConfigParser()
+ cfg.read(config, encoding='utf-8')
+ pkg = dict(cfg.items('package'))
+ python_min = pkg.get('python.min') or None
+ python_max = pkg.get('python.max') or None
+ check_python_version('python', python_min, python_max)
+ pypy_min = pkg.get('pypy.min') or None
+ pypy_max = pkg.get('pypy.max') or None
+ check_python_version('pypy', pypy_min, pypy_max)
+ jython_min = pkg.get('jython.min') or None
+ jython_max = pkg.get('jython.max') or None
+ check_python_version('jython', jython_min, jython_max)
+
+ manifest = dict(cfg.items('manifest'))
+ try:
+ docs = dict(cfg.items('docs'))
+ except _config_parser.NoSectionError:
+ docs = {}
+
+ summary, description = find_description(docs)
+ scripts = manifest.get('scripts', '').strip() or None
+ if scripts:
+ scripts = scripts.split()
+ modules = manifest.get('modules', '').strip() or None
+ if modules:
+ modules = modules.split()
+ keywords = docs.get('meta.keywords', '').strip() or None
+ if keywords:
+ keywords = keywords.split()
+ revision = pkg.get('version.revision', '').strip()
+ if revision:
+ revision = "-r%s" % (revision,)
+
+ kwargs = {
+ 'name': pkg['name'],
+ 'version': "%s%s" % (
+ pkg['version.number'],
+ ["", "-dev%s" % (revision,)][_util.humanbool(
+ 'version.dev', pkg.get('version.dev', 'false')
+ )],
+ ),
+ 'provides': find_provides(docs),
+ 'description': summary,
+ 'long_description': description,
+ 'classifiers': find_classifiers(docs),
+ 'keywords': keywords,
+ 'author': pkg['author.name'],
+ 'author_email': pkg['author.email'],
+ 'maintainer': pkg.get('maintainer.name'),
+ 'maintainer_email': pkg.get('maintainer.email'),
+ 'url': pkg.get('url.homepage'),
+ 'download_url': pkg.get('url.download'),
+ 'license': find_license(docs),
+ 'package_dir': {'': manifest.get('packages.lib', '.')},
+ 'packages': find_packages(manifest),
+ 'py_modules': modules,
+ 'ext_modules': ext,
+ 'scripts': scripts,
+ 'script_args': script_args,
+ 'data_files': find_data(pkg['name'], docs),
+ 'cmdclass': {
+ 'build' : _commands.Build,
+ 'build_ext' : _commands.BuildExt,
+ 'install' : _commands.Install,
+ 'install_data': _commands.InstallData,
+ 'install_lib' : _commands.InstallLib,
+ }
+ }
+ for key in ('provides',):
+ if key not in _core.setup_keywords:
+ del kwargs[key]
+
+ if manifest_only:
+ return make_manifest(manifest, config, docs, kwargs)
+
+ # monkey-patch crappy manifest writer away.
+ from distutils.command import sdist
+ sdist.sdist.get_file_list = sdist.sdist.read_manifest
+
+ return _core.setup(**kwargs)