Replace for loops with comprehensions

This commit is contained in:
monosans 2021-07-16 10:42:29 +03:00
parent 3a40764194
commit 3d4f58a04e
5 changed files with 13 additions and 20 deletions

View File

@ -98,10 +98,7 @@ class JsonEncoder:
elif isinstance(obj, (datetime, date)): elif isinstance(obj, (datetime, date)):
return obj.isoformat() return obj.isoformat()
elif isinstance(obj, (list, set, tuple)): elif isinstance(obj, (list, set, tuple)):
r = [] return [json.loads(json.dumps(item, cls=JSON)) for item in obj]
for item in obj:
r.append(json.loads(json.dumps(item, cls=JSON)))
return r
else: else:
return obj return obj

View File

@ -131,7 +131,10 @@ def product_name() -> Optional[str]:
def mem_info(): def mem_info():
# This implementation is from https://stackoverflow.com/a/28161352 # This implementation is from https://stackoverflow.com/a/28161352
return dict((i.split()[0].rstrip(':'), int(i.split()[1])) for i in open('/proc/meminfo').readlines()) return {
i.split()[0].rstrip(':'): int(i.split()[1])
for i in open('/proc/meminfo').readlines()
}
def mem_available() -> Optional[str]: def mem_available() -> Optional[str]:

View File

@ -59,9 +59,7 @@ def filter_mirrors_by_region(regions, destination='/etc/pacman.d/mirrorlist', so
:param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States. :param regions: A series of country codes separated by `,`. For instance `SE,US` for sweden and United States.
:type regions: str :type regions: str
""" """
region_list = [] region_list = [f'country={region}' for region in regions.split(',')]
for region in regions.split(','):
region_list.append(f'country={region}')
response = urllib.request.urlopen(urllib.request.Request(f"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on'", headers={'User-Agent': 'ArchInstall'})) response = urllib.request.urlopen(urllib.request.Request(f"https://archlinux.org/mirrorlist/?{'&'.join(region_list)}&protocol=https&protocol=http&ip_version=4&ip_version=6&use_mirror_status=on'", headers={'User-Agent': 'ArchInstall'}))
new_list = response.read().replace(b"#Server", b"Server") new_list = response.read().replace(b"#Server", b"Server")

View File

@ -46,10 +46,7 @@ def find_packages(*names):
The function itself is rather slow, so consider not sending to The function itself is rather slow, so consider not sending to
many packages to the search query. many packages to the search query.
""" """
result = {} return {package: find_package(package) for package in names}
for package in names:
result[package] = find_package(package)
return result
def validate_package_list(packages: list): def validate_package_list(packages: list):
@ -57,11 +54,11 @@ def validate_package_list(packages: list):
Validates a list of given packages. Validates a list of given packages.
Raises `RequirementError` if one or more packages are not found. Raises `RequirementError` if one or more packages are not found.
""" """
invalid_packages = [] invalid_packages = [
for package in packages: package
if not find_package(package)['results'] and not find_group(package): for package in packages
invalid_packages.append(package) if not find_package(package)['results'] and not find_group(package)
]
if invalid_packages: if invalid_packages:
raise RequirementError(f"Invalid package names: {invalid_packages}") raise RequirementError(f"Invalid package names: {invalid_packages}")

View File

@ -7,9 +7,7 @@ sys.path.insert(0, os.path.abspath('..'))
def process_docstring(app, what, name, obj, options, lines): def process_docstring(app, what, name, obj, options, lines):
spaces_pat = re.compile(r"( {8})") spaces_pat = re.compile(r"( {8})")
ll = [] ll = [spaces_pat.sub(" ", line) for line in lines]
for line in lines:
ll.append(spaces_pat.sub(" ", line))
lines[:] = ll lines[:] = ll