o
    io                     @   s`   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z
 edddZG d	d de
e Zd
S )zzDefine the Sequence class, which contains a sequence DataElement's items.

Sequence is a list of pydicom Dataset objects.
    )castAnyTypeVar)Iterable)Dataset)ConstrainedListSelfSequence)boundc                       s   e Zd ZdZddee dB ddf fddZdee ddf fdd	Zd
edee def fddZ	de
eB dee eB ddf fddZdefddZdefddZededefddZ  ZS )r	   zLClass to hold multiple :class:`~pydicom.dataset.Dataset` in a :class:`list`.Niterablereturnc                    s&   t |tr	td|  t | dS )aW  Initialize a list of :class:`~pydicom.dataset.Dataset`.

        Parameters
        ----------
        iterable : Iterable[Dataset] | None
            An iterable object (e.g. :class:`list`, :class:`tuple`) containing
            :class:`~pydicom.dataset.Dataset`. If not used then an empty
            :class:`Sequence` is generated.
        z-The Sequence constructor requires an iterableN)
isinstancer   	TypeErrorsuper__init__)selfr   	__class__ F/mnt/sdb/aimis/docanh/lib/python3.10/site-packages/pydicom/sequence.pyr      s   
zSequence.__init__valc                    s"   t |tr	tdt | dS )zExtend the :class:`~pydicom.sequence.Sequence` using an iterable
        of :class:`~pydicom.dataset.Dataset` instances.
        $An iterable of 'Dataset' is requiredN)r   r   r   r   extend)r   r   r   r   r   r   +   s   
zSequence.extendr   otherc                    s   t |tr	tdt |S )z$Implement Sequence() += [Dataset()].r   )r   r   r   r   __iadd__)r   r   r   r   r   r   4   s   
zSequence.__iadd__indexc                    sF   t |trt |trtdt || dS t |tt| dS )z'Add item(s) to the Sequence at `index`.z(Can only assign an iterable of 'Dataset'N)r   slicer   r   r   __setitem__r   )r   r   r   r   r   r   r   ;   s
   

zSequence.__setitem__c                 C   s   dd dd | D  dS )z#String description of the Sequence.[ c                 S   s   g | ]}t |qS r   )str).0xr   r   r   
<listcomp>G   s    z$Sequence.__str__.<locals>.<listcomp>])joinr   r   r   r   __str__E   s   zSequence.__str__c                 C   s   d| j j dt|  dS )z&String representation of the Sequence.<z	, length >)r   __name__lenr&   r   r   r   __repr__I   s   zSequence.__repr__itemc                 C   s   t | tr| S td)zBCheck that `item` is a :class:`~pydicom.dataset.Dataset` instance.z.Sequence contents must be 'Dataset' instances.)r   r   r   )r-   r   r   r   	_validateM   s   
zSequence._validate)N)r*   
__module____qualname____doc__r   r   r   r   r   r   r   intr   r    r'   r,   staticmethodr   r.   __classcell__r   r   r   r   r	      s     	&
N)r1   typingr   r   r   collections.abcr   pydicom.datasetr   pydicom.multivalr   r   r	   r   r   r   r   <module>   s   