
    Ng                         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dS )    )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 )ImmutableTreeNc                    t                                          ||           	 t          | j        t	          |           f          | _        d S # 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       O/var/www/html/ai-engine/env/lib/python3.11/site-packages/nltk/tree/immutable.pyr   zImmutableTree.__init__   s    x(((	t{E$KK899DJJJ:& 	 	 	BT$ZZEXX 	s   (A B
 %BB
c                 J    t          dt          |           j        z            N%s may not be modifiedr   r   r   )r   indexvalues      r   __setitem__zImmutableTree.__setitem__       1DJJ4GGHHH    c                 J    t          dt          |           j        z            r   r   )r   ijr   s       r   __setslice__zImmutableTree.__setslice__   r!   r"   c                 J    t          dt          |           j        z            r   r   )r   r   s     r   __delitem__zImmutableTree.__delitem__"   r!   r"   c                 J    t          dt          |           j        z            r   r   )r   r$   r%   s      r   __delslice__zImmutableTree.__delslice__%   r!   r"   c                 J    t          dt          |           j        z            r   r   r   others     r   __iadd__zImmutableTree.__iadd__(   r!   r"   c                 J    t          dt          |           j        z            r   r   r,   s     r   __imul__zImmutableTree.__imul__+   r!   r"   c                 J    t          dt          |           j        z            r   r   r   vs     r   appendzImmutableTree.append.   r!   r"   c                 J    t          dt          |           j        z            r   r   r2   s     r   extendzImmutableTree.extend1   r!   r"   c                 J    t          dt          |           j        z            r   r   r2   s     r   popzImmutableTree.pop4   r!   r"   c                 J    t          dt          |           j        z            r   r   r2   s     r   removezImmutableTree.remove7   r!   r"   c                 J    t          dt          |           j        z            r   r   r   s    r   reversezImmutableTree.reverse:   r!   r"   c                 J    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
    zr"   c                 |    t          | d          r$t          dt          |           j        z            || _        dS )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   s?    
 4"" 	M5T

8KKL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      s9       	 	 	 	 	 	I I II I II I II I II I II I II I II I II I I II I II I II I I        r"   r   c                   F    e Zd Zd	dZd Zd Zd Zd
dZed             Z	dS )ImmutableProbabilisticTreeNc                     t                               | ||           t          j        | fi | t          | j        t          |           |                                 f          | _        d S rA   )r   r   r   r   r   r   probr   )r   r   r   prob_kwargss       r   r   z#ImmutableProbabilisticTree.__init__N   s]    tT8444#D88K8884;dTYY[[ABB


r"   c                     t           S rA   )rJ   r<   s    r   _frozen_classz(ImmutableProbabilisticTree._frozen_classT   s    ))r"   c                 Z    t          j        |            d|                                  dS )N [])r   __repr__rL   r<   s    r   rS   z#ImmutableProbabilisticTree.__repr__W   s+    -%%777777r"   c                 ^    |                      d           d|                                  dS )N<   )marginrQ   rR   )pformatrL   r<   s    r   __str__z"ImmutableProbabilisticTree.__str__Z   s/    ,,b,));;TYY[[;;;;r"   Fc                     |s2 t          |           | j        | |                                           S t          |                               |           S )NrL   )r   r   rL   convert)r   deeps     r   copyzImmutableProbabilisticTree.copy]   sK     	,4::dk4diikkBBBB::%%d+++r"   c                      t          |t                    r[ fd|D             }t          |t                    r%  |j        ||                                          S   |j        |d          S |S )Nc                 :    g | ]}                     |          S  )r[   ).0childclss     r   
<listcomp>z6ImmutableProbabilisticTree.convert.<locals>.<listcomp>f   s%    <<<uE**<<<r"   rZ   g      ?)
isinstancer   r   r   rL   )rc   valr   s   `  r   r[   z"ImmutableProbabilisticTree.convertc   s    c4   	<<<<<<<H#122 ;s3:xchhjjAAAAs3:xc::::Jr"   rA   )F)
r   rF   rG   r   rO   rS   rX   r]   classmethodr[   r`   r"   r   rJ   rJ   M   s        C C C C* * *8 8 8< < <, , , ,   [  r"   rJ   c                       e Zd ZdS )ImmutableParentedTreeNr   rF   rG   r`   r"   r   ri   ri   o           Dr"   ri   c                       e Zd ZdS )ImmutableMultiParentedTreeNrj   r`   r"   r   rm   rm   s   rk   r"   rm   )rJ   r   ri   rm   N)nltk.probabilityr   nltk.tree.parentedr   r   nltk.tree.treer   r   rJ   ri   rm   __all__r`   r"   r   <module>rr      s
   0 / / / / / > > > > > > > >      : : : : :D : : :z    0B   D	 	 	 	 	M< 	 	 		 	 	 	 	0A 	 	 	  r"   