o
    !wiR                     @   s"  d dl Z ddlmZ ddlmZ ddlmZ d dlmZmZm	Z	 ej
Z
edG dd	 d	eZed
G dd deZdd ZedG dd deZedG dd deZedG dd deZedG dd deZedG dd deZedG dd  d eZdS )!    N   )_jclass)types)_jcustomizer)MappingSequenceMutableSequencezjava.lang.Iterablec                   @   s   e Zd ZdZdd ZdS )
_JIterablez Customizer for ``java.util.Iterable``

    This customizer adds the Python iterator syntax to classes that
    implement Java Iterable.
    c                 C      |   S N)iteratorself r   O/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/jpype/_jcollection.py__iter__#      z_JIterable.__iter__N)__name__
__module____qualname____doc__r   r   r   r   r   r	      s    r	   zjava.util.Collectionc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	_JCollectionz Customizer for ``java.util.Collection``

    This customizer adds the Python functions ``len()`` and ``del`` to
    Java Collisions to allow for Python syntax.
    c                 C   r
   r   sizer   r   r   r   __len__/   r   z_JCollection.__len__c                 C   s   t dt| j )Nz8'%s' does not support item deletion, use remove() method)	TypeErrortyper   r   ir   r   r   __delitem__2   s   z_JCollection.__delitem__c                 C   "   z|  |W S  ty   Y dS w NF)containsr   r   r   r   r   __contains__6   
   z_JCollection.__contains__N)r   r   r   r   r   r   r#   r   r   r   r   r   '   s
    r   c                 C   sp   | j }| j}| jr| jdks| jdk rtd|d u rd}|d u r#|}|dk r+||7 }|dk r3||7 }t||S )Nr   r   zStride not supported)startstopstepr   slice)slcr   r%   r&   r   r   r   _sliceAdjust=   s   
r*   zjava.util.Listc                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zd'ddZdd Zdd Zdd  Zed!d"d#d$d% Zd&S )(_JListz Customizer for ``java.util.List``

    This customizer adds the Python list operator to function on classes
    that implement the Java List interface.
    c                 C   s   t |  t|  d S r   )r   registerr   r   r   r   r   __jclass_init__U   s   
z_JList.__jclass_init__c                 C   sF   t |trt||  }| |j|jS |dk r||  7 }| |S Nr   )
isinstancer(   r*   r   subListr%   r&   getr   ndxr   r   r   __getitem__Y   s   

z_JList.__getitem__c                 C   sb   t |trt||  }| |j|j   | |j| d S |dk r)||  7 }| || d S r.   )	r/   r(   r*   r   r%   r&   clearaddAllsetr   r3   vr   r   r   __setitem__b   s   
z_JList.__setitem__c                 C   sf   t |trt||  }| |j|j   d S t|dr/|dk r'||  7 }| t	
|S td)N	__index__r   zIncorrect arguments to del)r/   r(   r*   r   r%   r&   r5   hasattrremove__jtypesJIntr   r2   r   r   r   r   l   s   

z_JList.__delitem__c                 c   s2    |  |  }| r| V  | sd S d S r   )listIteratorr   hasPreviousprevious)r   r   r   r   r   __reversed__w   s
   
z_JList.__reversed__c                 C   s,   z|  |W S  ty   tdt| w )Nz%s is not in list)indexOfr   
ValueErrorreprr   objr   r   r   index|   s
   z_JList.indexc                 C   sF   zt |}d}| D ]}||r|d7 }q
|W S  ty"   Y dS w )Nr   r   )_jpypeJObjectequalsr   )r   rH   jocr   r   r   r   count   s   

z_JList.countc                 C   s    |dk r
||   7 }| ||S r.   )r   add)r   idxrH   r   r   r   insert   s   z_JList.insertc                 C   
   |  |S r   rP   rG   r   r   r   append      
z_JList.appendc                 C   s   t d|  d S )Nzjava.util.Collections)rJ   JClassreverser   r   r   r   rX      s   z_JList.reversec                 C   s   |  | d S r   )r6   )r   lstr   r   r   extend      z_JList.extendc                 C   s$   |dk r
||   7 }| t|S r.   )r   r=   r>   r?   )r   rQ   r   r   r   pop   s   z
_JList.popc                 C   s   |  | | S r   rT   rG   r   r   r   __iadd__   s   
z_JList.__iadd__c                 C   s   t d| }|| |S Nzjava.util.ArrayList)rJ   rW   rZ   )r   rH   newr   r   r   __add__   s   
z_JList.__add__c                 C   s(   t d }t|D ]}||  q
|S r_   )rJ   rW   rangerZ   )r   rH   r`   r   r   r   r   __mul__   s   z_JList.__mul__Tr=   )stickyrenamec                 C   sF   z|  t|tj}|du rW d S W td ty"   Y tdw )NTzitem not in list)r=   rJ   rK   r   rE   )r   rH   rcr   r   r   remove   s   z_JList.removeN)r\   )r   r   r   r   r-   r4   r:   r   rC   rI   rO   rR   rU   rX   rZ   r]   r^   ra   rc   	JOverriderg   r   r   r   r   r+   M   s&    	


r+   zjava.util.Mapc                   @   sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd ZdS )_JMapz Customizer for ``java.util.Map``

    This customizer adds the Python list and len operators to classes
    that implement the Java Map interface.
    c                 C   s   t |  d S r   )r   r,   r   r   r   r   r-      r[   z_JMap.__jclass_init__c                 C   r
   r   r   r   r   r   r   r      r   z_JMap.__len__c                 C   s   |    S r   )keySetr   r   r   r   r   r         z_JMap.__iter__c                 C   rS   r   rg   r   r   r   r   r      rV   z_JMap.__delitem__c                 C   sF   z|  |}|d us| |r|W S W n	 ty   Y nw td| )Nz%s)r1   containsKeyr   KeyError)r   r3   itemr   r   r   r4      s   
z_JMap.__getitem__c                 C   s   |  || d S r   )putr8   r   r   r   r:      s   z_JMap.__setitem__c                 C   r
   r   )entrySetr   r   r   r   items   r   z_JMap.itemsc                 C   s   t |  S r   )listrj   r   r   r   r   keys   rk   z
_JMap.keysc                 C   r    r!   )rm   r   )r   ro   r   r   r   r#      r$   z_JMap.__contains__N)r   r   r   r   r-   r   r   r   r4   r:   rr   rt   r#   r   r   r   r   ri      s    	ri   zjava.util.Setc                   @   s   e Zd Zdd ZdS )_JSetc                 C   rS   r   rl   r   r   r   r   r      rV   z_JSet.__delitem__N)r   r   r   r   r   r   r   r   ru      s    ru   zjava.util.Map.Entryc                   @   s   e Zd Zdd Zdd ZdS )
_JMapEntryc                 C   s   dS )N   r   r   r   r   r   r         z_JMapEntry.__len__c                 C   s(   |dkr|   S |dkr|  S td)Nr   r   zPairs are always length 2)getKeygetValue
IndexError)r   xr   r   r   r4      s
   z_JMapEntry.__getitem__N)r   r   r   r   r4   r   r   r   r   rv      s    rv   zjava.util.Iteratorc                   @   s    e Zd ZdZdd Zdd ZdS )
_JIteratorz Customizer for ``java.util.Iterator``

    This customizer adds the Python iterator concept to classes
    that implement the Java Iterator interface.
    c                 C      |   r|  S tr   )hasNextnextStopIterationr   r   r   r   __next__     z_JIterator.__next__c                 C      | S r   r   r   r   r   r   r     rx   z_JIterator.__iter__N)r   r   r   r   r   r   r   r   r   r   r}      s    r}   zjava.util.Enumerationc                   @   s$   e Zd ZdZdd Zdd ZeZdS )_JEnumerationz Customizer for ``java.util.Enumerator``

    This customizer adds the Python iterator concept to classes
    that implement the Java Enumerator interface.
    c                 C   r~   r   )hasMoreElementsnextElementr   r   r   r   r   r     r   z_JEnumeration.__next__c                 C   r   r   r   r   r   r   r   r     rx   z_JEnumeration.__iter__N)r   r   r   r   r   r   r   r   r   r   r   r     s
    r   )rJ    r   r   r>   r   collections.abcr   r   r   rh   JImplementationForobjectr	   r   r*   r+   ri   ru   rv   r}   r   r   r   r   r   <module>   s.   l,