File: //usr/lib/python3/dist-packages/twisted/python/__pycache__/util.cpython-38.pyc
U
�b(k � @ s� d dl Z d dlZd dlZd dlZzd dlZd dlZW n ek
rP dZdZY n
X eZeZzd dlm Z
mZ W n ek
r� dZdZ Y n
X eZe
Z d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ eeddd d �d
dd� G d
d� de�Zdd� ZdNdd�Zdd� Zdd� Z dd� Z!dd� Z"dOdd�Z#d d!� Z$d"d#� Z%dPd'd(�Z&d)d*� Z'g g fd+d,�Z(G d-d.� d.�Z)d/d0� Z*G d1d2� d2�Z+G d3d4� d4�Z,G d5d6� d6�Z-G d7d8� d8�Z.zd d9lm/Z0 W n ek
�r� dZ1Y nX e0Z1e1dk�rd:d;� Z/nd<d;� Z/dQd>d?�Z2d@dA� Z3dBdC� Z4dDdE� Z5dFdG� Z6dHdI� Z7dJdK� Z8dLdM� Z9ddddddd!d(ddd*d,d.d0d2d6d8d?dCdEdGdIdKdAdMgZ:dS )R� N)� getgroups� setgroups)�OrderedDict)�Callable�ClassVar�Mapping�MutableMapping�Sequence�Tuple�Union�cast)�Version)�deprecatedModuleAttribute�Twisted� � z$Use collections.OrderedDict instead.ztwisted.python.utilr c s� e Zd ZdZd4� fdd� Zdd� Zdd � Zd
d� Zdd
� Zdd� Z e Z
dd� Zdd� Zdd� Z
dd� Zd5dd�Zdd� Zdd� Zed�dd �Zd!d"� ZeZd#d$� Zd%d&� Ze� Zefd'd(�Zd)d*� Zd+d,� Zd-d.� Zd/d0� Zeed1�d2d3�Z � Z!S )6�InsensitiveDicta
Dictionary, that has case-insensitive keys.
Normally keys are retained in their original form when queried with
.keys() or .items(). If initialized with preserveCase=0, keys are both
looked up in lowercase and returned in lowercase by .keys() and .items().
N� c s( t � �� i | _|| _|r$| �|� dS )zD
Create an empty dictionary, or update from 'dict'.
N)�super�__init__�data�preserve�update)�self�dictr �� __class__� �5/usr/lib/python3/dist-packages/twisted/python/util.pyr E s
zInsensitiveDict.__init__c C s | � |�}| j|= d S �N��_lowerOrReturnr �r �key�kr r r �__delitem__O s
zInsensitiveDict.__delitem__c C s$ t |t�st |t�r|�� S |S d S r )�
isinstance�bytes�str�lower�r r# r r r r! S s zInsensitiveDict._lowerOrReturnc C s | � |�}| j| d S )zI
Retrieve the value associated with 'key' (in any case).
r r r"