diff --git a/lib/ansible/galaxy/collection.py b/lib/ansible/galaxy/collection.py index 592aa70af90..235bdaecad3 100644 --- a/lib/ansible/galaxy/collection.py +++ b/lib/ansible/galaxy/collection.py @@ -39,7 +39,6 @@ display = Display() MANIFEST_FORMAT = 1 -@six.python_2_unicode_compatible class CollectionRequirement: _FILE_MAPPING = [(b'MANIFEST.json', 'manifest_file'), (b'FILES.json', 'files_file')] @@ -82,7 +81,10 @@ class CollectionRequirement: self.add_requirement(parent, requirement) def __str__(self): - return to_text("%s.%s" % (self.namespace, self.name)) + return to_native("%s.%s" % (self.namespace, self.name)) + + def __unicode__(self): + return u"%s.%s" % (self.namespace, self.name) @property def latest_version(self): @@ -109,16 +111,17 @@ class CollectionRequirement: force_flag = '--force-with-deps' if parent else '--force' version = self.latest_version if self.latest_version != '*' else 'unknown' msg = "Cannot meet requirement %s:%s as it is already installed at version '%s'. Use %s to overwrite" \ - % (str(self), requirement, version, force_flag) + % (to_text(self), requirement, version, force_flag) raise AnsibleError(msg) elif parent is None: - msg = "Cannot meet requirement %s for dependency %s" % (requirement, str(self)) + msg = "Cannot meet requirement %s for dependency %s" % (requirement, to_text(self)) else: - msg = "Cannot meet dependency requirement '%s:%s' for collection %s" % (str(self), requirement, parent) + msg = "Cannot meet dependency requirement '%s:%s' for collection %s" \ + % (to_text(self), requirement, parent) collection_source = to_text(self.b_path, nonstring='passthru') or self.source req_by = "\n".join( - "\t%s - '%s:%s'" % (to_text(p) if p else 'base', str(self), r) + "\t%s - '%s:%s'" % (to_text(p) if p else 'base', to_text(self), r) for p, r in self.required_by ) @@ -132,14 +135,13 @@ class CollectionRequirement: def install(self, path, b_temp_path): if self.skip: - display.display("Skipping '%s' as it is already installed" % str(self)) + display.display("Skipping '%s' as it is already installed" % to_text(self)) return # Install if it is not collection_path = os.path.join(path, self.namespace, self.name) b_collection_path = to_bytes(collection_path, errors='surrogate_or_strict') - display.display("Installing '%s:%s' to '%s'" % (str(self), self.latest_version, - collection_path)) + display.display("Installing '%s:%s' to '%s'" % (to_text(self), self.latest_version, collection_path)) if self.b_path is None: download_url = self._galaxy_info['download_url'] @@ -455,7 +457,7 @@ def install_collections(collections, output_path, servers, validate_certs, ignor except AnsibleError as err: if ignore_errors: display.warning("Failed to install collection %s but skipping due to --ignore-errors being set. " - "Error: %s" % (str(collection), to_text(err))) + "Error: %s" % (to_text(collection), to_text(err))) else: raise @@ -814,7 +816,7 @@ def _find_existing_collections(path): b_collection_path = os.path.join(b_namespace_path, b_collection) if os.path.isdir(b_collection_path): req = CollectionRequirement.from_path(b_collection_path, True, False) - display.vvv("Found installed collection %s:%s at '%s'" % (str(req), req.latest_version, + display.vvv("Found installed collection %s:%s at '%s'" % (to_text(req), req.latest_version, to_text(b_collection_path))) collections.append(req) @@ -830,7 +832,7 @@ def _build_dependency_map(collections, existing_collections, b_temp_path, server _get_collection_info(dependency_map, existing_collections, name, version, source, b_temp_path, servers, validate_certs, (force or force_deps)) - checked_parents = set([str(c) for c in dependency_map.values() if c.skip]) + checked_parents = set([to_text(c) for c in dependency_map.values() if c.skip]) while len(dependency_map) != len(checked_parents): while not no_deps: # Only parse dependencies if no_deps was not set parents_to_check = set(dependency_map.keys()).difference(checked_parents) @@ -881,7 +883,7 @@ def _get_collection_info(dep_map, existing_collections, collection, requirement, if b_tar_path: req = CollectionRequirement.from_tar(b_tar_path, validate_certs, force, parent=parent) - collection_name = str(req) + collection_name = to_text(req) if collection_name in dep_map: collection_info = dep_map[collection_name] collection_info.add_requirement(None, req.latest_version) @@ -897,13 +899,13 @@ def _get_collection_info(dep_map, existing_collections, collection, requirement, collection_info = CollectionRequirement.from_name(collection, servers, requirement, validate_certs, force, parent=parent) - existing = [c for c in existing_collections if str(c) == str(collection_info)] + existing = [c for c in existing_collections if to_text(c) == to_text(collection_info)] if existing and not collection_info.force: # Test that the installed collection fits the requirement - existing[0].add_requirement(str(collection_info), requirement) + existing[0].add_requirement(to_text(collection_info), requirement) collection_info = existing[0] - dep_map[str(collection_info)] = collection_info + dep_map[to_text(collection_info)] = collection_info def _urljoin(*args):