Hello community, here is the log from the commit of package python-pymod2pkg for openSUSE:Factory checked in at 2017-09-12 19:58:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pymod2pkg (Old) and /work/SRC/openSUSE:Factory/.python-pymod2pkg.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pymod2pkg" Tue Sep 12 19:58:15 2017 rev:7 rq:523713 version:0.9.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pymod2pkg/python-pymod2pkg.changes 2017-08-02 11:27:52.400678687 +0200 +++ /work/SRC/openSUSE:Factory/.python-pymod2pkg.new/python-pymod2pkg.changes 2017-09-12 19:58:17.998568522 +0200 @@ -1,0 +2,11 @@ +Tue Sep 12 12:51:29 UTC 2017 - cloud-de...@suse.de + +- update to version 0.9.0 + - Added name conversion support for tempest-plugin + - Support FWaaS/VPNaaS horizon ui/dashboard plugins on SUSE + - Add mapping of PyJWT for RDO + - Add mapping of tempest-horizon for RDO + - Add support for python3 packages + - Updated from global requirements + +------------------------------------------------------------------- Old: ---- pymod2pkg-0.8.3.tar.gz New: ---- pymod2pkg-0.9.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pymod2pkg.spec ++++++ --- /var/tmp/diff_new_pack.Dz3pjr/_old 2017-09-12 19:58:18.538492603 +0200 +++ /var/tmp/diff_new_pack.Dz3pjr/_new 2017-09-12 19:58:18.538492603 +0200 @@ -18,7 +18,7 @@ %global sname pymod2pkg Name: python-pymod2pkg -Version: 0.8.3 +Version: 0.9.0 Release: 0 Summary: OpenStack Packaging - python module name to package name map License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.Dz3pjr/_old 2017-09-12 19:58:18.574487542 +0200 +++ /var/tmp/diff_new_pack.Dz3pjr/_new 2017-09-12 19:58:18.578486980 +0200 @@ -1,6 +1,6 @@ <services> <service mode="disabled" name="renderspec"> - <param name="input-template">/home/tom/devel/openstack/rpm-packaging/openstack/pymod2pkg/pymod2pkg.spec.j2</param> + <param name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/openstack/pymod2pkg/pymod2pkg.spec.j2</param> <param name="output-name">python-pymod2pkg.spec</param> <param name="requirements">https://raw.githubusercontent.com/openstack/rpm-packaging/master/global-requirements.txt</param> <param name="changelog-email">cloud-de...@suse.de</param> ++++++ pymod2pkg-0.8.3.tar.gz -> pymod2pkg-0.9.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/AUTHORS new/pymod2pkg-0.9.0/AUTHORS --- old/pymod2pkg-0.8.3/AUTHORS 2017-07-28 14:16:44.000000000 +0200 +++ new/pymod2pkg-0.9.0/AUTHORS 2017-09-12 14:35:43.000000000 +0200 @@ -3,6 +3,7 @@ Alexander Tsamutali <atsamut...@mirantis.com> Andrii Kroshchenko <akroshche...@mirantis.com> Cao Xuan Hoang <hoan...@vn.fujitsu.com> +Chandan Kumar <chku...@redhat.com> Chuck Short <chuck.sh...@canonical.com> Dirk Mueller <d...@dmllr.de> Flavio Percoco <flape...@gmail.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/ChangeLog new/pymod2pkg-0.9.0/ChangeLog --- old/pymod2pkg-0.8.3/ChangeLog 2017-07-28 14:16:44.000000000 +0200 +++ new/pymod2pkg-0.9.0/ChangeLog 2017-09-12 14:35:43.000000000 +0200 @@ -1,6 +1,20 @@ CHANGES ======= +0.9.0 +----- + +* Add mapping of tempest-horizon for RDO +* Add support for python3 packages +* Updated from global requirements +* Added name conversion support for tempest-plugin +* Support FWaaS/VPNaaS horizon ui/dashboard plugins on SUSE + +0.8.4 +----- + +* Add mapping of PyJWT for RDO + 0.8.3 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/PKG-INFO new/pymod2pkg-0.9.0/PKG-INFO --- old/pymod2pkg-0.8.3/PKG-INFO 2017-07-28 14:16:44.000000000 +0200 +++ new/pymod2pkg-0.9.0/PKG-INFO 2017-09-12 14:35:44.000000000 +0200 @@ -1,11 +1,12 @@ Metadata-Version: 1.1 Name: pymod2pkg -Version: 0.8.3 +Version: 0.9.0 Summary: python module name to package name map Home-page: https://docs.openstack.org/pymod2pkg/latest/ Author: OpenStack Author-email: openstack-...@lists.openstack.org License: UNKNOWN +Description-Content-Type: UNKNOWN Description: ======================== Team and repository tags ======================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/pymod2pkg/__init__.py new/pymod2pkg-0.9.0/pymod2pkg/__init__.py --- old/pymod2pkg-0.8.3/pymod2pkg/__init__.py 2017-07-28 14:15:19.000000000 +0200 +++ new/pymod2pkg-0.9.0/pymod2pkg/__init__.py 2017-09-12 14:33:37.000000000 +0200 @@ -22,9 +22,10 @@ class SingleRule(TranslationRule): - def __init__(self, mod, pkg, distmap=None): + def __init__(self, mod, pkg, py3pkg=None, distmap=None): self.mod = mod self.pkg = pkg + self.py3pkg = py3pkg if py3pkg else pkg self.distmap = distmap def __call__(self, mod, dist): @@ -34,7 +35,7 @@ for distrex in self.distmap: if re.match(distrex, dist): return self.distmap[distrex] - return self.pkg + return (self.pkg, self.py3pkg) class MultiRule(TranslationRule): @@ -44,7 +45,8 @@ def __call__(self, mod, dist): if mod in self.mods: - return self.pkgfun(mod) + pkg, pkg3 = self.pkgfun(mod) + return (pkg, pkg3) return None @@ -55,7 +57,8 @@ def __call__(self, mod, dist): if re.match(self.pattern, mod): - return self.pkgfun(mod) + pkg, pkg3 = self.pkgfun(mod) + return (pkg, pkg3) return None @@ -64,71 +67,99 @@ pkg = pkg.replace('_', '-').replace('.', '-').lower() if not pkg.startswith('python-'): pkg = 'python-' + pkg - return pkg + pkg3 = re.sub('python', 'python3', pkg) + return (pkg, pkg3) def default_ubuntu_tr(mod): - return 'python-' + mod.lower() + return ('python-' + mod.lower(), 'python3-' + mod.lower()) def default_suse_tr(mod): - return 'python-' + mod + return ('python2-' + mod, 'python3-' + mod) def openstack_prefix_tr(mod): - return 'openstack-' + mod.lower() + return ('openstack-' + mod.lower(), '') def rdo_horizon_plugins_tr(mod): mod = mod.replace('dashboard', 'ui') - return 'openstack-' + mod + return ('openstack-' + mod, '') def rdo_xstatic_tr(mod): mod = mod.replace('_', '-').replace('.', '-') - return 'python-' + mod + return ('python-' + mod, 'python3-' + mod) + + +def same_name_python3_prefix(mod): + return (mod, 'python3-' + mod) + + +def same_name_python_subst_python3(mod): + pkg3 = re.sub('python', 'python3', mod) + return (mod, pkg3) + + +def subst_python2_python3(mod): + pkg2 = re.sub('python', 'python2', mod) + pkg3 = re.sub('python', 'python3', mod) + return (pkg2, pkg3) + + +def rdo_tempest_plugins_tr(mod): + mod = mod.replace('tempest-plugin', 'tests-tempest') + return ('python-' + mod, 'python3-' + mod) RDO_PKG_MAP = [ # This demonstrates per-dist filter # SingleRule('sphinx', 'python-sphinx', # distmap={'epel-6': 'python-sphinx10'}), - SingleRule('Babel', 'python-babel'), + SingleRule('Babel', 'python-babel', 'python3-babel'), SingleRule('bandit', 'bandit'), - SingleRule('distribute', 'python-setuptools'), - SingleRule('dnspython', 'python-dns'), - SingleRule('google-api-python-client', 'python-google-api-client'), - SingleRule('GitPython', 'GitPython'), - SingleRule('pyOpenSSL', 'pyOpenSSL'), - SingleRule('IPy', 'python-IPy'), - SingleRule('pycrypto', 'python-crypto'), - SingleRule('pyzmq', 'python-zmq'), - SingleRule('mysql-python', 'MySQL-python'), - SingleRule('PyMySQL', 'python-PyMySQL'), - SingleRule('MySQL-python', 'MySQL-python'), - SingleRule('PasteDeploy', 'python-paste-deploy'), - SingleRule('sqlalchemy-migrate', 'python-migrate'), + SingleRule('distribute', 'python-setuptools', 'python3-setuptools'), + SingleRule('dnspython', 'python-dns', 'python3-dns'), + SingleRule('google-api-python-client', 'python-google-api-client', + 'python3-google-api-client'), + SingleRule('GitPython', 'GitPython', 'python3-GitPython'), + SingleRule('pyOpenSSL', 'pyOpenSSL', 'python3-pyOpenSSL'), + SingleRule('IPy', 'python-IPy', 'python-IPy-python3'), + SingleRule('pycrypto', 'python-crypto', 'python3-crypto'), + SingleRule('pyzmq', 'python-zmq', 'python3-zmq'), + SingleRule('mysql-python', 'MySQL-python', 'python3-mysql'), + SingleRule('PyMySQL', 'python-PyMySQL', 'python3-PyMySQL'), + SingleRule('PyJWT', 'python-jwt', 'python3-jwt'), + SingleRule('MySQL-python', 'MySQL-python', 'python3-mysql'), + SingleRule('PasteDeploy', 'python-paste-deploy', 'python3-paste-deploy'), + SingleRule('sqlalchemy-migrate', 'python-migrate', 'python3-migrate'), SingleRule('qpid-python', 'python-qpid'), - SingleRule('nosexcover', 'python-nose-xcover'), - SingleRule('posix_ipc', 'python-posix_ipc'), - SingleRule('oslosphinx', 'python-oslo-sphinx'), - SingleRule('ovs', 'python-openvswitch'), - SingleRule('pyinotify', 'python-inotify'), - SingleRule('pyScss', 'python-scss'), + SingleRule('nosexcover', 'python-nose-xcover', 'python3-nose-xcover.'), + SingleRule('posix_ipc', 'python-posix_ipc', 'python3-posix_ipc'), + SingleRule('oslosphinx', 'python-oslo-sphinx', 'python3-oslo-sphinx'), + SingleRule('ovs', 'python-openvswitch', 'python3-openvswitch'), + SingleRule('pyinotify', 'python-inotify', 'python3-inotify'), + SingleRule('pyScss', 'python-scss', 'python3-scss'), SingleRule('tripleo-incubator', 'openstack-tripleo'), - SingleRule('pika-pool', 'python-pika_pool'), - SingleRule('suds-jurko', 'python-suds'), - SingleRule('supervisor', 'supervisor'), - SingleRule('wsgi_intercept', 'python-wsgi_intercept'), - SingleRule('Sphinx', 'python-sphinx'), - SingleRule('xattr', 'pyxattr'), - SingleRule('XStatic-term.js', 'python-XStatic-termjs'), + SingleRule('pika-pool', 'python-pika_pool', 'python3-pika_pool'), + SingleRule('suds-jurko', 'python-suds', 'python3-suds'), + SingleRule('supervisor', 'supervisor', 'python3-supervisor'), + SingleRule('wsgi_intercept', 'python-wsgi_intercept', + 'python3-wsgi_intercept'), + SingleRule('Sphinx', 'python-sphinx', 'python3-sphinx'), + SingleRule('xattr', 'pyxattr', 'python3-pyxattr'), + SingleRule('XStatic-term.js', 'python-XStatic-termjs', + 'python3-XStatic-termjs'), SingleRule('horizon', 'openstack-dashboard'), SingleRule('networking-vsphere', 'openstack-neutron-vsphere'), + SingleRule('m2crypto', 'm2crypto'), + SingleRule('libvirt-python', 'libvirt-python', 'libvirt-python3'), + SingleRule('tempest-horizon', 'python-horizon-tests-tempest'), MultiRule( - mods=['PyYAML', 'm2crypto', 'numpy', 'pyflakes', 'pylint', 'pyparsing', - 'pystache', 'pytz', 'pysendfile', 'libvirt-python'], - pkgfun=lambda x: x), + mods=['PyYAML', 'numpy', 'pyflakes', 'pylint', 'pyparsing', + 'pystache', 'pytz', 'pysendfile'], + pkgfun=same_name_python3_prefix), # OpenStack services MultiRule( # keep lists in alphabetic order @@ -146,7 +177,9 @@ # Horizon plugins (normalized to openstack-<project>-ui) RegexRule(pattern=r'\w+-(dashboard|ui)', pkgfun=rdo_horizon_plugins_tr), # XStatic projects (name is python-pypi_name, no lowercase conversion) - RegexRule(pattern=r'^XStatic.*', pkgfun=rdo_xstatic_tr) + RegexRule(pattern=r'^XStatic.*', pkgfun=rdo_xstatic_tr), + # Tempest plugins (normalized to python-<project>-tests-tempest) + RegexRule(pattern=r'\w+-tempest-plugin', pkgfun=rdo_tempest_plugins_tr) ] @@ -156,7 +189,7 @@ mods=['ansible', 'libvirt-python', 'python-ldap'], - pkgfun=lambda x: x), + pkgfun=same_name_python3_prefix), # OpenStack services MultiRule( # keep lists in alphabetic order @@ -180,7 +213,7 @@ 'openstack', 'sahara', 'scci', 'searchlight', 'senlin', 'smaug', 'solum', 'swift', 'tacker', 'tripleo', 'trove', 'vitrage', 'watcher', 'zaqar')], - pkgfun=lambda x: x), + pkgfun=subst_python2_python3), # ui components SingleRule('horizon', 'openstack-dashboard'), SingleRule('designate-dashboard', 'openstack-horizon-plugin-designate-ui'), @@ -190,8 +223,12 @@ SingleRule('manila-ui', 'openstack-horizon-plugin-manila-ui'), SingleRule('monasca-ui', 'openstack-horizon-plugin-monasca-ui'), SingleRule('murano-dashboard', 'openstack-horizon-plugin-murano-ui'), + SingleRule('neutron-fwaas-dashboard', + 'openstack-horizon-plugin-neutron-fwaas-ui'), SingleRule('neutron-lbaas-dashboard', 'openstack-horizon-plugin-neutron-lbaas-ui'), + SingleRule('neutron-vpnaas-dashboard', + 'openstack-horizon-plugin-neutron-vpnaas-ui'), SingleRule('sahara-dashboard', 'openstack-horizon-plugin-sahara-ui'), SingleRule('trove-dashboard', 'openstack-horizon-plugin-trove-ui'), SingleRule('networking-vsphere', 'openstack-neutron-vsphere'), @@ -219,7 +256,7 @@ 'openstack', 'sahara', 'senlin', 'swift', 'trove', 'zaqar')], - pkgfun=lambda x: x), + pkgfun=same_name_python_subst_python3), ] @@ -249,7 +286,7 @@ return default_rdo_tr -def module2package(mod, dist, pkg_map=None): +def module2package(mod, dist, pkg_map=None, py_vers=('py2',)): """Return a corresponding package name for a python module. mod -- python module name @@ -259,22 +296,38 @@ if not pkg_map: pkg_map = get_pkg_map(dist) for rule in pkg_map: - pkg = rule(mod, dist) - if pkg: - return pkg - tr_func = get_default_tr_func(dist) - return tr_func(mod) + pkglist = rule(mod, dist) + if pkglist: + break + else: + tr_func = get_default_tr_func(dist) + pkglist = tr_func(mod) + + if len(py_vers) == 1: + # A single item requested. Not returning a list to keep + # backwards compatibility + if 'py2' in py_vers: + return pkglist[0] + elif 'py3' in py_vers: + return pkglist[1] + else: + output = [] + if 'py2' in py_vers: + output.append(pkglist[0]) + if 'py3' in py_vers: + output.append(pkglist[1]) + return output def module2upstream(mod): - """Return a corresponding OpenStack upstream name for a python module. + """Return a corresponding OpenStack upstream name for a python module. mod -- python module name """ for rule in OPENSTACK_UPSTREAM_PKG_MAP: - pkg = rule(mod, None) - if pkg: - return pkg + pkglist = rule(mod, dist=None) + if pkglist: + return pkglist[0] return mod @@ -288,12 +341,24 @@ default=platform.linux_distribution()[0]) group.add_argument('--upstream', help='map to OpenStack project name', action='store_true') + parser.add_argument('--pyver', help='Python versions to return', + action='append', choices=['py2', 'py3'], default=[]) parser.add_argument('modulename', help='python module name') args = vars(parser.parse_args()) + + pyversions = args['pyver'] if args['pyver'] else ['py2'] + if args['upstream']: print(module2upstream(args['modulename'])) else: - print(module2package(args['modulename'], args['dist'])) + pylist = module2package(args['modulename'], args['dist'], + py_vers=pyversions) + # When only 1 version is requested, it will be returned as a string, + # for backwards compatibility. Else, it will be a list. + if type(pylist) is list: + print(' '.join(pylist)) + else: + print(pylist) # for debugging to call the file directly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/pymod2pkg.egg-info/PKG-INFO new/pymod2pkg-0.9.0/pymod2pkg.egg-info/PKG-INFO --- old/pymod2pkg-0.8.3/pymod2pkg.egg-info/PKG-INFO 2017-07-28 14:16:44.000000000 +0200 +++ new/pymod2pkg-0.9.0/pymod2pkg.egg-info/PKG-INFO 2017-09-12 14:35:43.000000000 +0200 @@ -1,11 +1,12 @@ Metadata-Version: 1.1 Name: pymod2pkg -Version: 0.8.3 +Version: 0.9.0 Summary: python module name to package name map Home-page: https://docs.openstack.org/pymod2pkg/latest/ Author: OpenStack Author-email: openstack-...@lists.openstack.org License: UNKNOWN +Description-Content-Type: UNKNOWN Description: ======================== Team and repository tags ======================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/pymod2pkg.egg-info/pbr.json new/pymod2pkg-0.9.0/pymod2pkg.egg-info/pbr.json --- old/pymod2pkg-0.8.3/pymod2pkg.egg-info/pbr.json 2017-07-28 14:16:44.000000000 +0200 +++ new/pymod2pkg-0.9.0/pymod2pkg.egg-info/pbr.json 2017-09-12 14:35:43.000000000 +0200 @@ -1 +1 @@ -{"git_version": "f1b4a9c", "is_release": true} \ No newline at end of file +{"git_version": "3e85d93", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/test-requirements.txt new/pymod2pkg-0.9.0/test-requirements.txt --- old/pymod2pkg-0.8.3/test-requirements.txt 2017-07-28 14:15:19.000000000 +0200 +++ new/pymod2pkg-0.9.0/test-requirements.txt 2017-09-12 14:33:37.000000000 +0200 @@ -3,7 +3,7 @@ # process, which may cause wedges in the gate later. flake8<2.6.0,>=2.5.4 # MIT testrepository>=0.0.18 # Apache-2.0/BSD -testresources>=0.2.4 # Apache-2.0/BSD +testresources>=2.0.0 # Apache-2.0/BSD testtools>=1.4.0 # MIT sphinx>=1.6.2 # BSD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pymod2pkg-0.8.3/tests.py new/pymod2pkg-0.9.0/tests.py --- old/pymod2pkg-0.8.3/tests.py 2017-07-28 14:15:19.000000000 +0200 +++ new/pymod2pkg-0.9.0/tests.py 2017-09-12 14:33:37.000000000 +0200 @@ -34,25 +34,25 @@ def test_default_translation_suse(self): self.assertEqual(pymod2pkg.module2package('oslo.db', 'suse'), - 'python-oslo.db') + 'python2-oslo.db') self.assertEqual(pymod2pkg.module2package('Babel', 'suse'), - 'python-Babel') + 'python2-Babel') def test_translation_suse(self): self.assertEqual(pymod2pkg.module2package('nova', 'suse'), 'openstack-nova') self.assertEqual(pymod2pkg.module2package('aodhclient', 'suse'), - 'python-aodhclient') + 'python2-aodhclient') self.assertEqual(pymod2pkg.module2package('gnocciclient', 'suse'), - 'python-gnocciclient') + 'python2-gnocciclient') self.assertEqual(pymod2pkg.module2package('python-cinderclient', 'suse'), - 'python-cinderclient') + 'python2-cinderclient') self.assertEqual(pymod2pkg.module2package('python-neutronclient', 'suse'), - 'python-neutronclient') + 'python2-neutronclient') self.assertEqual(pymod2pkg.module2package('Tempest', 'suse'), 'openstack-tempest') @@ -92,17 +92,78 @@ self.assertEqual(pymod2pkg.module2package('zomg-dashboard', 'fedora'), 'openstack-zomg-ui') + def test_translation_tempest_plugins(self): + self.assertEqual(pymod2pkg.module2package('keystone-tempest-plugin', + 'fedora'), + 'python-keystone-tests-tempest') + self.assertEqual(pymod2pkg.module2package('zomg-tempest-plugin', + 'fedora'), 'python-zomg-tests-tempest') + + def test_default_translation_py2py3_suse(self): + self.assertEqual(pymod2pkg.module2package('oslo.db', 'suse', + py_vers=['py2', 'py3']), + ['python2-oslo.db', 'python3-oslo.db']) + self.assertEqual(pymod2pkg.module2package('Babel', 'suse', + py_vers=['py2', 'py3']), + ['python2-Babel', 'python3-Babel']) + + def test_translation_py2py3_suse(self): + self.assertEqual(pymod2pkg.module2package('nova', 'suse', + py_vers=['py2', 'py3']), + ['openstack-nova', '']) + self.assertEqual(pymod2pkg.module2package('aodhclient', + 'suse', py_vers=['py2', 'py3']), + ['python2-aodhclient', 'python3-aodhclient']) + self.assertEqual(pymod2pkg.module2package('gnocciclient', + 'suse', py_vers=['py2', 'py3']), + ['python2-gnocciclient', 'python3-gnocciclient']) + self.assertEqual(pymod2pkg.module2package( + 'python-cinderclient', 'suse', + py_vers=['py2', 'py3']), + ['python2-cinderclient', 'python3-cinderclient']) + self.assertEqual(pymod2pkg.module2package( + 'python-neutronclient', 'suse', + py_vers=['py2', 'py3']), + ['python2-neutronclient', 'python3-neutronclient']) + self.assertEqual(pymod2pkg.module2package('Tempest', 'suse', + py_vers=['py2', 'py3']), + ['openstack-tempest', '']) + + def test_translation_py2py3_ubuntu(self): + self.assertEqual(pymod2pkg.module2package('nova', 'ubuntu', + py_vers=['py2', 'py3']), + ['python-nova', 'python3-nova']) + self.assertEqual(pymod2pkg.module2package('python-cinderclient', + 'ubuntu', py_vers=['py2', 'py3']), + ['python-cinderclient', 'python3-cinderclient']) + self.assertEqual(pymod2pkg.module2package( + 'python-neutronclient', 'ubuntu', + py_vers=['py2', 'py3']), + ['python-neutronclient', 'python3-neutronclient']) + + def test_default_translation_py2py3_rdo(self): + self.assertEqual(pymod2pkg.module2package('oslo.db', 'fedora', + py_vers=['py2', 'py3']), + ['python-oslo-db', 'python3-oslo-db']) + self.assertEqual(pymod2pkg.module2package('Babel', 'fedora', + py_vers=['py2', 'py3']), + ['python-babel', 'python3-babel']) + self.assertEqual(pymod2pkg.module2package('nova', 'fedora', + py_vers=['py2', 'py3']), + ['openstack-nova', '']) + class RegexRuleTests(unittest.TestCase): def test_regex_rule(self): def dummy_tr(mod): mod = mod.replace('dashboard', 'ui') - return "openstack-{}".format(mod) + return "openstack-{}".format(mod), '' rule = pymod2pkg.RegexRule(r'\w+-(dashboard|ui)', dummy_tr) - self.assertEqual(rule('dummy-dashboard', 'rdo'), 'openstack-dummy-ui') - self.assertEqual(rule('dummy-ui', 'rdo'), 'openstack-dummy-ui') + self.assertEqual(rule('dummy-dashboard', 'rdo'), + ('openstack-dummy-ui', '')) + self.assertEqual(rule('dummy-ui', 'rdo'), ('openstack-dummy-ui', '')) if __name__ == '__main__':