
    M/Ph
                        d dl mZ d dlmZ d dlmZmZmZ d dl	Z	d dl
mZmZ  ej        d          duZ ej        d          duZepeZded	eej                 fd
Zded	efdZded	eeeef                  fdZded	ee         fdZdeeef         d	efdZded	efdZerd dlZdeeef         d	efdZdS erd dlZdeeef         d	efdZdS d dlm Z  deeef         d	efdZdS )    )util)Path)OptionalTupleUnionN)ExifTagsImageimghdr	puremagicpathreturnc                 \    	 t          j        |           S # t          t          f$ r Y dS w xY w)z-

    Args:
        path:

    Returns:

    N)r	   openOSErrorAttributeError)r   s    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/visions/utils/images/image_utils.py
open_imager      s>    z$^$   tts    ++imagec                 `    	 |                                   dS # t          t          f$ r Y dS w xY w)zReturns True if the path refers to a truncated image

    Args:
        image:

    Returns:
        True if the image is truncated
    FT)loadr   r   r   s    r   is_image_truncatedr      s@    

u^$   tts    --c                 B    	 | j         S # t          t          f$ r Y dS w xY w.

    Args:
        image:

    Returns:

    N)sizer   r   r   s    r   get_image_shaper   ,   s6    z^$   tts   	 c                 v    	 t          t          j        |                     S # t          t          f$ r Y dS w xY wr   )str	imagehashphashr   r   r   s    r   
hash_imager"   ;   sF    9?5))***^$   tts    # 88exif_valc                 X    t          | t                    r| S |                                 S )zFDecode byte encodings

    Args:
        exif_val:

    Returns:

    )
isinstancer   decode)r#   s    r   decode_byte_exifr'   J   s+     (C   !       c                     	 |                                  }|d |                                D             }ni }n# t          t          f$ r i }Y nw xY w|S )r   Nc                 p    i | ]3\  }}|t           j        v t           j        |         t          |          4S  )r   TAGSr'   ).0kvs      r   
<dictcomp>z extract_exif.<locals>.<dictcomp>e   sE       Aq%% a "21"5"5%%%r(   )_getexifitemsr   r   )r   	exif_dataexifs      r   extract_exifr5   Y   s~    NN$$	  %OO--  DD DG$    Ks   7: AAfilec                     	 t          j        |           d         j                            d          S # t          $ r Y dS w xY w)Nr   r   F)r   
magic_file	mime_type
startswith	Exception)r6   s    r   path_is_imager<   w   sP    	'--a0:EEgNNN 	 	 	55	s   14 
AApc                 .    t          j        |           d uS )N)r
   what)r=   s    r   r<   r<      s    {1~~T))r(   VisionsDependencyErrorc                 $    d}t          |          )NzZNo image support available. Please install visions[type_image_path] to use these features.r@   )r=   msgs     r   r<   r<      s    j$S)))r(   )!	importlibr   import_utilpathlibr   typingr   r   r   r    PILr   r	   	find_spec
HAS_IMGHDRHAS_PUREMAGICHAS_IMAGE_SUPPORTr   boolr   intr   r   r"   bytesr'   dictr5   r   r<   r
   visions.utils.errorsrA   r+   r(   r   <module>rR      sm   ) ) ) ) ) )       ) ) ) ) ) ) ) ) ) )            "["8,,D8
%%k22$>/- T hu{3    e      5 XeCHo%>    e     !uS%Z0 !S ! ! ! ! $    4  *E$),         *MMM*tSy) *d * * * * * * <;;;;;*tSy) *d * * * * * *r(   