B
    ©0H[Å	  ã               @   sT   d Z ddlZddlZddlmZ dZejdkrDG dd„ deƒZeZnejZej	Z	dS )a5  
The temp module provides a NamedTemporaryFile that can be reopened in the same
process on any platform. Most platforms use the standard Python
tempfile.NamedTemporaryFile class, but Windows users are given a custom class.

This is needed because the Python implementation of NamedTemporaryFile uses the
O_TEMPORARY flag under Windows, which prevents the file from being reopened
if the same flag is not provided [1][2]. Note that this does not address the
more general issue of opening a file for writing and reading in multiple
processes in a manner that works across platforms.

The custom version of NamedTemporaryFile doesn't support the same keyword
arguments available in tempfile.NamedTemporaryFile.

1: https://mail.python.org/pipermail/python-list/2005-December/336957.html
2: http://bugs.python.org/issue14243
é    N)ÚFileProxyMixin)ÚNamedTemporaryFileÚ
gettempdirÚntc               @   s@   e Zd ZdZddd„ZejZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dS )ÚTemporaryFilea.  
        Temporary file object constructor that supports reopening of the
        temporary file in Windows.

        Unlike tempfile.NamedTemporaryFile from the standard library,
        __init__() doesn't support the 'delete', 'buffering', 'encoding', or
        'newline' keyword arguments.
        úw+béÿÿÿÿÚ Nc             C   s4   t j|||d�\}}|| _t |||¡| _d| _d S )N)ÚsuffixÚprefixÚdirF)ÚtempfileÚmkstempÚnameÚosÚfdopenÚfileÚclose_called)ÚselfÚmodeÚbufsizer
   r   r   Úfdr   © r   úZC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\core\files\temp.pyÚ__init__%   s    zTemporaryFile.__init__c          	   C   s^   | j sZd| _ y| j ¡  W n ttfk
r2   Y nX y|  | j¡ W n tk
rX   Y nX d S )NT)r   r   ÚcloseÚOSErrorÚIOErrorÚunlinkr   )r   r   r   r   r   0   s    zTemporaryFile.closec             C   s   |   ¡  d S )N)r   )r   r   r   r   Ú__del__<   s    zTemporaryFile.__del__c             C   s   | j  ¡  | S )N)r   Ú	__enter__)r   r   r   r   r    ?   s    
zTemporaryFile.__enter__c             C   s   | j  |||¡ d S )N)r   Ú__exit__)r   ÚexcÚvalueÚtbr   r   r   r!   C   s    zTemporaryFile.__exit__)r   r   r	   r	   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r    r!   r   r   r   r   r      s   
	r   )
r(   r   r   Zdjango.core.files.utilsr   Ú__all__r   r   r   r   r   r   r   r   Ú<module>   s   
*