Skip to content

Conversation

mgorny
Copy link
Contributor

@mgorny mgorny commented Jan 21, 2025

User description

Description

Change namespaces to true to fix installing
selenium.webdriver.common.devtools.* packages, and fix package-data to fix installing .js and .json data files. The latter would specify a non-existing selenium_package package name -- instead, specify * to apply it to all Python packages found.

With these changes, the result of installing the source distribution is almost identical to the result of installing the wheel. One remaining problem is that selenium-manager is not included -- my guess is that there is no logic copying the built Rust executable into the expected location.

Another problem is that these changes do not work when installing from a VCS checkout -- since all the relevant data files are explicitly excluded by .gitignore and that takes precedence over data-files. However, this was broken before, so it should not really matter.

Motivation and Context

Fixes #15125 -- install from source distribution resulting in missing data files

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.

PR Type

Bug fix


Description

  • Enabled namespaces to fix package installation issues.

  • Updated package-data to include .js and .json files.

  • Resolved discrepancies between source distribution and wheel installation.

  • Addressed missing data files during source distribution installation.


Changes walkthrough 📝

Relevant files
Bug fix
pyproject.toml
Fix package and data file installation issues                       

py/pyproject.toml

  • Changed namespaces to true to fix package installation.
  • Updated package-data to apply to all Python packages.
  • Ensured inclusion of .py, .rst, .json, and .xpi files.
  • +2/-2     

    Need help?
  • Type /help how to ... in the comments thread for any question about Qodo Merge usage.
  • Check out the documentation for more information.
  • Change `namespaces` to true to fix installing `selenium.webdriver.common.devtools.*` packages, and fix `package-data` to fix installing `.js` and `.json` data files. The latter would specify a non-existing `selenium_package` package name -- instead, specify `*` to apply it to all Python packages found. With these changes, the result of installing the source distribution is almost identical to the result of installing the wheel. One remaining problem is that `selenium-manager` is not included -- my guess is that there is no logic copying the built Rust executable into the expected location. Another problem is that these changes do not work when installing from a VCS checkout -- since all the relevant data files are explicitly excluded by `.gitignore` and that takes precedence over `data-files`. However, this was broken before, so it should not really matter. Fixes SeleniumHQ#15125
    @CLAassistant
    Copy link

    CLAassistant commented Jan 21, 2025

    CLA assistant check
    All committers have signed the CLA.

    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Package Data

    The wildcard "*" for package-data is very broad and might include unnecessary files. Consider being more specific about which packages need these data files.

    "*" = [ "*.py", "*.rst", "*.json", "*.xpi",
    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Possible issue
    Fix missing array closing bracket

    Consider adding a closing bracket for the package-data array. The current
    configuration is missing the closing bracket for the array of file patterns.

    py/pyproject.toml [56-61]

     [tool.setuptools.package-data] "*" = [ "*.py", "*.rst", "*.json", "*.xpi", +]
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: The suggestion correctly identifies a critical syntax error in the TOML file where the array is not properly closed, which could cause package configuration issues and build failures.

    9
    @mgorny
    Copy link
    Contributor Author

    mgorny commented Jan 21, 2025

    That linter seems to not "see" the whole file?

    @VietND96
    Copy link
    Member

    This is source dist is built from this PR https://test.pypi.org/project/selenium/4.29.0.202501211759/#files
    @mgorny, can you double check this before we release a patch?

    @mgorny
    Copy link
    Contributor Author

    mgorny commented Jan 21, 2025

    Yep, I can confirm it looks good (modulo what was said above):

     ---- Name -selenium-4.28.0.dist-info/LICENSE -selenium-4.28.0.dist-info/METADATA -selenium-4.28.0.dist-info/RECORD -selenium-4.28.0.dist-info/WHEEL +selenium-4.29.0.202501211759.dist-info/LICENSE +selenium-4.29.0.202501211759.dist-info/METADATA +selenium-4.29.0.202501211759.dist-info/RECORD +selenium-4.29.0.202501211759.dist-info/top_level.txt +selenium-4.29.0.202501211759.dist-info/WHEEL selenium/common/exceptions.py selenium/common/__init__.py selenium/__init__.py @@ -265,9 +266,7 @@ selenium/webdriver/common/fedcm/dialog.p selenium/webdriver/common/fedcm/__init__.py selenium/webdriver/common/__init__.py selenium/webdriver/common/keys.py -selenium/webdriver/common/linux/selenium-manager selenium/webdriver/common/log.py -selenium/webdriver/common/macos/selenium-manager selenium/webdriver/common/mutation-listener.js selenium/webdriver/common/options.py selenium/webdriver/common/print_page_options.py @@ -278,7 +277,6 @@ selenium/webdriver/common/timeouts.py selenium/webdriver/common/utils.py selenium/webdriver/common/virtual_authenticator.py selenium/webdriver/common/window.py -selenium/webdriver/common/windows/selenium-manager.exe selenium/webdriver/edge/__init__.py selenium/webdriver/edge/options.py selenium/webdriver/edge/remote_connection.py
    Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
    @VietND96
    Copy link
    Member

    @diemol, the fix is verified and ready for patch 4.28.1

    @VietND96 VietND96 requested a review from diemol January 22, 2025 04:54
    @VietND96
    Copy link
    Member

    @VietND96
    Copy link
    Member

    Looks like it works

    % python -m zipfile --list selenium-4.28.1-py3-none-any.whl | grep manager selenium/webdriver/common/linux/selenium-manager 1980-01-01 00:00:00 5445056 selenium/webdriver/common/macos/selenium-manager 1980-01-01 00:00:00 8060816 selenium/webdriver/common/selenium_manager.py 1980-01-01 00:00:00 5335 selenium/webdriver/common/windows/selenium-manager.exe 1980-01-01 00:00:00 3691008 
    @VietND96
    Copy link
    Member

    @mgorny, if having time, can you do one more check in the latest source dist with new changes before merging the PR and release patch.

    Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
    @VietND96 VietND96 merged commit 0f497d7 into SeleniumHQ:trunk Jan 23, 2025
    17 checks passed
    @mgorny
    Copy link
    Contributor Author

    mgorny commented Jan 23, 2025

    @mgorny, can you also check this source dist? https://test.pypi.org/project/selenium/4.29.0.202501230540/#files

    This one seems broken to me:

    $ python -m build -w * Creating isolated environment: venv+pip... * Installing packages in isolated environment: - setuptools - setuptools-rust * Getting build dependencies for wheel... running egg_info creating selenium.egg-info writing selenium.egg-info/PKG-INFO writing dependency_links to selenium.egg-info/dependency_links.txt writing requirements to selenium.egg-info/requires.txt writing top-level names to selenium.egg-info/top_level.txt writing manifest file 'selenium.egg-info/SOURCES.txt' reading manifest file 'selenium.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'selenium.egg-info/SOURCES.txt' * Building wheel... running bdist_wheel running build running build_py creating build/lib.linux-x86_64-cpython-312/selenium copying selenium/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium copying selenium/types.py -> build/lib.linux-x86_64-cpython-312/selenium creating build/lib.linux-x86_64-cpython-312/selenium/common copying selenium/common/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/common copying selenium/common/exceptions.py -> build/lib.linux-x86_64-cpython-312/selenium/common creating build/lib.linux-x86_64-cpython-312/selenium/webdriver copying selenium/webdriver/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome copying selenium/webdriver/chrome/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome copying selenium/webdriver/chrome/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome copying selenium/webdriver/chrome/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome copying selenium/webdriver/chrome/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome copying selenium/webdriver/chrome/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chrome creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium copying selenium/webdriver/chromium/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium copying selenium/webdriver/chromium/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium copying selenium/webdriver/chromium/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium copying selenium/webdriver/chromium/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium copying selenium/webdriver/chromium/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/chromium creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/action_chains.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/alert.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/by.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/desired_capabilities.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/driver_finder.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/keys.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/log.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/print_page_options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/proxy.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/selenium_manager.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/timeouts.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/utils.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/virtual_authenticator.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/common/window.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge copying selenium/webdriver/edge/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge copying selenium/webdriver/edge/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge copying selenium/webdriver/edge/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge copying selenium/webdriver/edge/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge copying selenium/webdriver/edge/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/edge creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/firefox_binary.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/firefox_profile.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/firefox/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/ie copying selenium/webdriver/ie/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/ie copying selenium/webdriver/ie/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/ie copying selenium/webdriver/ie/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/ie copying selenium/webdriver/ie/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/ie creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/bidi_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/client_config.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/command.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/errorhandler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/fedcm.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/file_detector.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/locator_converter.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/mobile.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/script_key.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/shadowroot.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/switch_to.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/utils.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/webelement.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/websocket_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/permissions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/remote_connection.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari copying selenium/webdriver/safari/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/safari creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/abstract_event_listener.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/color.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/event_firing_webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/events.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/expected_conditions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/relative_locator.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/select.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/ui.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support copying selenium/webdriver/support/wait.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/support creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/webkitgtk copying selenium/webdriver/webkitgtk/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/webkitgtk copying selenium/webdriver/webkitgtk/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/webkitgtk copying selenium/webdriver/webkitgtk/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/webkitgtk copying selenium/webdriver/webkitgtk/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/webkitgtk creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/wpewebkit copying selenium/webdriver/wpewebkit/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/wpewebkit copying selenium/webdriver/wpewebkit/options.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/wpewebkit copying selenium/webdriver/wpewebkit/service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/wpewebkit copying selenium/webdriver/wpewebkit/webdriver.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/wpewebkit creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/action_builder.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/input_device.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/interaction.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/key_actions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/key_input.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/mouse_button.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/pointer_actions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/pointer_input.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/wheel_actions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions copying selenium/webdriver/common/actions/wheel_input.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/actions creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi copying selenium/webdriver/common/bidi/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi copying selenium/webdriver/common/bidi/cdp.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi copying selenium/webdriver/common/bidi/console.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi copying selenium/webdriver/common/bidi/script.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi copying selenium/webdriver/common/bidi/session.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/bidi creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/fedcm copying selenium/webdriver/common/fedcm/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/fedcm copying selenium/webdriver/common/fedcm/account.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/fedcm copying selenium/webdriver/common/fedcm/dialog.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/fedcm creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/accessibility.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/animation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/audits.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/autofill.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/background_service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/bluetooth_emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/browser.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/cache_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/cast.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/console.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/css.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/database.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/device_access.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/device_orientation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/dom.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/dom_debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/dom_snapshot.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/dom_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/event_breakpoints.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/extensions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/fed_cm.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/fetch.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/file_system.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/headless_experimental.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/heap_profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/indexed_db.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/input_.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/inspector.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/io.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/layer_tree.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/log.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/media.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/memory.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/network.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/overlay.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/page.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/performance.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/performance_timeline.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/preload.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/pwa.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/runtime.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/schema.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/security.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/service_worker.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/system_info.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/target.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/tethering.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/tracing.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/util.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/web_audio.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v130/web_authn.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/accessibility.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/animation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/audits.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/autofill.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/background_service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/bluetooth_emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/browser.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/cache_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/cast.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/console.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/css.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/database.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/device_access.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/device_orientation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/dom.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/dom_debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/dom_snapshot.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/dom_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/event_breakpoints.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/extensions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/fed_cm.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/fetch.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/file_system.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/headless_experimental.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/heap_profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/indexed_db.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/input_.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/inspector.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/io.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/layer_tree.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/log.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/media.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/memory.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/network.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/overlay.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/page.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/performance.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/performance_timeline.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/preload.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/pwa.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/runtime.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/schema.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/security.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/service_worker.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/system_info.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/target.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/tethering.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/tracing.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/util.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/web_audio.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v131/web_authn.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/accessibility.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/animation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/audits.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/autofill.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/background_service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/bluetooth_emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/browser.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/cache_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/cast.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/console.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/css.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/database.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/device_access.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/device_orientation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/dom.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/dom_debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/dom_snapshot.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/dom_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/event_breakpoints.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/extensions.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/fed_cm.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/fetch.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/file_system.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/headless_experimental.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/heap_profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/indexed_db.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/input_.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/inspector.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/io.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/layer_tree.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/log.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/media.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/memory.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/network.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/overlay.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/page.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/performance.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/performance_timeline.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/preload.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/pwa.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/runtime.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/schema.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/security.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/service_worker.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/system_info.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/target.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/tethering.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/tracing.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/util.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/web_audio.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v132/web_authn.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 creating build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/__init__.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/accessibility.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/animation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/application_cache.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/audits.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/background_service.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/browser.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/cache_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/cast.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/console.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/css.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/database.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/device_orientation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/dom.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/dom_debugger.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/dom_snapshot.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/dom_storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/emulation.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/fetch.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/headless_experimental.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/heap_profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/indexed_db.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/input_.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/inspector.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/io.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/layer_tree.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/log.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/media.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/memory.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/network.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/overlay.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/page.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/performance.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/profiler.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/runtime.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/schema.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/security.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/service_worker.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/storage.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/system_info.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/target.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/tethering.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/tracing.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/util.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/web_audio.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 copying selenium/webdriver/common/devtools/v85/web_authn.py -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 running egg_info writing selenium.egg-info/PKG-INFO writing dependency_links to selenium.egg-info/dependency_links.txt writing requirements to selenium.egg-info/requires.txt writing top-level names to selenium.egg-info/top_level.txt reading manifest file 'selenium.egg-info/SOURCES.txt' adding license file 'LICENSE' writing manifest file 'selenium.egg-info/SOURCES.txt' copying selenium/py.typed -> build/lib.linux-x86_64-cpython-312/selenium copying selenium/webdriver/common/mutation-listener.js -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common copying selenium/webdriver/firefox/webdriver_prefs.json -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/firefox copying selenium/webdriver/remote/findElements.js -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/getAttribute.js -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/remote/isDisplayed.js -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/remote copying selenium/webdriver/common/devtools/v130/py.typed -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v130 copying selenium/webdriver/common/devtools/v131/py.typed -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v131 copying selenium/webdriver/common/devtools/v132/py.typed -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v132 copying selenium/webdriver/common/devtools/v85/py.typed -> build/lib.linux-x86_64-cpython-312/selenium/webdriver/common/devtools/v85 running build_ext running build_rust cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib -- error: the package 'selenium-manager' does not contain this feature: pyo3/extension-module error: `cargo rustc --lib --message-format=json-render-diagnostics --manifest-path Cargo.toml --release -v --features pyo3/extension-module --crate-type cdylib --` failed with code 101 ERROR Backend subprocess exited when trying to invoke build_wheel 
    @VietND96
    Copy link
    Member

    Oops, looks like it needs Cargo.toml change also https://stackoverflow.com/a/71757467/14532601
    So, we must remove that config as of now?

    @VietND96
    Copy link
    Member

    @mgorny, sorry for disturbing last minute, but package 4.28.1 was already out with this error. Do you have any workaround from your end to remove those 2 lines from pyproject.toml? Or we need a commit to remove it and release 4.28.2?

    @mgorny mgorny deleted the fix-install-data branch January 24, 2025 06:49
    @mgorny
    Copy link
    Contributor Author

    mgorny commented Jan 24, 2025

    @mgorny, sorry for disturbing last minute, but package 4.28.1 was already out with this error. Do you have any workaround from your end to remove those 2 lines from pyproject.toml? Or we need a commit to remove it and release 4.28.2?

    Yes, we build selenium-manager separately, so it's fine for me. However, it will fail for users who do, e.g.:

    pip install --no-binary selenium selenium 

    But I don't have a stake here, so it's up to you.

    @kbipinkumar
    Copy link

    Oops, looks like it needs Cargo.toml change also https://stackoverflow.com/a/71757467/14532601 So, we must remove that config as of now?

    any idea whether this will be fixed? i am encountering the build error as menetioned here while attempting to build python-selenium package from arch user repository.

    @VietND96
    Copy link
    Member

    VietND96 commented Feb 3, 2025

    As the workaround, can you remove these 2 lines in pyproject.toml before building package?

    [[tool.setuptools-rust.ext-modules]] target = "selenium.webdriver.common.selenium-manager" 

    The fix will be delivered in 4.29.0.

    sandeepsuryaprasad pushed a commit to sandeepsuryaprasad/selenium that referenced this pull request Mar 23, 2025
    …iumHQ#15128) Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com> Co-authored-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
    gryznar pushed a commit to gryznar/selenium that referenced this pull request May 17, 2025
    …iumHQ#15128) Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com> Co-authored-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
    @jameshilliard
    Copy link
    Contributor

    One remaining problem is that selenium-manager is not included -- my guess is that there is no logic copying the built Rust executable into the expected location.

    I think #16074 will fix this btw.

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