
    3j                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd	lmZmZ dd
lmZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ  G d d      Z y)u3   UniversalDetector — streaming encoding detection.    )annotationsN)Iterable)MappingProxyType)ClassVar)_utils)DEFAULT_MAX_BYTES_resolve_prefer_superset_validate_max_bytes)EncodingEraLanguageFilter)PREFERRED_SUPERSETapply_compat_namesapply_preferred_superset)_NONE_RESULTDetectionDictDetectionResult)run_pipeline)_validate_encodingnormalize_encodingsc                      e Zd ZU dZej
                  Z ee      Zde	d<   e
j                  dej                  efddddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
ZddZddZddZedd       Zedd       Zy)UniversalDetectora  Streaming character encoding detector.

    Implements a feed/close pattern for incremental detection of character
    encoding from byte streams.  Compatible with the chardet 6.x API.

    All detection is performed by the same pipeline used by
    :func:`chardet.detect` and :func:`chardet.detect_all`, ensuring
    consistent results regardless of which API is used.

    .. note::

        This class is **not** thread-safe.  Each thread should create its own
        :class:`UniversalDetector` instance.
    z$ClassVar[MappingProxyType[str, str]]
LEGACY_MAPFTNcp1252zutf-8)prefer_supersetcompat_namesinclude_encodingsexclude_encodingsno_match_encodingempty_input_encodingc                  |t         j                  k7  rt        j                  dt        d       t        ||      }|| _        || _        t        |       || _	        || _
        t        |d      | _        t        |d      | _        t        |	d      | _        t        |
d      | _        t#               | _        d| _        d| _        d	| _        y	)
a3  Initialize the detector.

        :param lang_filter: Deprecated -- accepted for backward compatibility
            but has no effect.  A warning is emitted when set to anything
            other than :attr:`LanguageFilter.ALL`.
        :param should_rename_legacy: Deprecated alias for *prefer_superset*.
        :param encoding_era: Restrict candidate encodings to the given era.
        :param max_bytes: Maximum number of bytes to buffer from
            :meth:`feed` calls before stopping accumulation.
        :param prefer_superset: If ``True``, remap ISO subset encodings to
            their Windows/CP superset equivalents (e.g., ISO-8859-1 ->
            Windows-1252).
        :param compat_names: If ``True`` (default), return encoding names
            compatible with chardet 5.x/6.x.  If ``False``, return raw Python
            codec names.
        :param include_encodings: If given, restrict detection to only these
            encodings (names or aliases).
        :param exclude_encodings: If given, remove these encodings from the
            candidate set.
        :param no_match_encoding: Encoding to return when no candidate
            survives the pipeline.  Defaults to ``"cp1252"``.
        :param empty_input_encoding: Encoding to return for empty input.
            Defaults to ``"utf-8"``.
        zMlang_filter is not implemented in this version of chardet and will be ignored   )
stacklevelr   r   r   r   FN)r   ALLwarningswarnDeprecationWarningr	   _prefer_superset_compat_namesr
   _encoding_era
_max_bytesr   _include_encodings_exclude_encodingsr   _no_match_encoding_empty_input_encoding	bytearray_buffer_done_closed_result)selflang_filtershould_rename_legacyencoding_era	max_bytesr   r   r   r   r   r   s              =/DATA/.local/lib/python3.12/site-packages/chardet/detector.py__init__zUniversalDetector.__init__2   s    L .,,,MM&"	 3 /
 !0)I&)#"52#
 #62#
 #52#
 &8 "8&
" !{
/3    c                .   | j                   rd}t        |      | j                  ry| j                  t	        | j
                        z
  }|dkD  r| j
                  j                  |d|        t	        | j
                        | j                  k\  rd| _        yy)a  Feed a chunk of bytes to the detector.

        Data is accumulated in an internal buffer.  Once *max_bytes* have
        been buffered, :attr:`done` is set to ``True`` and further data is
        ignored until :meth:`reset` is called.

        :param byte_str: The next chunk of bytes to examine.
        :raises ValueError: If called after :meth:`close` without a
            :meth:`reset`.
        z+feed() called after close() without reset()Nr   T)r2   
ValueErrorr1   r*   lenr0   extend)r4   byte_strmsg	remainings       r9   feedzUniversalDetector.feedx   s|     <<?CS/!::OOc$,,&77	q=LL) 45t||/DJ 0r;   c           	     (   | j                   s{d| _         t        | j                        }t        || j                  | j
                  | j                  | j                  | j                  | j                        }|d   | _
        d| _        | j                  S )zFinalize detection and return the best result.

        Runs the full detection pipeline on the buffered data.

        :returns: A dictionary with keys ``"encoding"``, ``"confidence"``,
            and ``"language"``.
        T)r8   r   r   r   r   r   )r2   bytesr0   r   r)   r*   r+   r,   r-   r.   r3   r1   result)r4   dataresultss      r9   closezUniversalDetector.close   s     ||DL&D"""//"&"9"9"&"9"9"&"9"9%)%?%?G #1:DLDJ{{r;   c                L    t               | _        d| _        d| _        d| _        y)z2Reset the detector to its initial state for reuse.FN)r/   r0   r1   r2   r3   r4   s    r9   resetzUniversalDetector.reset   s      {
r;   c                    | j                   S )z9Whether detection is complete and no more data is needed.)r1   rK   s    r9   donezUniversalDetector.done   s     zzr;   c                    | j                   J| j                   j                         }| j                  rt        |       | j                  rt        |       |S t        j                         S )z"The current best detection result.)r3   to_dictr'   r   r(   r   r   )r4   ds     r9   rF   zUniversalDetector.result   sV     <<#$$&A$$(+!!"1%H##%%r;   )r5   r   r6   boolr7   r   r8   intr   rR   r   rR   r   Iterable[str] | Noner   rT   r   strr   rU   returnNone)r@   zbytes | bytearrayrV   rW   )rV   r   )rV   rW   )rV   rR   )__name__
__module____qualname____doc__r   MINIMUM_THRESHOLDr   r   r   __annotations__r   r#   r   r   r:   rC   rI   rL   propertyrN   rF    r;   r9   r   r      s    00 8H8J4  '5&8&8%*$/OO*D4 !&!2626!)$+D4#D4 #D4 "	D4
 D4 D4 D4 0D4 0D4 D4 "D4 
D4L,0   	& 	&r;   r   )!r[   
__future__r   r$   collections.abcr   typesr   typingr   chardetr   chardet._utilsr   r	   r
   chardet.enumsr   r   chardet.equivalencesr   r   r   chardet.pipeliner   r   r   chardet.pipeline.orchestratorr   chardet.registryr   r   r   r_   r;   r9   <module>rk      sN    9 "  $ "   
 6 
 J I 6 Da& a&r;   