
    Mh                     d   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
j        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 dS )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         sAt          j        d| z  t          d           |                     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    W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_client/jsonutil.py_ensure_tzinfor   &   sT    
 9 *^acc	
 	
 	
 	

 ZZwyyZ))I    sc                     | | S t                               |           }|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   sI     	y!A "Qb!!!Hr   objc                 ,   t          | t                    r1i }|                                 D ]\  }}t          |          ||<   |} nMt          | t          t
          f          rd | D             } n$t          | t                    rt          |           } | S )z(extract ISO8601 dates from unpacked JSONc                 ,    g | ]}t          |          S  )extract_dates.0os     r   
<listcomp>z!extract_dates.<locals>.<listcomp>N   s     ---A}Q---r   )
isinstancedictitemsr%   listtuplestrr    )r!   new_objkvs       r   r%   r%   F   s    #t IIKK 	* 	*DAq&q))GAJJ	C$	'	' -----	C		 ooJr   c                 L   t          | t                    r<t          |           } |                                 D ]\  }}t          |          | |<   nRt          | t          t
          f          rd | D             } n)t          | t                    r|                                 } | S )z,squash datetime objects into ISO8601 stringsc                 ,    g | ]}t          |          S r$   )squash_datesr&   s     r   r)   z squash_dates.<locals>.<listcomp>[   s    ,,,1|A,,,r   )r*   r+   r,   r5   r-   r.   r   	isoformat)r!   r1   r2   s      r   r5   r5   T   s    #t 3iiIIKK 	% 	%DAq!!__CFF	%	C$	'	' ,,,,,	C	"	" mmooJr   c                 L    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_defaultr;   a   s3    M	5   
 r   c                    t          | t                    r7t          |           } |                                                     dd          S t          | t
                    r$t          | d                              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   r6   r   bytesr   decoder   r-   numbersIntegralintRealfloat	TypeErrorr:   s    r   r9   r9   k   s    #x   6S!!}}&&x555#u >#u---44W===#x   Cyy#w'(( 3xx#w|$$ Szz
1C7
8
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                  rFt          j        |           st          j        |           rt          |           S t!          |           S t          | |          r| S t          | t"                    r$t%          | d                              d          S t          | |          s%t)          | d          r$t)          | t*                    rt-          |           } t          | t,                    rd | D             S t          | t.                    rt1          |           }t1          t          t3          t           |                               }||k    rd}t5          |          i }|                                 D ]$\  }}t9          |          |t          |          <   %|S t          | t:                    r|                     t>                    S t5          d| z            )NFr>   r@   __iter__c                 ,    g | ]}t          |          S r$   )
json_clean)r'   xs     r   r)   zjson_clean.<locals>.<listcomp>   s    +++!
1+++r   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*   boolrC   rD   rE   rF   mathisnanisinfreprrG   rA   r   rB   hasattrnext_attr_namer-   r+   lenmap
ValueErrorr,   rL   r   strftimeISO8601)	r!   	atomic_okcontainer_to_listnkeysnkeys_collapsedmsgoutr1   r2   s	            r   rL   rL      s3   d4jj!I U%89
 #t 
#w'(( 3xx#w|$$ :c?? 	djoo 	99Szz#y!! 
#u > #u---44W===#()) Z  %,S.%A%A 3ii#t ,++s++++#t  Cc#c3--0011O##=  S//!IIKK 	( 	(DAq$Q--CAKK
#x   %||G$$$ /#5
6
66r   )!__doc__rS   rC   rerP   r   binasciir   collections.abcr   r   typingr   r   r   dateutil.parserr	   r   dateutil.tzr
   rX   r]   compiler   strptimer   r/   r    r%   r5   r;   r9   rL   r$   r   r   <module>rm      s   + +   				         $ $ $ $ $ $       ' ' ' ' ' ' ' ' ' ' 7 7 7 7 7 7       !bjS   ,
 + + +x H     (3- HU3=-A$B     s s    
c 
c 
 
 
 
c c    9c 9c 9 9 9 90=7C =7C =7 =7 =7 =7 =7 =7r   