From nobody Sun Apr 24 00:43:30 2022 X-Original-To: dev-commits-ports-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id F27DD199F9B9; Sun, 24 Apr 2022 00:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Km8X31Pg0z3nQB; Sun, 24 Apr 2022 00:43:31 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1650761011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c4+UAxrJlWKS/7bdUCF2Xjl4smhMkbWeZlqgNdpssZQ=; b=aQXG3gleBbJWgc4UmlI+crLn7wIAMUe8/RSgW0Ieg6SO4KGVxMFuWo6tIUpAVzbDySlU+m ZvQHHdxNEKzJMhLU64HptulEhvVYxO/JflPHkRCdsRRsHNGQy+ZKHBVL6plA7KIlSroCo6 oRv96KKdjIAkRUMJruXDF/J3lZbaoVHPeJcpXiG5SInbwnyzli6OC979l94F1YO9lzVUuK WgGvE4O9dwRR2rSNpAMKyogjZQl7/yzyYkzlvT7FgVghI0WRulsBnuPo+CNcG/50Lfr5KO fpG4Wpi6Bj9bFIt8QZvG0PHUiZulYTRaGU+6C0aq1y8wqKpYQh5tnmgFPJsFDA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DA30B1C3D1; Sun, 24 Apr 2022 00:43:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 23O0hUkp084582; Sun, 24 Apr 2022 00:43:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 23O0hUWt084581; Sun, 24 Apr 2022 00:43:30 GMT (envelope-from git) Date: Sun, 24 Apr 2022 00:43:30 GMT Message-Id: <202204240043.23O0hUWt084581@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Muhammad Moinur Rahman Subject: git: b5cd89dc2fdb - main - devel/py-molecule: Update version 2.22=>3.6.1 List-Id: Commit messages for all branches of the ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-all@freebsd.org X-BeenThere: dev-commits-ports-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bofh X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b5cd89dc2fdb848d1f5075c4d210c9556c81ae1f Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1650761011; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=c4+UAxrJlWKS/7bdUCF2Xjl4smhMkbWeZlqgNdpssZQ=; b=LlW44MiT3uy4jc4OkOrHJ9RkePOFGnckSSs455T97iF8mHwY2Fsxi+pBMJhy3s/c5q1R0v /PRIDecNuAxB4ZFtJkP9tj4lC3evfRL9k6HYEeOrIWNH8W37r+pJDpMC9IF4s4xCrx9SmO aTT4iAc4BZJIXI0TGAM1+ag44wSCCDGQMS+4N2YTENHtxA4DkZpw9C04kV/tWHHUBw425D HDS2XM7wgpGUSL5aVSAHutcomt+unJOZicCnqvA6H26BJwZsML1joHPnaTJS8xghvK0o+s 84tt+cPbsCY/qUadznRyYLF5K7ox/JTxycSEJ2PD+EomwqZ9YVjrq/cZ4Pwbfg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1650761011; a=rsa-sha256; cv=none; b=lDHSO7akMWWD3+ijYX6CaTm4v/qlnVWuzBONeomm64yxd69pOe3JMqKY4W3vpEf9WXmX1X kjZQQItfhe9WXHx17zI9K+CwMdc6A/8A54RA/zv3e/XWs9I+rBsaxL5kgD2CcGl8eFwrc+ fSypSrHEIH0FTFgiDL4I5Xp2ZOfvrhyt0/emjcTVsvFcKuvNxhSrsqMZS+tStO2bwX7bMx BvwHsuHQe1VY8RohKrCqmDVhbb4loAC9EEW1llpScd2dujzkCUJw0jrnN+/ZzXjMXK951d vDPgeasZMFw9wqZb4++pWi9FcfTKURvdjyHGZBIPKRQkXVHCsyXOvkOqE+oWbg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bofh: URL: https://cgit.FreeBSD.org/ports/commit/?id=b5cd89dc2fdb848d1f5075c4d210c9556c81ae1f commit b5cd89dc2fdb848d1f5075c4d210c9556c81ae1f Author: Muhammad Moinur Rahman AuthorDate: 2022-04-23 20:21:31 +0000 Commit: Muhammad Moinur Rahman CommitDate: 2022-04-24 00:35:52 +0000 devel/py-molecule: Update version 2.22=>3.6.1 - Remove test artifacts from pkg Relnotes: https://github.com/ansible-community/molecule/releases/tag/v3.6.1 --- devel/py-molecule/Makefile | 99 ++++----- devel/py-molecule/distinfo | 6 +- devel/py-molecule/files/patch-setup.cfg | 11 + devel/py-molecule/files/patch-setup.py | 358 +++----------------------------- 4 files changed, 93 insertions(+), 381 deletions(-) diff --git a/devel/py-molecule/Makefile b/devel/py-molecule/Makefile index 2345dde664b1..3ff3bd9fb0b4 100644 --- a/devel/py-molecule/Makefile +++ b/devel/py-molecule/Makefile @@ -1,5 +1,5 @@ PORTNAME= molecule -PORTVERSION= 2.22 +PORTVERSION= 3.6.1 CATEGORIES= devel python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -11,58 +11,34 @@ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools_scm_git_archive>=1.0:devel/py-setuptools_scm_git_archive@${PY_FLAVOR} -RUN_DEPENDS= \ - ${PYTHON_PKGNAMEPREFIX}ansible>=2.5:sysutils/ansible@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}ansible-lint>=4.0.2:sysutils/py-ansible-lint@${PY_FLAVOR} \ +# click-help-colors >= 0.9 +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}ansible-compat>=1.0.0:sysutils/py-ansible-compat@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}Cerberus>=1.3.1:devel/py-cerberus@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}Jinja2>=2.10.1:devel/py-Jinja2@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}anyconfig>=0.9.7:devel/py-anyconfig@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}click>=6.7:devel/py-click@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}click-completion>=0.3.1:devel/py-click-completion@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}colorama>=0.3.9:devel/py-colorama@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}cookiecutter>=1.6.0:devel/py-cookiecutter@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}flake8>=3.6.0:devel/py-flake8@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}paramiko>=2.5.0:security/py-paramiko@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pexpect>=4.6.0:misc/py-pexpect@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pre-commit>=1.17.0:devel/py-pre-commit@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}psutil>=5.4.6:sysutils/py-psutil@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}python-gilt>=1.2.1:devel/py-python-gilt@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}sh>=1.12.14:devel/py-sh@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}six>=1.11.0:devel/py-six@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}tabulate>=0.8.3:devel/py-tabulate@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}testinfra>=3.0.6:devel/py-testinfra@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}tree-format>=0.1.2:devel/py-tree-format@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}yaml>=5.1:devel/py-yaml@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}yamllint>=1.15.0:devel/py-yamllint@${PY_FLAVOR} -# TEST requires pytest >=4.6.3. Will change once updated -TEST_DEPENDS= \ - ${PYTHON_PKGNAMEPREFIX}flake8>=3.6.0:devel/py-flake8@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}mock>=3.0.5:devel/py-mock@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pytest>=4.5.0:devel/py-pytest@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pytest-cov>=2.7.1:devel/py-pytest-cov@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pytest-helpers-namespace>=2019.1.8:devel/py-pytest-helpers-namespace@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}click>=8.0:devel/py-click@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}cookiecutter>=1.7.3:devel/py-cookiecutter@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}enrich>=1.2.7:textproc/py-enrich@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}Jinja2>=2.11.3:devel/py-Jinja2@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pluggy>=0.7.1:devel/py-pluggy@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}rich>-9.5.1:textproc/py-rich@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yaml>=5.1:devel/py-yaml@${PY_FLAVOR} +# ansi2html >= 1.6.0 +# pytest-cov >= 2.10.1 +# pytest-mock >= 3.3.1 +# pytest-testinfra >= 6.1.0 +TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}coverage>=6.2:devel/py-coverage@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}filelock>0:sysutils/py-filelock@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pexpect>=4.8.0:misc/py-pexpect@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest-cov>=2.9.0:devel/py-pytest-cov@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest-html>=3.0.0:devel/py-pytest-html@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}pytest-mock>=1.10.4:devel/py-pytest-mock@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pytest-verbose-parametrize>=1.7.0:devel/py-pytest-verbose-parametrize@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}pytest-xdist>=1.29.0:devel/py-pytest-xdist@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}poyo>=0:devel/py-poyo@${PY_FLAVOR} + ${PYTHON_PKGNAMEPREFIX}pytest-plus>=0.2:devel/py-pytest-plus@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest-xdist>=2.1.0:devel/py-pytest-xdist@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pytest>=6.1.2:devel/py-pytest@${PY_FLAVOR} USES= python:3.6+ USE_PYTHON= autoplist concurrent distutils -NO_ARCH= yes - -OPTIONS_DEFINE= AZURE DOCKER DOCS EC2 GCE -AZURE_DESC= For testing on Microsoft Azure Platform -DOCKER_DESC= For testing on Docker Platform(Remote) -EC2_DESC= For testing on Amazon EC2 Platform -GCE_DESC= For testing on Google Compute Engine Platform -DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}alabaster>0:textproc/py-alabaster@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}sphinx>=0,1:textproc/py-sphinx@${PY_FLAVOR} -AZURE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}azure-cli>0:sysutils/py-azure-cli@${PY_FLAVOR} -DOCKER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}docker>=2.0.0:sysutils/py-docker@${PY_FLAVOR} -EC2_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto>0:devel/py-boto@${PY_FLAVOR} \ - ${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} -GCE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcloud>0:net/py-libcloud@${PY_FLAVOR} # Note: we're only running the unit tests here. Upstream acknowledges # that functional tests are still a work in progress. # @@ -70,7 +46,34 @@ GCE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcloud>0:net/py-libcloud@${PY_FLAVOR} # test/unit/test_util.py ......FFF....................... [ 23%] # # The click module demands a UTF-8 locale when used with python-3.x -TEST_ENV= LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 +TEST_ENV= LANG=en_US.UTF-8 \ + LC_ALL=en_US.UTF-8 + +NO_ARCH= yes + +OPTIONS_DEFINE= AZURE DOCKER DOCS EC2 GCE LINT +OPTIONS_DEFAULT= LINT +AZURE_DESC= For testing on Microsoft Azure Platform +DOCKER_DESC= For testing on Docker Platform(Remote) +EC2_DESC= For testing on Amazon EC2 Platform +GCE_DESC= For testing on Google Compute Engine Platform +LINT_DESC= For linting molecule itself +AZURE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}azure-cli>0:sysutils/py-azure-cli@${PY_FLAVOR} +DOCKER_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}docker>=2.0.0:sysutils/py-docker@${PY_FLAVOR} +# Sphinx >= 4.5.0, < 5.0.0 # https://github.com/sphinx-doc/sphinx/issues/10112 +# simplejson >= 3.17.2 +# sphinx-ansible-theme >= 0.8.0, < 0.10.0 +# sphinx-notfound-page >= 0.7.1 +DOCS_BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}ansible-core>-2.12.0:sysutils/py-ansible-core@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}simplejson>=3.17.2:devel/py-simplejson@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}sphinx>=4.3.1:textproc/py-sphinx@${PY_FLAVOR} +EC2_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}boto3>0:www/py-boto3@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}boto>0:devel/py-boto@${PY_FLAVOR} +GCE_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}libcloud>0:net/py-libcloud@${PY_FLAVOR} +# lint = +LINT_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}flake8>=3.8.4:devel/py-flake8@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pre-commit>=1.21.0:devel/py-pre-commit@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}yamllint>0:devel/py-yamllint@${PY_FLAVOR} do-test: @(cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest) diff --git a/devel/py-molecule/distinfo b/devel/py-molecule/distinfo index 47566215cb4f..c045ece73438 100644 --- a/devel/py-molecule/distinfo +++ b/devel/py-molecule/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1585511014 -SHA256 (molecule-2.22.tar.gz) = d9d7621167041ae2a8eb19f1f8dc23c071cdab2cd3ca80655e2c8796b4c00e09 -SIZE (molecule-2.22.tar.gz) = 281356 +TIMESTAMP = 1650744662 +SHA256 (molecule-3.6.1.tar.gz) = 3b7d5ba2978c15a034df8c7aa59dec5436f7d3260d1f9db2c78ae14ae3a9deeb +SIZE (molecule-3.6.1.tar.gz) = 296795 diff --git a/devel/py-molecule/files/patch-setup.cfg b/devel/py-molecule/files/patch-setup.cfg new file mode 100644 index 000000000000..5e60ea94e5e8 --- /dev/null +++ b/devel/py-molecule/files/patch-setup.cfg @@ -0,0 +1,11 @@ +--- setup.cfg.orig 2022-03-31 08:38:23 UTC ++++ setup.cfg +@@ -118,6 +118,8 @@ where = src + + [options.packages.find] + where = src ++exclude = ++ */test* + + [flake8] + exclude = .venv/,.tox/,dist/,build/,.eggs/ diff --git a/devel/py-molecule/files/patch-setup.py b/devel/py-molecule/files/patch-setup.py index 4b3e1cef89e1..01a4cfd69957 100644 --- a/devel/py-molecule/files/patch-setup.py +++ b/devel/py-molecule/files/patch-setup.py @@ -1,334 +1,32 @@ ---- setup.py.orig 2020-03-22 22:04:03 UTC +--- setup.py.orig 2022-03-31 08:16:17 UTC +++ setup.py -@@ -23,328 +23,7 @@ - - import setuptools - --HAS_DIST_INFO_CMD = False --try: -- import setuptools.command.dist_info -- -- HAS_DIST_INFO_CMD = True --except ImportError: -- """Setuptools version is too old.""" -- -- --ALL_STRING_TYPES = tuple(map(type, ('', b'', u''))) --MIN_NATIVE_SETUPTOOLS_VERSION = 34, 4 --"""Minimal setuptools having good read_configuration implementation.""" -- --# Patch version can be a non integer value, like 'post20190705' --RUNTIME_SETUPTOOLS_VERSION = tuple(map(int, setuptools.__version__.split('.')[:2])) --"""Setuptools imported now.""" -- --READ_CONFIG_SHIM_NEEDED = RUNTIME_SETUPTOOLS_VERSION < MIN_NATIVE_SETUPTOOLS_VERSION -- -- --def str_if_nested_or_str(s): -- """Turn input into a native string if possible.""" -- if isinstance(s, ALL_STRING_TYPES): -- return str(s) -- if isinstance(s, (list, tuple)): -- return type(s)(map(str_if_nested_or_str, s)) -- if isinstance(s, (dict,)): -- return stringify_dict_contents(s) -- return s -- -- --def stringify_dict_contents(dct): -- """Turn dict keys and values into native strings.""" -- return {str_if_nested_or_str(k): str_if_nested_or_str(v) for k, v in dct.items()} -- -- --if not READ_CONFIG_SHIM_NEEDED: -- from setuptools.config import read_configuration, ConfigOptionsHandler -- import setuptools.config -- import setuptools.dist -- -- # Set default value for 'use_scm_version' -- setattr(setuptools.dist.Distribution, 'use_scm_version', False) -- -- # Attach bool parser to 'use_scm_version' option -- class ShimConfigOptionsHandler(ConfigOptionsHandler): -- """Extension class for ConfigOptionsHandler.""" -- -- @property -- def parsers(self): -- """Return an option mapping with default data type parsers.""" -- _orig_parsers = super(ShimConfigOptionsHandler, self).parsers -- return dict(use_scm_version=self._parse_bool, **_orig_parsers) -- -- def parse_section_packages__find(self, section_options): -- find_kwargs = super( -- ShimConfigOptionsHandler, self -- ).parse_section_packages__find(section_options) -- return stringify_dict_contents(find_kwargs) -- -- setuptools.config.ConfigOptionsHandler = ShimConfigOptionsHandler --else: -- """This is a shim for setuptools': operator.gt, -- '<': operator.lt, -- '>=': operator.ge, -- '<=': operator.le, -- '==': operator.eq, -- '!=': operator.ne, -- '': operator.eq, -- }.items(), -- key=lambda i: len(i[0]), -- reverse=True, -- ) -- ) -- -- def is_decimal(s): -- return type(u'')(s).isdecimal() -- -- conditions = map(str.strip, python_requires.split(',')) -- for c in conditions: -- for op_sign, op_func in sorted_operators_map: -- if not c.startswith(op_sign): -- continue -- raw_ver = itertools.takewhile( -- is_decimal, c[len(op_sign) :].strip().split('.') -- ) -- ver = tuple(map(int, raw_ver)) -- yield op_func, ver -- break -- -- def validate_required_python_or_fail(python_requires=None): -- if python_requires is None: -- return -- -- python_version = sys.version_info -- preds = parse_predicates(python_requires) -- for op, v in preds: -- py_ver_slug = python_version[: max(len(v), 3)] -- condition_matches = op(py_ver_slug, v) -- if not condition_matches: -- raise RuntimeError( -- "requires Python '{}' but the running Python is {}".format( -- python_requires, '.'.join(map(str, python_version[:3])) -- ) -- ) -- -- def verify_required_python_runtime(s): -- @functools.wraps(s) -- def sw(**attrs): -- try: -- validate_required_python_or_fail(attrs.get('python_requires')) -- except RuntimeError as re: -- sys.exit('{} {!s}'.format(attrs['name'], re)) -- return s(**attrs) -- -- return sw -- -- setuptools.setup = ignore_unknown_options(setuptools.setup) -- setuptools.setup = verify_required_python_runtime(setuptools.setup) -- -- try: -- from configparser import ConfigParser, NoSectionError -- except ImportError: -- from ConfigParser import ConfigParser, NoSectionError -- -- ConfigParser.read_file = ConfigParser.readfp -- -- def maybe_read_files(d): -- """Read files if the string starts with `file:` marker.""" -- FILE_FUNC_MARKER = 'file:' -- -- d = d.strip() -- if not d.startswith(FILE_FUNC_MARKER): -- return d -- descs = [] -- for fname in map(str.strip, str(d[len(FILE_FUNC_MARKER) :]).split(',')): -- with io.open(fname, encoding='utf-8') as f: -- descs.append(f.read()) -- return ''.join(descs) -- -- def cfg_val_to_list(v): -- """Turn config val to list and filter out empty lines.""" -- return list(filter(bool, map(str.strip, str(v).strip().splitlines()))) -- -- def cfg_val_to_dict(v): -- """Turn config val to dict and filter out empty lines.""" -- return dict( -- map( -- lambda l: list(map(str.strip, l.split('=', 1))), -- filter(bool, map(str.strip, str(v).strip().splitlines())), -- ) -- ) -- -- def cfg_val_to_primitive(v): -- """Parse primitive config val to appropriate data type.""" -- return json.loads(v.strip().lower()) -- -- def read_configuration(filepath): -- """Read metadata and options from setup.cfg located at filepath.""" -- cfg = ConfigParser() -- with io.open(filepath, encoding='utf-8') as f: -- cfg.read_file(f) -- -- md = dict(cfg.items('metadata')) -- for list_key in 'classifiers', 'keywords', 'project_urls': -- try: -- md[list_key] = cfg_val_to_list(md[list_key]) -- except KeyError: -- pass -- try: -- md['long_description'] = maybe_read_files(md['long_description']) -- except KeyError: -- pass -- opt = dict(cfg.items('options')) -- for list_key in 'include_package_data', 'use_scm_version', 'zip_safe': -- try: -- opt[list_key] = cfg_val_to_primitive(opt[list_key]) -- except KeyError: -- pass -- for list_key in 'scripts', 'install_requires', 'setup_requires': -- try: -- opt[list_key] = cfg_val_to_list(opt[list_key]) -- except KeyError: -- pass -- try: -- opt['package_dir'] = cfg_val_to_dict(opt['package_dir']) -- except KeyError: -- pass -- try: -- opt_package_data = dict(cfg.items('options.package_data')) -- if not opt_package_data.get('', '').strip(): -- opt_package_data[''] = opt_package_data['*'] -- del opt_package_data['*'] -- except (KeyError, NoSectionError): -- opt_package_data = {} -- try: -- opt_extras_require = dict(cfg.items('options.extras_require')) -- opt['extras_require'] = {} -- for k, v in opt_extras_require.items(): -- opt['extras_require'][k] = cfg_val_to_list(v) -- except NoSectionError: -- pass -- opt['package_data'] = {} -- for k, v in opt_package_data.items(): -- opt['package_data'][k] = cfg_val_to_list(v) -- try: -- opt_exclude_package_data = dict(cfg.items('options.exclude_package_data')) -- if ( -- not opt_exclude_package_data.get('', '').strip() -- and '*' in opt_exclude_package_data -- ): -- opt_exclude_package_data[''] = opt_exclude_package_data['*'] -- del opt_exclude_package_data['*'] -- except NoSectionError: -- pass -- else: -- opt['exclude_package_data'] = {} -- for k, v in opt_exclude_package_data.items(): -- opt['exclude_package_data'][k] = cfg_val_to_list(v) -- cur_pkgs = opt.get('packages', '').strip() -- if '\n' in cur_pkgs: -- opt['packages'] = cfg_val_to_list(opt['packages']) -- elif cur_pkgs.startswith('find:'): -- opt_packages_find = stringify_dict_contents( -- dict(cfg.items('options.packages.find')) -- ) -- opt['packages'] = setuptools.find_packages(**opt_packages_find) -- return {'metadata': md, 'options': opt} -- -- --def cut_local_version_on_upload(version): -- """Generate a PEP440 local version if uploading to PyPI.""" -- import os -- import setuptools_scm.version # only present during setup time -- -- IS_PYPI_UPLOAD = os.getenv('PYPI_UPLOAD') == 'true' # set in tox.ini -- return ( -- '' -- if IS_PYPI_UPLOAD -- else setuptools_scm.version.get_local_node_and_date(version) +@@ -0,0 +1,29 @@ ++#! /usr/bin/env python ++# Copyright (c) 2019 Red Hat, Inc. ++# Copyright (c) 2015-2018 Cisco Systems, Inc. ++# ++# Permission is hereby granted, free of charge, to any person obtaining a copy ++# of this software and associated documentation files (the "Software"), to ++# deal in the Software without restriction, including without limitation the ++# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++# sell copies of the Software, and to permit persons to whom the Software is ++# furnished to do so, subject to the following conditions: ++# ++# The above copyright notice and this permission notice shall be included in ++# all copies or substantial portions of the Software. ++# ++# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++# DEALINGS IN THE SOFTWARE. ++"""Molecule distribution package setuptools installer.""" ++ ++import setuptools ++ +if __name__ == "__main__": + setuptools.setup( + use_scm_version=True, setup_requires=["setuptools_scm"], - ) -- -- --if HAS_DIST_INFO_CMD: -- -- class patched_dist_info(setuptools.command.dist_info.dist_info): -- def run(self): -- self.egg_base = str_if_nested_or_str(self.egg_base) -- return setuptools.command.dist_info.dist_info.run(self) -- -- --declarative_setup_params = read_configuration('setup.cfg') --"""Declarative metadata and options as read by setuptools.""" -- -- --setup_params = {} --"""Explicit metadata for passing into setuptools.setup() call.""" -- --setup_params = dict(setup_params, **declarative_setup_params['metadata']) --setup_params = dict(setup_params, **declarative_setup_params['options']) -- --if HAS_DIST_INFO_CMD: -- setup_params['cmdclass'] = {'dist_info': patched_dist_info} -- --setup_params['use_scm_version'] = {'local_scheme': cut_local_version_on_upload} -- --# Patch incorrectly decoded package_dir option --# ``egg_info`` demands native strings failing with unicode under Python 2 --# Ref https://github.com/pypa/setuptools/issues/1136 --setup_params = stringify_dict_contents(setup_params) -- -- --__name__ == '__main__' and setuptools.setup(**setup_params) ++ )