
    h3                         S SK JrJrJrJr  S SKJrJrJr  S SK	J
r
  / SQr " S S5      r " S S\5      r " S	 S
\5      rS rS S.S jrg)    )CallableIterableIteratorMapping)isliceteezip_longest)Promise)BaseChoiceIteratorBlankChoiceIteratorCallableChoiceIteratorflatten_choicesnormalize_choicesc                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )r      z*Base class for lazy iterators for choices.c           	         > [        U[        5      (       a"  [        S [        X[	        5       S9 5       5      $ [
        TU ]  U5      $ )Nc              3   .   #    U  H  u  pX:H  v   M     g 7fN ).0abs      F/var/www/html/env/lib/python3.13/site-packages/django/utils/choices.py	<genexpr>,BaseChoiceIterator.__eq__.<locals>.<genexpr>   s     W*V$!qv*Vs   )	fillvalue)
isinstancer   allr	   objectsuper__eq__)selfother	__class__s     r   r!   BaseChoiceIterator.__eq__   s9    eX&&W+dVX*VWWWw~e$$    c                     US:  a  [        U 5      U   $  [        [        XUS-   5      5      $ ! [         a    [	        S5      S ef = f)Nr      zindex out of range)listnextr   StopIteration
IndexError)r"   indexs     r   __getitem__BaseChoiceIterator.__getitem__   sP    19:e$$	=tEAI677 	=12<	=s	   . Ac                     [        S5      e)Nz8BaseChoiceIterator subclasses must implement __iter__().)NotImplementedErrorr"   s    r   __iter__BaseChoiceIterator.__iter__    s    !F
 	
r&   r   )
__name__
__module____qualname____firstlineno____doc__r!   r.   r3   __static_attributes____classcell__)r$   s   @r   r   r      s    4%
=
 
r&   r   c                   $    \ rS rSrSrS rS rSrg)r   &   z)Iterator to lazily inject a blank choice.c                     Xl         X l        g r   )choicesblank_choice)r"   r?   r@   s      r   __init__BlankChoiceIterator.__init__)   s    (r&   c              #      #    [        U R                  5      u  p[        S [        U5       5       5      (       d  U R                   S h  vN   U S h  vN   g  N N7f)Nc              3   0   #    U  H  u  pUS ;   v   M     g7f)) NNr   )r   value_s      r   r   /BlankChoiceIterator.__iter__.<locals>.<genexpr>/   s     N7M855J&7Ms   )r   r?   anyr   r@   )r"   r?   r#   s      r   r3   BlankChoiceIterator.__iter__-   sK     T\\*Nu7MNNN(((( )s$   AA	A
	AAAA)r@   r?   Nr5   r6   r7   r8   r9   rA   r3   r:   r   r&   r   r   r   &   s    3)r&   r   c                   $    \ rS rSrSrS rS rSrg)r   4   z=Iterator to lazily normalize choices generated by a callable.c                     Xl         g r   func)r"   rP   s     r   rA   CallableChoiceIterator.__init__7   s    	r&   c              #   R   #    [        U R                  5       5       S h  vN   g  N7fr   )r   rP   r2   s    r   r3   CallableChoiceIterator.__iter__:   s     $TYY[111s   '%'rO   NrK   r   r&   r   r   r   4   s    G2r&   r   c              #      #    U =(       d    S H1  u  p[        U[        [        45      (       a  U Sh  vN   M,  X4v   M3     g N7f)z*Flatten choices by removing nested values.r   N)r   r)   tuple)r?   value_or_grouplabel_or_nesteds      r   r   r   >   s>     +2=b='oe}55&&& 11	 ,9&s   1AAAdepthc          
         SSK Jn  U ==[        S` =b  u       U $   =[        S` =b  u       U $   =[        S` =b  u       U $   =[
        S` =b  u       U $     =US` =b  u     U R                  $   =[        S` =b  u   US:  a    U R                  5       n O  =[        S` =b
  u   US:  a    Ol  =[        S` =b!  u   US:  a  [        S U  5       5      (       d    O?  =[        S` =b  u   US:X  a    [        U 5      $   [        S` =b  u   US:  a	  U " 5       n O   U $  U  VVs/ s H  u  p4U[        XAS-   S94PM     snn$ s  snnf ! [        [         4 a    U s $ f = f)z=Normalize choices values consistently for fields and widgets.r   )ChoicesTyper      c              3   X   #    U  H   n[        U[        [        [        45      v   M"     g 7fr   )r   r
   bytesstr)r   xs     r   r   $normalize_choices.<locals>.<genexpr>]   s$      1
:?QJq7E3/00%s   (*r(   rX   )django.db.models.enumsr[   r   r
   r^   r_   r?   r   itemsr   r   rI   r   r   r   	TypeError
ValueError)rF   rY   r[   kvs        r   r   r   G   sy    3
?!!? L	 "IGI? L	 %.? L	 18%#%? L	 ;@?
 []==   WY%!)YKKME XZ519Z
   XZ519S 1
:?1
 .
 .
Z
   XZ5A:Z)%00  Z519GE LGLMutq%aqy9:uMMMz" 
 s$   D: D40D: 4D: :EEN)collections.abcr   r   r   r   	itertoolsr   r   r	   django.utils.functionalr
   __all__r   r   r   r   r   r   r&   r   <module>rl      sN    A A . . +
 
., 2/ 22 '( ,r&   