LIEF
LIEF copied to clipboard
lint: mypy type stubs for LIEF
I'm currently using LIEF in a project that uses mypy for Python type-checking. We use an ignore directive on our import lief #type:ignore
statements, as type stubs for lief are not currently available. I've been considering generating and contributing stubs to https://github.com/python/typeshed, so that we can remove the ignores, and maybe others will find them useful. However I wanted to raise it here first, in case you had an objection / thoughts etc.
Hi @fanquake.
I don't have objection to add such typing but my concern is more about the cost of maintaining these typing information. Based on the Python package, can we (to some extent) automatically generate these stubs ?
Based on the Python package, can we (to some extent) automatically generate these stubs ?
Yes, ideally we'd be able to use stubgen (a tool packaged with mypy), to automatically generate the type stubs.
Note that typeshed will accept incomplete, or partial stubs, so that could potentially reduce the maintenance burden of generating them all / keeping them up to date.
Ok so yes I think this feature could be helpful :)
Any progress on this? I doubt whether stubgen
will detect anything at all, since lief
is completely opaque
I welcome external contribution on this issue. If someone wants to take the lead, let me know :)
stubgen
is able to parse the lief module when run against it: stubgen -m lief
(after pip installing lief
).
I'm not sure this is particularly useful without some manual maintenance effort though. Briefly searching around I did come across pybind11-stubgen which might be useful as well, but I've not tried it directly.
Generated Stubs (for lief 0.12.1)
from typing import Any, ClassVar, Iterable, Iterator, List
from typing import overload
class ARCHITECTURES:
ARM: ClassVar[ARCHITECTURES] = ...
ARM64: ClassVar[ARCHITECTURES] = ...
INTEL: ClassVar[ARCHITECTURES] = ...
MIPS: ClassVar[ARCHITECTURES] = ...
NONE: ClassVar[ARCHITECTURES] = ...
PPC: ClassVar[ARCHITECTURES] = ...
RISCV: ClassVar[ARCHITECTURES] = ...
SPARC: ClassVar[ARCHITECTURES] = ...
SYSZ: ClassVar[ARCHITECTURES] = ...
X86: ClassVar[ARCHITECTURES] = ...
XCORE: ClassVar[ARCHITECTURES] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class Binary(Object):
class VA_TYPES:
AUTO: ClassVar[Binary.VA_TYPES] = ...
RVA: ClassVar[Binary.VA_TYPES] = ...
VA: ClassVar[Binary.VA_TYPES] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class it_relocations:
def __init__(self, *args, **kwargs) -> None: ...
def __getitem__(self, index) -> Any: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
def __next__(self) -> Any: ...
class it_sections:
def __init__(self, *args, **kwargs) -> None: ...
def __getitem__(self, index) -> Any: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
def __next__(self) -> Any: ...
class it_symbols:
def __init__(self, *args, **kwargs) -> None: ...
def __getitem__(self, index) -> Any: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
def __next__(self) -> Any: ...
name: str
def __init__(self, *args, **kwargs) -> None: ...
def get_content_from_virtual_address(self, virtual_address: int, size: int, va_type: Binary.VA_TYPES = ...) -> List[int]: ...
def get_function_address(self, function_name: str) -> int: ...
def get_symbol(self, *args, **kwargs) -> Any: ...
def has_symbol(self, symbol_name: str) -> bool: ...
def offset_to_virtual_address(self, offset: int, slide: int = ...) -> int: ...
@overload
def patch_address(self, address: int, patch_value: List[int], va_type: Binary.VA_TYPES = ...) -> None: ...
@overload
def patch_address(self, address: int, patch_value: int, size: int = ..., va_type: Binary.VA_TYPES = ...) -> None: ...
def remove_section(self, name: str, clear: bool = ...) -> None: ...
def xref(self, virtual_address: int) -> List[int]: ...
@property
def abstract(self) -> object: ...
@property
def concrete(self) -> object: ...
@property
def ctor_functions(self) -> Any: ...
@property
def entrypoint(self) -> int: ...
@property
def exported_functions(self) -> Any: ...
@property
def format(self) -> EXE_FORMATS: ...
@property
def has_nx(self) -> bool: ...
@property
def header(self) -> Any: ...
@property
def imagebase(self) -> int: ...
@property
def imported_functions(self) -> Any: ...
@property
def is_pie(self) -> bool: ...
@property
def libraries(self) -> Any: ...
@property
def relocations(self) -> Binary.it_relocations: ...
@property
def sections(self) -> Any: ...
@property
def symbols(self) -> Binary.it_symbols: ...
class DictStringVersion:
def __init__(self) -> None: ...
def items(self) -> ItemsView[DictStringVersion]: ...
def keys(self) -> KeysView[DictStringVersion]: ...
def values(self) -> ValuesView[DictStringVersion]: ...
def __bool__(self) -> bool: ...
@overload
def __contains__(self, arg0: str) -> bool: ...
@overload
def __contains__(self, arg0: object) -> bool: ...
def __delitem__(self, arg0: str) -> None: ...
def __getitem__(self, arg0: str) -> str: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
def __setitem__(self, arg0: str, arg1: str) -> None: ...
class ENDIANNESS:
BIG: ClassVar[ENDIANNESS] = ...
LITTLE: ClassVar[ENDIANNESS] = ...
NONE: ClassVar[ENDIANNESS] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class EXE_FORMATS:
ELF: ClassVar[EXE_FORMATS] = ...
MACHO: ClassVar[EXE_FORMATS] = ...
PE: ClassVar[EXE_FORMATS] = ...
UNKNOWN: ClassVar[EXE_FORMATS] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class Function(Symbol):
class FLAGS:
CONSTRUCTOR: ClassVar[Function.FLAGS] = ...
DEBUG: ClassVar[Function.FLAGS] = ...
DESTRUCTOR: ClassVar[Function.FLAGS] = ...
EXPORTED: ClassVar[Function.FLAGS] = ...
IMPORTED: ClassVar[Function.FLAGS] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
address: int
@overload
def __init__(self) -> None: ...
@overload
def __init__(self, arg0: str) -> None: ...
@overload
def __init__(self, arg0: int) -> None: ...
@overload
def __init__(self, arg0: str, arg1: int) -> None: ...
def add(self, flag: Function.FLAGS) -> Function: ...
@property
def flags(self) -> List[Function.FLAGS]: ...
class Header(Object):
architecture: Any
endianness: ENDIANNESS
entrypoint: int
modes: Set[MODES]
object_type: OBJECT_TYPES
def __init__(self) -> None: ...
@property
def is_32(self) -> bool: ...
@property
def is_64(self) -> bool: ...
class ItemsView[DictStringVersion]:
def __init__(self, *args, **kwargs) -> None: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
class KeysView[DictStringVersion]:
def __init__(self, *args, **kwargs) -> None: ...
@overload
def __contains__(self, arg0: str) -> bool: ...
@overload
def __contains__(self, arg0: object) -> bool: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
class ListLangCodeItem:
__hash__: ClassVar[None] = ...
@overload
def __init__(self) -> None: ...
@overload
def __init__(self, arg0: ListLangCodeItem) -> None: ...
@overload
def __init__(self, arg0: Iterable) -> None: ...
def append(self, x: PE.LangCodeItem) -> None: ...
def clear(self) -> None: ...
def count(self, x: PE.LangCodeItem) -> int: ...
@overload
def extend(self, L: ListLangCodeItem) -> None: ...
@overload
def extend(self, L: Iterable) -> None: ...
def insert(self, i: int, x: PE.LangCodeItem) -> None: ...
@overload
def pop(self) -> PE.LangCodeItem: ...
@overload
def pop(self, i: int) -> PE.LangCodeItem: ...
def remove(self, x: PE.LangCodeItem) -> None: ...
def __bool__(self) -> bool: ...
def __contains__(self, x: PE.LangCodeItem) -> bool: ...
@overload
def __delitem__(self, arg0: int) -> None: ...
@overload
def __delitem__(self, arg0: slice) -> None: ...
def __eq__(self, arg0: ListLangCodeItem) -> bool: ...
@overload
def __getitem__(self, s: slice) -> ListLangCodeItem: ...
@overload
def __getitem__(self, arg0: int) -> PE.LangCodeItem: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
def __ne__(self, arg0: ListLangCodeItem) -> bool: ...
@overload
def __setitem__(self, arg0: int, arg1: PE.LangCodeItem) -> None: ...
@overload
def __setitem__(self, arg0: slice, arg1: ListLangCodeItem) -> None: ...
class MODES:
ARM: ClassVar[MODES] = ...
M16: ClassVar[MODES] = ...
M32: ClassVar[MODES] = ...
M64: ClassVar[MODES] = ...
MCLASS: ClassVar[MODES] = ...
MIPS3: ClassVar[MODES] = ...
MIPS32: ClassVar[MODES] = ...
MIPS32R6: ClassVar[MODES] = ...
MIPS64: ClassVar[MODES] = ...
MIPSGP64: ClassVar[MODES] = ...
NONE: ClassVar[MODES] = ...
THUMB: ClassVar[MODES] = ...
UNDEFINED: ClassVar[MODES] = ...
V7: ClassVar[MODES] = ...
V8: ClassVar[MODES] = ...
V9: ClassVar[MODES] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class OBJECT_TYPES:
EXECUTABLE: ClassVar[OBJECT_TYPES] = ...
LIBRARY: ClassVar[OBJECT_TYPES] = ...
NONE: ClassVar[OBJECT_TYPES] = ...
OBJECT: ClassVar[OBJECT_TYPES] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class Object:
def __init__(self, *args, **kwargs) -> None: ...
class PLATFORMS:
ANDROID: ClassVar[PLATFORMS] = ...
IOS: ClassVar[PLATFORMS] = ...
LINUX: ClassVar[PLATFORMS] = ...
OSX: ClassVar[PLATFORMS] = ...
UNKNOWN: ClassVar[PLATFORMS] = ...
WINDOWS: ClassVar[PLATFORMS] = ...
__entries: ClassVar[dict] = ...
def __init__(self, value: int) -> None: ...
@overload
def __eq__(self, other: object) -> bool: ...
@overload
def __eq__(self, arg0: int) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
@overload
def __ne__(self, other: object) -> bool: ...
@overload
def __ne__(self, arg0: int) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class Relocation(Object):
address: int
size: int
@overload
def __init__(self) -> None: ...
@overload
def __init__(self, address: int, size: int) -> None: ...
def __eq__(self, arg0: Relocation) -> bool: ...
def __hash__(self) -> int: ...
def __ne__(self, arg0: Relocation) -> bool: ...
class Section(Object):
content: memoryview
name: object
offset: int
size: int
virtual_address: int
@overload
def __init__(self) -> None: ...
@overload
def __init__(self, name: str) -> None: ...
@overload
def search(self, number: int, pos: int = ..., size: int = ...) -> int: ...
@overload
def search(self, str: str, pos: int = ...) -> int: ...
@overload
def search_all(self, number: int, size: int = ...) -> List[int]: ...
@overload
def search_all(self, str: str) -> List[int]: ...
@property
def entropy(self) -> float: ...
@property
def fullname(self) -> str: ...
class Symbol(Object):
name: object
size: int
value: int
def __init__(self) -> None: ...
class ValuesView[DictStringVersion]:
def __init__(self, *args, **kwargs) -> None: ...
def __iter__(self) -> Iterator: ...
def __len__(self) -> int: ...
class bad_file(exception): ...
class bad_format(bad_file): ...
class builder_error(exception): ...
class conversion_error(exception): ...
class corrupted(exception): ...
class exception(Exception): ...
class integrity_error(exception): ...
class lief_errors:
__entries: ClassVar[dict] = ...
asn1_bad_tag: ClassVar[lief_errors] = ...
build_error: ClassVar[lief_errors] = ...
conversion_error: ClassVar[lief_errors] = ...
corrupted: ClassVar[lief_errors] = ...
data_too_large: ClassVar[lief_errors] = ...
file_error: ClassVar[lief_errors] = ...
file_format_error: ClassVar[lief_errors] = ...
not_found: ClassVar[lief_errors] = ...
not_implemented: ClassVar[lief_errors] = ...
not_supported: ClassVar[lief_errors] = ...
parsing_error: ClassVar[lief_errors] = ...
read_error: ClassVar[lief_errors] = ...
read_out_of_bound: ClassVar[lief_errors] = ...
def __init__(self, value: int) -> None: ...
def __eq__(self, other: object) -> bool: ...
def __getstate__(self) -> int: ...
def __hash__(self) -> int: ...
def __index__(self) -> int: ...
def __int__(self) -> int: ...
def __ne__(self, other: object) -> bool: ...
def __setstate__(self, state: int) -> None: ...
@property
def name(self) -> str: ...
@property
def value(self) -> int: ...
class not_found(exception): ...
class not_implemented(exception): ...
class not_supported(exception): ...
class ok_t:
def __init__(self, *args, **kwargs) -> None: ...
def __bool__(self) -> bool: ...
class parser_error(exception): ...
class pe_bad_section_name(pe_error): ...
class pe_error(exception): ...
class read_out_of_bound(exception): ...
class type_error(exception): ...
@overload
def art_version(filename: str) -> int: ...
@overload
def art_version(raw: List[int]) -> int: ...
def breakp() -> object: ...
def current_platform() -> PLATFORMS: ...
def demangle(arg0: str) -> object: ...
@overload
def dex_version(filename: str) -> int: ...
@overload
def dex_version(raw: List[int]) -> int: ...
@overload
def hash(arg0: Object) -> int: ...
@overload
def hash(arg0: List[int]) -> int: ...
@overload
def hash(arg0: bytes) -> int: ...
@overload
def hash(arg0: str) -> int: ...
@overload
def is_art(filename: str) -> bool: ...
@overload
def is_art(raw: List[int]) -> bool: ...
@overload
def is_dex(filename: str) -> bool: ...
@overload
def is_dex(raw: List[int]) -> bool: ...
@overload
def is_elf(filename: str) -> bool: ...
@overload
def is_elf(raw: List[int]) -> bool: ...
@overload
def is_macho(filename: str) -> bool: ...
@overload
def is_macho(raw: List[int]) -> bool: ...
@overload
def is_oat(filename: str) -> bool: ...
@overload
def is_oat(raw: List[int]) -> bool: ...
@overload
def is_oat(elf: ELF.Binary) -> bool: ...
@overload
def is_pe(filename: str) -> bool: ...
@overload
def is_pe(raw: List[int]) -> bool: ...
@overload
def is_vdex(filename: str) -> bool: ...
@overload
def is_vdex(raw: List[int]) -> bool: ...
@overload
def oat_version(filename: str) -> int: ...
@overload
def oat_version(raw: List[int]) -> int: ...
@overload
def oat_version(elf: ELF.Binary) -> int: ...
@overload
def parse(raw: bytes, name: str = ...) -> Binary: ...
@overload
def parse(filepath: str) -> Binary: ...
@overload
def parse(raw: List[int], name: str = ...) -> Binary: ...
@overload
def parse(io: object, name: str = ...) -> Binary: ...
def shell() -> object: ...
def to_json(arg0: Object) -> str: ...
def to_json_from_abstract(arg0: Object) -> str: ...
@overload
def vdex_version(filename: str) -> int: ...
@overload
def vdex_version(raw: List[int]) -> int: ...
Edit: Tried fiddling with the library I mentioned above, it fails with a bunch of errors about failing to parse C++ return types and links to some pybind11 docs about that. Full output below:
pybind11-stubgen output (against lief 0.12.1)
Command used: pybind11-stubgen lief --skip-signature-downgrade
[2022-05-04 18:50:33,419] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,419] {__init__.py:135} WARNING - def android_version(art_version: int) -> LIEF::Android::ANDROID_VERSIONS: ...
[2022-05-04 18:50:33,419] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,420] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,420] {__init__.py:135} WARNING - def parse(filename: str) -> LIEF::ART::File: ...
[2022-05-04 18:50:33,420] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,421] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,421] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '') -> LIEF::ART::File: ...
[2022-05-04 18:50:33,421] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,421] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,421] {__init__.py:135} WARNING - def parse(io: object, name: str = '') -> LIEF::ART::File: ...
[2022-05-04 18:50:33,421] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,425] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,425] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.Class.it_fields, arg0: int) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,425] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,426] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,426] {__init__.py:135} WARNING - def __next__(self: lief.DEX.Class.it_fields) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,426] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,427] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,427] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.Class.it_methods, arg0: int) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,427] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,428] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,428] {__init__.py:135} WARNING - def __next__(self: lief.DEX.Class.it_methods) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,428] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,428] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,428] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.Class.it_named_fields, arg0: int) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,428] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,429] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,429] {__init__.py:135} WARNING - def __next__(self: lief.DEX.Class.it_named_fields) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,429] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,430] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,430] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.Class.it_named_methods, arg0: int) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,430] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,430] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,430] {__init__.py:135} WARNING - def __next__(self: lief.DEX.Class.it_named_methods) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,430] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,434] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,434] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.File.it_classes, arg0: int) -> LIEF::DEX::Class: ...
[2022-05-04 18:50:33,434] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,434] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,434] {__init__.py:135} WARNING - def __next__(self: lief.DEX.File.it_classes) -> LIEF::DEX::Class: ...
[2022-05-04 18:50:33,434] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,435] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,435] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.File.it_fields, arg0: int) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,435] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,435] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,435] {__init__.py:135} WARNING - def __next__(self: lief.DEX.File.it_fields) -> LIEF::DEX::Field: ...
[2022-05-04 18:50:33,436] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,436] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,436] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.File.it_methods, arg0: int) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,436] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,437] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,437] {__init__.py:135} WARNING - def __next__(self: lief.DEX.File.it_methods) -> LIEF::DEX::Method: ...
[2022-05-04 18:50:33,437] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,437] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,437] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.File.it_prototypes, arg0: int) -> LIEF::DEX::Prototype: ...
[2022-05-04 18:50:33,437] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,438] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,438] {__init__.py:135} WARNING - def __next__(self: lief.DEX.File.it_prototypes) -> LIEF::DEX::Prototype: ...
[2022-05-04 18:50:33,438] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,439] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,439] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.File.it_types, arg0: int) -> LIEF::DEX::Type: ...
[2022-05-04 18:50:33,439] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,440] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,440] {__init__.py:135} WARNING - def __next__(self: lief.DEX.File.it_types) -> LIEF::DEX::Type: ...
[2022-05-04 18:50:33,440] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,441] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,441] {__init__.py:135} WARNING - def get_class(self: lief.DEX.File, classname: str) -> LIEF::DEX::Class: ...
[2022-05-04 18:50:33,441] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,441] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,441] {__init__.py:135} WARNING - def get_class(self: lief.DEX.File, classname: int) -> LIEF::DEX::Class: ...
[2022-05-04 18:50:33,441] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,445] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,446] {__init__.py:135} WARNING - def __getitem__(self: lief.DEX.MapList, arg0: LIEF::DEX::MapItem::TYPES) -> LIEF::DEX::MapItem: ...
[2022-05-04 18:50:33,446] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,446] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,446] {__init__.py:135} WARNING - def get(self: lief.DEX.MapList, type: LIEF::DEX::MapItem::TYPES) -> LIEF::DEX::MapItem: ...
[2022-05-04 18:50:33,446] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,446] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,446] {__init__.py:135} WARNING - def has(self: lief.DEX.MapList, type: LIEF::DEX::MapItem::TYPES) -> bool: ...
[2022-05-04 18:50:33,447] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,453] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,453] {__init__.py:135} WARNING - def parse(filename: str) -> LIEF::DEX::File: ...
[2022-05-04 18:50:33,453] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,453] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,453] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '') -> LIEF::DEX::File: ...
[2022-05-04 18:50:33,453] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,453] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,453] {__init__.py:135} WARNING - def parse(io: object, name: str = '') -> LIEF::DEX::File: ...
[2022-05-04 18:50:33,453] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,465] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,465] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_dyn_static_symbols, arg0: int) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,465] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,466] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,466] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_dyn_static_symbols) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,466] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,466] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,467] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_dynamic_entries, arg0: int) -> LIEF::ELF::DynamicEntry: ...
[2022-05-04 18:50:33,467] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,467] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,467] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_dynamic_entries) -> LIEF::ELF::DynamicEntry: ...
[2022-05-04 18:50:33,467] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,468] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,468] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_filter_relocation, arg0: int) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,468] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,468] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,468] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_filter_relocation) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,468] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,469] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,469] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_filter_symbols, arg0: int) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,469] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,469] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,469] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_filter_symbols) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,469] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,470] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,470] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_notes, arg0: int) -> LIEF::ELF::Note: ...
[2022-05-04 18:50:33,470] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,470] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,470] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_notes) -> LIEF::ELF::Note: ...
[2022-05-04 18:50:33,470] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,471] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,471] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_relocations, arg0: int) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,471] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,471] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,471] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_relocations) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,471] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,472] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,472] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_sections, arg0: int) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,472] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,472] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,472] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_sections) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,472] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,473] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,473] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_segments, arg0: int) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,473] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,474] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,474] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_segments) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,474] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,475] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,475] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_symbols, arg0: int) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,475] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,476] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,476] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_symbols) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,476] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,478] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,478] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_symbols_version_definition, arg0: int) -> LIEF::ELF::SymbolVersionDefinition: ...
[2022-05-04 18:50:33,478] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,478] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,478] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_symbols_version_definition) -> LIEF::ELF::SymbolVersionDefinition: ...
[2022-05-04 18:50:33,478] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,479] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,479] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary.it_symbols_version_requirement, arg0: int) -> LIEF::ELF::SymbolVersionRequirement: ...
[2022-05-04 18:50:33,479] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,479] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,479] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Binary.it_symbols_version_requirement) -> LIEF::ELF::SymbolVersionRequirement: ...
[2022-05-04 18:50:33,479] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,481] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,481] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary, arg0: lief.ELF.SEGMENT_TYPES) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,481] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,481] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,481] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary, arg0: lief.ELF.NOTE_TYPES) -> LIEF::ELF::Note: ...
[2022-05-04 18:50:33,481] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,481] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,481] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary, arg0: lief.ELF.DYNAMIC_TAGS) -> LIEF::ELF::DynamicEntry: ...
[2022-05-04 18:50:33,481] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,481] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,481] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Binary, arg0: lief.ELF.SECTION_TYPES) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,481] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,482] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,482] {__init__.py:135} WARNING - def __iadd__(self: lief.ELF.Binary, arg0: LIEF::ELF::Segment) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,482] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,482] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,482] {__init__.py:135} WARNING - def __iadd__(self: lief.ELF.Binary, arg0: LIEF::ELF::Section) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,482] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,482] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,482] {__init__.py:135} WARNING - def __iadd__(self: lief.ELF.Binary, arg0: LIEF::ELF::DynamicEntry) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,482] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,482] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,482] {__init__.py:135} WARNING - def __iadd__(self: lief.ELF.Binary, arg0: LIEF::ELF::Note) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,482] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,483] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,483] {__init__.py:135} WARNING - def __isub__(self: lief.ELF.Binary, arg0: LIEF::ELF::DynamicEntry) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,483] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,483] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,483] {__init__.py:135} WARNING - def __isub__(self: lief.ELF.Binary, arg0: LIEF::ELF::Note) -> lief.ELF.Binary: ...
[2022-05-04 18:50:33,483] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,484] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,484] {__init__.py:135} WARNING - def add(self: lief.ELF.Binary, arg0: LIEF::ELF::DynamicEntry) -> LIEF::ELF::DynamicEntry: ...
[2022-05-04 18:50:33,484] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,484] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,484] {__init__.py:135} WARNING - def add(self: lief.ELF.Binary, section: LIEF::ELF::Section, loaded: bool = True) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,484] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,484] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,484] {__init__.py:135} WARNING - def add(self: lief.ELF.Binary, Add a new :class:`~lief.ELF.Segment` in the binarysegment: LIEF::ELF::Segment, base: int = 0) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,484] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,484] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,484] {__init__.py:135} WARNING - def add(self: lief.ELF.Binary, note: LIEF::ELF::Note) -> LIEF::ELF::Note: ...
[2022-05-04 18:50:33,484] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,485] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,485] {__init__.py:135} WARNING - def add_dynamic_relocation(self: lief.ELF.Binary, relocation: LIEF::ELF::Relocation) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,485] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,485] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,485] {__init__.py:135} WARNING - def add_dynamic_symbol(self: lief.ELF.Binary, symbol: LIEF::ELF::Symbol, symbol_version: lief.ELF.SymbolVersion = None) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,485] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,486] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,486] {__init__.py:135} WARNING - def add_exported_function(self: lief.ELF.Binary, address: int, name: str = '') -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,486] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,486] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,486] {__init__.py:135} WARNING - def add_library(self: lief.ELF.Binary, library_name: str) -> LIEF::ELF::DynamicEntryLibrary: ...
[2022-05-04 18:50:33,486] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,487] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,487] {__init__.py:135} WARNING - def add_object_relocation(self: lief.ELF.Binary, relocation: LIEF::ELF::Relocation, section: LIEF::ELF::Section) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,487] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,487] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,487] {__init__.py:135} WARNING - def add_pltgot_relocation(self: lief.ELF.Binary, relocation: LIEF::ELF::Relocation) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,487] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,488] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,488] {__init__.py:135} WARNING - def add_static_symbol(self: lief.ELF.Binary, symbol: LIEF::ELF::Symbol) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,488] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,488] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,488] {__init__.py:135} WARNING - def export_symbol(self: lief.ELF.Binary, symbol: LIEF::ELF::Symbol) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,489] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,489] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,489] {__init__.py:135} WARNING - def export_symbol(self: lief.ELF.Binary, symbol_name: str, value: int = 0) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,489] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,489] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,489] {__init__.py:135} WARNING - def extend(self: lief.ELF.Binary, segment: LIEF::ELF::Segment, size: int) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,489] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,489] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,489] {__init__.py:135} WARNING - def extend(self: lief.ELF.Binary, segment: LIEF::ELF::Section, size: int) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,489] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,489] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,490] {__init__.py:135} WARNING - def get(self: lief.ELF.Binary, tag: lief.ELF.DYNAMIC_TAGS) -> LIEF::ELF::DynamicEntry: ...
[2022-05-04 18:50:33,490] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,490] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,490] {__init__.py:135} WARNING - def get(self: lief.ELF.Binary, type: lief.ELF.SEGMENT_TYPES) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,490] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,490] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,490] {__init__.py:135} WARNING - def get(self: lief.ELF.Binary, type: lief.ELF.NOTE_TYPES) -> LIEF::ELF::Note: ...
[2022-05-04 18:50:33,490] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,490] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,490] {__init__.py:135} WARNING - def get(self: lief.ELF.Binary, type: lief.ELF.SECTION_TYPES) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,490] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,491] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,491] {__init__.py:135} WARNING - def get_dynamic_symbol(self: lief.ELF.Binary, symbol_name: str) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,491] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,491] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,491] {__init__.py:135} WARNING - def get_library(self: lief.ELF.Binary, library_name: str) -> LIEF::ELF::DynamicEntryLibrary: ...
[2022-05-04 18:50:33,491] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,491] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,492] {__init__.py:135} WARNING - def get_relocation(self: lief.ELF.Binary, symbol_name: str) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,492] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,492] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,492] {__init__.py:135} WARNING - def get_relocation(self: lief.ELF.Binary, symbol: LIEF::ELF::Symbol) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,492] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,492] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,492] {__init__.py:135} WARNING - def get_relocation(self: lief.ELF.Binary, address: int) -> LIEF::ELF::Relocation: ...
[2022-05-04 18:50:33,492] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,493] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,493] {__init__.py:135} WARNING - def get_section(self: lief.ELF.Binary, section_name: str) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,493] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,493] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,493] {__init__.py:135} WARNING - def get_static_symbol(self: lief.ELF.Binary, symbol_name: str) -> LIEF::ELF::Symbol: ...
[2022-05-04 18:50:33,493] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,497] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,497] {__init__.py:135} WARNING - def patch_pltgot(self: lief.ELF.Binary, symbol: LIEF::ELF::Symbol, address: int) -> None: ...
[2022-05-04 18:50:33,497] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,498] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,498] {__init__.py:135} WARNING - def remove(self: lief.ELF.Binary, dynamic_entry: LIEF::ELF::DynamicEntry) -> None: ...
[2022-05-04 18:50:33,498] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,498] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,498] {__init__.py:135} WARNING - def remove(self: lief.ELF.Binary, section: LIEF::ELF::Section, clear: bool = False) -> None: ...
[2022-05-04 18:50:33,498] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,498] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,498] {__init__.py:135} WARNING - def remove(self: lief.ELF.Binary, note: LIEF::ELF::Note) -> None: ...
[2022-05-04 18:50:33,498] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,499] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,499] {__init__.py:135} WARNING - def remove_static_symbol(self: lief.ELF.Binary, arg0: LIEF::ELF::Symbol) -> None: ...
[2022-05-04 18:50:33,499] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,499] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,499] {__init__.py:135} WARNING - def replace(self: lief.ELF.Binary, new_segment: LIEF::ELF::Segment, original_segment: LIEF::ELF::Segment, base: int = 0) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,499] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,500] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,500] {__init__.py:135} WARNING - def section_from_offset(self: lief.ELF.Binary, offset: int, skip_nobits: bool = True) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,500] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,501] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,501] {__init__.py:135} WARNING - def section_from_virtual_address(self: lief.ELF.Binary, address: int, skip_nobits: bool = True) -> LIEF::ELF::Section: ...
[2022-05-04 18:50:33,501] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,501] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,501] {__init__.py:135} WARNING - def segment_from_offset(self: lief.ELF.Binary, offset: int) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,501] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,502] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,502] {__init__.py:135} WARNING - def segment_from_virtual_address(self: lief.ELF.Binary, address: int) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,502] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,505] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,505] {__init__.py:135} WARNING - def force_relocations(self: lief.ELF.Builder, Force relocating all the ELF characteristics supported by LIEFflag: bool = True) -> lief.ELF.Builder: ...
[2022-05-04 18:50:33,505] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,508] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,508] {__init__.py:135} WARNING - def __contains__(self: lief.ELF.CoreAuxv, arg0: LIEF::ELF::AUX_TYPE) -> bool: ...
[2022-05-04 18:50:33,508] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,508] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,509] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.CoreAuxv, arg0: LIEF::ELF::AUX_TYPE) -> int: ...
[2022-05-04 18:50:33,509] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,509] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,509] {__init__.py:135} WARNING - def __setitem__(self: lief.ELF.CoreAuxv, arg0: LIEF::ELF::AUX_TYPE, arg1: int) -> None: ...
[2022-05-04 18:50:33,510] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,510] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,510] {__init__.py:135} WARNING - def get(self: lief.ELF.CoreAuxv, type: LIEF::ELF::AUX_TYPE) -> object: ...
[2022-05-04 18:50:33,510] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,510] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,510] {__init__.py:135} WARNING - def has(self: lief.ELF.CoreAuxv, type: LIEF::ELF::AUX_TYPE) -> bool: ...
[2022-05-04 18:50:33,510] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,511] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,511] {__init__.py:135} WARNING - def set(self: lief.ELF.CoreAuxv, type: LIEF::ELF::AUX_TYPE, value: int) -> bool: ...
[2022-05-04 18:50:33,511] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,515] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,515] {__init__.py:135} WARNING - def __contains__(self: lief.ELF.CorePrStatus, arg0: LIEF::ELF::CorePrStatus::REGISTERS) -> bool: ...
[2022-05-04 18:50:33,515] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,516] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,516] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.CorePrStatus, arg0: LIEF::ELF::CorePrStatus::REGISTERS) -> int: ...
[2022-05-04 18:50:33,516] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,516] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,516] {__init__.py:135} WARNING - def __setitem__(self: lief.ELF.CorePrStatus, arg0: LIEF::ELF::CorePrStatus::REGISTERS, arg1: int) -> None: ...
[2022-05-04 18:50:33,516] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,517] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,517] {__init__.py:135} WARNING - def get(self: lief.ELF.CorePrStatus, register: LIEF::ELF::CorePrStatus::REGISTERS) -> object: ...
[2022-05-04 18:50:33,517] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,517] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,517] {__init__.py:135} WARNING - def has(self: lief.ELF.CorePrStatus, register: LIEF::ELF::CorePrStatus::REGISTERS) -> bool: ...
[2022-05-04 18:50:33,517] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,517] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,517] {__init__.py:135} WARNING - def set(self: lief.ELF.CorePrStatus, register: LIEF::ELF::CorePrStatus::REGISTERS, value: int) -> bool: ...
[2022-05-04 18:50:33,517] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,593] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,593] {__init__.py:135} WARNING - def __getitem__(self: lief.ELF.Section.it_segments, arg0: int) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,593] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,594] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,594] {__init__.py:135} WARNING - def __next__(self: lief.ELF.Section.it_segments) -> LIEF::ELF::Segment: ...
[2022-05-04 18:50:33,594] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,595] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,595] {__init__.py:135} WARNING - def __contains__(self: lief.ELF.Section, arg0: LIEF::ELF::Segment) -> bool: ...
[2022-05-04 18:50:33,595] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,596] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,596] {__init__.py:135} WARNING - def has(self: lief.ELF.Section, segment: LIEF::ELF::Segment) -> bool: ...
[2022-05-04 18:50:33,596] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,607] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,607] {__init__.py:135} WARNING - def parse(filename: str, dynsym_count_method: lief.ELF.DYNSYM_COUNT_METHODS = DYNSYM_COUNT_METHODS.AUTO) -> LIEF::ELF::Binary: ...
[2022-05-04 18:50:33,607] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,607] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,607] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '', dynsym_count_method: lief.ELF.DYNSYM_COUNT_METHODS = DYNSYM_COUNT_METHODS.AUTO) -> LIEF::ELF::Binary: ...
[2022-05-04 18:50:33,607] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,607] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,607] {__init__.py:135} WARNING - def parse(io: object, name: str = '', dynsym_count_method: lief.ELF.DYNSYM_COUNT_METHODS = DYNSYM_COUNT_METHODS.AUTO) -> LIEF::ELF::Binary: ...
[2022-05-04 18:50:33,607] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,617] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,617] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_commands, arg0: int) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,617] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,618] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,618] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_commands) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,618] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,619] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,619] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_filter_symbols, arg0: int) -> LIEF::MachO::Symbol: ...
[2022-05-04 18:50:33,619] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,619] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,619] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_filter_symbols) -> LIEF::MachO::Symbol: ...
[2022-05-04 18:50:33,619] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,620] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,620] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_libraries, arg0: int) -> LIEF::MachO::DylibCommand: ...
[2022-05-04 18:50:33,620] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,620] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,621] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_libraries) -> LIEF::MachO::DylibCommand: ...
[2022-05-04 18:50:33,621] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,621] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,621] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_relocations, arg0: int) -> LIEF::MachO::Relocation: ...
[2022-05-04 18:50:33,621] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,622] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,622] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_relocations) -> LIEF::MachO::Relocation: ...
[2022-05-04 18:50:33,622] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,622] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,622] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_sections, arg0: int) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,622] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,623] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,623] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_sections) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,623] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,623] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,623] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_segments, arg0: int) -> LIEF::MachO::SegmentCommand: ...
[2022-05-04 18:50:33,624] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,624] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,624] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_segments) -> LIEF::MachO::SegmentCommand: ...
[2022-05-04 18:50:33,624] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,625] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,625] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary.it_symbols, arg0: int) -> LIEF::MachO::Symbol: ...
[2022-05-04 18:50:33,625] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,625] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,625] {__init__.py:135} WARNING - def __next__(self: lief.MachO.Binary.it_symbols) -> LIEF::MachO::Symbol: ...
[2022-05-04 18:50:33,625] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,626] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,626] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.Binary, arg0: lief.MachO.LOAD_COMMAND_TYPES) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,626] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,626] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,626] {__init__.py:135} WARNING - def add(self: lief.MachO.Binary, dylib_command: LIEF::MachO::DylibCommand) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,626] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,627] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,627] {__init__.py:135} WARNING - def add(self: lief.MachO.Binary, segment: LIEF::MachO::SegmentCommand) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,627] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,627] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,627] {__init__.py:135} WARNING - def add(self: lief.MachO.Binary, load_command: LIEF::MachO::LoadCommand) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,627] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,627] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,627] {__init__.py:135} WARNING - def add(self: lief.MachO.Binary, load_command: LIEF::MachO::LoadCommand, index: int) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,627] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,628] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,628] {__init__.py:135} WARNING - def add_library(self: lief.MachO.Binary, library_name: str) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,628] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,628] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,628] {__init__.py:135} WARNING - def add_section(self: lief.MachO.Binary, segment: LIEF::MachO::SegmentCommand, section: LIEF::MachO::Section) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,628] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,628] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,628] {__init__.py:135} WARNING - def add_section(self: lief.MachO.Binary, section: LIEF::MachO::Section) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,628] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,629] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,629] {__init__.py:135} WARNING - def add_section(self: lief.MachO.Binary, section: LIEF::MachO::SegmentCommand, section: LIEF::MachO::Section) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,629] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,629] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,629] {__init__.py:135} WARNING - def can_remove(self: lief.MachO.Binary, symbol: LIEF::MachO::Symbol) -> bool: ...
[2022-05-04 18:50:33,629] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,630] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,630] {__init__.py:135} WARNING - def extend(self: lief.MachO.Binary, load_command: LIEF::MachO::LoadCommand, size: int) -> bool: ...
[2022-05-04 18:50:33,630] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,630] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,630] {__init__.py:135} WARNING - def extend_segment(self: lief.MachO.Binary, segment_command: LIEF::MachO::SegmentCommand, size: int) -> bool: ...
[2022-05-04 18:50:33,630] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,631] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,631] {__init__.py:135} WARNING - def get(self: lief.MachO.Binary, type: lief.MachO.LOAD_COMMAND_TYPES) -> LIEF::MachO::LoadCommand: ...
[2022-05-04 18:50:33,631] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,631] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,631] {__init__.py:135} WARNING - def get_section(self: lief.MachO.Binary, name: str) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,631] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,631] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,631] {__init__.py:135} WARNING - def get_segment(self: lief.MachO.Binary, name: str) -> LIEF::MachO::SegmentCommand: ...
[2022-05-04 18:50:33,631] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,632] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,632] {__init__.py:135} WARNING - def get_symbol(self: lief.MachO.Binary, name: str) -> LIEF::MachO::Symbol: ...
[2022-05-04 18:50:33,632] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,633] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,633] {__init__.py:135} WARNING - def remove(self: lief.MachO.Binary, load_command: LIEF::MachO::LoadCommand) -> bool: ...
[2022-05-04 18:50:33,633] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,633] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,633] {__init__.py:135} WARNING - def remove(self: lief.MachO.Binary, symbol: LIEF::MachO::Symbol) -> bool: ...
[2022-05-04 18:50:33,633] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,634] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,634] {__init__.py:135} WARNING - def section_from_offset(self: lief.MachO.Binary, arg0: int) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,634] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,635] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,635] {__init__.py:135} WARNING - def section_from_virtual_address(self: lief.MachO.Binary, arg0: int) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,635] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,635] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,635] {__init__.py:135} WARNING - def segment_from_offset(self: lief.MachO.Binary, arg0: int) -> LIEF::MachO::SegmentCommand: ...
[2022-05-04 18:50:33,635] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,635] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,635] {__init__.py:135} WARNING - def segment_from_virtual_address(self: lief.MachO.Binary, arg0: int) -> LIEF::MachO::SegmentCommand: ...
[2022-05-04 18:50:33,635] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,635] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,636] {__init__.py:135} WARNING - def unexport(self: lief.MachO.Binary, symbol: LIEF::MachO::Symbol) -> bool: ...
[2022-05-04 18:50:33,636] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,647] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,647] {__init__.py:135} WARNING - def add(self: lief.MachO.DataInCode, entry: LIEF::MachO::DataCodeEntry) -> lief.MachO.DataInCode: ...
[2022-05-04 18:50:33,647] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,648] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,648] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.DyldInfo.it_binding_info, arg0: int) -> LIEF::MachO::BindingInfo: ...
[2022-05-04 18:50:33,648] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,648] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,648] {__init__.py:135} WARNING - def __next__(self: lief.MachO.DyldInfo.it_binding_info) -> LIEF::MachO::BindingInfo: ...
[2022-05-04 18:50:33,648] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,649] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,649] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.DyldInfo.it_export_info, arg0: int) -> LIEF::MachO::ExportInfo: ...
[2022-05-04 18:50:33,649] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,649] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,649] {__init__.py:135} WARNING - def __next__(self: lief.MachO.DyldInfo.it_export_info) -> LIEF::MachO::ExportInfo: ...
[2022-05-04 18:50:33,649] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,662] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,662] {__init__.py:135} WARNING - def has(self: lief.MachO.ExportInfo, Check if the flag :class:`~lief.MachO.EXPORT_SYMBOL_FLAGS` given in first parameter is presentflag: lief.MachO.EXPORT_SYMBOL_FLAGS) -> bool: ...
[2022-05-04 18:50:33,662] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,664] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,664] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.FatBinary.it_binaries, arg0: int) -> LIEF::MachO::Binary: ...
[2022-05-04 18:50:33,664] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,664] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,664] {__init__.py:135} WARNING - def __next__(self: lief.MachO.FatBinary.it_binaries) -> LIEF::MachO::Binary: ...
[2022-05-04 18:50:33,664] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,665] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,665] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.FatBinary, arg0: int) -> LIEF::MachO::Binary: ...
[2022-05-04 18:50:33,665] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,665] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,666] {__init__.py:135} WARNING - def at(self: lief.MachO.FatBinary, index: int) -> LIEF::MachO::Binary: ...
[2022-05-04 18:50:33,666] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,666] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,666] {__init__.py:135} WARNING - def take(self: lief.MachO.FatBinary, cpu: lief.MachO.CPU_TYPES) -> LIEF::MachO::Binary: ...
[2022-05-04 18:50:33,666] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,692] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,692] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.SegmentCommand.it_relocations, arg0: int) -> LIEF::MachO::Relocation: ...
[2022-05-04 18:50:33,692] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,692] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,692] {__init__.py:135} WARNING - def __next__(self: lief.MachO.SegmentCommand.it_relocations) -> LIEF::MachO::Relocation: ...
[2022-05-04 18:50:33,692] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,693] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,694] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.SegmentCommand.it_sections, arg0: int) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,694] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,694] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,694] {__init__.py:135} WARNING - def __next__(self: lief.MachO.SegmentCommand.it_sections) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,694] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,695] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,695] {__init__.py:135} WARNING - def add_section(self: lief.MachO.SegmentCommand, section: LIEF::MachO::Section) -> LIEF::MachO::Section: ...
[2022-05-04 18:50:33,695] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,695] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,695] {__init__.py:135} WARNING - def has(self: lief.MachO.SegmentCommand, section: LIEF::MachO::Section) -> bool: ...
[2022-05-04 18:50:33,695] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,704] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,704] {__init__.py:135} WARNING - def __getitem__(self: lief.MachO.it_data_in_code_entries, arg0: int) -> LIEF::MachO::DataCodeEntry: ...
[2022-05-04 18:50:33,704] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,704] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,704] {__init__.py:135} WARNING - def __next__(self: lief.MachO.it_data_in_code_entries) -> LIEF::MachO::DataCodeEntry: ...
[2022-05-04 18:50:33,704] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,706] {__init__.py:117} ERROR - Default argument value(s) replaced with ellipses (...):
[2022-05-04 18:50:33,706] {__init__.py:119} ERROR - <lief.MachO.ParserConfig object at 0x7fa3da85bef0>
[2022-05-04 18:50:33,706] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,706] {__init__.py:135} WARNING - def parse(filename: str, config: lief.MachO.ParserConfig = ...) -> LIEF::MachO::FatBinary: ...
[2022-05-04 18:50:33,706] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,706] {__init__.py:117} ERROR - Default argument value(s) replaced with ellipses (...):
[2022-05-04 18:50:33,706] {__init__.py:119} ERROR - <lief.MachO.ParserConfig object at 0x7fa3da8d84f0>
[2022-05-04 18:50:33,706] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,706] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '', config: lief.MachO.ParserConfig = ...) -> LIEF::MachO::FatBinary: ...
[2022-05-04 18:50:33,706] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,706] {__init__.py:117} ERROR - Default argument value(s) replaced with ellipses (...):
[2022-05-04 18:50:33,707] {__init__.py:119} ERROR - <lief.MachO.ParserConfig object at 0x7fa3da893af0>
[2022-05-04 18:50:33,707] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,707] {__init__.py:135} WARNING - def parse(io: object, name: str = '', config: lief.MachO.ParserConfig = ...) -> LIEF::MachO::FatBinary: ...
[2022-05-04 18:50:33,707] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,708] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,708] {__init__.py:135} WARNING - def __getitem__(self: lief.OAT.Binary.it_classes, arg0: int) -> LIEF::OAT::Class: ...
[2022-05-04 18:50:33,709] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,709] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,709] {__init__.py:135} WARNING - def __next__(self: lief.OAT.Binary.it_classes) -> LIEF::OAT::Class: ...
[2022-05-04 18:50:33,709] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,710] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,710] {__init__.py:135} WARNING - def __getitem__(self: lief.OAT.Binary.it_dex_files, arg0: int) -> LIEF::DEX::File: ...
[2022-05-04 18:50:33,710] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,711] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,711] {__init__.py:135} WARNING - def __next__(self: lief.OAT.Binary.it_dex_files) -> LIEF::DEX::File: ...
[2022-05-04 18:50:33,711] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,711] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,711] {__init__.py:135} WARNING - def __getitem__(self: lief.OAT.Binary.it_methods, arg0: int) -> LIEF::OAT::Method: ...
[2022-05-04 18:50:33,711] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,712] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,712] {__init__.py:135} WARNING - def __next__(self: lief.OAT.Binary.it_methods) -> LIEF::OAT::Method: ...
[2022-05-04 18:50:33,712] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,712] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,712] {__init__.py:135} WARNING - def __getitem__(self: lief.OAT.Binary.it_oat_dex_files, arg0: int) -> LIEF::OAT::DexFile: ...
[2022-05-04 18:50:33,712] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,713] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,713] {__init__.py:135} WARNING - def __next__(self: lief.OAT.Binary.it_oat_dex_files) -> LIEF::OAT::DexFile: ...
[2022-05-04 18:50:33,713] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,714] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,714] {__init__.py:135} WARNING - def get_class(self: lief.OAT.Binary, class_name: str) -> LIEF::OAT::Class: ...
[2022-05-04 18:50:33,714] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,714] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,714] {__init__.py:135} WARNING - def get_class(self: lief.OAT.Binary, class_index: int) -> LIEF::OAT::Class: ...
[2022-05-04 18:50:33,714] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,714] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,714] {__init__.py:135} WARNING - def __getitem__(self: lief.OAT.Class.it_methods, arg0: int) -> LIEF::OAT::Method: ...
[2022-05-04 18:50:33,715] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,715] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,715] {__init__.py:135} WARNING - def __next__(self: lief.OAT.Class.it_methods) -> LIEF::OAT::Method: ...
[2022-05-04 18:50:33,715] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,716] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,716] {__init__.py:135} WARNING - def is_quickened(self: lief.OAT.Class, dex_method: LIEF::DEX::Method) -> bool: ...
[2022-05-04 18:50:33,716] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,717] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,717] {__init__.py:135} WARNING - def method_offsets_index(self: lief.OAT.Class, arg0: LIEF::DEX::Method) -> int: ...
[2022-05-04 18:50:33,717] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,726] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,727] {__init__.py:135} WARNING - def android_version(arg0: int) -> LIEF::Android::ANDROID_VERSIONS: ...
[2022-05-04 18:50:33,727] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,727] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,727] {__init__.py:135} WARNING - def parse(oat_file: str) -> LIEF::OAT::Binary: ...
[2022-05-04 18:50:33,727] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,727] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,728] {__init__.py:135} WARNING - def parse(oat_file: str, vdex_file: str) -> LIEF::OAT::Binary: ...
[2022-05-04 18:50:33,728] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,728] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,728] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '') -> LIEF::OAT::Binary: ...
[2022-05-04 18:50:33,728] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,728] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,728] {__init__.py:135} WARNING - def parse(io: object, name: str = '') -> LIEF::OAT::Binary: ...
[2022-05-04 18:50:33,728] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,786] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,786] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.DelayImport.it_entries, arg0: int) -> LIEF::PE::DelayImportEntry: ...
[2022-05-04 18:50:33,786] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,787] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,787] {__init__.py:135} WARNING - def __next__(self: lief.PE.DelayImport.it_entries) -> LIEF::PE::DelayImportEntry: ...
[2022-05-04 18:50:33,787] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,797] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,797] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Export.it_entries, arg0: int) -> LIEF::PE::ExportEntry: ...
[2022-05-04 18:50:33,797] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,797] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,797] {__init__.py:135} WARNING - def __next__(self: lief.PE.Export.it_entries) -> LIEF::PE::ExportEntry: ...
[2022-05-04 18:50:33,797] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,830] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,830] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Import.it_entries, arg0: int) -> LIEF::PE::ImportEntry: ...
[2022-05-04 18:50:33,830] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,830] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,830] {__init__.py:135} WARNING - def __next__(self: lief.PE.Import.it_entries) -> LIEF::PE::ImportEntry: ...
[2022-05-04 18:50:33,830] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,831] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,832] {__init__.py:135} WARNING - def add_entry(self: lief.PE.Import, entry: LIEF::PE::ImportEntry) -> LIEF::PE::ImportEntry: ...
[2022-05-04 18:50:33,832] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,832] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,832] {__init__.py:135} WARNING - def add_entry(self: lief.PE.Import, function_name: str) -> LIEF::PE::ImportEntry: ...
[2022-05-04 18:50:33,832] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,832] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,832] {__init__.py:135} WARNING - def get_entry(self: lief.PE.Import, function_name: str) -> LIEF::PE::ImportEntry: ...
[2022-05-04 18:50:33,832] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,852] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,852] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Pogo.it_entries, arg0: int) -> LIEF::PE::PogoEntry: ...
[2022-05-04 18:50:33,852] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,852] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,853] {__init__.py:135} WARNING - def __next__(self: lief.PE.Pogo.it_entries) -> LIEF::PE::PogoEntry: ...
[2022-05-04 18:50:33,853] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,878] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,878] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Relocation.it_entries, arg0: int) -> LIEF::PE::RelocationEntry: ...
[2022-05-04 18:50:33,878] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,878] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,878] {__init__.py:135} WARNING - def __next__(self: lief.PE.Relocation.it_entries) -> LIEF::PE::RelocationEntry: ...
[2022-05-04 18:50:33,879] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,879] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,879] {__init__.py:135} WARNING - def add_entry(self: lief.PE.Relocation, new_entry: LIEF::PE::RelocationEntry) -> LIEF::PE::RelocationEntry: ...
[2022-05-04 18:50:33,880] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,882] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,882] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.ResourceDialog.it_const_items, arg0: int) -> LIEF::PE::ResourceDialogItem: ...
[2022-05-04 18:50:33,882] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,882] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,882] {__init__.py:135} WARNING - def __next__(self: lief.PE.ResourceDialog.it_const_items) -> LIEF::PE::ResourceDialogItem: ...
[2022-05-04 18:50:33,882] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,889] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,889] {__init__.py:135} WARNING - def add_data_node(self: lief.PE.ResourceNode, resource_data: LIEF::PE::ResourceData) -> lief.PE.ResourceNode: ...
[2022-05-04 18:50:33,889] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,889] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,889] {__init__.py:135} WARNING - def add_directory_node(self: lief.PE.ResourceNode, resource_directory: LIEF::PE::ResourceDirectory) -> lief.PE.ResourceNode: ...
[2022-05-04 18:50:33,889] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,895] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,895] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.ResourcesManager.it_const_accelerators, arg0: int) -> LIEF::PE::ResourceAccelerator: ...
[2022-05-04 18:50:33,895] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,895] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,895] {__init__.py:135} WARNING - def __next__(self: lief.PE.ResourcesManager.it_const_accelerators) -> LIEF::PE::ResourceAccelerator: ...
[2022-05-04 18:50:33,895] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,896] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,896] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.ResourcesManager.it_const_dialogs, arg0: int) -> LIEF::PE::ResourceDialog: ...
[2022-05-04 18:50:33,896] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,896] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,896] {__init__.py:135} WARNING - def __next__(self: lief.PE.ResourcesManager.it_const_dialogs) -> LIEF::PE::ResourceDialog: ...
[2022-05-04 18:50:33,896] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,897] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,897] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.ResourcesManager.it_const_icons, arg0: int) -> LIEF::PE::ResourceIcon: ...
[2022-05-04 18:50:33,897] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,897] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,897] {__init__.py:135} WARNING - def __next__(self: lief.PE.ResourcesManager.it_const_icons) -> LIEF::PE::ResourceIcon: ...
[2022-05-04 18:50:33,897] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,898] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,898] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.ResourcesManager.it_const_strings_table, arg0: int) -> LIEF::PE::ResourceStringTable: ...
[2022-05-04 18:50:33,898] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,899] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,899] {__init__.py:135} WARNING - def __next__(self: lief.PE.ResourcesManager.it_const_strings_table) -> LIEF::PE::ResourceStringTable: ...
[2022-05-04 18:50:33,899] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,900] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,900] {__init__.py:135} WARNING - def add_icon(self: lief.PE.ResourcesManager, icon: LIEF::PE::ResourceIcon) -> None: ...
[2022-05-04 18:50:33,900] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,900] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,900] {__init__.py:135} WARNING - def change_icon(self: lief.PE.ResourcesManager, old_one: LIEF::PE::ResourceIcon, new_one: LIEF::PE::ResourceIcon) -> None: ...
[2022-05-04 18:50:33,900] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,900] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,901] {__init__.py:135} WARNING - def get_node_type(self: lief.PE.ResourcesManager, type: lief.PE.RESOURCE_TYPES) -> LIEF::PE::ResourceNode: ...
[2022-05-04 18:50:33,901] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,902] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,902] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.RichHeader.it_entries, arg0: int) -> LIEF::PE::RichEntry: ...
[2022-05-04 18:50:33,902] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,903] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,903] {__init__.py:135} WARNING - def __next__(self: lief.PE.RichHeader.it_entries) -> LIEF::PE::RichEntry: ...
[2022-05-04 18:50:33,903] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,904] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,904] {__init__.py:135} WARNING - def add_entry(self: lief.PE.RichHeader, entry: LIEF::PE::RichEntry) -> None: ...
[2022-05-04 18:50:33,904] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,934] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,934] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Signature.it_const_crt, arg0: int) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,934] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,934] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,934] {__init__.py:135} WARNING - def __next__(self: lief.PE.Signature.it_const_crt) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,934] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,935] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,935] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.Signature.it_const_signers_t, arg0: int) -> LIEF::PE::SignerInfo: ...
[2022-05-04 18:50:33,935] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,935] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,935] {__init__.py:135} WARNING - def __next__(self: lief.PE.Signature.it_const_signers_t) -> LIEF::PE::SignerInfo: ...
[2022-05-04 18:50:33,935] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,937] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,937] {__init__.py:135} WARNING - def find_crt(self: lief.PE.Signature, serialno: List[int]) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,937] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,937] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,937] {__init__.py:135} WARNING - def find_crt_issuer(self: lief.PE.Signature, issuer: str) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,937] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,937] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,937] {__init__.py:135} WARNING - def find_crt_issuer(self: lief.PE.Signature, issuer: str, serialno: List[int]) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,937] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,938] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,938] {__init__.py:135} WARNING - def find_crt_subject(self: lief.PE.Signature, subject: str) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,938] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,938] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,938] {__init__.py:135} WARNING - def find_crt_subject(self: lief.PE.Signature, subject: str, serialno: List[int]) -> LIEF::PE::x509: ...
[2022-05-04 18:50:33,938] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,939] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,939] {__init__.py:135} WARNING - def __getitem__(self: lief.PE.SignerInfo.it_const_attributes_t, arg0: int) -> LIEF::PE::Attribute: ...
[2022-05-04 18:50:33,939] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,940] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,940] {__init__.py:135} WARNING - def __next__(self: lief.PE.SignerInfo.it_const_attributes_t) -> LIEF::PE::Attribute: ...
[2022-05-04 18:50:33,940] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,941] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,941] {__init__.py:135} WARNING - def get_attribute(self: lief.PE.SignerInfo, type: lief.PE.SIG_ATTRIBUTE_TYPES) -> LIEF::PE::Attribute: ...
[2022-05-04 18:50:33,941] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,941] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,941] {__init__.py:135} WARNING - def get_auth_attribute(self: lief.PE.SignerInfo, type: lief.PE.SIG_ATTRIBUTE_TYPES) -> LIEF::PE::Attribute: ...
[2022-05-04 18:50:33,941] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,942] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,942] {__init__.py:135} WARNING - def get_unauth_attribute(self: lief.PE.SignerInfo, type: lief.PE.SIG_ATTRIBUTE_TYPES) -> LIEF::PE::Attribute: ...
[2022-05-04 18:50:33,942] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,960] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,961] {__init__.py:135} WARNING - def parse(filename: str) -> LIEF::PE::Binary: ...
[2022-05-04 18:50:33,961] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,961] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,961] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '') -> LIEF::PE::Binary: ...
[2022-05-04 18:50:33,961] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,961] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,961] {__init__.py:135} WARNING - def parse(io: object, name: str = '') -> LIEF::PE::Binary: ...
[2022-05-04 18:50:33,961] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,962] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,962] {__init__.py:135} WARNING - def resolve_ordinals(import: lief.PE.Import, strict: bool = False, use_std: bool = False) -> lief.PE.Import: ...
[2022-05-04 18:50:33,962] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,966] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,966] {__init__.py:135} WARNING - def android_version(vdex_version: int) -> LIEF::Android::ANDROID_VERSIONS: ...
[2022-05-04 18:50:33,966] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,967] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,967] {__init__.py:135} WARNING - def parse(filename: str) -> LIEF::VDEX::File: ...
[2022-05-04 18:50:33,967] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,967] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,967] {__init__.py:135} WARNING - def parse(raw: List[int], name: str = '') -> LIEF::VDEX::File: ...
[2022-05-04 18:50:33,967] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,967] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,967] {__init__.py:135} WARNING - def parse(io: object, name: str = '') -> LIEF::VDEX::File: ...
[2022-05-04 18:50:33,967] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,973] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,973] {__init__.py:135} WARNING - def __getitem__(self: lief.Binary.it_relocations, arg0: int) -> LIEF::Relocation: ...
[2022-05-04 18:50:33,973] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,973] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,973] {__init__.py:135} WARNING - def __next__(self: lief.Binary.it_relocations) -> LIEF::Relocation: ...
[2022-05-04 18:50:33,973] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,974] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,974] {__init__.py:135} WARNING - def __getitem__(self: lief.Binary.it_sections, arg0: int) -> LIEF::Section: ...
[2022-05-04 18:50:33,974] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,974] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,974] {__init__.py:135} WARNING - def __next__(self: lief.Binary.it_sections) -> LIEF::Section: ...
[2022-05-04 18:50:33,974] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,975] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,975] {__init__.py:135} WARNING - def __getitem__(self: lief.Binary.it_symbols, arg0: int) -> LIEF::Symbol: ...
[2022-05-04 18:50:33,975] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,975] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,976] {__init__.py:135} WARNING - def __next__(self: lief.Binary.it_symbols) -> LIEF::Symbol: ...
[2022-05-04 18:50:33,976] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:33,978] {__init__.py:134} WARNING - Ignoring invalid signature:
[2022-05-04 18:50:33,978] {__init__.py:135} WARNING - def get_symbol(self: lief.Binary, symbol_name: str) -> LIEF::Symbol: ...
[2022-05-04 18:50:33,978] {__init__.py:136} WARNING - ^-- Invalid syntax
[2022-05-04 18:50:34,007] {__init__.py:957} INFO - Useful link: Avoiding C++ types in docstrings:
[2022-05-04 18:50:34,007] {__init__.py:958} INFO - https://pybind11.readthedocs.io/en/latest/advanced/misc.html#avoiding-cpp-types-in-docstrings
[2022-05-04 18:50:34,007] {__init__.py:962} INFO - Useful link: Default argument representation:
[2022-05-04 18:50:34,007] {__init__.py:963} INFO - https://pybind11.readthedocs.io/en/latest/advanced/functions.html#default-arguments-revisited
I'm not sure offhand how hard it'd be to resolve the return types in docstrings for this library (and if its worth doing so).
Thanks for creating lief
, the all-in-one solution for binary parsing! I am currently using the Python version of lief
for PE malware research experiment. However, I find the lack of source code, type hinting and auto-completion is really vexing. Can mypy type stubs provide completion for VSCode Python LSP?
Can mypy type stubs provide completion for VSCode Python LSP?
Yes absolutely @chinggg
Hi! I have made a draft PR to send generated type stubs to typeshed
. But there are many problems to solve about the naming conflict and correct type hinting.
Suggested next steps:
- Manually review the generated stubs in stubs/lief
- Run "MYPYPATH=stubs/lief python3 -m mypy.stubtest lief" to check the stubs against runtime
- Run "mypy stubs/lief" to check for errors
- Run "black stubs/lief" and "isort stubs/lief" (if you've made code changes)
- Run "flake8 stubs/lief" to check for e.g. unused imports
I think some of the errors are caused by incompetence of stubgen
and can be solved manually. But some errors seems to be inherent, such as use of reserved Python keywords in C++ source code.
Hello @chinggg,
Thank you for the contribution of this issue. I saw you PR and indeed there are error in the bindings like 32BIT_BRANCH
if you can attach the full report of the error, I'll fix them.
@romainthomas Thanks. I find mypy
and black
will stop analyzing the file once an error is detected and there is no option to continue on error. So it's difficult to attach a full report of errors. Currently I plan to fix each error manually (the fix may be invalid but it can remove the error) and make a commit for each file, the commit history can be viewed as kind of error report.
Having inspected some errors, I can classify them into these categories:
- wrong return type of
property
, can be fixed by manually check thedef_property
definitions - enum string is invalid identifier, eg.
32BIT_BRANCH
- type definition inside C++ class is wrongly represented in
pyi
, eg.CoreFile.files_t
- invalid syntax in Python, eg. C++ template will be converted to
class ItemsView[DictStringVersion]
I started to address this issue. First, I fixed some piece of code in LIEF which makes stubgen
happier.
For the types which were not supported by stubgen (because of pybind11), I did not fix in stubgen itself.
I'm still trying to figure out the integration model but it should be available with the next release.
Here are an example of the stub generated: lief-stub.zip
I'm still trying to figure out the integration model but it should be available with the next release.
Great! I assume the stubs will also be getting upstreamed to https://github.com/python/typeshed ?
They will be packaged along with the native Python bindings. (I'm refactoring this part)
Thank you for your efforts!
I noticed that there are still some issues with the type hints in the latest version of LIEF, which cause the type hints not work properly in VSCode. Such as __init__.pyi
not importing submodules like lief.PE
, resulting in incomplete type hints. Also, the import lief.PE.*
statement in the header of lief.PE
causes most of the type hints for lief.PE
to not work properly. Additionally, one of the three overloads for lief.PE.parse
should return lief.PE.Binary | None
, but it is writen as object
in the file.
Fixing these issues is simple, but I am unsure if submitting a PR directly modifying the pyi files is correct (as they might be autogenerated). If possible, I will manually fix these errors and submit a PR.
Hello @Cirn09, Yes the stubs are auto generated so I won't recommend to have a manual fix. You can still make the fixes and send over the diff to get a better idea what is missing.
Regarding lief.PE.parse
the types are actually correct:
https://github.com/lief-project/LIEF/blob/8a6b5790299b0d7d1bf9a62f4fd67cebf33d2627/api/python/lief/PE.pyi#L2621-L2623
Does anyone else experienced these issues? (cc @fanquake)
For the context, I tested the stubs/completion with jedi
Just next line: https://github.com/lief-project/LIEF/blob/8a6b5790299b0d7d1bf9a62f4fd67cebf33d2627/api/python/lief/PE.pyi#L2620-L2625
And here is my patch (not include return type object
fix):
Patches
diff --git a/api/python/lief/DEX.pyi b/api/python/lief/DEX.pyi
index 0858bdc3..5dcb6ac6 100644
--- a/api/python/lief/DEX.pyi
+++ b/api/python/lief/DEX.pyi
@@ -3,12 +3,6 @@ from typing import Any, ClassVar, Iterator, List, Tuple
from typing import overload
import lief # type: ignore
import lief.DEX # type: ignore
-import lief.DEX.Class # type: ignore
-import lief.DEX.File # type: ignore
-import lief.DEX.MapItem # type: ignore
-import lief.DEX.MapList # type: ignore
-import lief.DEX.Prototype # type: ignore
-import lief.DEX.Type # type: ignore
class ACCESS_FLAGS:
__members__: ClassVar[dict] = ... # read-only
diff --git a/api/python/lief/ELF.pyi b/api/python/lief/ELF.pyi
index 3a85c528..88d57642 100644
--- a/api/python/lief/ELF.pyi
+++ b/api/python/lief/ELF.pyi
@@ -3,15 +3,6 @@ from typing import Any, ClassVar, Dict, Iterable, Iterator, List, Set
from typing import overload
import lief # type: ignore
import lief.ELF # type: ignore
-import lief.ELF.Binary # type: ignore
-import lief.ELF.Builder # type: ignore
-import lief.ELF.CoreAuxv # type: ignore
-import lief.ELF.CoreFile # type: ignore
-import lief.ELF.CorePrStatus # type: ignore
-import lief.ELF.Section # type: ignore
-import lief.ELF.Segment # type: ignore
-import lief.ELF.SymbolVersionDefinition # type: ignore
-import lief.ELF.SymbolVersionRequirement # type: ignore
class ARCH:
__members__: ClassVar[dict] = ... # read-only
diff --git a/api/python/lief/MachO.pyi b/api/python/lief/MachO.pyi
index 2625b186..41642669 100644
--- a/api/python/lief/MachO.pyi
+++ b/api/python/lief/MachO.pyi
@@ -3,14 +3,6 @@ from typing import Any, ClassVar, Iterator, List, Set, Tuple
from typing import overload
import lief # type: ignore
import lief.MachO # type: ignore
-import lief.MachO.Binary # type: ignore
-import lief.MachO.BuildToolVersion # type: ignore
-import lief.MachO.BuildVersion # type: ignore
-import lief.MachO.DataCodeEntry # type: ignore
-import lief.MachO.DyldChainedFixups # type: ignore
-import lief.MachO.DyldInfo # type: ignore
-import lief.MachO.FatBinary # type: ignore
-import lief.MachO.SegmentCommand # type: ignore
class ARM64_RELOCATION:
__members__: ClassVar[dict] = ... # read-only
diff --git a/api/python/lief/OAT.pyi b/api/python/lief/OAT.pyi
index 5c890a72..029f686f 100644
--- a/api/python/lief/OAT.pyi
+++ b/api/python/lief/OAT.pyi
@@ -6,10 +6,6 @@ import lief.Android # type: ignore
import lief.DEX # type: ignore
import lief.ELF # type: ignore
import lief.OAT # type: ignore
-import lief.OAT.Binary # type: ignore
-import lief.OAT.Class # type: ignore
-import lief.OAT.Header # type: ignore
-import lief.OAT.Header.it_key_values_t # type: ignore
class Binary(lief.ELF.Binary):
class it_classes:
diff --git a/api/python/lief/PE.pyi b/api/python/lief/PE.pyi
index 02a6cb3f..bb166a9d 100644
--- a/api/python/lief/PE.pyi
+++ b/api/python/lief/PE.pyi
@@ -3,20 +3,6 @@ from typing import Any, ClassVar, Iterable, Iterator, List, Set, Tuple
from typing import overload
import lief # type: ignore
import lief.PE # type: ignore
-import lief.PE.Binary # type: ignore
-import lief.PE.DelayImport # type: ignore
-import lief.PE.Export # type: ignore
-import lief.PE.ExportEntry # type: ignore
-import lief.PE.Import # type: ignore
-import lief.PE.Pogo # type: ignore
-import lief.PE.Relocation # type: ignore
-import lief.PE.ResourceDialog # type: ignore
-import lief.PE.ResourceNode # type: ignore
-import lief.PE.ResourcesManager # type: ignore
-import lief.PE.RichHeader # type: ignore
-import lief.PE.Signature # type: ignore
-import lief.PE.SignerInfo # type: ignore
-import lief.PE.x509 # type: ignore
class ACCELERATOR_FLAGS:
__members__: ClassVar[dict] = ... # read-only
diff --git a/api/python/lief/VDEX.pyi b/api/python/lief/VDEX.pyi
index c81e60c1..cc496854 100644
--- a/api/python/lief/VDEX.pyi
+++ b/api/python/lief/VDEX.pyi
@@ -3,7 +3,7 @@ from typing import List
from typing import overload
import lief # type: ignore
import lief.Android # type: ignore
-import lief.OAT.Binary # type: ignore
+import lief.OAT # type: ignore
import lief.VDEX # type: ignore
class File(lief.Object):
diff --git a/api/python/lief/__init__.pyi b/api/python/lief/__init__.pyi
index 10386939..ee7808fe 100644
--- a/api/python/lief/__init__.pyi
+++ b/api/python/lief/__init__.pyi
@@ -2,9 +2,17 @@ from typing import Any, ClassVar, Iterator, List, Set
from typing import overload
import lief # type: ignore
-import lief.Binary # type: ignore
-import lief.ELF # type: ignore
-import lief.Function # type: ignore
+from . import (
+ Android,
+ ART,
+ DEX,
+ ELF,
+ logging,
+ MachO,
+ OAT,
+ PE,
+ VDEX,
+)
class ARCHITECTURES:
__members__: ClassVar[dict] = ... # read-only
I did not use any additional tools to test, but before the patch, VSCode was detecting the return value of lief.PE.parse
as Any
, whereas now it is correct.
Fixed @Cirn09. Thanks for the feedback on this!
Not all parse
will return None
, only this one parse(io: object, name: str = ...)
:
https://github.com/lief-project/LIEF/blob/683fc6cea7b1445729a06ed690a9927cb99c5210/api/python/src/PE/objects/pyParser.cpp#L43-L50
There are still some functions return object
:
https://github.com/lief-project/LIEF/blob/683fc6cea7b1445729a06ed690a9927cb99c5210/api/python/lief/PE.pyi#L1030
It seems that the common feature among them is that their return value types are uncertain in the CPP code: https://github.com/lief-project/LIEF/blob/683fc6cea7b1445729a06ed690a9927cb99c5210/api/python/src/PE/objects/pyImport.cpp#L126-L129
Not all parse will return None, only this one parse(io: object, name: str = ...):
Actually yes. If the parsing fails, the std::unique_ptr
is set to nullptr which is translated into None
Another issue is that VSCode cannot find __doc__
for any LIEF functions.
Adding documentation strings like in a regular Python file should work, and in fact, other projects do this as well:
https://github.com/microsoft/python-type-stubs/blob/3bbaea9577dc6813ab06cba4b4d3c112ffc17466/cv2/init.pyi#L29-L31
However, stubgen
has not yet implemented this feature:
https://github.com/python/mypy/issues/11965
https://github.com/python/mypy/pull/13284
Hummm I'm not in favor of duplicating the documentation. This point should be addressed by VSCode, not LIEF.
I mean DocString: https://peps.python.org/pep-0257/
stubgen
should automatically generate DocString from sources, but now this feature is not complete. You may need to regenerate the stub after completion.
I understood your request but the documentation is already present in __doc__
:
python -c "import lief;print(lief.PE.parse.__doc__)"
parse(*args, **kwargs)
Overloaded function.
1. parse(filename: str) -> LIEF::PE::Binary
Parse the PE binary from the given **file path** and return a :class:`~lief.PE.Binary` object
[...]
So even if stugen supports this, I won't enable it.
Please use the discussions section for this kind of request