T1lyè"dZddlmZddlZddlmZdZddd d d ZiZd Z d Z dZ Gdde Z e dZe dZe dZd!dZdZedfdZd!dZdZedfdZdZGdde ZGdd e ZdS)"a webencodings ~~~~~~~~~~~~ This is a Python implementation of the `WHATWG Encoding standard `. See README for details. :copyright: Copyright 2012 by Simon Sapin :license: BSD, see LICENSE for details. )unicode_literalsN)LABELSz0.5.1z iso-8859-8z mac-cyrillicz mac-romancp874)z iso-8859-8-izx-mac-cyrillic macintoshz windows-874cv|ddS)a9Transform (only) ASCII letters to lower case: A-Z is mapped to a-z. :param string: An Unicode string. :returns: A new Unicode string. This is used for `ASCII case-insensitive `_ matching of encoding labels. The same matching is also used, among other things, for `CSS keywords `_. This is different from the :meth:`~py:str.lower` method of Unicode strings which also affect non-ASCII characters, sometimes mapping them into the ASCII range: >>> keyword = u'Bac\N{KELVIN SIGN}ground' >>> assert keyword.lower() == u'background' >>> assert ascii_lower(keyword) != keyword.lower() >>> assert ascii_lower(keyword) == u'bac\N{KELVIN SIGN}ground' utf8)encodelowerdecode)strings /builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el9.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/webencodings/__init__.py ascii_lowerr#s0. == & & ( ( / / 7 77c^t|d}tj|}|dSt|}|V|dkrddlm}n/t||}tj |}t||}|t|<|S)u< Look for an encoding by its label. This is the spec’s `get an encoding `_ algorithm. Supported labels are listed there. :param label: A string. :returns: An :class:`Encoding` object, or :obj:`None` for an unknown label. z Nzx-user-definedr) codec_info) rstriprgetCACHEx_user_definedr PYTHON_NAMEScodecslookupEncoding)labelnameencodingr python_names rrr=s  K00 1 1E :e  D |tyyH # # # 2 2 2 2 2 2 2&**466K{33JD*--d Orcpt|dr|St|}|td|z|S)z Accept either an encoding object or label. :param encoding: An :class:`Encoding` object or a label string. :returns: An :class:`Encoding` object. :raises: :exc:`~exceptions.LookupError` for an unknown label. rNzUnknown encoding label: %r)hasattrr LookupError)encoding_or_labelrs r _get_encodingr#[sK ,//!  '((H69JJKKK OrceZdZdZdZdZdS)raOReresents a character encoding such as UTF-8, that can be used for decoding or encoding. .. attribute:: name Canonical name of the encoding .. attribute:: codec_info The actual implementation of the encoding, a stdlib :class:`~codecs.CodecInfo` object. See :func:`codecs.register`. c"||_||_dSN)rr)selfrrs r__init__zEncoding.__init__|s $rcd|jzS)Nz )r)r's r__repr__zEncoding.__repr__s**rN)__name__ __module__ __qualname____doc__r(r*rrrrms<  %%%+++++rrzutf-8zutf-16lezutf-16bereplacect|}t|\}}|p|}|j||d|fS)a Decode a single string. :param input: A byte string :param fallback_encoding: An :class:`Encoding` object or a label string. The encoding to use if :obj:`input` does note have a BOM. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. :return: A ``(output, encoding)`` tuple of an Unicode string and an :obj:`Encoding`. r)r# _detect_bomrr )inputfallback_encodingerrors bom_encodingrs rr r sS &&788%e,,L%00H   % %eV 4 4Q 7 AArc|drt|ddfS|drt|ddfS|drt|ddfSd|fS)zBReturn (bom_encoding, input), with any BOM removed from the input.sNss) startswith_UTF16LE_UTF16BEUTF8)r3s rr2r2s  $$#qrr""  $$#qrr"" ((U122Y ;rstrictc^t|j||dS)a; Encode a single string. :param input: An Unicode string. :param encoding: An :class:`Encoding` object or a label string. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. :return: A byte string. r)r#rr )r3rr5s rr r s*  " " - 4 4UF C CA FFrcht||}t||}t|}||fS)a "Pull"-based decoder. :param input: An iterable of byte strings. The input is first consumed just enough to determine the encoding based on the precense of a BOM, then consumed on demand when the return value is. :param fallback_encoding: An :class:`Encoding` object or a label string. The encoding to use if :obj:`input` does note have a BOM. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. :returns: An ``(output, encoding)`` tuple. :obj:`output` is an iterable of Unicode strings, :obj:`encoding` is the :obj:`Encoding` that is being used. )IncrementalDecoder_iter_decode_generatornext)r3r4r5decoder generatorrs r iter_decoderFs9,!!2F;;G&ug66IIH h rc#.K|j}t|}|D]'}||}|r|jJ|jV|Vn((|dd}|jJ|jV|r|VdS|D]}||}|r|V|dd}|r|VdSdS)zqReturn a generator that first yields the :obj:`Encoding`, then yields output chukns as Unicode strings. NrTfinal)r iterr)r3rDr chunckoutputs rrBrBs ^F KKE  #///" " " "LLL E  4(((+++  LLL  LLL VCt $ $ $F  rcLt||j}t||S)uY “Pull”-based encoder. :param input: An iterable of Unicode strings. :param encoding: An :class:`Encoding` object or a label string. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. :returns: An iterable of byte strings. )IncrementalEncoderr _iter_encode_generator)r3rr5r s r iter_encoderPs& & 1 1 8F !% 0 00rc#`K|D]}||}|r|V|dd}|r|VdSdS)NTrHr/)r3r rKrLs rrOrOsg  LLL VBd # # #F  rc"eZdZdZddZddZdS) rAuO “Push”-based decoder. :param fallback_encoding: An :class:`Encoding` object or a label string. The encoding to use if :obj:`input` does note have a BOM. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. r0cft||_||_d|_d|_d|_dS)Nr)r#_fallback_encoding_errors_buffer_decoderr)r'r4r5s rr(zIncrementalDecoder.__init__s5"/0A"B"B    rFc.|j}| |||S|j|z}t|\}}|%t|dkr |s ||_dS|j}|j|jj}||_||_ |||S)zDecode one chunk of the input. :param input: A byte string. :param final: Indicate that no more input is available. Must be :obj:`True` if this is the last call. :returns: An Unicode string. Nr9rR) rXrWr2lenrUrincrementaldecoderrVr r)r'r3rIrDrs rr zIncrementalDecoder.decode's-  75%(( ( u$%e,,%  5zzA~~e~$ r2%88FFM   wue$$$rNr0)F)r+r,r-r.r(r r/rrrArAsF      %%%%%%rrAceZdZdZedfdZdS)rNu “Push”-based encoder. :param encoding: An :class:`Encoding` object or a label string. :param errors: Type of error handling. See :func:`codecs.register`. :raises: :exc:`~exceptions.LookupError` for an unknown encoding label. .. method:: encode(input, final=False) :param input: An Unicode string. :param final: Indicate that no more input is available. Must be :obj:`True` if this is the last call. :returns: A byte string. r>clt|}|j|j|_dSr&)r#rincrementalencoderr )r'rr5s rr(zIncrementalEncoder.__init__Ts. **)<rds  ('''''   !$  8884<$+++++v+++0vg 6*   6*  BBBB,  G G G G8@!%X 1 1 1 1 0%0%0%0%0%0%0%0%fLLLLLLLLLLr