o
    tBh	                     @   sj   d dl mZ d dlZd dlZd dlZd dlZdd ZdddZdd	 Zd
e	 fddZ
dd Zdd ZdS )    )BytesIONc                 G   s
   | j | S )N)format)queryargs r   j/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sp_api/base/helpers.pyfill_query_params   s   
r   GETc                    s    fdd}|S )Nc                    s    fdd} j |_ |S )Nc                     s   | d  | i |S )N)pathmethod)updater   kwargs)functionr   r
   r   r   wrapper   s
   z/sp_endpoint.<locals>.decorator.<locals>.wrapper)__doc__)r   r   r   r
   )r   r   	decorator   s   zsp_endpoint.<locals>.decoratorr   )r
   r   r   r   r   r   sp_endpoint   s   r   c                    s   t  }ttr(tfdddD ]}|| qd t|	 
 S ttr\td t fdddD ]}|| q<W d    n1 sNw   Y  t|	 
 S tfdddD ]}|| qet|	 
 S )Nc                      
     dS Ni   readr   filer   r   <lambda>      
 zcreate_md5.<locals>.<lambda>    r   rbc                      r   r   r   r   )fr   r   r   $   r   c                      r   r   r   r   r   r   r   r   '   r   )hashlibmd5
isinstancer   iterr   seekbase64	b64encodedigestdecodestropen)r   hash_md5chunkr   )r   r   r   
create_md5   s    


r-   flatc                 C   s&   i }|   D ]
\}}t||| q|S )a  
    Convert flat dictionary to nested dictionary.

    Input
    {
        "AmazonOrderId":1,
        "ShipFromAddress.Name" : "Seller",
        "ShipFromAddress.AddressLine1": "Street",
    }

    Output
    {
        "AmazonOrderId":1,
        "ShipFromAddress.: {
            "Name" : "Seller",
            "AddressLine1": "Street",
        }
    }


    Args:
        flat:dict():

    Returns:
        nested:dict():
    )items_nest_dict_rec)r.   resultkvr   r   r   	nest_dict,   s   r4   c                 C   s<   |  dd^} }|rt|d ||| i  d S ||| < d S )N.   r   )splitr0   
setdefault)r2   r3   outrestr   r   r   r0   N   s   r0   c                    s   t   fdd}|S )zThis is a decorator which can be used to mark functions
    as deprecated. It will result in a warning being emitted
    when the function is used.c                     s>   t dt t jd jtdd t dt  | i |S )NalwayszCall to deprecated function {}.   )category
stackleveldefault)warningssimplefilterDeprecationWarningwarnr   __name__r   funcr   r   new_funcZ   s   zdeprecated.<locals>.new_func)	functoolswraps)rF   rG   r   rE   r   
deprecatedV   s   rJ   )r	   )ior   r    r%   r@   rH   r   r   r-   dictr4   r0   rJ   r   r   r   r   <module>   s    
"