
    Kc4                         d Z ddlZddlZddlmZmZmZmZmZm	Z	  G d dej                  Z
 G d dej                  Z G d d	ej                  Zd
                                Z G d dej                  Z G d dej                  ZdS )z"
Test the trait-type ``UseEnum``.
    N)CaselessStrEnumEnum	FuzzyEnum	HasTraits
TraitErrorUseEnumc                       e Zd ZdZdZdZdZdS )Color            N)__name__
__module____qualname__redgreenblueyellow     Clib/python3.11/site-packages/traitlets/tests/test_traitlets_enum.pyr
   r
      "        
CEDFFFr   r
   c                       e Zd ZdZdZdS )
OtherColorr   r   N)r   r   r   r   r   r   r   r   r   r      s        
CEEEr   r   c                       e Zd ZdZdZdZdZdS )CSColorr   r   r   r   N)r   r   r   r   GreenBLUEYeLLoWr   r   r   r   r      r   r   r   zred Green  BLUE YeLLoWc                       e Zd Z G d de          Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestUseEnumc                   (    e Zd Z eed          ZdS )TestUseEnum.Example
Color enumhelpNr   r   r   r   r
   colorr   r   r   Exampler$   -   s"        L111r   r*   c                     |                                  }t          j        |_        |                     |j        t          j                   d S N)r*   r
   r   r)   assertEqualselfexamples     r   test_assign_enum_valuez"TestUseEnum.test_assign_enum_value0   s8    ,,..44444r   c                 >   t          t          j                                                  }|D ]n}|                     |t                     |                                 }||_        |                     |j        |           |                     |t                     od S r,   )listr
   __members__valuesassertIsInstancer*   r)   r-   )r/   enum_valuesvaluer0   s       r   test_assign_all_enum_valuesz'TestUseEnum.test_assign_all_enum_values5   s    5,335566  	0 	0E!!%///llnnG!GMW]E222!!%////	0 	0r   c                     |                                  }|                     t                    5  t          j        |_        d d d            d S # 1 swxY w Y   d S r,   )r*   assertRaisesr   r   r   r)   r.   s     r   4test_assign_enum_value__with_other_enum_raises_errorz@TestUseEnum.test_assign_enum_value__with_other_enum_raises_error?   s    ,,..z** 	- 	-&,GM	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AAAc                     |                                  }d|_        |                     |j        t          j                   d S )Nr   )r*   r)   r-   r
   r   r.   s     r   test_assign_enum_name_1z#TestUseEnum.test_assign_enum_name_1D   s6    ,,..	22222r   c                    d t           j                                        D             }|D ]}|                     |t                     |                                 }t           j                            |          }||_        |                     |j        |           | 	                    |j        j
        |           d S )Nc                     g | ]	}|j         
S r   )name.0enum_vals     r   
<listcomp>z;TestUseEnum.test_assign_enum_value_name.<locals>.<listcomp>M   s    OOOhmOOOr   )r
   r4   r5   r6   strr*   getr)   assertIsr-   rA   )r/   
enum_namesr8   r0   
enum_values        r   test_assign_enum_value_namez'TestUseEnum.test_assign_enum_value_nameJ   s     POE4E4L4L4N4NOOO
 	8 	8E!!%---llnnG*..u55J!GMMM'-444W]/7777	8 	8r   c                     g d}|D ]e}|                                  }||_        |                     |j        t                     |                     t          |j                  |           fd S )N)z	Color.redzColor.greenz
Color.bluezColor.yellow)r*   r)   r6   r
   r-   rF   )r/   scoped_namesr8   r0   s       r   "test_assign_scoped_enum_value_namez.TestUseEnum.test_assign_scoped_enum_value_nameV   su    QQQ! 	8 	8EllnnG!GM!!'-777S//7777		8 	8r   c                     g d}|D ]O}|                                  }|                     t                    5  ||_        d d d            n# 1 swxY w Y   Pd S )N)UNKNOWN_COLORREDr   blue2)r*   r;   r   r)   )r/   bad_enum_namesr8   r0   s       r   -test_assign_bad_enum_value_name__raises_errorz9TestUseEnum.test_assign_bad_enum_value_name__raises_error_   s    CCC# 	& 	&EllnnG"":.. & & %& & & & & & & & & & & & & & &	& 	&s   AA	A	c                     |                                  }d|_        t          j        j        |_        |                     |j        t          j                   d S )Nr   )r*   r)   r
   r   r8   r-   r.   s     r   test_assign_enum_value_number_1z+TestUseEnum.test_assign_enum_value_number_1g   sA    ,,..		22222r   c                 L   d t           j                                        D             }|D ]x}|                     |t                     |                                 }||_        |                     |j        t                      |                     |j        j        |           yd S )Nc                     g | ]	}|j         
S r   )r8   rB   s     r   rE   z=TestUseEnum.test_assign_enum_value_number.<locals>.<listcomp>q   s    RRR8RRRr   )	r
   r4   r5   r6   intr*   r)   r-   r8   )r/   enum_numbersr8   r0   s       r   test_assign_enum_value_numberz)TestUseEnum.test_assign_enum_value_numbern   s     SRu7H7O7O7Q7QRRR! 	9 	9E!!%---llnnG!GM!!'-777W]0%8888	9 	9r   c                 <   g d}|D ]}|                      |t                     t          t                                        |d           J |                                 }|                     t                    5  ||_        d d d            n# 1 swxY w Y   d S )N)r      )	r6   rY   r   r
   select_by_numberr*   r;   r   r)   )r/   bad_numbersr8   r0   s       r   /test_assign_bad_enum_value_number__raises_errorz;TestUseEnum.test_assign_bad_enum_value_number__raises_errory   s     jj  	& 	&E!!%---5>>225$??GGGllnnG"":.. & & %& & & & & & & & & & & & & & &		& 	&s   <BB	B	c                      G d dt                     } |            }|                     |j        t          j                   d S )Nc                   $    e Zd Z ee          ZdS )=TestUseEnum.test_ctor_without_default_value.<locals>.Example2Nr(   r   r   r   Example2rd      s        GENNEEEr   re   )r   r-   r)   r
   r   r/   re   r0   s      r   test_ctor_without_default_valuez+TestUseEnum.test_ctor_without_default_value   sY    	# 	# 	# 	# 	#y 	# 	# 	# (**	22222r   c                      G d dt                     } |            }|                     |j        t          j                   d S )Nc                   2    e Zd Z eeej                  ZdS )HTestUseEnum.test_ctor_with_default_value_as_enum_value.<locals>.Example2default_valueN)r   r   r   r   r
   r   r)   r   r   r   re   rj      s$        GE===EEEr   re   )r   r-   r)   r
   r   rf   s      r   *test_ctor_with_default_value_as_enum_valuez6TestUseEnum.test_ctor_with_default_value_as_enum_value   sY    	> 	> 	> 	> 	>y 	> 	> 	> (**44444r   c                      G d dt                     } |            }|                     |j        t          j                   |                     |j        t          j                   d S )Nc                   D    e Zd Z eedd          Z eed          ZdS )RTestUseEnum.test_ctor_with_default_value_none_and_not_allow_none.<locals>.Example2NFrl   
allow_nonerk   r   r   r   r   r
   color1color2r   r   r   re   rp      s8        WU$5IIIFWU$777FFFr   re   )r   r-   rt   r
   r   ru   rf   s      r   4test_ctor_with_default_value_none_and_not_allow_nonez@TestUseEnum.test_ctor_with_default_value_none_and_not_allow_none   ss    	8 	8 	8 	8 	8y 	8 	8 	8 (**33333333r   c                      G d dt                     } |            }|                     |j        d            |                     |j        d            d S )Nc                   D    e Zd Z eedd          Z eed          ZdS )NTestUseEnum.test_ctor_with_default_value_none_and_allow_none.<locals>.Example2NTrq   rr   rs   r   r   r   re   ry      s8        WU$4HHHFWUt444FFFr   re   )r   rH   rt   ru   rf   s      r   0test_ctor_with_default_value_none_and_allow_nonez<TestUseEnum.test_ctor_with_default_value_none_and_allow_none   sk    	5 	5 	5 	5 	5y 	5 	5 	5 (**gnd+++gnd+++++r   c                      G d dt                     } |            }d |_        d |_        |                     |j        t          j                   |                     |j        t          j                   d S )Nc                   >    e Zd Z eed          Z ee          ZdS )YTestUseEnum.test_assign_none_without_allow_none_resets_to_default_value.<locals>.Example2Frz   Nrs   r   r   r   re   r~      s/        WUu555FWU^^FFFr   re   )r   rt   ru   rH   r
   r   rf   s      r   ;test_assign_none_without_allow_none_resets_to_default_valuezGTestUseEnum.test_assign_none_without_allow_none_resets_to_default_value   s}    	$ 	$ 	$ 	$ 	$y 	$ 	$ 	$ (**gnei000gnei00000r   c                      G d dt                     } |            }d |_        |                     |j        d            d S )Nc                   (    e Zd Z eed          ZdS )>TestUseEnum.test_assign_none_to_enum_or_none.<locals>.Example2Trz   Nr(   r   r   r   re   r      "        GEd333EEEr   re   )r   r)   rH   rf   s      r    test_assign_none_to_enum_or_nonez,TestUseEnum.test_assign_none_to_enum_or_none   s\    	4 	4 	4 	4 	4y 	4 	4 	4 (**gmT*****r   c                      G d dt                     } |            }|                     t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nc                   (    e Zd Z eed          ZdS )HTestUseEnum.test_assign_bad_value_with_to_enum_or_none.<locals>.Example2Trz   Nr(   r   r   r   re   r      r   r   re   	BAD_VALUE)r   r;   r   r)   rf   s      r   *test_assign_bad_value_with_to_enum_or_nonez6TestUseEnum.test_assign_bad_value_with_to_enum_or_none   s    	4 	4 	4 	4 	4y 	4 	4 	4 (**z** 	( 	('GM	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAAc                    t            G fddt                    }t          dd          D ]B}d|z  }t          ||          }d|_         |j                    }|                     t          |                    d                    t                    |                    d                     | 	                    d|            |j
                    }|                     t          |                    d	                    t                    |                    d	                     | 	                    d
|           |                     |d           d|_         |j                    }|                     t          |                    d                    t                    |                    d                     |                     d|            |j
                    }|                     t          |                    d	                    t                    |                    d	                     |                     d|           |                     |d           Dd S )Nc                   x    e Zd Z e d          Z e d          Z e d          Z e	e
d          ZdS )&TestUseEnum.test_info.<locals>.ExampleFrz   N)r   r   r   r   enum1r   enum2r   enum3r   r   enum4)choicess   r   r*   r      s_        DU333E#OG>>>EIg%888EGG666EEEr   r*   r   r^   zenum%sTz, zor None|z	or `None`z\b\\\bFNone)color_choicesr   rangegetattrrr   infor-   lensplitassertIninfo_rstassertNotRegexassertNotIn)r/   r*   iattrenumr   r   s         @r   	test_infozTestUseEnum.test_info   s,   	7 	7 	7 	7 	7 	7 	7i 	7 	7 	7 q! 	1 	1Aa<D7D))D"DO49;;DSD!1!122CLL$**TBRBRSSSMM)T*** 4=??DSC113w<<CQQQMM+t,,,i000#DO49;;DSD!1!122CLL$**TBRBRSSSVT*** 4=??DSC113w<<CQQQVT***i00005	1 	1r   N)r   r   r   r   r*   r1   r9   r<   r>   rK   rN   rT   rV   r[   ra   rg   rm   rv   r{   r   r   r   r   r   r   r   r"   r"   *   sL       2 2 2 2 2) 2 2 25 5 5
0 0 0- - -
3 3 3
8 
8 
88 8 8& & &3 3 3	9 	9 	9& & &3 3 35 5 54 4 4, , ,	1 	1 	1+ + +( ( (#1 #1 #1 #1 #1r   r"   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestFuzzyEnumc                     G d dt                     } |            }t          D ]}t          dt          |                    D ]}|d |         }||_        |                     |j        |           |                                |_        |                     |j        |           |                                |_        |                     |j        |           d S )Nc                   (    e Zd Z eed          ZdS )GTestFuzzyEnum.test_search_all_prefixes__overwrite.<locals>.FuzzyExampler%   r&   Nr   r   r   r   r   r)   r   r   r   FuzzyExampler      "        Im,???EEEr   r   r   r   r   r   r   r)   r-   upperlowerr/   r   r0   r)   wlenr8   s         r   #test_search_all_prefixes__overwritez1TestFuzzyEnum.test_search_all_prefixes__overwrite   s    	@ 	@ 	@ 	@ 	@9 	@ 	@ 	@ ,.." 	7 	7EaU,, 
7 
7ete %  666 %  666 %  6666
7	7 	7r   c                     G d dt                     }t          D ]}t          dt          |                    D ]}|d |         } |            }||_        |                     |j        |            |            }|                                |_        |                     |j        |            |            }|                                |_        |                     |j        |           d S )Nc                   (    e Zd Z eed          ZdS )BTestFuzzyEnum.test_search_all_prefixes__ctor.<locals>.FuzzyExampler%   r&   Nr   r   r   r   r   r     r   r   r   r   r   )r/   r   r)   r   r8   r0   s         r   test_search_all_prefixes__ctorz,TestFuzzyEnum.test_search_all_prefixes__ctor  s   	@ 	@ 	@ 	@ 	@9 	@ 	@ 	@ # 	7 	7EaU,, 7 7ete&,.. %  666&,.. %  666&,.. %  66667	7 	7r   c                     G d dt                     } |            }t          D ]}t          dd          D ]}||d          }||_        |                     |j        |           |                                |_        |                     |j        |           |                                |_        |                     |j        |           d S )Nc                   *    e Zd Z eedd          ZdS )ETestFuzzyEnum.test_search_substrings__overwrite.<locals>.FuzzyExampler%   Tr'   substring_matchingNr   r   r   r   r   r     %        Im,SWXXXEEEr   r   r   r   )r   r   r   r)   r-   r   r   r   s         r   !test_search_substrings__overwritez/TestFuzzyEnum.test_search_substrings__overwrite  s    	Y 	Y 	Y 	Y 	Y9 	Y 	Y 	Y ,.." 	7 	7Ea 
7 
7dee %  666 %  666 %  6666
7	7 	7r   c                     G d dt                     }t          d         }dt          |          fD ]}t          dt          |          dz
            D ]v}|||         } |            }||_        |                     |j        |            |            }|                                |_        |                     |j        |           wd S )Nc                   *    e Zd Z eedd          ZdS )@TestFuzzyEnum.test_search_substrings__ctor.<locals>.FuzzyExampler%   Tr   Nr   r   r   r   r   r   )  r   r   r   r]   r   r   )r   r   r   r   r)   r-   r   )r/   r   r)   endstartr8   r0   s          r   test_search_substrings__ctorz*TestFuzzyEnum.test_search_substrings__ctor(  s    	Y 	Y 	Y 	Y 	Y9 	Y 	Y 	Y b!E

# 
	7 
	7Cq#e**q.11 	7 	7eCi(&,.. %  666&,.. %  6666	7
	7 
	7r   c                    d }  |dd                      }|                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            n# 1 swxY w Y     |dd                      }|                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            n# 1 swxY w Y     |dd                      }|                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d	|_        d d d            n# 1 swxY w Y   |                      t                    5  d
|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            n# 1 swxY w Y     |dd                      }|                      t                    5  d|_        d d d            n# 1 swxY w Y   |                      t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nc                 6      G  fddt                     }|S )Nc                   ,    e Zd Z ee           ZdS )PTestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_class.<locals>.Examplecase_sensitiver   Nr   r   s   r   r*   r   ;  s.        !	!#1'9  r   r*   r   )r   r   r*   s   `` r   new_trait_classz?TestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_class:  sD           )    Nr   Fr    z	BAD COLORedTRedr   luelUE)r;   r   r)   )r/   r   r0   s      r   test_assign_other_raisesz&TestFuzzyEnum.test_assign_other_raises9  s   	 	 	 R//5QQQSSz** 	 	GM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	( 	('GM	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(z** 	! 	! GM	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Q//%PPPRRz** 	 	GM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	" 	"!GM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" P//$OOOQQz** 	 	GM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	( 	('GM	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(z** 	$ 	$#GM	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$z** 	" 	"!GM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"z** 	" 	"!GM	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" Q//4PPPRRz** 	 	GM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	z** 	( 	('GM	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   AAA,B  BB%B99B= B=3DDD,E  EE:FFF3GGG,H  HH%H99H= H=I22I69I6,K  KK%K::K>K>c                 ~   d }t           D ]t}  ||dd                      }|                     |j        |             ||                                dd                      }|                     |j        |           ut           d         }  ||dd                      }|                     |j        |           d S )Nc                 :      G  fddt                     }|S )Nc                   .    e Zd Z ee           ZdS )TTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_class.<locals>.Example)rl   r   r   Nr   )r   rl   r   s   r   r*   r   f  s1        !	!"/#1'9	  r   r*   r   )rl   r   r   r*   s   ``` r   r   zCTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_classe  sJ            )    Nr   Fr]   T)r   r-   r)   r   )r/   r   r)   r0   s       r   test_ctor_with_default_valuez*TestFuzzyEnum.test_ctor_with_default_valued  s    		 		 		 # 	3 	3E:ooeUE::<<GW]E222BooekkmmUEBBDDGW]E2222b!5//%u5577.....r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      so        7 7 7$7 7 7(7 7 7$7 7 7")( )( )(V/ / / / /r   r   )__doc__r   unittest	traitletsr   r   r   r   r   r   r
   r   r   r   r   TestCaser"   r   r   r   r   <module>r      sa      V V V V V V V V V V V V V V V V    DI          
    di    )..00z1 z1 z1 z1 z1(# z1 z1 z1DM/ M/ M/ M/ M/H% M/ M/ M/ M/ M/r   