Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lint: mypy type stubs for LIEF #650

Closed
fanquake opened this issue Jan 4, 2022 · 25 comments
Closed

lint: mypy type stubs for LIEF #650

fanquake opened this issue Jan 4, 2022 · 25 comments
Labels
API enhancement Good First Issue Issue that can be addressed without an in-depth understanding of LIEF

Comments

@fanquake
Copy link
Contributor

fanquake commented Jan 4, 2022

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.

@romainthomas
Copy link
Member

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 ?

@fanquake
Copy link
Contributor Author

fanquake commented Jan 6, 2022

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.

@romainthomas
Copy link
Member

Ok so yes I think this feature could be helpful :)

@demberto
Copy link

demberto commented Mar 5, 2022

Any progress on this? I doubt whether stubgen will detect anything at all, since lief is completely opaque

@romainthomas
Copy link
Member

I welcome external contribution on this issue. If someone wants to take the lead, let me know :)

@romainthomas romainthomas added API enhancement Good First Issue Issue that can be addressed without an in-depth understanding of LIEF labels Mar 5, 2022
@martsa1
Copy link

martsa1 commented May 4, 2022

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).

@chinggg
Copy link

chinggg commented Jul 27, 2022

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?

@demberto
Copy link

Can mypy type stubs provide completion for VSCode Python LSP?

Yes absolutely @chinggg

@chinggg
Copy link

chinggg commented Jul 28, 2022

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:

  1. Manually review the generated stubs in stubs/lief
  2. Run "MYPYPATH=stubs/lief python3 -m mypy.stubtest lief" to check the stubs against runtime
  3. Run "mypy stubs/lief" to check for errors
  4. Run "black stubs/lief" and "isort stubs/lief" (if you've made code changes)
  5. 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.

@romainthomas
Copy link
Member

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.

@chinggg
Copy link

chinggg commented Jul 29, 2022

@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 the def_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]

@romainthomas
Copy link
Member

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

@fanquake
Copy link
Contributor Author

fanquake commented Feb 6, 2023

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 ?

@romainthomas
Copy link
Member

They will be packaged along with the native Python bindings. (I'm refactoring this part)

@chinggg
Copy link

chinggg commented Feb 20, 2023

Thank you for your efforts!

@Cirn09
Copy link

Cirn09 commented Mar 25, 2023

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.

@romainthomas
Copy link
Member

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:

LIEF/api/python/lief/PE.pyi

Lines 2621 to 2623 in 8a6b579

def parse(filename: str) -> lief.PE.Binary: ...
@overload
def parse(raw: List[int], name: str = ...) -> lief.PE.Binary: ...

Does anyone else experienced these issues? (cc @fanquake)

For the context, I tested the stubs/completion with jedi

@Cirn09
Copy link

Cirn09 commented Mar 25, 2023

Just next line:

LIEF/api/python/lief/PE.pyi

Lines 2620 to 2625 in 8a6b579

@overload
def parse(filename: str) -> lief.PE.Binary: ...
@overload
def parse(raw: List[int], name: str = ...) -> lief.PE.Binary: ...
@overload
def parse(io: object, name: str = ...) -> object: ...

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.

@romainthomas
Copy link
Member

Fixed @Cirn09. Thanks for the feedback on this!

@Cirn09
Copy link

Cirn09 commented Mar 25, 2023

Not all parse will return None, only this one parse(io: object, name: str = ...):

m.def("parse",
[] (py::object byteio, const std::string& name) -> py::object {
if (auto stream = PyIOStream::from_python(byteio)) {
auto ptr = std::make_unique<PyIOStream>(std::move(*stream));
return py::cast(PE::Parser::parse(std::move(ptr), name));
}
logging::log(logging::LOG_ERR, "Can't create a LIEF stream interface over the provided io");
return py::none();


There are still some functions return object:

def get_function_rva_from_iat(self, function_name: str) -> object: ...

It seems that the common feature among them is that their return value types are uncertain in the CPP code:

.def("get_function_rva_from_iat",
[] (const Import& self, const std::string& name) {
return error_or(&Import::get_function_rva_from_iat, self, name);
},

@romainthomas
Copy link
Member

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

@Cirn09
Copy link

Cirn09 commented Mar 25, 2023

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:
python/mypy#11965
python/mypy#13284

@romainthomas
Copy link
Member

Hummm I'm not in favor of duplicating the documentation. This point should be addressed by VSCode, not LIEF.

@Cirn09
Copy link

Cirn09 commented Mar 26, 2023

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.

@romainthomas
Copy link
Member

romainthomas commented Mar 26, 2023

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

@lief-project lief-project locked as off-topic and limited conversation to collaborators Mar 26, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
API enhancement Good First Issue Issue that can be addressed without an in-depth understanding of LIEF
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants