{"id":"e2c779e5d3bc0ed0","repo":"pypa/pip","slug":"trusted-host-url-must-include-a-host-part-host-r","errorCode":null,"errorMessage":"Trusted host URL must include a host part: {host!r}","messagePattern":"Trusted host URL must include a host part: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/pip/_internal/network/session.py","lineNumber":426,"sourceCode":"\n    def add_trusted_host(\n        self, host: str, source: str | None = None, suppress_logging: bool = False\n    ) -> None:\n        \"\"\"\n        :param host: It is okay to provide a host that has previously been\n            added.\n        :param source: An optional source string, for logging where the host\n            string came from.\n        \"\"\"\n        if not suppress_logging:\n            msg = f\"adding trusted host: {host!r}\"\n            if source is not None:\n                msg += f\" (from {source})\"\n            logger.info(msg)\n\n        parsed_host, parsed_port = parse_netloc(host)\n        if parsed_host is None:\n            raise ValueError(f\"Trusted host URL must include a host part: {host!r}\")\n        if (parsed_host, parsed_port) not in self.pip_trusted_origins:\n            self.pip_trusted_origins.append((parsed_host, parsed_port))\n\n        self.mount(\n            build_url_from_netloc(host, scheme=\"http\") + \"/\", self._trusted_host_adapter\n        )\n        self.mount(build_url_from_netloc(host) + \"/\", self._trusted_host_adapter)\n        if not parsed_port:\n            self.mount(\n                build_url_from_netloc(host, scheme=\"http\") + \":\",\n                self._trusted_host_adapter,\n            )\n            # Mount wildcard ports for the same host.\n            self.mount(build_url_from_netloc(host) + \":\", self._trusted_host_adapter)\n\n    def iter_secure_origins(self) -> Generator[SecureOrigin, None, None]:\n        yield from SECURE_ORIGINS\n        for host, port in self.pip_trusted_origins:","sourceCodeStart":408,"sourceCodeEnd":444,"githubUrl":"https://github.com/pypa/pip/blob/d7d0d0a39494e28ec1c407bd0680e4a4d1067791/src/pip/_internal/network/session.py#L408-L444","documentation":"Error \"Trusted host URL must include a host part: {host!r}\" thrown in pypa/pip.","triggerScenarios":"Thrown at src/pip/_internal/network/session.py:426 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"d7d0d0a39494e28ec1c407bd0680e4a4d1067791","analyzedAt":"2026-08-04T20:55:04.259Z","schemaVersion":2}