Address no-else-return.

This commit is contained in:
Felix Fontein 2025-10-11 15:03:15 +02:00
parent e3b07ed6b2
commit f9cd56a985
24 changed files with 119 additions and 158 deletions

View File

@ -384,7 +384,6 @@ disable=raw-checker-failed,
consider-using-with, consider-using-with,
fixme, fixme,
import-error, # TODO figure out why pylint cannot find the module import-error, # TODO figure out why pylint cannot find the module
no-else-return,
no-member, no-member,
no-name-in-module, # TODO figure out why pylint cannot find the module no-name-in-module, # TODO figure out why pylint cannot find the module
not-an-iterable, # TODO: needs better typing info not-an-iterable, # TODO: needs better typing info

View File

@ -349,7 +349,6 @@ class Connection(ConnectionBase):
) >= LooseVersion("1.7"): ) >= LooseVersion("1.7"):
# Support for specifying the exec user was added in docker 1.7 # Support for specifying the exec user was added in docker 1.7
return self.remote_user return self.remote_user
else:
self.remote_user = None self.remote_user = None
actual_user = self._get_docker_remote_user() actual_user = self._get_docker_remote_user()
if actual_user != self.get_option("remote_user"): if actual_user != self.get_option("remote_user"):
@ -357,12 +356,11 @@ class Connection(ConnectionBase):
f'docker {self.docker_version} does not support remote_user, using container default: {actual_user or "?"}' f'docker {self.docker_version} does not support remote_user, using container default: {actual_user or "?"}'
) )
return actual_user return actual_user
elif self._display.verbosity > 2: if self._display.verbosity > 2:
# Since we are not setting the actual_user, look it up so we have it for logging later # Since we are not setting the actual_user, look it up so we have it for logging later
# Only do this if display verbosity is high enough that we'll need the value # Only do this if display verbosity is high enough that we'll need the value
# This saves overhead from calling into docker when we do not need to. # This saves overhead from calling into docker when we do not need to.
return self._get_docker_remote_user() return self._get_docker_remote_user()
else:
return None return None
def _connect(self, port=None): def _connect(self, port=None):
@ -487,7 +485,6 @@ class Connection(ConnectionBase):
import ntpath import ntpath
return ntpath.normpath(remote_path) return ntpath.normpath(remote_path)
else:
if not remote_path.startswith(os.path.sep): if not remote_path.startswith(os.path.sep):
remote_path = os.path.join(os.path.sep, remote_path) remote_path = os.path.join(os.path.sep, remote_path)
return os.path.normpath(remote_path) return os.path.normpath(remote_path)

View File

@ -369,7 +369,6 @@ class Connection(ConnectionBase):
import ntpath import ntpath
return ntpath.normpath(remote_path) return ntpath.normpath(remote_path)
else:
if not remote_path.startswith(os.path.sep): if not remote_path.startswith(os.path.sep):
remote_path = os.path.join(os.path.sep, remote_path) remote_path = os.path.join(os.path.sep, remote_path)
return os.path.normpath(remote_path) return os.path.normpath(remote_path)

View File

@ -217,11 +217,11 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
if daemon_env == "require": if daemon_env == "require":
display.warning(f"{warning_prefix}: host will be skipped") display.warning(f"{warning_prefix}: host will be skipped")
return True return True
else: # 'optional', 'optional-silently'
if daemon_env == "optional": if daemon_env == "optional":
display.warning( display.warning(
f"{warning_prefix}: host will lack dm_DOCKER_xxx variables" f"{warning_prefix}: host will lack dm_DOCKER_xxx variables"
) )
# daemon_env is 'optional-silently'
return False return False
def _populate(self): def _populate(self):

View File

@ -278,7 +278,6 @@ class APIClient(_Session, DaemonApiMixin):
if kwargs.get("versioned_api", True): if kwargs.get("versioned_api", True):
return f"{self.base_url}/v{self._version}{pathfmt.format(*args)}" return f"{self.base_url}/v{self._version}{pathfmt.format(*args)}"
else:
return f"{self.base_url}{pathfmt.format(*args)}" return f"{self.base_url}{pathfmt.format(*args)}"
def _raise_for_status(self, response): def _raise_for_status(self, response):
@ -427,7 +426,6 @@ class APIClient(_Session, DaemonApiMixin):
if stream: if stream:
return gen return gen
else:
try: try:
# Wait for all the frames, concatenate them, and return the result # Wait for all the frames, concatenate them, and return the result
return consume_socket_output(gen, demux=demux) return consume_socket_output(gen, demux=demux)
@ -484,7 +482,6 @@ class APIClient(_Session, DaemonApiMixin):
sep = b"" sep = b""
if stream: if stream:
return self._multiplexed_response_stream_helper(res) return self._multiplexed_response_stream_helper(res)
else:
return sep.join(list(self._multiplexed_buffer_helper(res))) return sep.join(list(self._multiplexed_buffer_helper(res)))
def _unmount(self, *args): def _unmount(self, *args):
@ -497,7 +494,6 @@ class APIClient(_Session, DaemonApiMixin):
except _InvalidSchema as e: except _InvalidSchema as e:
if self._custom_adapter: if self._custom_adapter:
return self._custom_adapter return self._custom_adapter
else:
raise e raise e
@property @property

View File

@ -68,7 +68,6 @@ def home_dir():
""" """
if IS_WINDOWS_PLATFORM: if IS_WINDOWS_PLATFORM:
return os.environ.get("USERPROFILE", "") return os.environ.get("USERPROFILE", "")
else:
return os.path.expanduser("~") return os.path.expanduser("~")

View File

@ -90,7 +90,6 @@ def split_port(port):
if external is not None and len(internal) != len(external): if external is not None and len(internal) != len(external):
raise ValueError("Port ranges don't match in length") raise ValueError("Port ranges don't match in length")
return internal, external return internal, external
else:
if not external: if not external:
external = [None] * len(internal) external = [None] * len(internal)
elif len(internal) != len(external): elif len(internal) != len(external):

View File

@ -111,7 +111,6 @@ def frames_iter(socket, tty):
""" """
if tty: if tty:
return ((STDOUT, frame) for frame in frames_iter_tty(socket)) return ((STDOUT, frame) for frame in frames_iter_tty(socket))
else:
return frames_iter_no_tty(socket) return frames_iter_no_tty(socket)
@ -194,7 +193,6 @@ def demux_adaptor(stream_id, data):
""" """
if stream_id == STDOUT: if stream_id == STDOUT:
return (data, None) return (data, None)
elif stream_id == STDERR: if stream_id == STDERR:
return (None, data) return (None, data)
else:
raise ValueError(f"{stream_id} is not a valid stream") raise ValueError(f"{stream_id} is not a valid stream")

View File

@ -75,9 +75,8 @@ def compare_version(v1, v2):
s2 = StrictVersion(v2) s2 = StrictVersion(v2)
if s1 == s2: if s1 == s2:
return 0 return 0
elif s1 > s2: if s1 > s2:
return -1 return -1
else:
return 1 return 1

View File

@ -133,10 +133,9 @@ def parse_line(line, logrus_mode=False):
key.append(cur) key.append(cur)
parser.next() parser.next()
return _Mode.KEY return _Mode.KEY
elif cur == "=": if cur == "=":
parser.next() parser.next()
return _Mode.EQUAL return _Mode.EQUAL
else:
if logrus_mode: if logrus_mode:
raise InvalidLogFmt('Key must always be followed by "=" in logrus mode') raise InvalidLogFmt('Key must always be followed by "=" in logrus mode')
handle_kv(has_no_value=True) handle_kv(has_no_value=True)
@ -148,10 +147,9 @@ def parse_line(line, logrus_mode=False):
value.append(cur) value.append(cur)
parser.next() parser.next()
return _Mode.IDENT_VALUE return _Mode.IDENT_VALUE
elif cur == '"': if cur == '"':
parser.next() parser.next()
return _Mode.QUOTED_VALUE return _Mode.QUOTED_VALUE
else:
handle_kv() handle_kv()
parser.next() parser.next()
return _Mode.GARBAGE return _Mode.GARBAGE
@ -161,7 +159,6 @@ def parse_line(line, logrus_mode=False):
value.append(cur) value.append(cur)
parser.next() parser.next()
return _Mode.IDENT_VALUE return _Mode.IDENT_VALUE
else:
handle_kv() handle_kv()
parser.next() parser.next()
return _Mode.GARBAGE return _Mode.GARBAGE
@ -182,13 +179,12 @@ def parse_line(line, logrus_mode=False):
value.append(parser.parse_unicode_sequence()) value.append(parser.parse_unicode_sequence())
parser.next() parser.next()
return _Mode.QUOTED_VALUE return _Mode.QUOTED_VALUE
elif cur == '"': if cur == '"':
handle_kv() handle_kv()
parser.next() parser.next()
return _Mode.GARBAGE return _Mode.GARBAGE
elif cur < " ": if cur < " ":
raise InvalidLogFmt("Control characters in quoted string are not allowed") raise InvalidLogFmt("Control characters in quoted string are not allowed")
else:
value.append(cur) value.append(cur)
parser.next() parser.next()
return _Mode.QUOTED_VALUE return _Mode.QUOTED_VALUE

View File

@ -436,7 +436,6 @@ def _parse_port_range(range_or_port, module):
if end < start: if end < start:
module.fail_json(msg=f'Invalid port range: "{range_or_port}"') module.fail_json(msg=f'Invalid port range: "{range_or_port}"')
return list(range(start, end + 1)) return list(range(start, end + 1))
else:
try: try:
return [int(range_or_port)] return [int(range_or_port)]
except ValueError: except ValueError:

View File

@ -347,7 +347,6 @@ class DockerAPIEngineDriver(EngineDriver):
) )
output = client._get_result_tty(False, res, config["Config"]["Tty"]) output = client._get_result_tty(False, res, config["Config"]["Tty"])
return output, True return output, True
else:
return f"Result logged using `{logging_driver}` driver", False return f"Result logged using `{logging_driver}` driver", False
def update_container(self, client, container_id, update_parameters): def update_container(self, client, container_id, update_parameters):

View File

@ -85,7 +85,6 @@ class DockerSocketHandlerBase:
if "OpenSSL.SSL.ZeroReturnError" in str(type(e)): if "OpenSSL.SSL.ZeroReturnError" in str(type(e)):
self._eof = True self._eof = True
return return
else:
raise raise
elif isinstance(self._sock, getattr(pysocket, "SocketIO")): elif isinstance(self._sock, getattr(pysocket, "SocketIO")):
data = self._sock.read() data = self._sock.read()

View File

@ -67,7 +67,6 @@ def write_to_socket(sock, data):
# WrappedSocket (urllib3/contrib/pyopenssl) does not have `send`, but # WrappedSocket (urllib3/contrib/pyopenssl) does not have `send`, but
# only `sendall`, which uses `_send_until_done` under the hood. # only `sendall`, which uses `_send_until_done` under the hood.
return sock._send_until_done(data) return sock._send_until_done(data)
elif hasattr(sock, "send"): if hasattr(sock, "send"):
return sock.send(data) return sock.send(data)
else:
return os.write(sock.fileno(), data) return os.write(sock.fileno(), data)

View File

@ -74,22 +74,18 @@ class AnsibleDockerSwarmClient(AnsibleDockerClient):
swarm_info = json.loads(json_str) swarm_info = json.loads(json_str)
if swarm_info["Swarm"]["NodeID"]: if swarm_info["Swarm"]["NodeID"]:
return True return True
if swarm_info["Swarm"]["LocalNodeState"] in ( return swarm_info["Swarm"]["LocalNodeState"] in (
"active", "active",
"pending", "pending",
"locked", "locked",
): )
return True
return False return False
else:
try: try:
node_info = self.get_node_inspect(node_id=node_id) node_info = self.get_node_inspect(node_id=node_id)
except APIError: except APIError:
return return
if node_info["ID"] is not None: return node_info["ID"] is not None
return True
return False
def check_if_swarm_manager(self): def check_if_swarm_manager(self):
""" """

View File

@ -98,9 +98,8 @@ def sanitize_result(data):
""" """
if isinstance(data, dict): if isinstance(data, dict):
return dict((k, sanitize_result(v)) for k, v in data.items()) return dict((k, sanitize_result(v)) for k, v in data.items())
elif isinstance(data, (list, tuple)): if isinstance(data, (list, tuple)):
return [sanitize_result(v) for v in data] return [sanitize_result(v) for v in data]
else:
return data return data
@ -194,10 +193,9 @@ def compare_generic(a, b, method, datatype):
# Do proper comparison (both objects not None) # Do proper comparison (both objects not None)
if datatype == "value": if datatype == "value":
return a == b return a == b
elif datatype == "list": if datatype == "list":
if method == "strict": if method == "strict":
return a == b return a == b
else:
i = 0 i = 0
for v in a: for v in a:
while i < len(b) and b[i] != v: while i < len(b) and b[i] != v:
@ -206,19 +204,17 @@ def compare_generic(a, b, method, datatype):
return False return False
i += 1 i += 1
return True return True
elif datatype == "dict": if datatype == "dict":
if method == "strict": if method == "strict":
return a == b return a == b
else:
return compare_dict_allow_more_present(a, b) return compare_dict_allow_more_present(a, b)
elif datatype == "set": if datatype == "set":
set_a = set(a) set_a = set(a)
set_b = set(b) set_b = set(b)
if method == "strict": if method == "strict":
return set_a == set_b return set_a == set_b
else:
return set_b >= set_a return set_b >= set_a
elif datatype == "set(dict)": if datatype == "set(dict)":
for av in a: for av in a:
found = False found = False
for bv in b: for bv in b:
@ -335,9 +331,8 @@ def clean_dict_booleans_for_docker_api(data, allow_sequences=False):
def sanitize(value): def sanitize(value):
if value is True: if value is True:
return "true" return "true"
elif value is False: if value is False:
return "false" return "false"
else:
return str(value) return str(value)
result = dict() result = dict()

View File

@ -343,31 +343,31 @@ def retrieve_diff(
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(directory)" diff["before"] = "(directory)"
return return
elif regular_stat["mode"] & (1 << (32 - 4)) != 0: if regular_stat["mode"] & (1 << (32 - 4)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(temporary file)" diff["before"] = "(temporary file)"
return return
elif regular_stat["mode"] & (1 << (32 - 5)) != 0: if regular_stat["mode"] & (1 << (32 - 5)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = link_target diff["before"] = link_target
return return
elif regular_stat["mode"] & (1 << (32 - 6)) != 0: if regular_stat["mode"] & (1 << (32 - 6)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(device)" diff["before"] = "(device)"
return return
elif regular_stat["mode"] & (1 << (32 - 7)) != 0: if regular_stat["mode"] & (1 << (32 - 7)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(named pipe)" diff["before"] = "(named pipe)"
return return
elif regular_stat["mode"] & (1 << (32 - 8)) != 0: if regular_stat["mode"] & (1 << (32 - 8)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(socket)" diff["before"] = "(socket)"
return return
elif regular_stat["mode"] & (1 << (32 - 11)) != 0: if regular_stat["mode"] & (1 << (32 - 11)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(character device)" diff["before"] = "(character device)"
return return
elif regular_stat["mode"] & (1 << (32 - 13)) != 0: if regular_stat["mode"] & (1 << (32 - 13)) != 0:
diff["before_header"] = container_path diff["before_header"] = container_path
diff["before"] = "(unknown filesystem object)" diff["before"] = "(unknown filesystem object)"
return return

View File

@ -271,7 +271,6 @@ class DockerHostManager(DockerBaseClass):
try: try:
if self.verbose_output: if self.verbose_output:
return self.client.df() return self.client.df()
else:
return dict(LayersSize=self.client.df()["LayersSize"]) return dict(LayersSize=self.client.df()["LayersSize"])
except APIError as exc: except APIError as exc:
self.client.fail(f"Error inspecting docker host: {exc}") self.client.fail(f"Error inspecting docker host: {exc}")

View File

@ -656,12 +656,11 @@ class ImageManager(DockerBaseClass):
if archived is None: if archived is None:
return build_msg("since none present") return build_msg("since none present")
elif ( if (
current_image_id == api_image_id(archived.image_id) current_image_id == api_image_id(archived.image_id)
and [current_image_name] == archived.repo_tags and [current_image_name] == archived.repo_tags
): ):
return None return None
else:
name = ", ".join(archived.repo_tags) name = ", ".join(archived.repo_tags)
return build_msg( return build_msg(
@ -1076,7 +1075,6 @@ class ImageManager(DockerBaseClass):
if is_image_name_id(self.name): if is_image_name_id(self.name):
return self.client.find_image_by_id(self.name, accept_missing_image=True) return self.client.find_image_by_id(self.name, accept_missing_image=True)
else:
return self.client.find_image(self.name, self.tag) return self.client.find_image(self.name, self.tag)

View File

@ -359,7 +359,7 @@ def validate_cidr(cidr):
""" """
if CIDR_IPV4.match(cidr): if CIDR_IPV4.match(cidr):
return "ipv4" return "ipv4"
elif CIDR_IPV6.match(cidr): if CIDR_IPV6.match(cidr):
return "ipv6" return "ipv6"
raise ValueError(f'"{cidr}" is not a valid CIDR') raise ValueError(f'"{cidr}" is not a valid CIDR')

View File

@ -196,7 +196,6 @@ def docker_service_inspect(client, service_name):
rc, out, err = client.call_cli("service", "inspect", service_name) rc, out, err = client.call_cli("service", "inspect", service_name)
if rc != 0: if rc != 0:
return None return None
else:
ret = json.loads(out)[0]["Spec"] ret = json.loads(out)[0]["Spec"]
return ret return ret

View File

@ -932,7 +932,6 @@ def get_docker_environment(env, env_files):
if not env_list: if not env_list:
if env is not None or env_files is not None: if env is not None or env_files is not None:
return [] return []
else:
return None return None
return sorted(env_list) return sorted(env_list)
@ -992,14 +991,13 @@ def get_docker_networks(networks, network_ids):
def get_nanoseconds_from_raw_option(name, value): def get_nanoseconds_from_raw_option(name, value):
if value is None: if value is None:
return None return None
elif isinstance(value, int): if isinstance(value, int):
return value return value
elif isinstance(value, str): if isinstance(value, str):
try: try:
return int(value) return int(value)
except ValueError: except ValueError:
return convert_duration_to_nanosecond(value) return convert_duration_to_nanosecond(value)
else:
raise ValueError( raise ValueError(
f"Invalid type for {name} {value} ({type(value)}). Only string or int allowed." f"Invalid type for {name} {value} ({type(value)}). Only string or int allowed."
) )
@ -1080,7 +1078,6 @@ def has_list_changed(new_list, old_list, sort_lists=True, sort_key=None):
old_item_casted = new_item_type(old_item) old_item_casted = new_item_type(old_item)
if new_item != old_item_casted: if new_item != old_item_casted:
return True return True
else:
continue continue
except UnicodeEncodeError: except UnicodeEncodeError:
# Fallback to assuming the strings are different # Fallback to assuming the strings are different

View File

@ -27,15 +27,15 @@ def make_unsafe(value):
if isinstance(value, Mapping): if isinstance(value, Mapping):
return dict((make_unsafe(key), make_unsafe(val)) for key, val in value.items()) return dict((make_unsafe(key), make_unsafe(val)) for key, val in value.items())
elif isinstance(value, Set): if isinstance(value, Set):
return set(make_unsafe(elt) for elt in value) return set(make_unsafe(elt) for elt in value)
elif is_sequence(value): if is_sequence(value):
return type(value)(make_unsafe(elt) for elt in value) return type(value)(make_unsafe(elt) for elt in value)
elif isinstance(value, bytes): if isinstance(value, bytes):
if _RE_TEMPLATE_CHARS_BYTES.search(value): if _RE_TEMPLATE_CHARS_BYTES.search(value):
value = _make_unsafe(value) value = _make_unsafe(value)
return value return value
elif isinstance(value, str): if isinstance(value, str):
if _RE_TEMPLATE_CHARS.search(value): if _RE_TEMPLATE_CHARS.search(value):
value = _make_unsafe(value) value = _make_unsafe(value)
return value return value

View File

@ -500,14 +500,13 @@ class TCPSocketStreamTest(unittest.TestCase):
path = self.path.split("/")[-1] path = self.path.split("/")[-1]
if path == "tty": if path == "tty":
return stdout_data + stderr_data return stdout_data + stderr_data
elif path == "no-tty": if path == "no-tty":
data = b"" data = b""
data += self.frame_header(1, stdout_data) data += self.frame_header(1, stdout_data)
data += stdout_data data += stdout_data
data += self.frame_header(2, stderr_data) data += self.frame_header(2, stderr_data)
data += stderr_data data += stderr_data
return data return data
else:
raise NotImplementedError(f"Unknown path {path}") raise NotImplementedError(f"Unknown path {path}")
@staticmethod @staticmethod