mirror of
https://github.com/dgelessus/python-rsrcfork.git
synced 2024-06-13 20:29:36 +00:00
Fix new mypy error about enum.Flag.name possibly being None
This commit is contained in:
parent
ee767a106c
commit
b95c4917cc
|
@ -31,6 +31,22 @@ def decompose_flags(value: F) -> typing.Sequence[F]:
|
||||||
return [bit for bit in type(value) if bit in value]
|
return [bit for bit in type(value) if bit in value]
|
||||||
|
|
||||||
|
|
||||||
|
def join_flag_names(flags: typing.Iterable[F], sep: str = " | ") -> str:
|
||||||
|
"""Join an iterable of enum.Flag instances into a string representation based on their names.
|
||||||
|
|
||||||
|
All values in ``flags`` should be named constants.
|
||||||
|
"""
|
||||||
|
|
||||||
|
names: typing.List[str] = []
|
||||||
|
for flag in flags:
|
||||||
|
name = flag.name
|
||||||
|
if name is None:
|
||||||
|
names.append(str(flag))
|
||||||
|
else:
|
||||||
|
names.append(name)
|
||||||
|
return sep.join(names)
|
||||||
|
|
||||||
|
|
||||||
def is_printable(char: str) -> bool:
|
def is_printable(char: str) -> bool:
|
||||||
"""Determine whether a character is printable for our purposes.
|
"""Determine whether a character is printable for our purposes.
|
||||||
|
|
||||||
|
@ -254,7 +270,7 @@ def describe_resource(res: api.Resource, *, include_type: bool, decompress: bool
|
||||||
|
|
||||||
attrs = decompose_flags(res.attributes)
|
attrs = decompose_flags(res.attributes)
|
||||||
if attrs:
|
if attrs:
|
||||||
content_desc_parts.append(" | ".join(attr.name for attr in attrs))
|
content_desc_parts.append(join_flag_names(attrs))
|
||||||
|
|
||||||
content_desc = ", ".join(content_desc_parts)
|
content_desc = ", ".join(content_desc_parts)
|
||||||
|
|
||||||
|
@ -537,7 +553,7 @@ def do_info(ns: argparse.Namespace) -> typing.NoReturn:
|
||||||
print(f"Resource map starts at {rf.map_offset:#x} and is {rf.map_length:#x} bytes long")
|
print(f"Resource map starts at {rf.map_offset:#x} and is {rf.map_length:#x} bytes long")
|
||||||
attrs = decompose_flags(rf.file_attributes)
|
attrs = decompose_flags(rf.file_attributes)
|
||||||
if attrs:
|
if attrs:
|
||||||
attrs_desc = " | ".join(attr.name for attr in attrs)
|
attrs_desc = join_flag_names(attrs)
|
||||||
else:
|
else:
|
||||||
attrs_desc = "(none)"
|
attrs_desc = "(none)"
|
||||||
print(f"Resource map attributes: {attrs_desc}")
|
print(f"Resource map attributes: {attrs_desc}")
|
||||||
|
@ -582,7 +598,7 @@ def do_resource_info(ns: argparse.Namespace) -> typing.NoReturn:
|
||||||
|
|
||||||
attrs = decompose_flags(res.attributes)
|
attrs = decompose_flags(res.attributes)
|
||||||
if attrs:
|
if attrs:
|
||||||
attrs_desc = " | ".join(attr.name for attr in attrs)
|
attrs_desc = join_flag_names(attrs)
|
||||||
else:
|
else:
|
||||||
attrs_desc = "(none)"
|
attrs_desc = "(none)"
|
||||||
print(f"\tAttributes: {attrs_desc}")
|
print(f"\tAttributes: {attrs_desc}")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user