# This file is part of the pycalver project # https://github.com/mbarkhau/pycalver # # Copyright (c) 2018-2020 Manuel Barkhau (mbarkhau@gmail.com) - MIT License # SPDX-License-Identifier: MIT import sys import typing as typ PY2 = sys.version_info.major < 3 try: from urllib.parse import quote as py3_stdlib_quote except ImportError: from urllib import quote as py2_stdlib_quote # type: ignore # NOTE (mb 2016-05-23): quote in python2 expects bytes argument. def quote( string : str, safe : str = "/", encoding: typ.Optional[str] = None, errors : typ.Optional[str] = None, ) -> str: if not isinstance(string, str): errmsg = f"Expected str/unicode but got {type(string)}" # type: ignore raise TypeError(errmsg) if encoding is None: _encoding = "utf-8" else: _encoding = encoding if errors is None: _errors = "strict" else: _errors = errors if PY2: data = string.encode(_encoding) res = py2_stdlib_quote(data, safe=safe.encode(_encoding)) return res.decode(_encoding, errors=_errors) else: return py3_stdlib_quote(string, safe=safe, encoding=_encoding, errors=_errors)