
    <h                     f   S r SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJ	r	  SSK
J
r
  SSKJrJrJr  SSKJr  SSKJr  S	rS
r\R,                  " S5      r\
R0                  " SS5        S\
S\
4S jrS\\   S\\\\
4      4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jr g)z%Utilities to manipulate JSON objects.    N)
b2a_base64)Iterable)datetime)AnyOptionalUnion)isoparse)tzlocal__next__z%Y-%m-%dT%H:%M:%S.%fzL^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(\.\d{1,6})?(Z|([\+\-]\d{2}:?\d{2}))?$z
2000-01-01z%Y-%m-%ddtreturnc                     U R                   (       d4  [        R                  " SU -  [        SS9  U R	                  [        5       S9n U $ )zJEnsure a datetime object has tzinfo

If no tzinfo is present, add tzlocal
zPInterpreting naive datetime as local %s. Please add timezone info to timestamps.   
stacklevel)tzinfo)r   warningswarnDeprecationWarningreplacer
   )r   s    jC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jupyter_client/jsonutil.py_ensure_tzinfor   &   s?    
 99^acc	

 ZZwyZ)I    sc                 t    U c  U $ [         R                  U 5      nU(       a  [        U 5      n[        U5      $ U $ )zparse an ISO8601 date string

If it is None or not a valid ISO8601 timestamp,
it will be returned unmodified.
Otherwise, it will return a datetime object.
)ISO8601_PATmatch_dateutil_parser   )r   mr   s      r   
parse_dater    6   s;     	y!AQb!!Hr   objc                 B   [        U [        5      (       a,  0 nU R                  5        H  u  p#[        U5      X'   M     Un U $ [        U [        [
        45      (       a  U  Vs/ s H  n[        U5      PM     n nU $ [        U [        5      (       a  [        U 5      n U $ s  snf )z(extract ISO8601 dates from unpacked JSON)
isinstancedictitemsextract_dateslisttuplestrr    )r!   new_objkvos        r   r&   r&   F   s    #tIIKDA&q)GJ  
 J	 
C$	'	'),-A}Q- J 
C		oJ .s   !Bc                 Z   [        U [        5      (       a3  [        U 5      n U R                  5        H  u  p[        U5      X'   M     U $ [        U [        [
        45      (       a  U  Vs/ s H  n[        U5      PM     n nU $ [        U [        5      (       a  U R                  5       n U $ s  snf )z,squash datetime objects into ISO8601 strings)r#   r$   r%   squash_datesr'   r(   r   	isoformat)r!   r+   r,   r-   s       r   r/   r/   T   s    #t3iIIKDA!!_CF   J	 
C$	'	'(+,1|A, J 
C	"	"mmoJ -s   (B(c                 B    [         R                  " SSS9  [        U 5      $ )z4DEPRECATED: Use jupyter_client.jsonutil.json_defaultz`date_default is deprecated since jupyter_client 7.0.0. Use jupyter_client.jsonutil.json_default.   r   )r   r   json_defaultr!   s    r   date_defaultr5   a   s#    MM	5
 r   c                    [        U [        5      (       a+  [        U 5      n U R                  5       R	                  SS5      $ [        U [
        5      (       a  [        U SS9R                  S5      $ [        U [        5      (       a  [        U 5      $ [        U [        R                  5      (       a  [        U 5      $ [        U [        R                  5      (       a  [        U 5      $ [        SU -  5      e)z-default function for packing objects in JSON.z+00:00ZFnewlineasciiz%r is not JSON serializable)r#   r   r   r0   r   bytesr   decoder   r'   numbersIntegralintRealfloat	TypeErrorr4   s    r   r3   r3   k   s    #x  S!}}&&x55#u#u-44W==#x  Cy#w''((3x#w||$$Sz
1C7
88r   c                    [         [        S 5      4n[        [        [        R
                  4n[        U [        5      (       a  U $ [        U [        R                  5      (       a  [        U 5      $ [        U [        R                  5      (       aL  [        R                  " U 5      (       d  [        R                  " U 5      (       a  [        U 5      $ [!        U 5      $ [        X5      (       a  U $ [        U ["        5      (       a  [%        U SS9R'                  S5      $ [        X5      (       d&  [)        U S5      (       a   [)        U [*        5      (       a  [-        U 5      n [        U [,        5      (       a  U  Vs/ s H  n[/        U5      PM     sn$ [        U [0        5      (       as  [3        U 5      n[3        [        [5        [         U 5      5      5      nXE:w  a  Sn[7        U5      e0 nU R9                  5        H  u  p[/        U	5      U[        U5      '   M     U$ [        U [:        5      (       a  U R=                  [>        5      $ [7        SU -  5      es  snf )NFr8   r:   __iter__zSdict cannot be safely converted to JSON: key collision would lead to dropped valueszCan't clean for JSON: %r) r)   typer(   settypesGeneratorTyper#   boolr=   r>   r?   r@   mathisnanisinfreprrA   r;   r   r<   hasattrnext_attr_namer'   
json_cleanr$   lenmap
ValueErrorr%   r   strftimeISO8601)
r!   	atomic_okcontainer_to_listxnkeysnkeys_collapsedmsgoutr+   r,   s
             r   rP   rP      s   d4j!I U%8%89
 #t
#w''((3x#w||$$::c??djjoo9Sz#!!
#u #u-44W==#))Z  WS.%A%A3i#t'*+s!
1s++#t Cc#c3-01#=  S/!IIKDA$Q-CAK  
#x  ||G$$ /#5
661 ,s   3I)!__doc__rJ   r=   rerG   r   binasciir   collections.abcr   r   typingr   r   r   dateutil.parserr	   r   dateutil.tzr
   rO   rU   compiler   strptimer   r)   r    r&   r/   r5   r3   rP    r   r   <module>rg      s    +   	    $  ' ' 7  !jjS 	  ,
 +x H  (3- HU3=-A$B  s s 
c 
c 
c c 9c 9c 90=7C =7C =7r   