-
Notifications
You must be signed in to change notification settings - Fork 188
Open
Description
The compiled yara-python is missing a python interface file (.pyi).
Without such an interface definition, support in IDEs is quite limited (no type hinting, no code completion).
I've created a small interface file based on the documentation, which is definitely not 100% correct, but enough to enable code completion and type hinting in VSCode:
from typing import IO, Callable, Dict, List, Tuple, Union
class Match:
rule: str
namespace: str
tags: List[str]
meta: Dict[str, str]
strings: List[Tuple[int, str, str]]
class Rules:
def match(
self,
filepath: str = "",
pid: int = 0,
data: Union[str, bytes] = "",
externals: dict = {},
callback: Callable = lambda x: x,
fast: bool = False,
timeout: int = -1,
modules_data: dict = {},
modules_callback: Callable = lambda x: x,
warnings_callback: Callable = lambda x: x,
which_callbacks: int = 0,
console_callback: Callable = lambda x: x,
) -> List[Match]:
pass
def save(self, filepath: str = "", file: IO = None) -> None:
pass
def compile(
filepath: str = "",
source: str = "",
file: IO = None,
filepaths: dict = {},
sources: dict = {},
externals: dict = {},
includes: bool = True,
error_on_warning: bool = False,
) -> Rules:
pass
def load(filepath: str = "", file: IO = None) -> Rules:
pass
def set_config(
stack_size: int = -1, max_strings_per_rule: int = -1, max_match_data: int = -1
) -> None:
pass
Adding a correct .pyi file to this repo, which can also be autogenerated using mypys stubgen (https://mypy.readthedocs.io/en/stable/stubgen.html), would obviously be the preferred solution.
I already tried autogeneration with stubgen, which did not work that good (function parameters and type hints were missing).
craiovea, tlansec and Rubikoid
Metadata
Metadata
Assignees
Labels
No labels