B
    He                 @   s.  U 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mZ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 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z  d d	l!m"Z" yd dl#Z$e%e$d
Z&W n e'k
r   dZ&Y nX ddl(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z: erddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA eeBdddZCeed dddZDeEeBdddZFeGdg ZHeEeBdd d!ZIdeed# d$eBeBeeJ eeJ eeJ eBe eKdf d%
d&d'ZLeEe eMeeMd(f f eBd)d*d+ZNded# d$eBeBeeJ eeJ eeJ eBdd,	d-d.ZOG d/d0 d0e5ZPeeef eeKeKeKf d1d2d3ZQd4eeKeKeKf d1d5d6ZRejSd7d8 eeRe
eQed9d8 ed:d8 eTd;d8 ed<d8 eUd=d8 eVd>d8 e	d?d8 eWd@d8 eXdAd8 edBd8 iZYeeMeegeeKeKeKf f f eZdC< eXeY[ Z\eTejSeefZ]eeBddDdEZ^eG dFdG dGZ_eG dHdI dIZ`eeBddJdKZadeeeJ eeJ eeJ e_dLdMdNZbdOdPdddddQeeJeJeeJ eeJ eeJ eBeKdRdSdTZcddUdddddVeed# eBeeJ eeJ eeJ eBddWdXdYZdeedZkr*G d[d\ d\Zfd d]lmgZg G d^d_ d_egZhe
eJZid`eida< ddbdcddded`dfdgdhdihgeUddjdkhe
eVdldmdndodpdqgiedmdrdsdtdtdugdvehdwdxdydzd{d|gef d}Zjejda kej d d~llmmZm G dd dZnemePen  dS )    N)array)CounterUserDictUserListdefaultdictdeque)	dataclassfieldsis_dataclass)isclass)islice)MappingProxyType)TYPE_CHECKINGAnyCallableDefaultDictDictIterableListOptionalSequenceSetTupleUnion)RichReprResultibF   )get_console)	loop_last)	pick_bool)RichRenderable)cell_len)ReprHighlighter)JupyterMixinJupyterRenderable)Measurement)Text)ConsoleConsoleOptionsHighlighterTypeJustifyMethodOverflowMethodRenderResult)objreturnc             C   s   t ott| S )z1Check if an object was created with attrs module.)
_has_attrs_attr_modulehastype)r-    r3   k/var/www/downstreamdata.science/rtclock/rtclock-venv/lib/python3.7/site-packages/pip/_vendor/rich/pretty.py_is_attr_object:   s    r5   z_attr_module.Attribute[Any]c             C   s   t rtt| S g S )zGet fields for an attrs object.)r/   r0   r	   r2   )r-   r3   r3   r4   _get_attr_fields?   s    r6   c             C   s*   y| j jjtjkS  tk
r$   dS X dS )zCheck if an instance of a dataclass contains the default repr.

    Args:
        obj (object): A dataclass instance.

    Returns:
        bool: True if the default repr is used, False if there is a custom repr.
    FN)__repr____code__co_filenamedataclasses__file__	Exception)r-   r3   r3   r4   _is_dataclass_reprD   s    r=   _dummy_namedtuplec          	   C   sB   d}yt | j}W n ttfk
r,   Y nX t tj}||kS )zCheck if an instance of namedtuple contains the default repr

    Args:
        obj (object): A namedtuple

    Returns:
        bool: True if the default repr is used, False if there's a custom repr.
    N)inspectgetfiler7   OSError	TypeErrorr>   )r-   obj_filedefault_repr_filer3   r3   r4   _has_default_namedtuple_reprX   s    	rE   ignorer'   r+   )
valueconsoleoverflowcropindent_guides
max_length
max_string	max_depth
expand_allr.   c	             C   s   ddl m}	 t| ts| d kr"d S |p*t }| L}
t| |	rH|  |jt| trZ| nt	| ||||||dd|ddd W d Q R X |

 dS )	Nr   )ConsoleRenderable   )rI   rK   rL   rM   rN   rO   marginT )rJ   new_line_startend
)rH   rP   _safe_isinstancer$   r   capturelineprintr    Prettygetrstrip)rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rX   r3   r3   r4   _ipy_display_hookl   s,    


r^   .)r-   class_or_tupler.   c             C   s$   y
t | |S  tk
r   dS X dS )zFisinstance can fail in rare cases, for example types with no __class__FN)
isinstancer<   )r-   r_   r3   r3   r4   rW      s    
rW   )	rH   rI   rJ   rK   rL   rM   rN   rO   r.   c          	      s   ddl m  p   dk	s"ttdd fdd}dt krt }	ddlm}
 G fd	d
d
|
}| }||	jj	d< n|t
_dS )a  Install automatic pretty printing in the Python REPL.

    Args:
        console (Console, optional): Console instance or ``None`` to use global console. Defaults to None.
        overflow (Optional[OverflowMethod], optional): Overflow method. Defaults to "ignore".
        crop (Optional[bool], optional): Enable cropping of long lines. Defaults to False.
        indent_guides (bool, optional): Enable indentation guides. Defaults to False.
        max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to None.
        max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to None.
        max_depth (int, optional): Maximum depth of nested data structures, or None for no maximum. Defaults to None.
        expand_all (bool, optional): Expand all containers. Defaults to False.
        max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100.
    r   )r   N)rG   r.   c          
      sR   | dk	rN dk	st dt_ jt| tr,| nt| dd | t_dS )z?Replacement sys.displayhook which prettifies objects with Rich.N)rI   rK   rL   rM   rN   rO   )rJ   )AssertionErrorbuiltins_rZ   rW   r    r[   )rG   )rH   rJ   rO   rK   rN   rL   rM   rI   r3   r4   display_hook   s    zinstall.<locals>.display_hookget_ipython)BaseFormatterc                   s:   e Zd ZU dZeed< eed fddZdS )zinstall.<locals>.RichFormatterTpprint)rG   r.   c          
      s,   | j r t|  dS t|S d S )N)rH   rI   rK   rL   rM   rN   rO   )rg   r^   repr)selfrG   )rO   r   rK   rN   rL   rM   rI   r3   r4   __call__   s    z'install.<locals>.RichFormatter.__call__N)__name__
__module____qualname__rg   bool__annotations__r   rj   r3   )rO   r   rK   rN   rL   rM   rI   r3   r4   RichFormatter   s   
rp   z
text/plain)pip._vendor.richr   ra   r   globalsre   IPython.core.formattersrf   display_formatter
formatterssysdisplayhook)rH   rI   rJ   rK   rL   rM   rN   rO   rd   iprf   rp   rich_formatterr3   )	rH   rJ   rO   r   rK   rN   rL   rM   rI   r4   install   s    
"
 rz   c               @   s   e Zd ZdZdddddddddddddeed eed ed	 ee eee ee ee eeedd
ddZddddddZ	ddddddZ
dS )r[   ak  A rich renderable that pretty prints an object.

    Args:
        _object (Any): An object to pretty print.
        highlighter (HighlighterType, optional): Highlighter object to apply to result, or None for ReprHighlighter. Defaults to None.
        indent_size (int, optional): Number of spaces in indent. Defaults to 4.
        justify (JustifyMethod, optional): Justify method, or None for default. Defaults to None.
        overflow (OverflowMethod, optional): Overflow method, or None for default. Defaults to None.
        no_wrap (Optional[bool], optional): Disable word wrapping. Defaults to False.
        indent_guides (bool, optional): Enable indentation guides. Defaults to False.
        max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to None.
        max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to None.
        max_depth (int, optional): Maximum depth of nested data structures, or None for no maximum. Defaults to None.
        expand_all (bool, optional): Expand all containers. Defaults to False.
        margin (int, optional): Subtrace a margin from width to force containers to expand earlier. Defaults to 0.
        insert_line (bool, optional): Insert a new line if the output has multiple new lines. Defaults to False.
    N   Fr   )indent_sizejustifyrI   no_wraprK   rL   rM   rN   rO   rR   insert_liner)   r*   r+   )_objecthighlighterr|   r}   rI   r~   rK   rL   rM   rN   rO   rR   r   r.   c            C   sX   || _ |pt | _|| _|| _|| _|| _|| _|| _|	| _	|
| _
|| _|| _|| _d S )N)r   r"   r   r|   r}   rI   r~   rK   rL   rM   rN   rO   rR   r   )ri   r   r   r|   r}   rI   r~   rK   rL   rM   rN   rO   rR   r   r3   r3   r4   __init__  s    zPretty.__init__r'   r(   r,   )rH   optionsr.   c          	   c   s   t | j|j| j | j| j| j| j| jd}t	j
|| jp:|j| jpD|jt| j|jdd}|rf| |nt	t| j ddd}| jr|js|j| jdd}| jrd|krd	V  |V  d S )
N)	max_widthr|   rL   rM   rN   rO   pretty)r}   rI   r~   stylez.__repr__ returned empty stringz
dim italic)r   zrepr.indentrV   rS   )pretty_reprr   r   rR   r|   rL   rM   rN   rO   r&   	from_ansir}   rI   r   r~   r   r2   rK   
ascii_onlywith_indent_guidesr   )ri   rH   r   
pretty_strpretty_textr3   r3   r4   __rich_console__&  s0    



zPretty.__rich_console__r%   c          	   C   sL   t | j|j| j| j| j| j| jd}|r>tdd |	 D nd}t
||S )N)r   r|   rL   rM   rN   rO   c             s   s   | ]}t |V  qd S )N)r!   ).0rY   r3   r3   r4   	<genexpr>V  s    z*Pretty.__rich_measure__.<locals>.<genexpr>r   )r   r   r   r|   rL   rM   rN   rO   max
splitlinesr%   )ri   rH   r   r   
text_widthr3   r3   r4   __rich_measure__I  s    
zPretty.__rich_measure__)N)rk   rl   rm   __doc__r   r   intrn   r   r   r   r3   r3   r3   r4   r[      s$   <"r[   )r   r.   c             C   s   d| j ddd| j dfS )Nzdefaultdict(z, {z})z, {}))default_factory)r   r3   r3   r4   _get_braces_for_defaultdict[  s    r   z
array[Any]c             C   s   d| j ddd| j dfS )Nzarray(z, [z])))typecode)r   r3   r3   r4   _get_braces_for_arrayc  s    r   c             C   s   dS )N)z	environ({z})zenviron({})r3   )r   r3   r3   r4   <lambda>h      r   c             C   s   dS )N)z	Counter({z})z	Counter()r3   )r   r3   r3   r4   r   k  r   c             C   s   dS )N)zdeque([z])zdeque()r3   )r   r3   r3   r4   r   l  r   c             C   s   dS )N){}z{}r3   )r   r3   r3   r4   r   m  r   c             C   s   dS )N)r   r   z{}r3   )r   r3   r3   r4   r   n  r   c             C   s   dS )N)zfrozenset({z})zfrozenset()r3   )r   r3   r3   r4   r   o  r   c             C   s   dS )N)[]z[]r3   )r   r3   r3   r4   r   p  r   c             C   s   dS )N)r   r   z[]r3   )r   r3   r3   r4   r   q  r   c             C   s   dS )N)r   r   zset()r3   )r   r3   r3   r4   r   r  r   c             C   s   dS )N)(r   z()r3   )r   r3   r3   r4   r   s  r   c             C   s   dS )N)zmappingproxy({z})zmappingproxy({})r3   )r   r3   r3   r4   r   t  r   _BRACESc             C   s.   t | ts$t| s$t| ds$t| o,t|  S )z3Check if an object may be expanded by pretty print.__rich_repr__)rW   _CONTAINERSr
   hasattrr5   r   )r-   r3   r3   r4   is_expandablez  s
    

r   c               @   s   e Zd ZU dZdZeed< dZeed< dZeed< dZ	eed< dZ
eed< dZeed	< dZeed
< dZeed< dZeed   ed< dZeed< dZeed< ee dddZeeedddZedddZdeeeedddZdS ) Nodez4A node in a repr tree. May be atomic or a container.rS   key_repr
value_repr
open_braceclose_braceemptyFlastis_tupleis_namedtupleNchildrenz: key_separatorz, 	separator)r.   c             c   s   | j r| j V  | jV  | jr&| jV  n| jdk	r| jr| jV  | jrt| jstt| jdkrt| jd  E dH  dV  n,x*| jD ] }| E dH  |j	s|| j
V  q|W | jV  n| jV  dS )zGenerate tokens for this node.Nr   r   ,)r   r   r   r   r   r   r   leniter_tokensr   r   r   r   )ri   childr3   r3   r4   r     s"    


zNode.iter_tokens)start_lengthrL   r.   c             C   s2   |}x(|   D ]}|t|7 }||krdS qW dS )a*  Check the length fits within a limit.

        Args:
            start_length (int): Starting length of the line (indent, prefix, suffix).
            max_length (int): Maximum length.

        Returns:
            bool: True if the node can be rendered within max length, otherwise False.
        FT)r   r!   )ri   r   rL   total_lengthtokenr3   r3   r4   check_length  s    
zNode.check_lengthc             C   s   d |  }|S )NrS   )joinr   )ri   	repr_textr3   r3   r4   __str__  s    zNode.__str__P   r{   )r   r|   rO   r.   c             C   s|   t | ddg}d}xP|t|k rb|| }|jrX|jsX|sB||sX|||||d < |d7 }qW ddd |D }|S )al  Render the node to a pretty repr.

        Args:
            max_width (int, optional): Maximum width of the repr. Defaults to 80.
            indent_size (int, optional): Size of indents. Defaults to 4.
            expand_all (bool, optional): Expand all levels. Defaults to False.

        Returns:
            str: A repr string of the original object.
        T)nodeis_rootr   r   rV   c             s   s   | ]}t |V  qd S )N)str)r   rY   r3   r3   r4   r     s    zNode.render.<locals>.<genexpr>)_Liner   
expandableexpandedr   expandr   )ri   r   r|   rO   linesline_norY   repr_strr3   r3   r4   render  s    zNode.render)r   r{   F)rk   rl   rm   r   r   r   ro   r   r   r   r   r   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r3   r3   r4   r     s"   
r   c               @   s   e Zd ZU dZdZed  ed< dZeed< dZ	ee
 ed< dZeed< dZeed	< dZeed
< dZeed< dZeed< eedddZeedddZeed  dddZedddZdS )r   zA line in repr output.NparentFr   r   rS   textsuffix
whitespacer   r   )r.   c             C   s   t | jdk	o| jjS )z"Check if the line may be expanded.N)rn   r   r   )ri   r3   r3   r4   r     s    z_Line.expandable)rL   r.   c             C   s:   t | jt| j t| j }| jdk	s,t| j||S )z4Check this line fits within a given number of cells.N)r   r   r!   r   r   r   ra   r   )ri   rL   r   r3   r3   r4   r     s    z_Line.check_length)r|   r.   c             c   s   | j }|dk	st| j}|js"t|jrJt|j |j |j |dV }nt|j|dV }| jd|  }|jozt	|jdk}xBt
|jD ]4\}}|rdn|j}	t||||	|o| d}
|
V  qW t|j|| j| jdV  dS )z6Expand this line by adding children on their own line.N)r   r    r   r   )r   r   r   r   r   )r   r   r   r   )r   ra   r   r   r   r   r   r   r   r   r   r   r   r   r   )ri   r|   r   r   new_linechild_whitespacetuple_of_oner   r   r   rY   r3   r3   r4   r     s2    

z_Line.expandc             C   sH   | j r | j | j | jpd S | j | j | jp4d | j  S d S )NrS   )r   r   r   r   r   r]   )ri   r3   r3   r4   r     s    z_Line.__str__)rk   rl   rm   r   r   r   ro   r   rn   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r3   r3   r3   r4   r     s   
!r   c             C   s:   yt | dd}W n tk
r$   dS X t| to8t|tS )aX  Checks if an object is most likely a namedtuple. It is possible
    to craft an object that passes this check and isn't a namedtuple, but
    there is only a minuscule chance of this happening unintentionally.

    Args:
        obj (Any): The object to test

    Returns:
        bool: True if the object is a namedtuple. False otherwise.
    _fieldsNF)getattrr<   r`   tuple)r-   r	   r3   r3   r4   _is_namedtuple  s
    r   )r   rL   rM   rN   r.   c          	      s\   t tdfddt jjdt tttd fdd  | d	d
}|S )a`  Traverse object and generate a tree.

    Args:
        _object (Any): Object to be traversed.
        max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to None.
        max_string (int, optional): Maximum length of string before truncating, or None to disable truncating.
            Defaults to None.
        max_depth (int, optional): Maximum depth of data structures, or None for no maximum.
            Defaults to None.

    Returns:
        Node: The root of a tree structure which can be used to render a pretty repr.
    )r-   r.   c          
      s    dk	rFt | ttfrFt|  krFt|   }| d  d| }n@yt| }W n2 tk
r } zdt|d}W dd}~X Y nX |S )z0Get repr string for an object, but catch errors.N+z<repr-error >)rW   bytesr   r   rh   r<   )r-   	truncatedobj_reprerror)rM   r3   r4   to_reprE  s    "ztraverse.<locals>.to_reprFr   )r-   rootdepthr.   c       "         s  t }|krtddS t}dk	o0|k}tttttttf f  ddd}ytd}W n t	k
r|   d}Y nX d}|sytd	rt
s }W n t	k
r   Y nX |dk	r| tjd
d}	t||}
jj}|
rg }|j}|r0|	rtd| dd}nt| dd}n|	rRtd| dd||dd}nt| dd||d}xt|
D ]h\}}t|tr|\}}||d d}||_||_d|_|| n||d d}||_|| qrW n&t|	rd| dn| dg |d}| ntr2|s2| g }|j}t  r|r^tjj dd}ntjj dd||d}tttttttgtf  f  d fdd}x|t| D ]T\}\}}}|rtt||d}n||d d}||_||_d|_|| qW ntjj dg |d}| n|trtts|str| g }|j}|rtjj dd}ntjj dd||jj dd}xXtdd tD D ]>\}}t|j|d d}|j|_||_d|_|| qW | ntrt rΈ| jj}|rNt| dd}ntg }|j}t| dd|| dd}xLt! " D ]8\}\}}||d d}||_||_d|_|| qW | ntt#rx t#D ]}t|r|}P qW | t$| \}}}|r4t| d| d}n`|j%tj%krZt|d }n:rg }t||||d}|j}t&}|d }tt'r t(" }dk	rt)|}xt*|D ]:\} \}}||d d}||_| |k|_|| qW nVt(}!dk	rt)|!}!x8t*|!D ],\} }||d d}| |k|_|| q&W dk	r|kr|td!|  d"d  nt|g |d#}| nt|d }tt|_+t|_,|S )$zWalk the object depth first.z...)r   N)	rich_argsr.   c             s   s   x| D ]x}t |trxt|dkr@|\}}}||kr4q||fV  q~t|dkr`|\}}||fV  q~t|dkr~|d V  q|V  qW d S )N      r   r   )rW   r   r   )r   argkeyr   defaultr3   r3   r4   iter_rich_argse  s    


z3traverse.<locals>._traverse.<locals>.iter_rich_args,awehoi234_wdfjwljet234_234wdfoijsdfmmnxpi492Fr   angular<z...>z(...)r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   )r   =z())r   r   r   )r.   c              3   sx   xr D ]j} | j ryt| j}W n0 tk
rP } z| j|dfV  W dd}~X Y qX | j|t| j rh| j ndfV  qW dS )z$Iterate over attr fields and values.N)rh   r   namer<   callable)attrrG   r   )attr_fieldsr-   r3   r4   
iter_attrs  s    
 z/traverse.<locals>._traverse.<locals>.iter_attrs)r   r   r   r   r   c             s   s   | ]}|j r|V  qd S )N)rh   )r   fieldr3   r3   r4   r     s    z.traverse.<locals>._traverse.<locals>.<genexpr>)r   r   r   r   )r   r   z... +T)r   r   r   )-idr   r2   r   r   r   r   r   r   r<   r   r   r   list	__class__rk   appendr   rW   r   r   r   r   r5   r6   r   r   r
   r=   r	   r   r   rE   _asdictitemsr   r   r7   r   _MAPPING_CONTAINERSiterr   	enumerater   r   )"r-   r   r   obj_idobj_typereached_max_depthr   fake_attributesrich_repr_resultr   args
class_namer   r   r   r   r   r   r   
child_noder   r   rG   repr_callabler   container_typer   r   r   	num_itemslast_item_index
iter_itemsindexiter_values)	_traverserN   rL   pop_visitedpush_visitedr   visited_ids)r   r-   r4   r	  Y  sX   
$




.











ztraverse.<locals>._traverseT)r   )Fr   )r   r   setaddremovern   r   r   )r   rL   rM   rN   r   r3   )r	  rN   rL   rM   r
  r  r   r  r4   traverse0  s    & |r  r   r{   )r   r|   rL   rM   rN   rO   )r   r   r|   rL   rM   rN   rO   r.   c      	      C   s4   t | tr| }nt| |||d}|j|||d}|S )a  Prettify repr string by expanding on to new lines to fit within a given width.

    Args:
        _object (Any): Object to repr.
        max_width (int, optional): Desired maximum width of repr string. Defaults to 80.
        indent_size (int, optional): Number of spaces to indent. Defaults to 4.
        max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to None.
        max_string (int, optional): Maximum length of string before truncating, or None to disable truncating.
            Defaults to None.
        max_depth (int, optional): Maximum depth of nested data structure, or None for no depth.
            Defaults to None.
        expand_all (bool, optional): Expand all containers regardless of available width. Defaults to False.

    Returns:
        str: A possibly multi-line representation of the object.
    )rL   rM   rN   )r   r|   rO   )rW   r   r  r   )	r   r   r|   rL   rM   rN   rO   r   r   r3   r3   r4   r   X  s    
r   T)rH   rK   rL   rM   rN   rO   )r   rH   rK   rL   rM   rN   rO   r.   c         
   C   s6   |dkrt  n|}|jt| |||||dddd dS )a  A convenience function for pretty printing.

    Args:
        _object (Any): Object to pretty print.
        console (Console, optional): Console instance, or None to use default. Defaults to None.
        max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to None.
        max_string (int, optional): Maximum length of strings before truncating, or None to disable. Defaults to None.
        max_depth (int, optional): Maximum depth for nested data structures, or None for unlimited depth. Defaults to None.
        indent_guides (bool, optional): Enable indentation guides. Defaults to True.
        expand_all (bool, optional): Expand all containers. Defaults to False.
    NrF   )rL   rM   rN   rK   rO   rI   T)	soft_wrap)r   rZ   r[   )r   rH   rK   rL   rM   rN   rO   _consoler3   r3   r4   rg     s    rg   __main__c               @   s   e Zd ZedddZdS )
BrokenRepr)r.   c             C   s   dd  dS )Nr   r   zthis will failr3   )ri   r3   r3   r4   r7     s    zBrokenRepr.__repr__N)rk   rl   rm   r   r7   r3   r3   r3   r4   r    s   r  )
NamedTuplec               @   s:   e Zd ZU eed< eed< eed< eed< ee ed< dS )StockKeepingUnitr   descriptionZpricecategoryZreviewsN)rk   rl   rm   r   ro   floatr   r3   r3   r3   r4   r    s
   
r     foozHello World!gZd;Y@gʡE3t@g    cA      )r   r   r   r{      r   r   ZcrumbleappleZrhubarbbutterZsugarZflourZorangepearZkumquatAX  duriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurian)FTNzSparkling British Spring WaterzCarbonated spring waterg?Zwaterzits amazing!zits terrible!)r  barr   counterZatomic
namedtupleZBroken)rZ   c               @   s   e Zd ZedddZdS )Thing)r.   c             C   s   dS )NzHello[38;5;239m World!r3   )ri   r3   r3   r4   r7     s    zThing.__repr__N)rk   rl   rm   r   r7   r3   r3   r3   r4   r%    s   r%  )NrF   FFNNNF)NrF   FFNNNF)NNN)orb   collectionsr:   r?   osrv   r   r   r   r   r   r   r   r	   r
   r   	itertoolsr   typesr   typingr   r   r   r   r   r   r   r   r   r   r   r   Zpip._vendor.rich.reprr   r   r0   r   r/   ImportErrorrS   r   _loopr   _pickr   abcr    cellsr!   r   r"   jupyterr#   r$   measurer%   r   r&   rH   r'   r(   r)   r*   r+   r,   rn   r5   r6   objectr=   r$  r>   rE   r   r   r^   r2   rW   rz   r[   r   r   _Environdict	frozensetr   r  r   r   ro   keysr   r   r   r   r   r   r  r   rg   rk   r  r  r  ddatar   rq   rZ   r%  r3   r3   r3   r4   <module>   s   8
 
       $%	       "Fh"
0
UD    ( "$

