File: //opt/alt/python38/lib64/python3.8/site-packages/maxminddb/__pycache__/file.cpython-38.pyc
U
��^� � @ sR d Z ddlZzddlmZ W n ek
r< ddlmZ Y nX G dd� de�ZdS )z<For internal use only. It provides a slice-like file reader.� N)�Lockc @ sT e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Ze e
d�rHd
d� Zndd� ZdS )�
FileBufferzA slice-able file readerc C s6 t |d�| _t�| j�� �j| _ttd�s2t� | _ d S )N�rb�pread)
�open�_handle�os�fstat�fileno�st_size�_size�hasattrr �_lock)�selfZdatabase� r �A/opt/alt/python38/lib64/python3.8/site-packages/maxminddb/file.py�__init__ s
zFileBuffer.__init__c C sF t |t�r | �|j|j |j�S t |t�r:| �d|�d S td��d S )N� r zInvalid argument type.)�
isinstance�slice�_read�stop�start�int� TypeError)r �keyr r r �__getitem__ s
zFileBuffer.__getitem__c C s0 | � | j| d |��|�}|dkr(|S || S )zReverse find needle from startr ���)r r �rfind)r Zneedler �posr r r r s zFileBuffer.rfindc C s | j S )zSize of file)r �r r r r �size# s zFileBuffer.sizec C s | j �� dS )z
Close fileN)r �closer r r r r"