o
    i                     @   s   d dl Z d dlZd dlZd dlZd dlZdd Zdd Zdd Zdd	 Zd
d Z	dd Z
dddZdd ZdedefddZdddZdddZdS )    Nc                 C   s   d d| dS )Nz{0} {1} {2}z==============================)format)content r   (/opt/nsrc-open-message/app/utils/util.pyseparate_line   s   r   c                 C   s   t j| dddS )N   ),z: )indent
separators)jsondumps)objr   r   r   pretty_json   s   r   c                   C   s
   t t S N)timestamp_to_format_timeget_current_timestampr   r   r   r   get_current_time_str   s   
r   c                   C   s   t t S r   )inttimer   r   r   r   r      s   r   c                 C   sV   | sdS zt | }|dkrt |d }tj|dW S  ty*   t  Y dS w )N l    d(	 i  z%Y-%m-%d %H:%M)r   datetimefromtimestampstrftime
ValueError	traceback	print_exc)	timestampZstampr   r   r   r      s   r   c                 C   s"   | r|sdS |   dd |D v S )NFc                 S      g | ]}|  qS r   lower.0gr   r   r   
<listcomp>(       z+str_in_list_ignore_case.<locals>.<listcomp>r   )p_strZp_listr   r   r   str_in_list_ignore_case%   s   r&   c                 C   s"   zt | W S  ty   | Y S w r   )r   BaseException)r   defaultr   r   r   to_int+   s
   
r)   c                 C   s2   | sd S t j | d}|t jdd }t| S )Nz%Y-%m-%dT%H:%M:%SZ   )hours)r   strptime	timedeltar   r   )utcZutc_time	localtimer   r   r   utc_to_local2   s
   r0   rawreturnc                 C   s   t | d S )Nzutf-8)hashlibmd5encode	hexdigest)r1   r   r   r   r4   :   s   r4   Tc                 C   sH   | r|sdS |rdd | D } dd |D }| D ]	}||v r! dS qdS )u   
    判断两个list是否有交集， 注意： 当前只能用于str类型的list
    :param list1:
    :param list2:
    :param ignore_case:
    :return:
    Fc                 S   r   r   r   r    r   r   r   r#   I   r$   z$has_intersection.<locals>.<listcomp>c                 S   r   r   r   r    r   r   r   r#   J   r$   Tr   )Zlist1Zlist2ignore_caseZg1r   r   r   has_intersection>   s   r8   c                    s   | }zS| dD ]J}t|tr|| }qt|trNz$| d t dkr,|t| }ntt fdd|p9dgd }W q tyM } zt|d}~ww |  W S W |S  tyi } z|W  Y d}~S d}~ww )a{  
    ============ example  ============
    data = {
        "a": {
            "b": [
                {"name": "n1", "age": 8},
                {"name": "n2", "age": 18}
            ],
            "c": {
                "d": "dd"
            }
        }
    }
    =====================================

    :param data:
    :param key_path:
    :param default:
    :return:
    .:r   c                    s   |  d   d kS )Nr      r   )xZ	key_partsr   r   <lambda>r   r$   zdeep_get.<locals>.<lambda>Nr   )	split
isinstancedictlistlenr   filterr'   KeyError)datakey_pathr(   valuekeyeZker   r=   r   deep_getQ   s0   


 
rK   )r   )Tr   )r   r3   r   r   r   r   r   r   r   r   r&   r)   r0   strr4   r8   rK   r   r   r   r   <module>   s     

