{"record":{"id":"27ea325b133dc467","repo":"SeleniumHQ/selenium","slug":"reuse-must-be-a-boolean","errorCode":null,"errorMessage":"reuse must be a boolean","messagePattern":"reuse must be a boolean","errorType":"exception","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"py/selenium/webdriver/safari/service.py","lineNumber":79,"sourceCode":"            **kwargs,\n        )\n\n    def command_line_args(self) -> list[str]:\n        return [\"-p\", f\"{self.port}\"] + self._service_args\n\n    @property\n    def service_url(self) -> str:\n        \"\"\"Gets the url of the SafariDriver Service.\"\"\"\n        return f\"http://localhost:{self.port}\"\n\n    @property\n    def reuse_service(self) -> bool:\n        return self._reuse_service\n\n    @reuse_service.setter\n    def reuse_service(self, reuse: bool) -> None:\n        if not isinstance(reuse, bool):\n            raise TypeError(\"reuse must be a boolean\")\n        self._reuse_service = reuse\n\n    @property\n    def service_args(self) -> Sequence[str]:\n        \"\"\"Returns the sequence of service arguments.\"\"\"\n        return self._service_args\n\n    @service_args.setter\n    def service_args(self, value: Sequence[str]):\n        if isinstance(value, str) or not isinstance(value, Sequence):\n            raise TypeError(\"service_args must be a sequence\")\n        self._service_args = list(value)\n","sourceCodeStart":61,"sourceCodeEnd":92,"githubUrl":"https://github.com/SeleniumHQ/selenium/blob/aa36b38e696a0909e973bdf5e2f9031ffe842c4b/py/selenium/webdriver/safari/service.py#L61-L92","documentation":"Service.reuse_service setter enforces that the value is a bool. Assigning any non-bool (int 0/1, string, None) raises TypeError.","triggerScenarios":"service.reuse_service = 1, service.reuse_service = 'true', or service.reuse_service = None.","commonSituations":"Config-driven booleans arriving from YAML/env as strings or ints; treating Python truthiness as equivalent to bool.","solutions":["Assign an actual bool: service.reuse_service = True.","Parse config booleans through a helper that returns a real bool."],"exampleFix":"# before\nservice.reuse_service = 1\n\n# after\nservice.reuse_service = True","handlingStrategy":"type-guard","validationCode":null,"typeGuard":"def as_bool(v) -> bool:\n    if isinstance(v, bool):\n        return v\n    raise TypeError(\"reuse_service requires a bool\")","tryCatchPattern":null,"preventionTips":["Never substitute 0/1 or 'true'/'false' strings for bool on this setter.","Centralise env/config bool parsing so raw strings never reach setters."],"tags":["safari","service","type-validation"],"backgroundTag":null,"analyzedSha":"aa36b38e696a0909e973bdf5e2f9031ffe842c4b","analyzedAt":"2026-08-14T02:32:32.244Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}