File: //usr/lib/python3/dist-packages/django/core/files/__pycache__/temp.cpython-310.pyc
o
�a� � @ sT d Z ddlZddlZddlmZ dZejdkr"G dd� de�ZeZnejZej Z dS )a6
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: https://bugs.python.org/issue14243
� N)�FileProxyMixin)�NamedTemporaryFile�
gettempdir�ntc @ s@ e Zd ZdZddd�ZejZdd � Zd
d� Zdd
� Z dd� Z
dS )�
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 �8/usr/lib/python3/dist-packages/django/core/files/temp.py�__init__% s
zTemporaryFile.__init__c C sZ | j s+d| _ z| j�� W n ty Y nw z | �| j� W d S ty* Y d S w d S )NT)r r �close�OSError�unlinkr �r r r r r 0 s ���zTemporaryFile.closec C s | � � d S �N)r r r r r �__del__<