o
    j                     @  s   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 dZ dS )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                   @  s   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dZd,d d!Zd-d#d$Zd.d%d&Zed/d'd(Zed-d)d*ZdS )0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_encodinglang_filterr   should_rename_legacyboolencoding_erar
   	max_bytesintr   r   r   Iterable[str] | Noner   r   strr   returnNonec                C  s   |t jkrtjdtdd t||}|| _|| _t| || _	|| _
t|d| _t|d| _t|	d| _t|
d| _t | _d| _d| _d	| _d	S )
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)selfr   r   r!   r"   r   r   r   r   r   r    r<   V/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/chardet/detector.py__init__2   s<   
&
zUniversalDetector.__init__byte_strbytes | bytearrayc                 C  sf   | j r	d}t|| jrdS | jt| j }|dkr$| j|d|  t| j| jkr1d| _dS dS )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)r9   
ValueErrorr8   r1   lenr7   extend)r;   r?   msg	remainingr<   r<   r=   feedx   s   
zUniversalDetector.feedr   c              	   C  sN   | j s$d| _ t| j}t|| j| j| j| j| j| j	d}|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)r"   r   r   r   r   r   )r9   bytesr7   r   r0   r1   r2   r3   r4   r5   r:   r8   result)r;   dataresultsr<   r<   r=   close   s   

	zUniversalDetector.closec                 C  s   t  | _d| _d| _d| _dS )z2Reset the detector to its initial state for reuse.FN)r6   r7   r8   r9   r:   r;   r<   r<   r=   reset   s   
zUniversalDetector.resetc                 C  s   | j S )z9Whether detection is complete and no more data is needed.)r8   rL   r<   r<   r=   done   s   zUniversalDetector.donec                 C  s<   | j dur| j  }| jrt| | jrt| |S t S )z"The current best detection result.N)r:   to_dictr.   r   r/   r   r   )r;   dr<   r<   r=   rH      s   

zUniversalDetector.result)r   r   r   r    r!   r
   r"   r#   r   r    r   r    r   r$   r   r$   r   r%   r   r%   r&   r'   )r?   r@   r&   r'   )r&   r   )r&   r'   )r&   r    )__name__
__module____qualname____doc__r   MINIMUM_THRESHOLDr   r   r   __annotations__r   r*   r
   r   r>   rF   rK   rM   propertyrN   rH   r<   r<   r<   r=   r      s2   
 
F

r   )!rT   
__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<   r<   r=   <module>   s    