a
    V$c{                     @   s   d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlZd dlZd dlZdZerd dlZdd Zdd Zdd
dZdddZnNd dlZd dlZdd ZG dd dejZdd Zdd ZdddZdddZdS )    )divisionabsolute_importwith_statementprint_functionunicode_literals)PY2
basestringbchrbordchropenpystrrangeroundstrtobytesunicodeN   c                 C   s    t jjrt| S t| S d S N)renpyconfiguse_cpicklecPickleloadpickle)f r   renpy/compat\pickle.pyr   %   s    
r   c                 C   s    t jjrt| S t| S d S r   )r   r   r   r   loadsr   sr   r   r   r   +   s    
r   Fc                 C   s*   t jjrt| |t nt| |t d S r   )r   r   r   r   dumpPROTOCOLr   or   highestr   r   r   r!   1   s    r!   c                 C   s$   t jjrt| tS t| tS d S r   )r   r   r   r   dumpsr"   r   r$   r%   r   r   r   r&   7   s    r&   c                 O   sT   t |dkr<t|d tr<|d dd}| | |dS | j| g|R i |S )z
        Makes a datetime.date, datetime.time, or datetime.datetime object
        from a surrogateescaped str. This is used when unpickling a datetime
        object that was first created in Python 2.
           r   utf-8surrogateescapezlatin-1)len
isinstancer   encode__new__decode)clsargskwargsdatar   r   r   make_datetimeB   s    r4   c                       sF   e Zd ZeeejZeeejZeeejZ fddZ	  Z
S )	Unpicklerc                    s@   |dkr2|dkr| j S |dkr$| jS |dkr2| jS t ||S )Ndatetimedatetime)r7   r8   r6   super
find_class)selfmodulename	__class__r   r   r:   T   s    zUnpickler.find_class)__name__
__module____qualname__	functoolspartialr4   r6   r7   r8   r:   __classcell__r   r   r>   r   r5   O   s   r5   c                 C   s   t | dddd}| S )NTr)   r*   )fix_importsencodingerrors)r5   r   )r   upr   r   r   r   _   s    c                 C   s   t t| S r   )r   ioBytesIOr   r   r   r   r   c   s    c                 C   s   t | ||rt jnt d S r   )r   r!   HIGHEST_PROTOCOLr"   r#   r   r   r   r!   f   s    c                 C   s   t | |rt jntS r   )r   r&   rL   r"   r'   r   r   r   r&   i   s    )F)F)F)F) 
__future__r   r   r   r   r   renpy.compatr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rJ   r"   r   r   r   r!   r&   rC   r6   r4   r5   r   r   r   r   <module>   s&   8

