
    `                         d dl m Z  d dlmZ d dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d	ed
edefdZdee   fdZedk(  r e eedd              yy)    )glob)isdir)argv)ListN)	from_path__version__)	iana_name)sepcontentcp_acp_bc                     | j                  |      }| j                  |      }t        |      }t        d t        ||      D              }d||z  z
  S )Nc              3   ,   K   | ]  \  }}||k7    y w)N ).0chr_achr_bs      >platform/gsutil/third_party/charset_normalizer/bin/coverage.py	<genexpr>z#calc_equivalence.<locals>.<genexpr>   s      +<<5%+<s   g      ?)decodelensumzip)r   r   r   str_astr_bcharacter_countdiff_character_counts          r   calc_equivalencer      sY    NN4 ENN4 E%jO +.ue+< 
 %788    	argumentsc                    t        j                  d      }|j                  dddddd	       |j                  d
dddt        dd       |j	                  |       }t        d      st        d       t        d       t        dt                d}d}t        t        d            D ]m  }|j                  t              d   }|dz  }t        ||j                        }|dk(  r.t        |      dk(  r t        dj!                  |             |dz  }kt        |      dk(  rt        dj!                  |             |j#                         }||j$                  v st'        |      |j$                  v r t        dj!                  |             |dz  }t)        |j*                  ||j,                        }	|	dk\  r:|dz  }t        dj!                  ||j,                  t/        |	dz  d                   It        d j!                  ||j,                               p t/        ||z  d!      dz  }
t        d"j!                  |
||             |
|j0                  k\  rdS dS )#NzIEmbedded detection success coverage script checker for Charset-Normalizer)descriptionz-pz--with-preemptive
store_trueF
preemptivez:Enable the preemptive scan behaviour during coverage check)actiondefaultdesthelpz-cz
--coveragestoreZ   coveragez1Define the minimum acceptable coverage to succeed)r%   r&   typer'   r(   z./char-datasetzaThis script require https://github.com/Ousret/char-dataset to be cloned on package root directory   z> using charset-normalizer r   z./char-dataset/**/*.*)preemptive_behaviourNoneu   ✅✅ '{}'u   ⚡⚡ '{}' (nothing)g\(\?u.   ️✅ ️'{}' (got '{}' but equivalence {} %)g      Y@   u   ⚡ '{}' (got '{}')   z)Total EST coverage = {} % ({} / {} files))argparseArgumentParseradd_argumentint
parse_argsr   printexitr   sortedr   splitr
   r   r$   r   formatbestcould_be_from_charsetr	   r   rawencodingroundr+   )r    parserargssuccess_counttotal_counttbt_pathexpected_encodingresultsresultcalc_eqsuccess_ratios              r   cli_coveragerL      sM   $$_F 1,PU\hY  [
l7BSWaP  R Y'D!"qrQ	'}
56MK4 789$NN3/3q!%

 &3w<1+<-&&x01QMw<1)00:; < <<	J[@\`f`|`|@|-&&x01QM"6::/@&//Rd?QMBII(TZTcTcejkruyky{|e}~#**8V__EFC :F -+5q9D@M	
5
<
<]M[f
gh.15A5r   __main__r-   )r   os.pathr   sysr   typingr   r3   charset_normalizerr   r   charset_normalizer.utilsr	   osr
   bytesstrr   rL   __name__r9   r   r   r   <module>rW      sp         5 . 
9e 
93 
9c 
9<6DI <6~ zH	
 r   