File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/jaraco/__pycache__/collections.cpython-310.pyc
Back
o ;j�g � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm Z m Z mZ d dlm Z mZ d dlZee e e e jf Zdede fdd�ZG dd � d ejj�ZG d d� de�Zdd � ZG dd� de�Zdd� Zedfdd�ZG dd� de�ZG dd� de�ZG dd� d�ZG dd� d�Zdd� Z G dd � d e�Z!G d!d"� d"e"ejj#�Z$G d#d$� d$e�Z%G d%d&� d&ejjejj&�Z'G d'd(� d(ee%�Z(G d)d*� d*�Z)G d+d,� d,ej*�Z+G d-d.� d.�Z,G d/d0� d0�Z-d1d2� Z.G d3d4� d4ej/�Z0G d5d6� d6�Z1G d7d8� d8e�Z2dS )9� N)� Container�Iterable�Mapping)�Callable�Union�obj�returnc C s8 t | tj�r | jS t | t�st | t�st| �} | j} | S �N)� isinstance�re�Pattern� fullmatchr r �set�__contains__)r � r �F/opt/saltstack/salt/lib/python3.10/site-packages/jaraco/collections.py� _dispatch s r c @ sB e Zd ZdZdedefdd�Zdd� Zdd � Zd d� Z dd � Z dS )� ProjectionaT Project a set of keys over a mapping >>> sample = {'a': 1, 'b': 2, 'c': 3} >>> prj = Projection(['a', 'c', 'd'], sample) >>> dict(prj) {'a': 1, 'c': 3} Projection also accepts an iterable or callable or pattern. >>> iter_prj = Projection(iter('acd'), sample) >>> call_prj = Projection(lambda k: ord(k) in (97, 99, 100), sample) >>> pat_prj = Projection(re.compile(r'[acd]'), sample) >>> prj == iter_prj == call_prj == pat_prj True Keys should only appear if they were specified and exist in the space. Order is retained. >>> list(prj) ['a', 'c'] Attempting to access a key not in the projection results in a KeyError. >>> prj['b'] Traceback (most recent call last): ... KeyError: 'b' Use the projection to update another dict. >>> target = {'a': 2, 'b': 2} >>> target.update(prj) >>> target {'a': 1, 'b': 2, 'c': 3} Projection keeps a reference to the original dict, so modifying the original dict may modify the Projection. >>> del sample['a'] >>> dict(prj) {'c': 3} �keys�spacec C s t |�| _|| _d S r )r �_match�_space)�selfr r r r r �__init__M � zProjection.__init__c C s | � |�s t|��| j| S r )r �KeyErrorr �r �keyr r r �__getitem__Q s zProjection.__getitem__c C s t | j| j�S r )�filterr r �r r r r �_keys_resolvedV � zProjection._keys_resolvedc C s | � � S r )r! r r r r �__iter__Y s zProjection.__iter__c C s t t| �� ��S r )�len�tupler! r r r r �__len__\ � zProjection.__len__N)�__name__� __module__�__qualname__�__doc__� _Matchabler r r r! r# r&