o
    i                     @   s   d Z d Zd ZG dd deZddddZddd	d
ZddddZddddZdddddZ	ej
ej
ej
e	j
ej
fZd S )Nc                   @   s   e Zd ZdS )MonkeypatchWarningN)__name__
__module____qualname__ r   r   J/home/ubuntu/.local/lib/python3.10/site-packages/frozendict/monkeypatch.pyr      s    r   F)warn_cc                 C   s@   dd l }|j}| r||kr|rd}nd}dd l}||t |S )N    z4C Extension version, monkeypatch will be not appliedz4Pure Python version, monkeypatch will be not applied)
frozendictc_extwarningswarnr   )r   r   coolresmsgr   r   r   r   checkCExtension
   s   r   Tr   c           
   	   C   s   t |dsd S ddlm} |t}dd l}dd l}|j}||}| r&|}n|}|d u r/d }	n|ddddd d d d}	| rF|d u rE|jj	|_n|d u rNt
dd |_||_||_	||j_	|	|_d S )Nr   r   import_moduleFT)skipkeysensure_asciicheck_circular	allow_nanindent
separatorsdefaultz<Old json encoder is None (maybe you already unpatched json?))r   	importlibr   r   r	   json_OldJsonEncoder_getFrozendictJsonEncoderencoderJSONEncoder
ValueErrorFrozendictJsonEncoder_default_encoder)
patchr   r   selfr   r   OldJsonEncoderr"   DefaultJsonEncoderdefault_json_encoderr   r   r   patchOrUnpatchJson   sJ   



r)   c                    s   t |dsd S ddlm} |t}dd l}|jd u r$| s td|jn|j| r;ddlm   fdd}|}}n}d }||_||_||j_d S )Nr   r   r   z@Old orjson encoder is None (maybe you already unpatched orjson?)r	   c                    s(   t |  r	t| } | g|R i |S )N)
isinstancedict)objargskwargsr	   oldOrjsonDumpsr   r   frozendictOrjsonDumpsh   s   
z3patchOrUnpatchOrjson.<locals>.frozendictOrjsonDumps)	r   r   r   r   orjson_oldOrjsonDumpsr!   dumpsr	   )r$   r   r   r%   r3   r2   defaultOrjsonDumpsnewOldOrjsonDumpsr   r0   r   patchOrUnpatchOrjsonQ   s,   

r8   c                    s   d}t ||dr
d S ddlm} |t}ddlm  ddlm |jd u r/| s+td j	n|j| rCt
 fdd	}|}}n}d }||_| _	z   W d S  tyj    j  j Y d S w )
NT)r   r   r   r   )MutableMappingr*   zUOld MutableMapping subclasshook is None (maybe you already unpatched MutableMapping?)c                    s0   |  krt |rdS |g|R i |S tS )NF)
issubclassNotImplemented)klasssubclassr.   r/   r9   r	   oldMutableMappingHookr   r   $frozendictMutableMappingSubclasshook   s   
zVpatchOrUnpatchMutableMappingSubclasshook.<locals>.frozendictMutableMappingSubclasshook)r   r   r   r   collections.abcr9   r	   _oldMutableMappingSubclasshookr!   __subclasshook__classmethod_abc_caches_clearAttributeError
_abc_cachediscard_abc_negative_cache)r$   r   r   r   r%   r@   defaultMutableMappingHooknewOldMutableMappingHookr   r>   r   (patchOrUnpatchMutableMappingSubclasshooky   s:   
rL   )r   raise_orjsonc                 C   sN   t | |d zdd l}W n ty   |r Y nw t| |d t| |d d S )N)r$   r   r   )r)   r3   ImportErrorr8   rL   )r$   r   rM   r3   r   r   r   patchOrUnpatchAll   s   rO   )r   r4   rB   UserWarningr   r   r)   r8   rL   rO   r   __all__r   r   r   r   <module>   s     5+C