@@ -31,7 +31,7 @@ <h1>Source code for aepsych.config</h1><div class="highlight"><pre>
3131< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span >
3232< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> warnings</ span >
3333< span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> types</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> ModuleType</ span > < span class ="p "> ,</ span > < span class ="n "> NoneType</ span > < span class ="p "> ,</ span > < span class ="n "> UnionType</ span >
34- < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Any</ span > < span class ="p "> ,</ span > < span class ="n "> Callable</ span > < span class ="p "> ,</ span > < span class ="n "> ClassVar</ span > < span class ="p "> ,</ span > < span class ="n "> Mapping</ span > < span class ="p "> ,</ span > < span class ="n "> Sequence</ span > < span class ="p "> ,</ span > < span class ="n "> TypeVar</ span >
34+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Any</ span > < span class ="p "> ,</ span > < span class ="n "> Callable</ span > < span class ="p "> ,</ span > < span class ="n "> ClassVar</ span > < span class ="p "> ,</ span > < span class ="n "> Literal </ span > < span class =" p " > , </ span > < span class =" n " > Mapping</ span > < span class ="p "> ,</ span > < span class ="n "> Sequence</ span > < span class ="p "> ,</ span > < span class ="n "> TypeVar</ span >
3535
3636< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> botorch</ span >
3737< span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> gpytorch</ span >
@@ -258,9 +258,6 @@ <h1>Source code for aepsych.config</h1><div class="highlight"><pre>
258258 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _check_param_settings</ span > < span class ="p "> (</ span > < span class ="n "> par_name</ span > < span class ="p "> )</ span >
259259
260260 < span class ="k "> if</ span > < span class ="bp "> self</ span > < span class ="p "> [</ span > < span class ="n "> par_name</ span > < span class ="p "> ][</ span > < span class ="s2 "> "par_type"</ span > < span class ="p "> ]</ span > < span class ="o "> ==</ span > < span class ="s2 "> "categorical"</ span > < span class ="p "> :</ span >
261- < span class ="k "> raise</ span > < span class ="ne "> NotImplementedError</ span > < span class ="p "> (</ span >
262- < span class ="s2 "> "Categorical parameters not supported yet"</ span >
263- < span class ="p "> )</ span >
264261 < span class ="n "> choices</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> getlist</ span > < span class ="p "> (</ span > < span class ="n "> par_name</ span > < span class ="p "> ,</ span > < span class ="s2 "> "choices"</ span > < span class ="p "> ,</ span > < span class ="n "> element_type</ span > < span class ="o "> =</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span >
265262 < span class ="n "> lb</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="s2 "> "0"</ span >
266263 < span class ="n "> ub</ span > < span class ="p "> [</ span > < span class ="n "> i</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="nb "> str</ span > < span class ="p "> (</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> choices</ span > < span class ="p "> )</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> )</ span >
@@ -621,6 +618,31 @@ <h1>Source code for aepsych.config</h1><div class="highlight"><pre>
621618 < span class ="k "> else</ span > < span class ="p "> :</ span >
622619 < span class ="n "> value</ span > < span class ="o "> =</ span > < span class ="n "> object_cls</ span >
623620
621+ < span class ="c1 "> # Literal (supporting strings, ints, floats)</ span >
622+ < span class ="k "> elif</ span > < span class ="n "> typing</ span > < span class ="o "> .</ span > < span class ="n "> get_origin</ span > < span class ="p "> (</ span > < span class ="n "> annotation</ span > < span class ="p "> )</ span > < span class ="ow "> is</ span > < span class ="n "> Literal</ span > < span class ="p "> :</ span >
623+ < span class ="n "> literal_args</ span > < span class ="o "> =</ span > < span class ="n "> typing</ span > < span class ="o "> .</ span > < span class ="n "> get_args</ span > < span class ="p "> (</ span > < span class ="n "> annotation</ span > < span class ="p "> )</ span >
624+ < span class ="k "> for</ span > < span class ="n "> arg</ span > < span class ="ow "> in</ span > < span class ="n "> literal_args</ span > < span class ="p "> :</ span >
625+ < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> arg</ span > < span class ="p "> ,</ span > < span class ="nb "> str</ span > < span class ="p "> ):</ span >
626+ < span class ="n "> attempt</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> fallback</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
627+ < span class ="k "> elif</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> arg</ span > < span class ="p "> ,</ span > < span class ="nb "> int</ span > < span class ="p "> ):</ span >
628+ < span class ="n "> attempt</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> getint</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> fallback</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
629+ < span class ="k "> elif</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> arg</ span > < span class ="p "> ,</ span > < span class ="nb "> float</ span > < span class ="p "> ):</ span >
630+ < span class ="n "> attempt</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> getfloat</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> ,</ span > < span class ="n "> fallback</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> )</ span >
631+ < span class ="k "> else</ span > < span class ="p "> :</ span >
632+ < span class ="k "> raise</ span > < span class ="ne "> NotImplementedError</ span > < span class ="p "> (</ span >
633+ < span class ="sa "> f</ span > < span class ="s2 "> "Literal types in </ span > < span class ="si "> {</ span > < span class ="n "> annotation</ span > < span class ="si "> }</ span > < span class ="s2 "> not supported yet!"</ span >
634+ < span class ="p "> )</ span >
635+
636+ < span class ="k "> if</ span > < span class ="n "> attempt</ span > < span class ="ow "> is</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
637+ < span class ="k "> continue</ span >
638+
639+ < span class ="k "> if</ span > < span class ="n "> attempt</ span > < span class ="ow "> in</ span > < span class ="n "> literal_args</ span > < span class ="p "> :</ span >
640+ < span class ="n "> value</ span > < span class ="o "> =</ span > < span class ="n "> attempt</ span >
641+ < span class ="k "> else</ span > < span class ="p "> :</ span >
642+ < span class ="k "> raise</ span > < span class ="ne "> RuntimeError</ span > < span class ="p "> (</ span >
643+ < span class ="sa "> f</ span > < span class ="s2 "> "Value </ span > < span class ="si "> {</ span > < span class ="n "> attempt</ span > < span class ="si "> }</ span > < span class ="s2 "> is not in the Literal type </ span > < span class ="si "> {</ span > < span class ="n "> annotation</ span > < span class ="si "> }</ span > < span class ="s2 "> for the option </ span > < span class ="si "> {</ span > < span class ="n "> key</ span > < span class ="si "> }</ span > < span class ="s2 "> !"</ span >
644+ < span class ="p "> )</ span >
645+
624646 < span class ="c1 "> # Callable</ span >
625647 < span class ="k "> elif</ span > < span class ="n "> annotation</ span > < span class ="ow "> is</ span > < span class ="n "> Callable</ span > < span class ="p "> :</ span >
626648 < span class ="n "> value</ span > < span class ="o "> =</ span > < span class ="n "> config</ span > < span class ="o "> .</ span > < span class ="n "> getobj</ span > < span class ="p "> (</ span > < span class ="n "> name</ span > < span class ="p "> ,</ span > < span class ="n "> key</ span > < span class ="p "> )</ span >
0 commit comments