# Licensed to the Software Freedom Conservancy (SFC) under one1# or more contributor license agreements. See the NOTICE file2# distributed with this work for additional information3# regarding copyright ownership. The SFC licenses this file4# to you under the Apache License, Version 2.0 (the5# "License"); you may not use this file except in compliance6# with the License. You may obtain a copy of the License at7#8# http://www.apache.org/licenses/LICENSE-2.09#10# Unless required by applicable law or agreed to in writing,11# software distributed under the License is distributed on an12# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY13# KIND, either express or implied. See the License for the14# specific language governing permissions and limitations15# under the License.161718"""Run mypy type checker for Selenium Python bindings.1920This script is used by Bazel to run mypy type checking.21"""2223import os24import sys2526from mypy import api272829def main():30# Find the workspace root - Bazel sets BUILD_WORKSPACE_DIRECTORY when using 'bazel run'31workspace = os.environ.get("BUILD_WORKSPACE_DIRECTORY")32if workspace:33py_dir = os.path.join(workspace, "py")34else:35# Fallback for direct execution36py_dir = os.path.dirname(os.path.abspath(__file__))3738os.chdir(py_dir)3940# Run mypy on the selenium package41# Configuration is read from pyproject.toml [tool.mypy] section42args = ["selenium", *sys.argv[1:]]43stdout, stderr, exit_code = api.run(args)4445if stdout:46print(stdout, end="")47if stderr:48print(stderr, end="", file=sys.stderr)4950sys.exit(exit_code)515253if __name__ == "__main__":54main()555657