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

Add type hints for selenium.webdriver.remote.webdriver.WebDriver.__init__ #13775

Merged
merged 3 commits into from
Apr 9, 2024
Merged

Add type hints for selenium.webdriver.remote.webdriver.WebDriver.__init__ #13775

merged 3 commits into from
Apr 9, 2024

Conversation

adamtheturtle
Copy link
Contributor

@adamtheturtle adamtheturtle commented Apr 3, 2024

User description

Motivation and Context

This will help users of this class know earlier if they have made an error in creating a WebDriver object.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Type

enhancement


Description

  • Added type hints to the WebDriver class __init__ method to improve code readability and help with earlier error detection.
  • This change enhances the developer experience by providing more explicit information about the expected types of parameters.

Changes walkthrough

Relevant files
Enhancement
webdriver.py
Add Type Hints to WebDriver Initialization                             

py/selenium/webdriver/remote/webdriver.py

  • Added type hints to the __init__ method parameters of the WebDriver
    class.
  • Parameters command_executor, keep_alive, file_detector, and options
    now have explicit types.
  • +4/-4     

    PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    Copy link
    Contributor

    PR Description updated to latest commit (fb95163)

    Copy link
    Contributor

    PR Review

    ⏱️ Estimated effort to review [1-5]

    2, because the changes are limited to adding type hints to the __init__ method of the WebDriver class. This is a straightforward enhancement that improves code readability and type checking without altering the existing functionality.

    🧪 Relevant tests

    No

    🔍 Possible issues

    Type Compatibility: Ensure that all existing usages of WebDriver.__init__ are compatible with the newly added type hints. This includes checking that all arguments passed to command_executor, keep_alive, file_detector, and options conform to the specified types.

    🔒 Security concerns

    No


    ✨ Review tool usage guide:

    Overview:
    The review tool scans the PR code changes, and generates a PR review which includes several types of feedbacks, such as possible PR issues, security threats and relevant test in the PR. More feedbacks can be added by configuring the tool.

    The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.

    • When commenting, to edit configurations related to the review tool (pr_reviewer section), use the following template:
    /review --pr_reviewer.some_config1=... --pr_reviewer.some_config2=...
    
    [pr_reviewer]
    some_config1=...
    some_config2=...
    

    See the review usage page for a comprehensive guide on using this tool.

    Copy link
    Contributor

    PR Code Suggestions

    CategorySuggestions                                                                                                                                                       
    Enhancement
    Add import statements for Union and Optional from the typing module.

    Consider using from typing import Union, Optional at the beginning of this file to ensure
    that Union and Optional are properly imported for type hinting. This will make the code
    more readable and maintainable.

    py/selenium/webdriver/remote/webdriver.py [166-169]

    +from typing import Union, Optional
    +...
     command_executor: Union[str, RemoteConnection] = "http://127.0.0.1:4444",
     keep_alive: bool = True,
     file_detector: Optional[FileDetector] = None,
     options: Optional[Union[BaseOptions, List[BaseOptions]]] = None,
     
    Use Sequence instead of List for the options parameter to allow more iterable types.

    For the options parameter, consider specifying a more precise type hint by using
    typing.Sequence instead of List for the collection of BaseOptions. This would allow for a
    wider range of iterable types to be passed as arguments, enhancing the flexibility of the
    init method.

    py/selenium/webdriver/remote/webdriver.py [169]

    -options: Optional[Union[BaseOptions, List[BaseOptions]]] = None,
    +from typing import Sequence
    +...
    +options: Optional[Union[BaseOptions, Sequence[BaseOptions]]] = None,
     

    ✨ Improve tool usage guide:

    Overview:
    The improve tool scans the PR code changes, and automatically generates suggestions for improving the PR code. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on a PR.

    • When commenting, to edit configurations related to the improve tool (pr_code_suggestions section), use the following template:
    /improve --pr_code_suggestions.some_config1=... --pr_code_suggestions.some_config2=...
    
    [pr_code_suggestions]
    some_config1=...
    some_config2=...
    

    See the improve usage page for a comprehensive guide on using this tool.

    Copy link
    Member

    @diemol diemol left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Thank you, @adamtheturtle!

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    2 participants