o
    2jiP                     @   s  U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ eeeef Zdddd	d
Zeeeeeef f ed< dZeeeef ed< dZeed< dZdZdZdZdZdZdZdZeed< dZeed< g dZ eedZ!eeef ed< e"e Z#dZ$dZ%e#d Z&dZ'dZ(d Z)d Z*ej+G d!d" d"Z,ej+G d#d$ d$Z-d%e.e d&e-fd'd(Z/d)e.e.edB   d*ed+ed&dfd,d-Z0d)e.e.edB   d*ed+ed.ed/ed0ed1ed&dfd2d3Z1d)e.e.edB   d4e.eeef  d5ed&dfd6d7Z2d)e.e.edB   d8ed9ed:ed;ed5ed&dfd<d=Z3e4d>Z5d?ed&efd@dAZ6d?ed&efdBdCZ7d)e.e.edB   d&e.e fdDdEZ8dFe-d&e.e.edB   fdGdHZ9d5ed&efdIdJZ:d%e.e dKedLed&e.e fdMdNZ;d&e.eeeef  fdOdPZ<e< Z=d%e.e d&dfdQdRZ>dFe-dSedTed&dfdUdVZ?dFe-dWedXedYeeeef e,f d&eeef f
dZd[Z@d\ed&eeef fd]d^ZAd)e.e.edB   d*ed+ed&dfd_d`ZBd)e.e.edB   dFe-dae,d&dfdbdcZCd5edded&efdedfZDdFe-d)e.e.edB   dae,dB dge.e d&df
dhdiZEdae,dB dFe-djed&e.e fdkdlZFd)e.e.edB   d&e.e.edB   fdmdnZGd&efdodpZHdqedreId&eJfdsdtZKdS )uuO   Interactive isometric city explorer — easter egg for `hf repos ls --explore`.    N)RepoStorageInfo   )format_size))         )   p      )i   P      ))      r   )   \   r   )   <   r   ))r   r   U   )      7   )   n      ))r	   r      )F         )(   v      modeldatasetspacebucket_TYPE_COLORS))         )r      r   )Z   b   r   _EXTRA_COLORS)      r   _GRID_COLOR            r   )r   r   r   _OUTLINE)   r7   r7   _FILL)  X   XWX XWWWXr:   r9   )XW_CURSOR_PALETTE   gQ?   d      c                   @   sJ   e Zd ZU eed< eed< eed< eed< eed< eed< edB ed< dS )	TileInfogrid_rowgrid_colheighttopleftrightNrepo)__name__
__module____qualname__int__annotations__Colorr    rQ   rQ   Y/var/www/html/whisper/venv/lib/python3.10/site-packages/huggingface_hub/cli/_city_game.pyrC   E   s   
 rC   c                   @   sn   e Zd ZU ee ed< eed< eed< eed< eed< eed< eed< eed< eed	< eed
< ee ed< dS )CityDatatilesrowscolsx_offy_offbuf_wbuf_htotal_storageextra_countextra_storage	all_reposN)rK   rL   rM   listrC   rO   rN   r   rQ   rQ   rQ   rR   rS   P   s   
 rS   reposreturnc           "      C   s  t | dd dd}|d t }tdt|t }tdd |td  D }tdd | D }td	|d j}t||dkr?d	nd }t|t}|dkrRt	|| nd	}	g }
t
|D ]1\}}t||\}}tttt|j| t }t|jt\}}}|
t||||||| qZ|dkrtt||\}}tttt|| t }|
t|||gtd R   t |	d	 t }}t |d	 t }}g }g }t||d	 D ]/}t||d	 D ]%}|| t || t }}||t |t g |||d
t  g qq|
D ]}||j|j t |j  qt| }t| }t|t| d	 } t|t| d	 }!|!d
 r@|!d	7 }!t|
|	|||| |!|||| dS )Nc                 S   s   | j S Nstorage)rrQ   rQ   rR   <lambda>e   s    z$_prepare_city_data.<locals>.<lambda>T)keyreverser   c                 s       | ]}|j V  qd S rb   rc   .0re   rQ   rQ   rR   	<genexpr>h       z%_prepare_city_data.<locals>.<genexpr>c                 s   ri   rb   rc   rj   rQ   rQ   rR   rl   i   rm   r   r3   )rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   )sorted
_MAX_TILESmaxlensumrd   min_COLSmathceil	enumeratedivmod_MIN_Hroundsqrt_MAX_Hr'   gettyper.   appendrC   _EXTrange_DX_DYextendrE   rD   rF   rS   )"r`   sorted_reposdisplayr\   r]   r[   max_storagenrV   rU   rT   irJ   re   chrG   rH   rI   r_lor_hic_loc_hixsysrrcccxcytilerW   rX   rY   rZ   rQ   rQ   rR   _prepare_city_datad   sd   
 


r   bufr   r   c                 C   s   ||f}|t  |t f}||dt  f}|t  |t f}t| g||tR   t| g||tR   t| g||tR   t| g||tR   d S Nr3   )r   r   
_draw_liner1   )r   r   r   tre   bllrQ   rQ   rR   _draw_diamond_outline   s   r   r   rG   rH   rI   c              	   C   s   t | |t |t | f||dt  | f||dt  f|t |t fg| t | ||dt  | f|t |t | f|t |t f||dt  fg| t | ||| f|t |t | f||dt  | f|t |t | fg| d S r   )
_fill_polyr   r   )r   r   r   r   rG   rH   rI   rQ   rQ   rR   _draw_block   s   	BBBr   vertscolorc                 C   sv  t | }| rt | d nd}dd |D }tdt|}t|d t|}t |}t||d D ]}	td}
td}t|D ][}|| \}}||d |  \}}||krm|	|krlt|
tt||}
t|tt||}q>t|||	  kr}t||ksn q>|	| ||  }||||   }t|
|}
t||}q>|
|krttdt|
t|t|d D ]}|| |	 |< qq0d S )Nr   c                 S   s   g | ]}|d  qS )r   rQ   )rk   vrQ   rQ   rR   
<listcomp>   s    z_fill_poly.<locals>.<listcomp>r   infz-inf)rq   rp   rs   r   floatrz   )r   r   r   bhbwall_yy0y1r   yxlxrr   axaybxbyr   ixxrQ   rQ   rR   r      s8   "
&r   x0r   x1r   c                 C   s(  t | }| rt | d nd}t|| }t|| }	t||	}
|
dkrEd|  kr-|k rCn d S d|  kr:|k rCn d S || | |< d S || |
 }|| |
 }t|t|}}t|
d D ]1}t|t|}}d|  kru|k rn nd|  kr|k rn n|| | |< ||7 }||7 }q`d S )Nr   r   )rq   absrp   r   r   rz   )r   r   r   r   r   r   r   r   dxdystepsxiyifxfy_pxpyrQ   rQ   rR   r      s,   
0
r   z\033\[[0-9;]*msc                 C   s   t d| S )N )_ANSI_REsubr   rQ   rQ   rR   _strip_ansi     r   c                 C   s   t t| S rb   )rq   r   r   rQ   rQ   rR   _visible_len  r   r   c              
   C   s8  t | }| rt | d nd}g }td|dD ]}d}t|d ddD ] }| | | }|d |k r9| |d  | nd }|s?|rC|} nq#|dk rN|d qg }	d }
d }t|d D ]}| | | }|d |k rp| |d  | nd }|s|s|
d us~|d ur|	d d  }
}|	d qZ|r|r||kr|d d}}}n |r|r||d	}}}n|r|d d
}}}n|d d	}}}d}||
kr|d|d  d|d  d|d  d7 }|}
||kr||d u rdnd|d  d|d  d|d  d7 }|}|	||  qZ|
d us|d ur|	d |d|	 q|S )Nr   r3   r   r   [0m    █u   ▄u   ▀[38;2;;mz[49mz[48;2;)rq   r   r   join)r   rF   widthlinesrowlastcolrG   botpartscfgcbgnfgnbgchescrQ   rQ   rR   _pixels_to_lines	  s\    
 

(4
r   cityc              	      s    fddt  jD } jD ]} j|j|j t  } j|j|j t  }t	||| qt
 jdd d}|D ]&} j|j|j t  } j|j|j t  }t||||j|j|j|j q9|S )Nc                    s   g | ]}d g j  qS rb   )rY   )rk   r   r   rQ   rR   r   F      z'_render_base_buffer.<locals>.<listcomp>c                 S   s   | j | j | jfS rb   rD   rE   )r   rQ   rQ   rR   rf   M  s    z%_render_base_buffer.<locals>.<lambda>rg   )r   rZ   rT   rW   rE   rD   r   rX   r   r   rn   r   rF   rG   rH   rI   )r   r   r   r   r   sorted_tilesrQ   r   rR   _render_base_bufferE  s   
r   c                 C   s$   d| d  d| d  d| d  dS )Nr   r   r   r   r3   u   m■[0mrQ   )r   rQ   rQ   rR   _colored_square[  s   $r   r[   r\   c           	   
      s  dg}| d | d | dt|dd d | d g d}d	d
ddd}|D ]B  fdd| D }|s:q,tdd |D }tt  d }| d| d|    | dt| dt|dd  | d q,|dkrttd }| d| d| d |S )Nr   z  Storage Overviewu2     ────────────────  Thuman_readablez totalr"   ModelsDatasetsSpacesBucketsc                    s   g | ]	}|j  kr|qS rQ   )r~   rj   rtyperQ   rR   r   m      z"_build_summary.<locals>.<listcomp>c                 s   ri   rb   rc   rj   rQ   rQ   rR   rl   p  rm   z!_build_summary.<locals>.<genexpr>r   r   z    u
    repos · z + more repos)r   r   rr   r   r'   rq   r.   )	r`   r[   r\   r   orderlabelsgrouprd   sqrQ   r   rR   _build_summary_  s(   


"r   c                  C   s\   g } t tD ]%\}}t |D ]\}}|tv r*| |t|d  |t d t| f qq| S )Nr3   r   )rw   _CURSOR_GRIDr>   r   rq   	_CURSOR_H)pixelsrir   cir   rQ   rQ   rR   _build_cursor  s   (r   c           	      C   s|  | st d dS z
ddl}ddl}W n ty    t d Y dS w tj r+tj s1t d dS t	 }|j
tk s?|jtk rYt d|j
 d|j d t d	t dt d
 dS t| }dd |jD }|rlt|n|jd }tj }||}z.|| tjd tj  t||j|j W tjd tj  |||j| dS tjd tj  |||j| w )z%Launch the interactive city explorer.zNo repositories found.Nr   z=Interactive mode requires a Unix-like terminal (Linux/macOS).z%Interactive mode requires a terminal.zYour terminal is    ×z characters.zPlease resize to at least z to explore the city!c                 S   s   g | ]	}|j d ur|qS rb   )rJ   rk   r   rQ   rQ   rR   r     r   z!run_city_game.<locals>.<listcomp>z[?1049h[?25l[2Jz[?25h[?1049l)printtermiosttyImportErrorsysstdinisattystdoutshutilget_terminal_sizecolumns_MIN_TERM_Wr   _MIN_TERM_Hr   rT   randomchoicefileno	tcgetattrsetrawwriteflush
_game_looprD   rE   	tcsetattr	TCSADRAIN)	r`   r  r  termr   tiles_with_repos
start_tilefdold_settingsrQ   rQ   rR   run_city_game  sD   





r  cur_rowcur_colc                 C   sJ  dd | j D }tj| | jt | jt d} t| }t| j| j	| j
}t| |||\}}tdtd D ]?}|t }	|	|	 dd|	   }	|dd|	   }
t|}t|| |||f  t||t|
 t| ||||f| tt q3	 t| |||\}}t|}t|| |||f  t||| t| ||||f| t }|d	v rd S t|\}}|d
kr|d
krqs|| || }}||f|vrqst| |||\}}tdtd D ]I}|t }	|	|	 dd|	   }	||| |	  }||| |	  }t|}t|| |||f  t|t|t| t| ||||f| tt q||}}qt)Nc                 S   s   i | ]	}|j |jf|qS rQ   r   r   rQ   rQ   rR   
<dictcomp>  r   z_game_loop.<locals>.<dictcomp>)rZ   rX   r   r@   r3   r4   T)qQr   r   )rT   dataclassesreplacerZ   _CURSOR_PADrX   r   r   r^   r[   r\   _tile_top_centerr   _MOVE_FRAMES	_copy_buf_highlight_tile_draw_cursorrz   _presentr}   timesleep_MOVE_DELAY	_read_key_key_to_direction)r   r  r  tile_mapbase_bufsummarytxtyr   r   drop_yframer   r   rg   drdcnrncexeyr   r   rQ   rQ   rR   r    sT   
r  r   r   r1  c                 C   sP   | ||f}|r|jnd}| j|| t  }| j|| t  }||t | fS )Nr   )r}   rF   rW   r   rX   r   )r   r   r   r1  r   r   r   r   rQ   rQ   rR   r&    s
   r&  rg   c                 C   s   |   dkr
  dS  dkr  dS  dkr  dS    dkr$  dS  dkr,  dS  dkr4  dS    d	kr>  dS  d
krF  dS  dkrN  dS   dkrV dS  dkr] dS  dkrd dS  	 dS )Nwr=   z[A)r   r   r   Sz[B)r   r   aAz[D)r   r   dDz[C)r   r   )r   r   rQ   r   rQ   rQ   rR   r0    s>   


r0  c           
      C   s~   t | }| rt | d nd}tD ],\}}}|| || }}	d|	  kr(|k r<n qd|  kr4|k r<n q|| |	 |< qd S )Nr   )rq   _CURSOR_PIXELS)
r   r   r   r   r   r   r   r   r   r   rQ   rQ   rR   r*    s   0r*  r   c                 C   s   |j |j|j t  }|j|j|j t  }|j}t| ||| f|t |t | f||dt  | f|t |t | fgt|j	d d S )Nr3   #   )
rW   rE   rD   r   rX   r   rF   r   	_brightenrG   )r   r   r   r   r   r   rQ   rQ   rR   r)    s   B
r)  amountc                 C   s4   t d| d | t d| d | t d| d | fS )Nr7   r   r   r3   )rs   )r   rG  rQ   rQ   rR   rF    s   4rF  r3  c                 C   s\  t |}|rt|d  s|d |rt|d  r|r5t|d  s5|  |r5t|d  r'tdd |D dd}t }td|j| t dt	  }t
|| |}tt|t|t|}	td|	t| d }
td|	t| d }g }t|	D ]i}||
 }d|  krt|k rn n|| nd}tdtt| }|t|k r|| nd}td|t| }|| }d|  krt|k rn n|| nd}||d	|  d	t	  | d	|  d	t	  |  q|d |d
 t||jd k r|d t||jd k sd}|d |jd  D ]	}||d 7 }qtj| tj  d S )Nr   r   c                 s   s    | ]}t |V  qd S rb   )r   )rk   linerQ   rQ   rR   rl   +  s    z_present.<locals>.<genexpr>)default   r3   r   r   u+     [90mWASD/Arrows: move · Q/ESC: quit[0mr   z[Hz[K
)r   r   strippoprp   r  r	  r
  
_SUMMARY_W_GAP_build_info_panelrq   r   r   r   r   r  r  r  r  )r   r   r   r3  
city_linescity_wr  panel_max_winfor   
summary_loinfo_lor   r   siltlpadctcpadr   rtoutputrH  rQ   rQ   rR   r+    sD   
((4


r+  max_wc              	   C   s   d}d}d}d}|t | }dg}|| | d|  ||dtd|   |d | d u rH|| | d	 || d
|  |S | jd u rr|| | d|j d|  || | t|jdd d|  |S | j}	|	j}
t |
|kr|
d |d  d }
|| | |
 |  |d ddddd}||	j	d}|| d| |	j	 |  || d|	j
  || dt|	jdd  || d|	jdd |d td|}tdt|t|	jd | }|| | d |  | d!||   |  |S )"Nr   z[90mz[1mr   r   zCity Exploreru   ─   zMove to a tilezto see details.+r   Tr   z	 combinedr@   z...z[38;2;175;148;240mz[38;2;245;128;128mz[38;2;245;175;85mz[38;2;112;185;242mr"   zType       zVisibility zStorage    zUsage      z.1f%   r   rA   r   u   ░)rq   r   rs   rJ   r\   r   r]   idr}   r~   
visibilityrd   storage_percentrp   rz   )r   r   r]  resetgrayboldindent	content_wr   rJ   name	type_ansitcbar_wfilledrQ   rQ   rR   rO  P  sL   

 &


.rO  c                 C   s   dd | D S )Nc                 S   s   g | ]}|d d  qS rb   rQ   )rk   r   rQ   rQ   rR   r     r   z_copy_buf.<locals>.<listcomp>rQ   )r   rQ   rQ   rR   r(    s   r(  c                  C   sr   t j } t| d}|dkr2t| dr0t| d}|dkr0t| dr0t| d}d|  S dS |jddd	S )
Nr      g?   [z[r   zutf-8r$  )errors)r  r  r  osread
_has_inputdecode)r  r   ch2ch3rQ   rQ   rR   r/    s   

r/  r  timeoutc                 C   s    t  | gg g |\}}}t|S rb   )selectbool)r  rx  re   r   rQ   rQ   rR   rt    s   rt  )L__doc__r#  ru   rr  r  rery  r  r  r,  huggingface_hub.hf_apir   _file_listingr   tuplerN   rP   r'   dictstrrO   r.   r1   r   r   r|   ry   rt   r   ro   r6   r8   r   r>   rq   r   r'  r.  r%  rN  r  r  rM  	dataclassrC   rS   r_   r   r   r   r   r   compiler   r   r   r   r   r   r   r   rD  r  r  r&  r0  r*  r)  rF  r+  rO  r(  r/  r   rz  rt  rQ   rQ   rQ   rR   <module>   s     
&?
22
"<
#	)65&&	
"1*2