robotframework / SeleniumLibrary

Web testing library for Robot Framework
Apache License 2.0
1.4k stars 765 forks source link

stubs are completely broken #1919

Open DetachHead opened 2 months ago

DetachHead commented 2 months ago

it looks like whatever is being used to generate the stubs is completely broken. for example the type annotations in SeleniumLibrary/__init__.pyi are mostly invalid:

class SeleniumLibrary:
    def __init__(self, timeout = timedelta(seconds=5.0), implicit_wait = timedelta(seconds=0.0), run_on_failure = 'Capture Page Screenshot', screenshot_root_directory: Optional[Optional] = None, plugins: Optional[Optional] = None, event_firing_webdriver: Optional[Optional] = None, page_load_timeout = timedelta(seconds=300.0), action_chain_delay = timedelta(seconds=0.25)): ...
    def add_cookie(self, name: str, value: str, path: Optional[Optional] = None, domain: Optional[Optional] = None, secure: Optional[Optional] = None, expiry: Optional[Optional] = None): ...

    ...

    def click_button(self, locator: Union, modifier: Union = False): ...
    def click_element(self, locator: Union, modifier: Union = False, action_chain: bool = False): ...
    def click_element_at_coordinates(self, locator: Union, xoffset: int, yoffset: int): ...
    def click_image(self, locator: Union, modifier: Union = False): ...
    def click_link(self, locator: Union, modifier: Union = False): ...
emanlove commented 2 months ago

The v6.6.1 stub file was just regenerated as part of the release. I might have messed them up some how. I do recall I was switching between Python 3.12 and an earlier version as to implement and test 3.12 support. Will take a look today. One can regenerate it using the invoke gen-stub task from the root project directory. (See the BUILD / developer docs for more info.)

DetachHead commented 2 months ago

i don't think the stub file is even needed anymore since the source code now contains type annotations

aaltat commented 2 months ago

It is needed, when using SL from Python side, IDE doesn’t know what public API is.

aaltat commented 2 months ago

The v6.6.1 stub file was just regenerated as part of the release. I might have messed them up some how. I do recall I was switching between Python 3.12 and an earlier version as to implement and test 3.12 support. Will take a look today. One can regenerate it using the invoke gen-stub task from the root project directory. (See the BUILD / developer docs for more info.)

I think I built some custom parsing, which is not good idea. It might be better to scrap that logic and use MyPy to generate base for the pyi file. It will need some code for finding correct methods and compile it into single file

jorenham commented 2 months ago

It is needed, when using SL from Python side, IDE doesn’t know what public API is.

That's probably because a py.typed is missing. With it, the stubs can (and should) be deleted.