def test_to_unicode(): assert isinstance(to_unicode(''), unicode_string) assert isinstance(to_unicode('abc'), unicode_string) assert isinstance(to_unicode(b'abc'), unicode_string) assert isinstance(to_unicode(u'abc'), unicode_string) assert isinstance(to_unicode(u'abc'.encode('latin-1'), encoding='latin-1'), unicode_string) for bad_value in (123, None): with pytest.raises(ValueError): to_unicode(bad_value)
def test_to_unicode(): assert isinstance(to_unicode(""), unicode_string) assert isinstance(to_unicode("abc"), unicode_string) assert isinstance(to_unicode(b"abc"), unicode_string) assert isinstance(to_unicode(u"abc"), unicode_string) assert isinstance(to_unicode(u"abc".encode("latin-1"), encoding="latin-1"), unicode_string) for bad_value in (123, None): with pytest.raises(ValueError): to_unicode(bad_value)
def test_to_unicode(): # type: () -> None assert isinstance(to_unicode(""), unicode_string) assert isinstance(to_unicode("abc"), unicode_string) assert isinstance(to_unicode(b"abc"), unicode_string) assert isinstance(to_unicode(u"abc"), unicode_string) assert isinstance( to_unicode(u"abc".encode("latin-1"), encoding=u"latin-1"), unicode_string) for bad_value in (123, None): with pytest.raises(ValueError): to_unicode(bad_value) # type: ignore[type-var]
def get_body_iter(self, url): # type: (str) -> Iterator[Iterator[Text]] retries = 0 retry_delay_secs = 0.1 last_error = None # type: Optional[Exception] while retries <= self._max_retries: if retries > 0: time.sleep(retry_delay_secs) retry_delay_secs *= 2 opener = build_opener(*self._handlers) request = Request(url, headers=self._headers) try: with closing(opener.open(request, timeout=self._timeout)) as fp: # The fp is typed as Optional[...] for Python 2 only in the typeshed. A `None` # can only be returned if a faulty custom handler is installed and we only # install stdlib handlers. body_stream = cast("BinaryIO", fp) yield (to_unicode(line) for line in body_stream.readlines()) return except HTTPError as e: # See: https://tools.ietf.org/html/rfc2616#page-39 if e.code not in ( 408, # Request Time-out 500, # Internal Server Error 503, # Service Unavailable 504, # Gateway Time-out ): raise e last_error = e except (IOError, OSError) as e: # Unfortunately errors are overly broad at this point. We can get either OSError or # URLError (a subclass of OSError) which at times indicates retryable socket level # errors. Since retrying a non-retryable socket level error just wastes local # machine resources we err towards always retrying. last_error = e finally: retries += 1 raise cast(Exception, last_error)
def parse_entry_points(self): def split_and_strip(entry_point): console_script, entry_point = entry_point.split('=', 2) return console_script.strip(), entry_point.strip() raw_entry_points = self.distribution.entry_points if isinstance(raw_entry_points, string): parser = ConfigParser() parser.readfp(StringIO(to_unicode(raw_entry_points))) if parser.has_section('console_scripts'): return dict(parser.items('console_scripts')) elif isinstance(raw_entry_points, dict): try: return dict(split_and_strip(script) for script in raw_entry_points.get('console_scripts', [])) except ValueError: pass elif raw_entry_points is not None: die('When entry_points is provided, it must be a string or dict.') return {}
def parse_entry_points(self): def parse_entry_point_name(entry_point): script_name = entry_point.split('=', 1)[0] return script_name.strip() raw_entry_points = self.distribution.entry_points if isinstance(raw_entry_points, string): parser = ConfigParser() parser.readfp(StringIO(to_unicode(raw_entry_points))) if parser.has_section('console_scripts'): return tuple(parser.options('console_scripts')) elif isinstance(raw_entry_points, dict): try: return tuple(parse_entry_point_name(script) for script in raw_entry_points.get('console_scripts', [])) except ValueError: pass elif raw_entry_points is not None: die('When entry_points is provided, it must be a string or dict.') return ()
def parse_entry_points(self): def parse_entry_point_name(entry_point): script_name = entry_point.split('=', 1)[0] return script_name.strip() raw_entry_points = self.distribution.entry_points if isinstance(raw_entry_points, string): parser = ConfigParser() parser.readfp(StringIO(to_unicode(raw_entry_points))) if parser.has_section('console_scripts'): return tuple(parser.options('console_scripts')) elif isinstance(raw_entry_points, dict): try: return tuple( parse_entry_point_name(script) for script in raw_entry_points.get('console_scripts', [])) except ValueError: pass elif raw_entry_points is not None: die('When entry_points is provided, it must be a string or dict.') return ()
def run_pyenv(args): # type: (Iterable[str]) -> Text return to_unicode(subprocess.check_output([pyenv] + list(args), env=pyenv_env))
def _parse_message(message): # type: (bytes) -> Message return cast(Message, Parser().parse(StringIO(to_unicode(message))))