
    STh                        d dl 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mZmZ dZdd	Zd
 Zedk(  rS ed      \  ZZej)                  dedd       ej)                  dddd       ej)                  dddd        ee       yy)    N)zip_longest   )toolkit   )split_graphemes)GREENORANGEREDz.unicode_cachec           	      &   t          d}| sQ|rOt        j                  j                  |      r0t	        |      5 }|j                         } d d d        t        d|        t          d|  d}|rQt        j                  j                  |      r2t        d|       t	        |      5 }|j                         }d d d        nd| xs d d}t        d	|       	 t        j                  j                  |      }t        j                  t        j                  j                  |      d       | sb|j                         }
|
j                  d      d   } t        d|        t	        |d      5 }|j!                  |        d d d        t          d|  d}t        d|       |j                         j#                  d      }t	        |d      5 }|j!                  |       d d d        fdfd}d d gddct%        d j'                               D ]  }|j)                  d      rS|j)                  d      r|j                         d   d<   n*|j)                  d      rd|j                         d    d<   gd |j                  d      D        \  }}|d   dj+                  |dd        cd j+                  d! |D               |        |        |d"d"        |d"d"        |d"d"        t        d#z  d$d% d d&       t        d'dz  z
  d$d%z
   d d&       y # 1 sw Y   xY w# 1 sw Y   hxY w# t        $ r}	t        t        d
      |	       Y d }	~	y d }	~	ww xY w# 1 sw Y   xY w# 1 sw Y   xY w)(Nz/latestzusing version "latest" as:z/emoji-test_z.txtzloading cached:z%https://www.unicode.org/Public/emoji/latestz/emoji-test.txtzdownloading:zDownload error:T)exist_ok/   zsaving version "latest" as:wzsaving:utf8c                  f    t               r!t        dj                  d  D                     d d g y )N
c              3   &   K   | ]	  }|s|  y wN .0gs     h/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/alive_progress/tools/unicode_breaks.py	<genexpr>z9validate_unicode_breaks.<locals>.where.<locals>.<genexpr>7   s     3!A3s   )anyprintjoin)groupss   r   wherez&validate_unicode_breaks.<locals>.where4   s*    v;$))3v334    c                  ,   dj                  |       }t        |      }|| k7  }dz  |z  |sr         dj                  d t        ||       D              }j                  dd      j                  dd      }dj                  d j	                  d      D              }t        |      t        |       }}||k(  rt        |       d	nt        |       d
}	t        d
 d|j                  
d      dd|	 d| d| dt        |       d|        y y )N r   |c              3      K   | ]8  \  }} ||k(  rt         nt        |rd j                  d |D              nd       : yw) c              3   d   K   | ](  }t        t        |            j                  d d       * yw0xr#   N)hexordreplace)r   cs     r   r   zDvalidate_unicode_breaks.<locals>.expect.<locals>.<genexpr>.<genexpr>D   s%     B1SV,,T26Bs   .0-N)r   r
   r   )r   ar-   s      r   r   z:validate_unicode_breaks.<locals>.expect.<locals>.<genexpr>C   sA      6!Q 7qAve3FGBBBS 6s   >A z
 skin tonez hairc              3   &   K   | ]	  }|d      yw)r   Nr   r   xs     r   r   z:validate_unicode_breaks.<locals>.expect.<locals>.<genexpr>G   s     "CA1Q4"Cs   r.   z ==z !=r&   z   Xz>3z: z -> |z| )
r   r   r   r,   splitlenr   r
   r   r	   )charstextactualerrorcodes
small_namesmall_statusa_lenc_lensizecharerrorsnameshow_allstatustotalr    s             r   expectz'validate_unicode_breaks.<locals>.expect:   s(   wwu~ &%
%HGHH 6%fe46 6E lB7??LJ77"Cc1B"CCLv;E
5E+0E>eEl^3'#e*S?QDAdV3t||D#6r:"TF!E7 KWBvl34Aj\C D r!   r   #z# group:z# subgroup:z  - r   c              3   <   K   | ]  }|j                           y wr   )r4   )r   ps     r   r   z*validate_unicode_breaks.<locals>.<genexpr>V   s     5!'')5s   ;r&      r#   c              3   F   K   | ]  }t        t        |d               yw)   N)chrintr1   s     r   r   z*validate_unicode_breaks.<locals>.<genexpr>X   s     31s3q":3s   !r/   z
errors   : z6.2%z []zsuccesses: )CACHEospathexistsopenreadr   urllibrequesturlopenOSErrorr
   makedirsdirnamegeturlr4   writedecodefilter
splitlines
startswithr   )uverrC   cacher   ffiledataurlreqenew_urlrF   linep1p2r@   rA   r   rB   rD   rE   r    s    `             @@@@@@@r   validate_unicode_breaksrp      sR   
 wgFEbggnnV4&\ 	Q668D	*D1WLd+D%&$Z 	1668D	 	 6d6Fh5GWnc"	..((-C
 	BGGOOD)D9jjlG==%a(D/6fc" aWLd3Dixxz  ($_ 	GGDM	D D& "4L!QFE6tT__./ ??3z* JJL,q	/"4::<#3"45q	5TZZ_5B!uchhr!"v.ww333ttTsD#sCtS#" 
M&5..b%
BC	KFUN*4056>2B!E7!
LM[	 		 	  	#'(!,	 	 	sH    L4)MM ,M9	N4L>M	M6M11M69NNc                     t        t        |             }t        |      }|g}|g}|D ]0  }||z
  |kD  rg }|j                  |       |j                  |       |}2 t	        dj                  d |D                     y)u  Group some numbers with a maximum difference between them.
    I've used to try to fix the current grapheme break error.

    Using version unicode 13.1:
        Component
          - skin-tone
         🏻    XX: 1 != 2 -> |1f3fb 1f3fb|-| c light
         🏻   aXa: 2 != 3 -> |61 1f3fb|61|-| c light
         🏻   aaX: 2 != 3 -> |61|61 1f3fb|-| c light
         🏼    XX: 1 != 2 -> |1f3fc 1f3fc|-| c medium-light
         🏼   aXa: 2 != 3 -> |61 1f3fc|61|-| c medium-light
         🏼   aaX: 2 != 3 -> |61|61 1f3fc|-| c medium-light
         🏽    XX: 1 != 2 -> |1f3fd 1f3fd|-| c medium
         🏽   aXa: 2 != 3 -> |61 1f3fd|61|-| c medium
         🏽   aaX: 2 != 3 -> |61|61 1f3fd|-| c medium
         🏾    XX: 1 != 2 -> |1f3fe 1f3fe|-| c medium-dark
         🏾   aXa: 2 != 3 -> |61 1f3fe|61|-| c medium-dark
         🏾   aaX: 2 != 3 -> |61|61 1f3fe|-| c medium-dark
         🏿    XX: 1 != 2 -> |1f3ff 1f3ff|-| c dark
         🏿   aXa: 2 != 3 -> |61 1f3ff|61|-| c dark
         🏿   aaX: 2 != 3 -> |61|61 1f3ff|-| c dark

    The codepoints that do accept a skin tone are:
    0x0261D, 0x026F9, 0x0270A, 0x0270B, 0x0270C, 0x0270D, 0x1F385, 0x1F3C2, 0x1F3C3, 0x1F3C4,
    0x1F3C7, 0x1F3CA, 0x1F3CB, 0x1F3CC, 0x1F442, 0x1F443, 0x1F446, 0x1F447, 0x1F448, 0x1F449,
    0x1F44A, 0x1F44B, 0x1F44C, 0x1F44D, 0x1F44E, 0x1F44F, 0x1F450, 0x1F466, 0x1F467, 0x1F468,
    0x1F469, 0x1F46B, 0x1F46C, 0x1F46D, 0x1F46E, 0x1F470, 0x1F471, 0x1F472, 0x1F473, 0x1F474,
    0x1F475, 0x1F476, 0x1F477, 0x1F478, 0x1F47C, 0x1F481, 0x1F482, 0x1F483, 0x1F485, 0x1F486,
    0x1F487, 0x1F4AA, 0x1F574, 0x1F575, 0x1F57A, 0x1F590, 0x1F595, 0x1F596, 0x1F645, 0x1F646,
    0x1F647, 0x1F64B, 0x1F64C, 0x1F64D, 0x1F64E, 0x1F64F, 0x1F6A3, 0x1F6B4, 0x1F6B5, 0x1F6B6,
    0x1F6C0, 0x1F6CC, 0x1F90C, 0x1F90F, 0x1F918, 0x1F919, 0x1F91A, 0x1F91B, 0x1F91C, 0x1F91E,
    0x1F91F, 0x1F926, 0x1F930, 0x1F931, 0x1F932, 0x1F933, 0x1F934, 0x1F935, 0x1F936, 0x1F937,
    0x1F938, 0x1F939, 0x1F93D, 0x1F93E, 0x1F977, 0x1F9B5, 0x1F9B6, 0x1F9B8, 0x1F9B9, 0x1F9BB,
    0x1F9CD, 0x1F9CE, 0x1F9CF, 0x1F9D1, 0x1F9D2, 0x1F9D3, 0x1F9D4, 0x1F9D5, 0x1F9D6, 0x1F9D7,
    0x1F9D8, 0x1F9D9, 0x1F9DA, 0x1F9DB, 0x1F9DC, 0x1F9DD

    r   c              3   p   K   | ].  }t        |       d dj                  d |D              z   dz    0 yw)z:|r&   c              3   R   K   | ]  }t        |      j                  d d       ! ywr(   )r*   r,   r1   s     r   r   z(find_groups.<locals>.<genexpr>.<genexpr>   s     ,Q!SV^^D"-E,Qs   %'r$   N)r5   r   r   s     r   r   zfind_groups.<locals>.<genexpr>   s<      % 1vhbMCHH,Qq,Q$QQTWW %s   46N)itersortednextappendr   r   )rh   max_diffit	last_itemcurrent_groupresultis          r   find_groupsr~   c   s    L 
fTl	BRIKM_F y=8#MMM-(Q	 
$)) %#% % &r!   __main__zETests the grapheme break implementation against some unicode version.rd   ?zthe unicode version to be used)typenargshelpz--allrC   
store_truez6shows the correct cases, in addition to the wrong ones)destactionr   z
--no-cachere   store_falsez+ignores the cache and re-downloads the spec)NFT)os.pathrS   urllib.requestrX   	itertoolsr   utilsr   utils.cellsr   utils.colorsr   r	   r
   rR   rp   r~   __name__parserrunadd_argumentfloatr   r!   r   <module>r      s      !  ) - -TNn1&h zabKFC
U#<\]
jU  W
7=J  L   r!   