U
��.e� � @ s0 d dl Z d dlZddlmZ G dd� de�ZdS )� N� )�ProbingStatec @ sn e Zd ZdZddd�Zdd� Zedd� �Zd d
� Zedd� �Z d
d� Z
edd� �Zedd� �Z
edd� �ZdS )�
CharSetProbergffffff�?Nc C s d | _ || _t�t�| _d S �N)�_state�lang_filter�loggingZ getLogger�__name__Zlogger)�selfr � r �E/usr/lib/python3.8/site-packages/pip/_vendor/chardet/charsetprober.py�__init__' s zCharSetProber.__init__c C s t j| _d S r )r Z DETECTINGr �r
r r r �reset, s zCharSetProber.resetc C s d S r r r r r r �charset_name/ s zCharSetProber.charset_namec C s d S r r )r
�bufr r r �feed3 s zCharSetProber.feedc C s | j S r )r r r r r �state6 s zCharSetProber.statec C s dS )Ng r r r r r �get_confidence: s zCharSetProber.get_confidencec C s t �dd| �} | S )Ns ([ -])+� )�re�sub)r r r r �filter_high_byte_only= s z#CharSetProber.filter_high_byte_onlyc C s\ t � }t�d| �}|D ]@}|�|dd� � |dd� }|�� sL|dk rLd}|�|� q|S )u9
We define three types of bytes:
alphabet: english alphabets [a-zA-Z]
international: international characters [€-ÿ]
marker: everything else [^a-zA-Z€-ÿ]
The input buffer can be thought to contain a series of words delimited
by markers. This function works to filter all words that contain at
least one international character. All contiguous sequences of markers
are replaced by a single space ascii character.
This filter applies to all scripts which do not use English characters.
s% [a-zA-Z]*[�-�]+[a-zA-Z]*[^a-zA-Z�-�]?N������ �r )� bytearrayr �findall�extend�isalpha)r �filteredZwordsZwordZ last_charr r r �filter_international_wordsB s �z(CharSetProber.filter_international_wordsc C s� t � }d}d}tt| ��D ]n}| ||d � }|dkr