U
    Ehq
                     @   s   d dl mZ d dlmZ d dlmZ d dlZd dlZejj	dkrDeZG dd de
Zdd	 Zejj	d
kr~G dd deeZnd dlmZ dd Zdd Zdd Zdd Zdd ZdS )    )unicode_literals)str)
basestringN   c                   @   s   e Zd Zdd Zdd ZdS )BaseBaseStringc                 C   s   t |ttfS N)
isinstancebytesr   )clsinstance r   ?/var/www/html/venv/lib/python3.8/site-packages/ffmpeg/_utils.py__instancecheck__   s    z BaseBaseString.__instancecheck__c                 C   s   t d S r   )NotImplemented)r
   thingr   r   r   __subclasshook__   s    zBaseBaseString.__subclasshook__N)__name__
__module____qualname__r   r   r   r   r   r   r      s   r   c                    s"   G  fddd}|dd i S )Nc                       s&   e Zd ZejZejZ fddZdS )z!with_metaclass.<locals>.metaclassc                    s$   |d krt | |d|S | |S )Nr   )type__new__)r
   name
this_basesdbasesmetar   r   r      s    z)with_metaclass.<locals>.metaclass.__new__N)r   r   r   r   __call____init__r   r   r   r   r   	metaclass   s   r   temporary_classr   )r   r   r   r   r   r   with_metaclass   s    	r!      c                   @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   &   s   r   c                    sz   t  trt }nbt  tr:dddd  D }n<t  trn fddt D }dd| d }nt }|S )zHack around python `repr` to deterministically represent dictionaries.

    This is able to represent more things than json.dumps, since it does not require things to be JSON serializable
    (e.g. datetimes).
    z[{}]z, c                 S   s   g | ]}t |qS r   )_recursive_repr).0xr   r   r   
<listcomp>8   s     z#_recursive_repr.<locals>.<listcomp>c                    s$   g | ]}d  t|t | qS )z{}: {})formatr#   )r$   kitemr   r   r&   :   s   {})	r   r   r   listr'   joindictsortedrepr)r*   resultZkv_pairsr   r)   r   r#   /   s    




r#   c                 C   s   t | d}t| S )Nzutf-8)r#   encodehashlibmd5	hexdigest)r*   repr_r   r   r   get_hashD   s    r8   c                 C   s   t t| ddS )N   )base)intr8   r)   r   r   r   get_hash_intI   s    r<   c                 C   sP   t | } tt|}d|kr2|d |dd |D ]}| |d| } q6| S )z3Helper function to escape uncomfortable characters.\r   )r   r-   setremoveinsertreplace)textcharschr   r   r   escape_charsM   s    
rE   c                 C   sJ   g }t |  D ]4}| | }|d| |dk	r|d| q|S )z<Helper function to build command line arguments out of dict.z-{}Nz{})r0   keysappendr'   )kwargsargsr(   vr   r   r   convert_kwargs_to_cmd_line_argsY   s    rK   )
__future__r   builtinsr   Zpast.builtinsr   r4   sysversion_infomajorr   r   r!   r#   r8   r<   rE   rK   r   r   r   r   <module>   s    	