File: //lib/python3/dist-packages/pyrsistent/__pycache__/_pbag.cpython-310.pyc
o
    ���aJ  �                   @   s�   d dl mZmZmZmZ d dlmZ d dlmZ dd� Z	G dd� de
�Ze�e� e�e� e�e� e�e� dd	� Z
d
d� Zee� �ZdS )
�    )�	Container�Iterable�Sized�Hashable)�reduce)�pmapc                 C   s   | � || �|d�d �S )Nr   �   )�set�get)�counters�element� r
   �2/usr/lib/python3/dist-packages/pyrsistent/_pbag.py�_add_to_counters   s   r   c                   @   s�   e Zd ZdZdZdd� Zdd� Zdd� Zd	d
� Zdd� Z	d
d� Z
dd� Zdd� Zdd� Z
dd� Zdd� ZeZeZeZdd� Zdd� Zdd� Zdd � Zd!d"� Zd#S )$�PBaga�  
    A persistent bag/multiset type.
    Requires elements to be hashable, and allows duplicates, but has no
    ordering. Bags are hashable.
    Do not instantiate directly, instead use the factory functions :py:func:`b`
    or :py:func:`pbag` to create an instance.
    Some examples:
    >>> s = pbag([1, 2, 3, 1])
    >>> s2 = s.add(4)
    >>> s3 = s2.remove(1)
    >>> s
    pbag([1, 1, 2, 3])
    >>> s2
    pbag([1, 1, 2, 3, 4])
    >>> s3
    pbag([1, 2, 3, 4])
    )�_counts�__weakref__c                 C   s
   || _ d S )N�r   )�self�countsr
   r
   r   �__init__#   s   
z
PBag.__init__c                 C   s   t t| j|��S )z�
        Add an element to the bag.
        >>> s = pbag([1])
        >>> s2 = s.add(1)
        >>> s3 = s.add(2)
        >>> s2
        pbag([1, 1])
        >>> s3
        pbag([1, 2])
        )r   r   r   �r   r   r
   r
   r   �add&