§
    £”jà  ã                  ó�   — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 erddl
mZ  G d„ deedf         ¦  «        Z G d	„ d¦  «        Zd
S )zRelationship-related objects.é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚDictÚcast)ÚCT_Relationships)ÚPartc                  ó¢   ‡ — e Zd ZdZdˆ fd„Z	 ddd„Zdd„Zd d„Zd!d„Ze	d„ ¦   «         Z
e	d"d„¦   «         Z	 dd#d„Zd$d„Ze	d"d„¦   «         Zˆ xZS )%ÚRelationshipszGCollection object for |_Relationship| instances, having list semantics.ÚbaseURIÚstrc                ór   •— t          t          | ¦  «                             ¦   «          || _        i | _        d S ©N)Úsuperr   Ú__init__Ú_baseURIÚ_target_parts_by_rId)Úselfr   Ú	__class__s     €ú[/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/docx/opc/rel.pyr   zRelationships.__init__   s4   ø€ Ý�m˜TÑ"Ô"×+Ò+Ñ-Ô-Ð-ØˆŒØ46ˆÔ!Ð!Ð!ó    FÚreltypeÚtargetú
Part | strÚrIdÚis_externalÚboolÚreturnú'_Relationship'c                óX   — t          |||| j        |¦  «        }|| |<   |s
|| j        |<   |S )z.Return a newly added |_Relationship| instance.)Ú_Relationshipr   r   )r   r   r   r   r   Úrels         r   Úadd_relationshipzRelationships.add_relationship   s>   € õ ˜C ¨&°$´-ÀÑMÔMˆØˆˆS‰	Øð 	4Ø-3ˆDÔ% cÑ*Øˆ
r   Útarget_partr	   r!   c                ór   — |                       ||¦  «        }|€| j        }|                      |||¦  «        }|S )zlReturn relationship of `reltype` to `target_part`, newly added if not already
        present in collection.)Ú_get_matchingÚ	_next_rIdr#   )r   r   r$   r"   r   s        r   Ú
get_or_addzRelationships.get_or_add   sA   € ð × Ò  ¨+Ñ6Ô6ˆØˆ;Ø”.ˆCØ×'Ò'¨°¸cÑBÔBˆCØˆ
r   Ú
target_refc                ó„   — |                       ||d¬¦  «        }|€ | j        }|                      |||d¬¦  «        }|j        S )z{Return rId of external relationship of `reltype` to `target_ref`, newly added
        if not already present in collection.T)r   )r&   r'   r#   r   )r   r   r)   r"   r   s        r   Úget_or_add_ext_relz Relationships.get_or_add_ext_rel(   sM   € ð × Ò  ¨*À$Ð ÑGÔGˆØˆ;Ø”.ˆCØ×'Ò'¨°¸SÈdÐ'ÑSÔSˆCØŒwˆr   c                ó:   — |                       |¦  «        }|j        S )zœReturn target part of rel with matching `reltype`, raising |KeyError| if not
        found and |ValueError| if more than one matching relationship is found.)Ú_get_rel_of_typer$   )r   r   r"   s      r   Úpart_with_reltypezRelationships.part_with_reltype1   s   € ð ×#Ò# GÑ,Ô,ˆØŒÐr   c                ó   — | j         S )z_Dict mapping rIds to target parts for all the internal relationships in the
        collection.)r   ©r   s    r   Úrelated_partszRelationships.related_parts7   s   € ð Ô(Ð(r   c                ó¼   — t          j        ¦   «         }|                      ¦   «         D ].}|                     |j        |j        |j        |j        ¦  «         Œ/|j        S )zoSerialize this relationship collection into XML suitable for storage as a
        .rels file in an OPC package.)	r   ÚnewÚvaluesÚadd_relr   r   r)   r   Úxml)r   Úrels_elmr"   s      r   r6   zRelationships.xml=   sX   € õ $Ô'Ñ)Ô)ˆØ—;’;‘=”=ð 	Tð 	TˆCØ×Ò˜SœW c¤k°3´>À3Ä?ÑSÔSÐSÐSØŒ|Ðr   ú_Relationship | Nonec                ó`   — dd	„}|                       ¦   «         D ]} |||||¦  «        r|c S Œd
S )zuReturn relationship of matching `reltype`, `target`, and `is_external` from
        collection, or None if not found.r"   r!   r   r   r   r   r   r   c                ól   — | j         |k    rdS | j        |k    rdS | j        r| j        n| j        }||k    S )NF)r   r   r)   r$   )r"   r   r   r   Ú
rel_targets        r   Úmatchesz,Relationships._get_matching.<locals>.matchesL   sE   € ØŒ{˜gÒ%Ð%Ø�uØŒ +Ò-Ð-Ø�uØ+.¬?ÐO˜œ˜ÀÄˆJØ Ò'Ð'r   N)r"   r!   r   r   r   r   r   r   )r4   )r   r   r   r   r<   r"   s         r   r&   zRelationships._get_matchingF   sZ   € ð	(ð 	(ð 	(ð 	(ð —;’;‘=”=ð 	ð 	ˆCØˆw�s˜G V¨[Ñ9Ô9ð Ø�
�
�
ðàˆtr   c                óð   ‡— ˆfd„|                       ¦   «         D ¦   «         }t          |¦  «        dk    rd}t          |‰z  ¦  «        ‚t          |¦  «        dk    rd}t          |‰z  ¦  «        ‚|d         S )zØReturn single relationship of type `reltype` from the collection.

        Raises |KeyError| if no matching relationship is found. Raises |ValueError| if
        more than one matching relationship is found.
        c                ó*   •— g | ]}|j         ‰k    ¯|‘ŒS © )r   )Ú.0r"   r   s     €r   ú
<listcomp>z2Relationships._get_rel_of_type.<locals>.<listcomp>_   s%   ø€ ÐKÐKÐK˜C°C´KÀ7Ò4JÐ4J�CÐ4JÐ4JÐ4Jr   r   z*no relationship of type '%s' in collectioné   z1multiple relationships of type '%s' in collection)r4   ÚlenÚKeyErrorÚ
ValueError)r   r   ÚmatchingÚtmpls    `  r   r-   zRelationships._get_rel_of_typeY   s�   ø€ ð LÐKÐKÐK 4§;¢;¡=¤=ÐKÑKÔKˆÝˆx‰=Œ=˜AÒÐØ?ˆDÝ˜4 '™>Ñ*Ô*Ð*Ýˆx‰=Œ=˜1ÒÐØFˆDÝ˜T G™^Ñ,Ô,Ð,Ø˜Œ{Ðr   c                óf   — t          dt          | ¦  «        dz   ¦  «        D ]}d|z  }|| vr|c S ŒdS )zŽNext available rId in collection, starting from 'rId1' and making use of any
        gaps in numbering, e.g. 'rId2' for rIds ['rId1', 'rId3'].rB   é   zrId%dN)ÚrangerC   )r   ÚnÚrId_candidates      r   r'   zRelationships._next_rIdh   sV   € õ �q�#˜d™)œ) a™-Ñ(Ô(ð 	%ð 	%ˆAØ# a™KˆMØ DÐ(Ð(Ø$Ð$Ð$Ð$ð )ð	%ð 	%r   )r   r   ©F)
r   r   r   r   r   r   r   r   r   r   )r   r   r$   r	   r   r!   )r   r   r)   r   r   r   )r   r   r   r	   ©r   r   )r   r   r   r   r   r   r   r8   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r(   r+   r.   Úpropertyr1   r6   r&   r-   r'   Ú__classcell__©r   s   @r   r   r      s.  ø€ € € € € ØQÐQð7ð 7ð 7ð 7ð 7ð 7ð OTðð ð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð)ð )ñ „Xð)ð
 ðð ð ñ „Xðð EJðð ð ð ð ð&ð ð ð ð ð%ð %ð %ñ „Xð%ð %ð %ð %ð %r   r   r!   c                  ó    ‡ — e Zd ZdZ	 ddˆ fd„Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
ˆ xZS )r!   z&Value object for relationship to part.Fr   r   r   r   r   r   Úexternalr   c                ó¶   •— t          t          | ¦  «                             ¦   «          || _        || _        || _        || _        t          |¦  «        | _        d S r   )	r   r!   r   Ú_rIdÚ_reltypeÚ_targetr   r   Ú_is_external)r   r   r   r   r   rW   r   s         €r   r   z_Relationship.__init__u   sQ   ø€ õ 	�m˜TÑ"Ô"×+Ò+Ñ-Ô-Ð-ØˆŒ	ØˆŒØˆŒØˆŒÝ  ™NœNˆÔÐÐr   r   c                ó   — | j         S r   )r\   r0   s    r   r   z_Relationship.is_external   s   € àÔ Ð r   c                ó   — | j         S r   )rZ   r0   s    r   r   z_Relationship.reltypeƒ   s
   € àŒ}Ðr   c                ó   — | j         S r   )rY   r0   s    r   r   z_Relationship.rId‡   s
   € àŒyÐr   r	   c                óX   — | j         rt          d¦  «        ‚t          d| j        ¦  «        S )NzOtarget_part property on _Relationship is undefined when target mode is Externalr	   )r\   rE   r   r[   r0   s    r   r$   z_Relationship.target_part‹   s6   € àÔð 	ÝØañô ð õ �F˜DœLÑ)Ô)Ð)r   c                ó¬   — | j         rt          t          | j        ¦  «        S t          d| j        ¦  «        }|j                             | j        ¦  «        S )Nr	   )r\   r   r   r[   ÚpartnameÚrelative_refr   )r   r   s     r   r)   z_Relationship.target_ref“   sH   € àÔð 	?Ý�˜Tœ\Ñ*Ô*Ð*å˜& $¤,Ñ/Ô/ˆFØ”?×/Ò/°´Ñ>Ô>Ð>r   rM   )
r   r   r   r   r   r   r   r   rW   r   )r   r   rN   )r   r	   )rO   rP   rQ   rR   r   rS   r   r   r   r$   r)   rT   rU   s   @r   r!   r!   r   sï   ø€ € € € € Ø0Ð0ð Z_ð+ð +ð +ð +ð +ð +ð +ð ð!ð !ð !ñ „Xð!ð ðð ð ñ „Xðð ðð ð ñ „Xðð ð*ð *ð *ñ „Xð*ð ð?ð ?ð ?ñ „Xð?ð ?ð ?ð ?ð ?r   N)rR   Ú
__future__r   Útypingr   r   r   r   Údocx.opc.oxmlr   Údocx.opc.partr	   r   r   r!   r?   r   r   ú<module>rh      sÜ   ðØ #Ð #à "Ð "Ð "Ð "Ð "Ð "à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à *Ð *Ð *Ð *Ð *Ð *àð #Ø"Ð"Ð"Ð"Ð"Ð"ðb%ð b%ð b%ð b%ð b%�D˜˜oÐ-Ô.ñ b%ô b%ð b%ðJ'?ð '?ð '?ð '?ð '?ñ '?ô '?ð '?ð '?ð '?r   