
    g                         d dl mZ d dlmZmZ d dlmZ  G d de      Z G d dee      Z G d d	ee      Z	 G d
 dee      Z
g dZy)    )ProbabilisticMixIn)MultiParentedTreeParentedTree)Treec                   v     e Zd Zd fd	Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zdd
Zd Zd Zd Zd Zd Z xZS )ImmutableTreec                     t         |   ||       	 t        | j                  t	        |       f      | _        y # t        t        f$ r'}t        dt        |       j                  z        |d }~ww xY w)Nz-%s: node value and children must be immutable)
super__init__hash_labeltuple_hash	TypeError
ValueErrortype__name__)selfnodechildrene	__class__s       H/var/www/openai/venv/lib/python3.12/site-packages/nltk/tree/immutable.pyr   zImmutableTree.__init__   sg    x(	t{{E$K89DJ:& 	BT$ZEXEXX	s   %9 A/"A**A/c                 D    t        dt        |       j                  z        N%s may not be modifiedr   r   r   )r   indexvalues      r   __setitem__zImmutableTree.__setitem__       1DJ4G4GGHH    c                 D    t        dt        |       j                  z        r   r   )r   ijr   s       r   __setslice__zImmutableTree.__setslice__   r!   r"   c                 D    t        dt        |       j                  z        r   r   )r   r   s     r   __delitem__zImmutableTree.__delitem__"   r!   r"   c                 D    t        dt        |       j                  z        r   r   )r   r$   r%   s      r   __delslice__zImmutableTree.__delslice__%   r!   r"   c                 D    t        dt        |       j                  z        r   r   r   others     r   __iadd__zImmutableTree.__iadd__(   r!   r"   c                 D    t        dt        |       j                  z        r   r   r,   s     r   __imul__zImmutableTree.__imul__+   r!   r"   c                 D    t        dt        |       j                  z        r   r   r   vs     r   appendzImmutableTree.append.   r!   r"   c                 D    t        dt        |       j                  z        r   r   r2   s     r   extendzImmutableTree.extend1   r!   r"   c                 D    t        dt        |       j                  z        r   r   r2   s     r   popzImmutableTree.pop4   r!   r"   c                 D    t        dt        |       j                  z        r   r   r2   s     r   removezImmutableTree.remove7   r!   r"   c                 D    t        dt        |       j                  z        r   r   r   s    r   reversezImmutableTree.reverse:   r!   r"   c                 D    t        dt        |       j                  z        r   r   r<   s    r   sortzImmutableTree.sort=   r!   r"   c                     | j                   S N)r   r<   s    r   __hash__zImmutableTree.__hash__@   s    zzr"   c                 l    t        | d      r!t        dt        |       j                  z        || _        y)z
        Set the node label.  This will only succeed the first time the
        node label is set, which should occur in ImmutableTree.__init__().
        r   r   N)hasattrr   r   r   r   )r   r   s     r   	set_labelzImmutableTree.set_labelC   s0    
 4"5T
8K8KKLLr"   rA   )r   
__module____qualname__r   r    r&   r(   r*   r.   r0   r4   r6   r8   r:   r=   r?   rB   rE   __classcell__)r   s   @r   r   r      sZ    	IIIIIIIIIIIIr"   r   c                   >    e Zd ZddZd Zd Zd Zd	dZed        Z	y)
ImmutableProbabilisticTreeNc                     t         j                  | ||       t        j                  | fi | t        | j                  t        |       | j                         f      | _        y rA   )r   r   r   r   r   r   probr   )r   r   r   prob_kwargss       r   r   z#ImmutableProbabilisticTree.__init__N   sH    tT84##D8K84;;dTYY[AB
r"   c                     t         S rA   )rJ   r<   s    r   _frozen_classz(ImmutableProbabilisticTree._frozen_classT   s    ))r"   c                 T    t        j                  |        d| j                          dS )N [])r   __repr__rL   r<   s    r   rS   z#ImmutableProbabilisticTree.__repr__W   s%    --%&bQ77r"   c                 N    | j                  d       d| j                          dS )N<   )marginrQ   rR   )pformatrL   r<   s    r   __str__z"ImmutableProbabilisticTree.__str__Z   s'    ,,b,)*"TYY[M;;r"   c                     |s, t        |       | j                  | | j                               S t        |       j                  |       S )NrL   )r   r   rL   convert)r   deeps     r   copyzImmutableProbabilisticTree.copy]   s9    4:dkk4diikBB:%%d++r"   c                     t        |t              rf|D cg c]  }| j                  |       }}t        |t              r# | |j                  ||j                               S  | |j                  |d      S |S c c}w )NrZ   g      ?)
isinstancer   r[   r   r   rL   )clsvalchildr   s       r   r[   z"ImmutableProbabilisticTree.convertc   sj    c4 8;<uE*H<#123::xchhjAA3::xc::J =s   A9rA   )F)
r   rF   rG   r   rO   rS   rX   r]   classmethodr[    r"   r   rJ   rJ   M   s0    C*8<,  r"   rJ   c                       e Zd Zy)ImmutableParentedTreeNr   rF   rG   rd   r"   r   rf   rf   o       r"   rf   c                       e Zd Zy)ImmutableMultiParentedTreeNrg   rd   r"   r   rj   rj   s   rh   r"   rj   )rJ   r   rf   rj   N)nltk.probabilityr   nltk.tree.parentedr   r   nltk.tree.treer   r   rJ   rf   rj   __all__rd   r"   r   <module>ro      sQ    0 > :D :z0B D	M< 		0A 	r"   