o
    qi                  
   @   s   d Z ddlZddlmZ ddlmZmZ ddlZddl	m
Z
 dedefd	d
ZdedefddZddedededee fddZdefddZdS )z%Different file types read/write utils    N)Path)AnyOptional   )URDUHACK_BASE_DIR	file_namedatac                 C   sB   t | d}tj||tjd W d   dS 1 sw   Y  dS )z
    Save the python object in pickle format

    Args:
        file_name (str): file name
        data (Any): Any data type
    wb)protocolN)openpickledumpHIGHEST_PROTOCOL)r   r   file r   E/home/ubuntu/.local/lib/python3.10/site-packages/urduhack/utils/io.pypickle_dump   s   "r   returnc                 C   s8   t | d}t|W  d   S 1 sw   Y  dS )zz
    Load the pickle file

    Args:
        file_name (str):  file name
    Returns:
        Any: python object type
    rbN)r   r   load)r   r   r   r   r   pickle_load   s   	$r   urldownload_dir	cache_dirc                 C   s   t |tst| dt | tst|  dt |ts$t| d|du r*t}t|jddd tjjj	| |||dd dS )aC  
    Download anything from HTTP url

    Args:
        file_name (str): Save file as provided file name
        url (str): HTTP url
        download_dir (str): location to store file
        cache_dir (str): Main download dir
    Raises:
        TypeError: If any of the url, file_path and file_name are not str Type.
     must be str type.NT)parentsexist_ok)fnameorigincache_subdirr   extract)

isinstancestr	TypeErrorr   r   mkdirtfkerasutilsget_file)r   r   r   r   r   r   r   download_from_url&   s   


r)   c                 C   s(   t | tst|  dt|   dS )z
    Delete the local file

    Args:
        file_name (str): File to be deleted
    Raises:
        TypeError: If file_name is not str Type.
        FileNotFoundError: If file_name does not exist
    r   N)r!   r"   r#   r   unlink)r   r   r   r   remove_file@   s   

r+   )N)__doc__r   pathlibr   typingr   r   
tensorflowr%   configr   r"   r   r   r)   r+   r   r   r   r   <module>   s    