o
     Oc                     @   sp  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" zd dl#Z$d
Z%W n e&y~   dZ%Y nw ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 erddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@ dhZAdedeBfddZCdeded fddZDdeEdeBfdd ZFeGd!g ZHdeEdeBfd"d#ZI		$					d}d%ed&ed' d(d)d*eBd+eBd,eeJ d-eeJ d.eBddfd/d0ZKdeEd1e eLeeLd2f f deBfd3d4ZM		$					d}d&ed' d(d)d*eBd+eBd,eeJ d-eeJ d.eBddfd5d6ZNG d7d8 d8e4ZOd9eeef deePePePf fd:d;ZQd9d<deePePePf fd=d>ZRejSd?d@ eeRe
eQedAd@ edBd@ eTdCd@ edDd@ eUdEd@ eVdFd@ e	dGd@ eWdHd@ eXdId@ edJd@ iZYeeLeegeePePePf f f eZdK< eXeY[ Z\eTejSeefZ]dedeBfdLdMZ^eG dNdO dOZ_eG dPdQ dQZ`dedeBfdRdSZa			d~d9ed,eeJ d-eeJ dTeeJ de_f
dUdVZbdWdXdddddYd9edZeJd[eJd,eeJ d-eeJ dTeeJ d.eBdePfd\d]Zcdd
ddddd^d9ed&ed' d+eBd,eeJ d-eeJ dTeeJ d.eBddfd_d`ZdeedakrG dbdc dcZfd ddlmgZg G dedf dfegZhe
eJZidgeidh< ddidjdkdlh dmgeUh dne
eVdog dpieg dqdrehdsdtdudvdwdxgef dyZjejdh kej d dzllmmZm emeOejd
d{d| dS 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)RichReprResultTF   get_console)	loop_last)	pick_bool)RichRenderablecell_len)ReprHighlighter)JupyterMixinJupyterRenderable)Measurement)Text)ConsoleConsoleOptionsHighlighterTypeJustifyMethodOverflowMethodRenderResultzmatplotlib.artist.Artistobjreturnc                 C   s   t ott| S )z1Check if an object was created with attrs module.)
_has_attrs_attr_moduleZhastyper.    r4   9D:\Flask\env\lib\site-packages\pip\_vendor\rich\pretty.py_is_attr_objectA   s   r6   z_attr_module.Attribute[Any]c                 C   s   t r	tt| S g S )zGet fields for an attrs object.)r0   r1   r	   r2   r3   r4   r4   r5   _get_attr_fieldsF   s   r7   c                 C   s(   z	| j jjtjkW S  ty   Y dS w )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.
    F)__repr____code__co_filenamedataclasses__file__	Exceptionr3   r4   r4   r5   _is_dataclass_reprK   s
   r>   _dummy_namedtuplec              	   C   s@   d}zt | j}W n ttfy   Y nw 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getfiler8   OSError	TypeErrorr?   )r.   Zobj_fileZdefault_repr_filer4   r4   r5   _has_default_namedtuple_repr_   s   	rD   ignorevalueconsoler(   overflowr,   cropindent_guides
max_length
max_string
expand_allc              
   C   s   ddl m} ddlm}	 t| ts| d u rd S |pt }|jrPg d}
|
D ]#}t| |d }t	
|rHz| }W n	 ty@   Y q%w |d urH d S q%|| trPd S t| |	rY|  |jt| trb| n
t| |||||dd|dd d S )	Nr   )is_object_one_of_types)ConsoleRenderable)Z_repr_html_Z_repr_markdown_Z_repr_json_Z_repr_latex_Z_repr_jpeg_Z
_repr_png_Z
_repr_svg__repr_mimebundle_   )rH   rJ   rK   rL   rM   marginT)rI   new_line_start)_inspectrN   rG   rO   _safe_isinstancer%   r   
is_jupytergetattrr@   ismethodr=   JUPYTER_CLASSES_TO_NOT_RENDERlineprintr    Pretty)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   Zipython_repr_methodsZrepr_methodmethodZrepr_resultr4   r4   r5   _ipy_display_hooks   sJ   





	
r^   class_or_tuple.c                 C   s"   zt | |W S  ty   Y dS w )zFisinstance can fail in rare cases, for example types with no __class__F)
isinstancer=   )r.   r_   r4   r4   r5   rU      s
   rU   c                    s   ddl m  p
   dusJ dtddf fdd}z$t }ddlm}	 G fd	d
d
|	}
|
 }||jjd< W dS  tyS   |t	_
Y dS w )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.
        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   NrF   r/   c              	      sT   | dur( dus
J dt _ jt| tr| n	t| dd | t _dS dS )z?Replacement sys.displayhook which prettifies objects with Rich.N)rH   rJ   rK   rL   rM   )rI   )builtins_r[   rU   r    r\   )rF   )rG   rI   rM   rJ   rK   rL   rH   r4   r5   display_hook   s$   
zinstall.<locals>.display_hook)BaseFormatterc                       s:   e Zd ZU dZeed< dedef fddZdS )zinstall.<locals>.RichFormatterTpprintrF   r/   c              	      s&   | j rt|  dS t|S )N)rG   rH   rJ   rK   rL   rM   )re   r^   repr)selfrF   rM   r   rJ   rK   rL   rH   r4   r5   __call__   s   
z'install.<locals>.RichFormatter.__call__N)__name__
__module____qualname__re   bool__annotations__r   ri   r4   rh   r4   r5   RichFormatter   s   
 $ro   z
text/plain)pip._vendor.richr   r   get_ipythonZIPython.core.formattersrd   Zdisplay_formatterZ
formattersr=   sysdisplayhook)rG   rH   rI   rJ   rK   rL   rM   rc   iprd   ro   Zrich_formatterr4   )rG   rI   rM   r   rJ   rK   rL   rH   r5   install   s   
"ru   c                   @   s   e Zd ZdZ	d$dddddddddddddeded	 d
eded ded dee dedee dee dee dedededdfddZ						d%dd Z							!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justifyrH   no_wraprJ   rK   rL   	max_depthrM   rR   insert_line_objecthighlighterr*   rw   rx   r+   rH   r,   ry   rJ   rK   rL   rz   rM   rR   r{   r/   c                C   sX   || _ |pt | _|| _|| _|| _|| _|| _|| _|	| _	|
| _
|| _|| _|| _d S N)r|   r#   r}   rw   rx   rH   ry   rJ   rK   rL   rz   rM   rR   r{   )rg   r|   r}   rw   rx   rH   ry   rJ   rK   rL   rz   rM   rR   r{   r4   r4   r5   __init__%  s   
zPretty.__init__rG   r(   optionsr)   r-   c              	   c   s    t | j|j| j | j| j| j| j| jd}t	|| j
p|j
| jp"|jt| j|jdd}|r3| |nt	t| j ddd}| jrM|jsM|j| jdd}| jrWd|v rWd	V  |V  d S )
N	max_widthrw   rK   rL   rz   rM   pretty)rx   rH   ry   stylez.__repr__ returned empty stringz
dim italic)r   zrepr.indent
 )pretty_reprr|   r   rR   rw   rK   rL   rz   rM   r'   rx   rH   r   ry   r}   r2   rJ   
ascii_onlywith_indent_guidesr{   )rg   rG   r   
pretty_strZpretty_textr4   r4   r5   __rich_console__D  s>   
	

	
zPretty.__rich_console__r&   c                 C   sH   t | j|j| j| j| j| jd}|rtdd | D nd}t	||S )N)r   rw   rK   rL   rM   c                 s       | ]}t |V  qd S r~   r!   .0rZ   r4   r4   r5   	<genexpr>s      z*Pretty.__rich_measure__.<locals>.<genexpr>r   )
r   r|   r   rw   rK   rL   rM   max
splitlinesr&   )rg   rG   r   r   
text_widthr4   r4   r5   __rich_measure__g  s   	
zPretty.__rich_measure__r~   )rG   r(   r   r)   r/   r-   )rG   r(   r   r)   r/   r&   )rj   rk   rl   __doc__r   r   intrm   r   r   r   r4   r4   r4   r5   r\     st    	


#r\   r|   c                 C      d| j ddd| j dfS )Nzdefaultdict(z, {})z, {}))default_factoryr|   r4   r4   r5   _get_braces_for_defaultdictx  s   r   z
array[Any]c                 C   r   )Nzarray(z, [])))typecoder   r4   r4   r5   _get_braces_for_array  s   r   c                 C      dS )N)z	environ({r   zenviron({})r4   r   r4   r4   r5   <lambda>      r   c                 C   r   )N)z	Counter({r   z	Counter()r4   r   r4   r4   r5   r     r   c                 C   r   )N)zdeque([r   zdeque()r4   r   r4   r4   r5   r     r   c                 C   r   N){}z{}r4   r   r4   r4   r5   r     r   c                 C   r   r   r4   r   r4   r4   r5   r     r   c                 C   r   )N)zfrozenset({r   zfrozenset()r4   r   r4   r4   r5   r     r   c                 C   r   N)[]z[]r4   r   r4   r4   r5   r     r   c                 C   r   r   r4   r   r4   r4   r5   r     r   c                 C   r   )N)r   r   zset()r4   r   r4   r4   r5   r     r   c                 C   r   )N)(r   ()r4   r   r4   r4   r5   r     r   c                 C   r   )N)zmappingproxy({r   zmappingproxy({})r4   r   r4   r4   r5   r     r   _BRACESc                 C   s.   t | tpt| pt| dpt| ot|  S )z3Check if an object may be expanded by pretty print.__rich_repr__)rU   _CONTAINERSr
   hasattrr6   r   r3   r4   r4   r5   is_expandable  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dZeed< dee fddZdededefddZdefddZ	d!dedededefdd ZdS )"Nodez4A node in a repr tree. May be atomic or a container.r   key_repr
value_repr
open_braceclose_braceemptyFlastis_tupleis_namedtupleNchildrenz: z, 	separatorr/   c                 c   s    | j r| j V  | jV  | jr| jV  dS | jdur\| jrV| jV  | jr<| js<t| jdkr<| jd  E dH  dV  n| jD ]}| E dH  |j	sO| j
V  q?| jV  dS | jV  dS dS )zGenerate tokens for this node.Nr   r   ,)r   key_separatorr   r   r   r   r   leniter_tokensr   r   r   r   )rg   childr4   r4   r5   r     s(   

zNode.iter_tokensstart_lengthrK   c                 C   s0   |}|   D ]}|t|7 }||kr dS q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"   )rg   r   rK   total_lengthtokenr4   r4   r5   check_length  s   
zNode.check_lengthc                 C   s   d |  }|S Nr   )joinr   )rg   Z	repr_textr4   r4   r5   __str__  s   zNode.__str__P   rv   r   rw   rM   c                 C   s   t | ddg}d}|t|k r5|| }|jr+|js+|s ||s+|||||d < |d7 }|t|k s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   r   c                 s   r   r~   )strr   r4   r4   r5   r     r   zNode.render.<locals>.<genexpr>)_Liner   
expandableexpandedr   expandr   )rg   r   rw   rM   linesline_norZ   repr_strr4   r4   r5   render  s   zNode.render)r   rv   F)rj   rk   rl   r   r   r   rn   r   r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r4   r4   r5   r     s4   
 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defddZdedefddZdeded  fddZdefddZdS )r   zA line in repr output.NparentFr   r   r   textsuffix
whitespacer   r   r/   c                 C   s   t | jduo	| jjS )z"Check if the line may be expanded.N)rm   r   r   rg   r4   r4   r5   r     s   z_Line.expandablerK   c                 C   s:   t | jt| j t| j }| jdusJ | j||S )z4Check this line fits within a given number of cells.N)r   r   r"   r   r   r   r   )rg   rK   r   r4   r4   r5   r     s   z_Line.check_lengthrw   c                 c   s    | j }|dus
J | j}|jsJ |jr&t|j |j |j |dV }nt|j|dV }| jd|  }|jo>t|jdk}t	|jD ]\}}|rLdn|j
}	t||||	|oX| d}
|
V  qDt|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   r   r   r   r   r   r   r   r   r   r   r   r   r   )rg   rw   r   r   new_lineZchild_whitespaceZtuple_of_oner   r   r   rZ   r4   r4   r5   r     s:   

z_Line.expandc                 C   sD   | j r| j | j | jpd S | j | j | jpd | j  S r   )r   r   r   r   r   rstripr   r4   r4   r5   r   1  s   "z_Line.__str__)rj   rk   rl   r   r   r   rn   r   rm   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r4   r4   r4   r5   r     s   
 !r   c                 C   s:   zt | dd}W n
 ty   Y dS w t| tot|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)rW   r=   r`   tuple)r.   r	   r4   r4   r5   _is_namedtuple:  s   r   rz   c              	      sd   dt dtffddt jjddt dtdtdtf 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ur$t | ttfr$t|  kr$t|   }| d  d| }|S zt| }W |S  tyF } zdt|d}W Y d}~|S d}~ww )z0Get repr string for an object, but catch errors.N+z<repr-error >)rU   bytesr   r   rf   r=   )r.   Z	truncatedobj_reprerror)rL   r4   r5   to_reprb  s"   

ztraverse.<locals>.to_reprFr   rootdepthc           #   	      s^  t }tjjtjjf}duo|k}dtdttttt	tf f  fdd}zt
d}W n ty9   d}Y nw d}|sWzt
drLtsL }W n	 tyV   Y nw |durtjd	d}	t||}
jj}|
rg }|j}|r|td
d}n|	rtd| dd||dd}nt| dd||d}t|
D ]2\}}t|tr|\}}||d d}||_||_d|_|| q||d d}||_|| qnRt|	rd| dn| dg |d}n>trg|sgg }|j}t  rY|rtd
d}n tjj dd||d}dttt	ttttgt	f  f  f fdd}t| D ]*\}\}}}|r@tt	||d}n||d d}||_||_d|_|| q,ntjj dg |d}ntrtt s|sts|dkrt }|v rtd
dS | g }|j}|rtd
d}ntjj dd||d}tdd t!D D ]\}}t|j"|d d}|j"|_||_d|_|| q| nDt#r/t$r/|rtd
d}n0g }jj}t| dd|| dd}|j}t% & D ]\}\}}||d d}||_||_d|_|| qntt'rt'D ]}t|rC|} nq7t }|v rStd
dS | t(| \}}}|rjtd
|d}n|j)t j)kr|t|d}nrg }t||||d}|j}t*}|d }tt+rt,& } durt-| } t.| D ]\}!\}}||d d}||_|!|k|_|| qn)t,}"durt-|"}"t.|"D ]\}!}||d d}|!|k|_|| q߈dur|kr|td|  d d nt|g |d!}| nt|d}tt|_/t#|_0|S )"zWalk the object depth first.N	rich_argsr/   c                 s   s    | D ]<}t |tr<t|dkr |\}}}||krq||fV  qt|dkr0|\}}||fV  qt|dkr;|d V  q|V  qd S )N      r   r   )rU   r   r   )r   argkeyr   defaultr4   r4   r5   iter_rich_args~  s    


z3traverse.<locals>._traverse.<locals>.iter_rich_argsZ,awehoi234_wdfjwljet234_234wdfoijsdfmmnxpi492Fr   angularz...)r   <r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   )r   =r   )r   r   r   c                  3   sx     D ]6} | j r9zt| j}W n ty) } z| j|dfV  W Y d}~qd}~ww | j|t| j r5| j ndfV  qdS )z$Iterate over attr fields and values.N)rf   rW   namer=   callable)attrrF   r   Zattr_fieldsr.   r4   r5   
iter_attrs  s   z/traverse.<locals>._traverse.<locals>.iter_attrs)r      c                 s   s    | ]}|j r|V  qd S r~   )rf   )r   fieldr4   r4   r5   r     s    
z.traverse.<locals>._traverse.<locals>.<genexpr>)r   r   r   r   )r   r   z... +T)r   r   r   )1r2   rr   version_infomajorminorr   r   r   r   r   r   r=   r   r   rW   list	__class__rj   appendr   r   rU   r   r   r   r   r6   r7   r   r   r
   r>   idr	   r   r   rD   _asdictitemsr   r   r8   r   _MAPPING_CONTAINERSiterr   	enumerater   r   )#r.   r   r   Zobj_type
py_versionZreached_max_depthr   Zfake_attributesZrich_repr_resultr   args
class_namer   r   r   r   r   r   r   Z
child_noder   r   rF   Zrepr_callableZobj_idr   Zcontainer_typer   r   r   Z	num_itemsZlast_item_indexZ
iter_itemsindexiter_values)	_traverserz   rK   pop_visitedpush_visitedr   visited_idsr   r5   r	  v  s  &



















ztraverse.<locals>._traverseT)r   N)Fr   )r   r   setaddremoverm   r   r   )r|   rK   rL   rz   r   r4   )r	  rz   rK   rL   r
  r  r   r  r5   traverseM  s   , ur  r   rv   r   r   rw   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.
    )rK   rL   rz   )r   rw   rM   )rU   r   r  r   )	r|   r   rw   rK   rL   rz   rM   r   r   r4   r4   r5   r   n  s   
r   )rG   rJ   rK   rL   rz   rM   c             
   C   s6   |du 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.
    NrE   )rK   rL   rz   rJ   rM   rH   T)	soft_wrap)r   r[   r\   )r|   rG   rJ   rK   rL   rz   rM   _consoler4   r4   r5   re     s   	
re   __main__c                   @   s   e Zd ZdefddZdS )
BrokenReprr/   c                 C   s   dd  dS )Nr   r   zthis will failr4   r   r4   r4   r5   r8     s   zBrokenRepr.__repr__N)rj   rk   rl   r   r8   r4   r4   r4   r5   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)rj   rk   rl   r   rn   floatr   r4   r4   r4   r5   r    s   
 r     foozHello World!gZd;Y@gʡE3t@g    cA>   r  r         )r   r   r   rv   >   r   r   r   Zcrumble)appleZrhubarbbutterZsugarZflour)r  Zorangepearkumquatr!  AX  duriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurianduriandurian)FTNzSparkling British Spring WaterzCarbonated spring waterg?Zwaterzits amazing!zits terrible!)r  Zbarr   ZcounterZatomic
namedtupleZBroken)r[      )rJ   rL   )NrE   FFNNF)NNN)nra   collectionsr;   r@   osrr   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   r1   r0   ImportErrorr   r   _loopr   _pickr   abcr    cellsr"   r}   r#   jupyterr$   r%   measurer&   r   r'   rG   r(   r)   r*   r+   r,   r-   rY   rm   r6   r7   objectr>   r"  r?   rD   r   r^   r2   rU   ru   r\   r   r   r   _Environdict	frozensetr   r  r   r   rn   keysr   r  r   r   r   r   r  r   re   rj   r  r  r  ddatar   rp   r[   r4   r4   r4   r5   <module>   s  
 8 	
I

K$g
(
TC
  &	
+	

%

!