
    Q/Ph$                     n   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ZddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlZddlZddlmZ ded	ed
efdZd Zee_        d Zd ZdZd Zd Z ej        e            ej        e            ej        e           ded
efdZ de!de!de!dedede!d
dfdZ"d Z#d Z$dS )z/Common util functions (e.g. missing in Python).    N)datetime	timedelta)tests)Path)Mapping)__version__dureturnc                     |                                 D ]Q\  }}t          |t          j        j                  r(t          |                     |i           |          | |<   L|| |<   R| S )zRecursively update a dict.

    Args:
        d: Dictionary to update.
        u: Dictionary with values to use.

    Returns:
        The merged dictionary.
    )items
isinstancecollectionsabcr   updateget)r	   r
   kvs       \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ydata_profiling/utils/common.pyr   r      sg     		  1a011 	!%%2,,**AaDDAaDDH    c                     ddl }|                                 sJ |                    t          |           |           dS )zTMonkeypatch for pathlib

    Args:
        self:
        target:

    Returns:

    r   N)shutilis_filecopystr)selftargetr   s      r   _copyr   (   sA     MMM<<>>
KKD		6"""""r   c                     	 t          j        |           5 }|                    |           d d d            d S # 1 swxY w Y   d S # t           j        $ r}t	          d          |d }~ww xY w)NzBad zip file)zipfileZipFile
extractall
BadZipFile
ValueError)outfileeffective_pathzes       r   extract_zipr)   ;   s    0_W%% 	)LL(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 0 0 0((a/0s4   A 9A =A  =A A*A%%A*c                 "    d| dd         v rdS dS )zJPEG data in JFIF format   JFIFN   jpeg hfs     r   
test_jpeg1r2   C   s"    !CRC&v r   s     C 		
c                 v    t          |           dk    r!| d         dk    r| dd         t          k    rdS dS dS dS )zJPEG with small header       C   Nr-   )len	JPEG_MARKr/   s     r   
test_jpeg2r9   O   sE    
1vv||!

q"v':':v |

':':r   c                 >    | dd         dv s| dd         dk    rdS dS )z JPEG data in JFIF or Exif format   
   )r+   s   ExifN   s   r-   r.   r/   s     r   
test_jpeg3r>   U   s5    2w$$$"1"(<(<v )=(<r   	timestampc                     | dk    rt          j        |           S t          ddd          t          t          |                     z   S )Nr   i     )seconds)r   fromtimestampr   int)r?   s    r   convert_timestamp_to_datetimerE   `   sD    A~~%i000a##iI&G&G&GGGr   	dataframedatatypereport_typencolsnrowsdbxc                 T   d}t           }t          t          j        d                    dur|dk    r	 t	          j        d           d}n# t          $ r d}Y nw xY wd                    t          j	                    
                    d          d d                   }	t          j        t                    5  | d	| d
|	 d| d|  d| d| d| dt          j                     dt          |           d| }
t          j        |
           d d d            d S # 1 swxY w Y   d S d S d S )Nz*https://packages.ydata.ai/ydata-profiling?YDATA_PROFILING_NO_ANALYTICSTz0.0.dev0z
nvidia-smiF.r=   zversion=z&python_version=z&report_type=z&dataframe=z&ncols=z&nrows=z
&datatype=z&os=z&gpu=z&dbx=)r   boolosgetenv
subprocesscheck_output	Exceptionjoinplatformpython_versionsplit
contextlibsuppresssystemr   requestsr   )rF   rG   rH   rI   rJ   rK   endpointpackage_versiongpu_presentrW   request_messages              r   analytics_featuresra   g   s    <H!O 	RY56677tCCz))	 #L111KK 	  	  	 KKK	  ("9";";"A"A#"F"Frr"JKK ++ 	* 	* 	 	_ 	 	#1	 	 +	 	 (	 	  		 	
  	 	 &	 	  ((	 	 K((	 	 	 	  L)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	DC))s$   A AA7ADD Dc                  |    dt           j        v } dt           j        v rt           j        d         S t          |           S )NDATABRICKS_RUNTIME_VERSION)rP   environr   )masks    r   is_running_in_databricksrf      s5    '2:5D#rz11z6774yyr   c                 *   t          | t          j                  r| t          |           }nfd}nc	 | j                                        }| j                            d                                           d         |z  }n# t          $ r d}Y nw xY w|S )zn
    Calculates the approx. number of rows spark dataframes

    Returns: int, approximate number of rows
    Nr   c                 H    | dk    rt          d |D                       gndgS )Nr   c              3      K   | ]}d V  dS )rA   Nr.   ).0_s     r   	<genexpr>z4calculate_nrows.<locals>.<lambda>.<locals>.<genexpr>   s"      /E/Ea/E/E/E/E/E/Er   )sum)idx	partitions     r   <lambda>z!calculate_nrows.<locals>.<lambda>   s7    axx -0/E/E9/E/E/E,E,E+F+F r   )	r   pd	DataFramer7   rddgetNumPartitionsmapPartitionsWithIndexcollectrT   )dfrJ   n_partitionss      r   calculate_nrowsry      s     "bl## >GGEEEE	62244L --   '))A	
  E  	 	 	EEE	 Ls   AB BB)%__doc__collections.abcr   rY   rP   rV   rR   r    r   r   imghdrr   pathlibr   typingr   pandasrq   r\   ydata_profiling.versionr   dictr   r   r   r)   r2   r8   r9   r>   appendrD   rE   r   ra   rf   ry   r.   r   r   <module>r      s   5 5         				       ( ( ( ( ( ( ( (                        / / / / / /d w 4    $# # #  	0 0 0  X 
     Z    Z    Z   HS HX H H H H * *! *03 *<? *HK *RU *	 *  *  *  *F      r   