
    f                     X   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mZ ddlm	Z	 ddl
m
Z
 ddlmZmZmZ ddlmZ ddlmZ d	Zd
Z ej,                  d      Z e
j0                  dd       de
de
fdZdee   deeee
f      fdZdedefdZdedefdZdedefdZdedefdZdedefdZ y)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                     | j                   s9t        j                  d| z  t        d       | j	                  t                     } | S )zREnsure 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    R/var/www/cvtools/html/venv/lib/python3.12/site-packages/jupyter_client/jsonutil.py_ensure_tzinfor   &   s?    
 99^acc	

 ZZwyZ)I    sc                 h    | | S t         j                  |       }|rt        |       }t        |      S | S )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                    t        | t              r,i }| j                         D ]  \  }}t        |      ||<    |} | S t        | t        t
        f      r| D cg c]  }t        |       } }| S t        | t              rt        |       } | S c c}w )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IIK 	*DAq&q)GAJ	*
 J	 
C$	'),-A}Q-- J 
C	oJ .s   B
c                 6   t        | t              r3t        |       } | j                         D ]  \  }}t        |      | |<    | S t        | t        t
        f      r| D cg c]  }t        |       } }| S t        | t              r| j                         } | S c c}w )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IIK 	%DAq!!_CF	% J	 
C$	'(+,1|A,, J 
C	"mmoJ -s   Bc                 F    t        j                  dd       t        |       S )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                    t        | t              r+t        |       } | j                         j	                  dd      S t        | t
              rt        | d      j                  d      S t        | t              rt        |       S t        | t        j                        rt        |       S t        | t        j                        rt        |       S t        d| z        )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                    t         t        d       f}t        t        t        j
                  f}t        | t              r| S t        | t        j                        rt        |       S t        | t        j                        r@t        j                  |       st        j                  |       rt        |       S t!        |       S t        | |      r| S t        | t"              rt%        | d      j'                  d      S t        | |      st)        | d      rt)        | t*              rt-        |       } t        | t,              r| D cg c]  }t/        |       c}S t        | t0              rrt3        |       }t3        t        t5        t         |                   }||k7  rd}t7        |      i }| j9                         D ]  \  }}	t/        |	      |t        |      <    |S t        | t:              r| j=                  t>              S t7        d| z        c c}w )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o9Sz#y!
#u #u-44W==#()Z WS.%A3i#t'*+!
1++#t Cc#c3-01O#=  S/!IIK 	(DAq$Q-CAK	(
#x ||G$$ /#5
661 ,s   ?H	)!__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  !bjjS   ,
 +x H  (3- HU3=-A$B  s s 
c 
c 
c c 9c 9c 90=7C =7C =7r   