File: //kunden/lib/python3/dist-packages/breezy/__pycache__/graph.cpython-39.pyc
a
�*�^R �
@ s> d dl mZ d dlZddlmZmZmZmZmZ ddl m
Z
mZ dZG dd� de
�ZG d d
� d
e
�ZG dd� de
�ZG d
d� de
�ZG dd� de
�ZG dd� de
�ZG dd� de
�ZG dd� de
�Zdd� Zdd� ZG dd� de
�Zg d�ZzddlmZ W n< e�y8 Z z"e�e� ddlmZ W Y dZ[n
dZ[0 0 dS )� )�absolute_importN� )�debug�errors�osutils�revision�trace)� viewitems�
viewvalues� c @ s( e Zd ZdZdd� Zdd� Zdd� ZdS ) �DictParentsProviderz%A parents provider for Graph objects.c C s
|| _ d S �N��ancestry)�selfr � r �./usr/lib/python3/dist-packages/breezy/graph.py�__init__= s zDictParentsProvider.__init__c C s
d| j S )NzDictParentsProvider(%r)r �r r r r �__repr__@ s zDictParentsProvider.__repr__c s | j � t� fdd�|D ��S )z)See StackedParentsProvider.get_parent_mapc s g | ]}|� v r|� | f�qS r r )�.0�kr r r �
<listcomp>K � z6DictParentsProvider.get_parent_map.<locals>.<listcomp>)r �dict�r �keysr r r �get_parent_mapH s z"DictParentsProvider.get_parent_mapN��__name__�
__module__�__qualname__�__doc__r r r r r r r r : s r c @ s( e Zd ZdZdd� Zdd� Zdd� ZdS ) �StackedParentsProviderz�A parents provider which stacks (or unions) multiple providers.
The providers are queries in the order of the provided parent_providers.
c C s
|| _ d S r
)�_parent_providers)r Zparent_providersr r r r T s zStackedParentsProvider.__init__c C s d| j j| jf S �Nz%s(%r))� __class__r r$ r r r r r W s zStackedParentsProvider.__repr__c C s� i }t |�}| jD ]>}t|dd�}|du r,q||�}|�|� |�|� |s qRq|sZ|S | jD ]H}z|�|�}W n tjy� Y q`Y n0 |�|� |�|� |s` q�q`|S )a� Get a mapping of keys => parents
A dictionary is returned with an entry for each key present in this
source. If this source doesn't have information about a key, it should
not include an entry.
[NULL_REVISION] is used as the parent of the first user-committed
revision. Its parent list is empty.
:param keys: An iterable returning keys to check (eg revision_ids)
:return: A dictionary mapping each key to its parents
�get_cached_parent_mapN)�setr$ �getattr�update�difference_updater r �UnsupportedOperation)r r �foundZ remaining�parents_providerZ
get_cachedZ new_foundr r r r Z s2
�
z%StackedParentsProvider.get_parent_mapNr r r r r r# N s r# c @ sT e Zd ZdZddd�Zdd� Zddd �Zd
d� Zdd
� Zdd� Z dd� Z
dd� ZdS )�CachingParentsProvidera� A parents provider which will cache the revision => parents as a dict.
This is useful for providers which have an expensive look up.
Either a ParentsProvider or a get_parent_map-like callback may be
supplied. If it provides extra un-asked-for parents, they will be cached,
but filtered out of get_parent_map.
The cache is enabled by default, but may be disabled and re-enabled.
Nc C s4 || _ |du r| j j| _n|| _d| _| �d� dS )z�Constructor.
:param parent_provider: The ParentProvider to use. It or
get_parent_map must be supplied.
:param get_parent_map: The get_parent_map callback to use. It or
parent_provider must be supplied.
NT)�_real_providerr �_get_parent_map�_cache�enable_cache)r Zparent_providerr r r r r � s zCachingParentsProvider.__init__c C s d| j j| jf S r% )r&