
    id                        S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	   " S S	\R                  \\	4   5      r " S
 S\\\	4   \R                  \\	4   5      rg)z>Provide the :class:`BidirectionalMapping` abstract base class.    )annotationsN)abstractmethod   )KT)VTc                  D    \ rS rSrSrSr\\SS j5       5       rSS jr	Sr
g)	BidirectionalMapping   a-  Abstract base class for bidirectional mapping types.

Extends :class:`collections.abc.Mapping` primarily by adding the
(abstract) :attr:`inverse` property,
which implementers of :class:`BidirectionalMapping`
should override to return a reference to the inverse
:class:`BidirectionalMapping` instance.
 c                    [         e)zThe inverse of this bidirectional mapping instance.

*See also* :attr:`bidict.BidictBase.inverse`, :attr:`bidict.BidictBase.inv`

:raises NotImplementedError: Meant to be overridden in subclasses.
)NotImplementedErrorselfs    H/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/bidict/_abc.pyinverseBidirectionalMapping.inverse&   s
     "!    c                H    [        U R                  R                  5       5      $ )a7  Get an iterator over the items in :attr:`inverse`.

This is functionally equivalent to iterating over the items in the
forward mapping and inverting each one on the fly, but this provides a
more efficient implementation: Assuming the already-inverted items
are stored in :attr:`inverse`, just return an iterator over them directly.

Providing this default implementation enables external functions,
particularly :func:`~bidict.inverted`, to use this optimized
implementation when available, instead of having to invert on the fly.

*See also* :func:`bidict.inverted`
)iterr   itemsr   s    r   __inverted__!BidirectionalMapping.__inverted__5   s     DLL&&())r   N)returnzBidirectionalMapping[VT, KT])r   zt.Iterator[tuple[VT, KT]])__name__
__module____qualname____firstlineno____doc__	__slots__propertyr   r   r   __static_attributes__r   r   r   r	   r	      s-     I"  "*r   r	   c                      \ rS rSrSrSrSrg)MutableBidirectionalMappingF   z<Abstract base class for mutable bidirectional mapping types.r   N)r   r   r   r   r   r   r!   r   r   r   r#   r#   F   s
    FIr   r#   )r   
__future__r   typingtabcr   _typingr   r   Mappingr	   MutableMappingr#   r   r   r   <module>r,      s^    E "    )*199RV, )*X"6r2v">@P@PQSUWQW@X r   