Run the Vertex AI Neural Architecture Search tutorial: Create search spaces to get familiar with the PyGlove language.
Constraints for PyGlove types
Value specification (for example, pg.typing.Int()
) can be
provided when users declare members for a class using @pg.members
or arguments for a functor using @pg.functor
.
Value specification will validate the values
during construction and member assignment.
pg.typing.Bool
# Declare a required Bool type.
pg
.
typing
.
Bool
()
# Declare a Bool type with default value set to True.
pg
.
typing
.
Bool
(
default
=
True
)
# Declare a Bool type that can accept None.
pg
.
typing
.
Bool
()
.
noneable
()
pg.typing.Str
# Declare a required Str type.
pg
.
typing
.
Str
()
# Declare a required Str type that matches a regular expression.
pg
.
typing
.
Str
(
regex
='.*
foo
' )
# Declare a Str type with default value set to 'x'.
pg
.
typing
.
Str
(
default
=
' x
' )
# Declare a Str type that can accept None.
pg
.
typing
.
Str
()
.
noneable
()
pg.typing.Int
# Declare a required Int type.
pg
.
typing
.
Int
()
# Declare a required Int type with minimum and maximum value.
pg
.
typing
.
Int
(
min_value
=
1
,
max_value
=
10
)
# Declare an Int type with default value set to 10.
pg
.
typing
.
Int
(
default
=
10
)
# Declare an Int type that can accept None.
pg
.
typing
.
Int
()
.
noneable
()
pg.typing.Float
# Declare a required Float type.
pg
.
typing
.
Float
()
# Declare a required Float type with minimum and maximum value.
pg
.
typing
.
Float
(
min_value
=
0.0
,
max_value
=
1.0
)
# Declare a Float type with default value set to 0.0.
pg
.
typing
.
Float
(
default
=
0.0
)
# Declare a Float type that can accept None.
pg
.
typing
.
Float
()
.
noneable
()
pg.typing.Enum
# Declare a required Enum type with default value set to 1.
pg
.
typing
.
Enum
(
1
,
[
1
,
' a
' ,
' b
' ])
# Declare a Enum type that can accept None with default value set to 1.
pg
.
typing
.
Enum
(
1
,
[
1
,
' a
' ,
' b
' ])
.
noneable
()
pg.typing.List
# Declare a required list of any type.
pg
.
typing
.
List
(
pg
.
typing
.
Any
())
# Declare a required Int type (or None) list with at least two elements.
pg
.
typing
.
List
(
pg
.
typing
.
Int
()
.
noneable
(),
min_size
=
2
)
# Declare a Float type list of fixed size (10) that can be None.
pg
.
typing
.
List
(
pg
.
typing
.
Float
(),
size
=
10
)
.
noneable
()
# Declare a Str type list with a default value.
pg
.
typing
.
List
(
pg
.
typing
.
Str
(),
default
=
[
' foo
' ])
pg.typing.Tuple
# Declare a required Int type tuple of size 2.
pg
.
typing
.
Tuple
([
pg
.
typing
.
Int
(),
pg
.
typing
.
Int
()])
# Declare a tuple of (Int, Str) types, which can also be None.
pg
.
typing
.
Tuple
([
pg
.
typing
.
Int
(),
pg
.
typing
.
Str
()])
.
noneable
()
# Declare an Int type tuple of size 2 with a default value.
pg
.
typing
.
Tuple
([
pg
.
typing
.
Int
(),
pg
.
typing
.
Int
()],
default
=
(
1
,
1
))
pg.typing.Dict
# Declare a required dictionary of any key-value pairs.
pg
.
typing
.
Dict
()
# Declare a dictionary that can accept None with field 'a' and 'b'.
pg
.
typing
.
Dict
([
(
' a
' ,
pg
.
typing
.
Int
()),
(
' b
' ,
pg
.
typing
.
Str
()),
])
.
noneable
()
# Declare a dictionary that can accept None with field 'a' and 'b'.
pg
.
typing
.
Dict
([
(
' a
' ,
pg
.
typing
.
Int
(
default
=
1
)),
(
' b
' ,
pg
.
typing
.
Str
()),
])
.
noneable
()
# Declare a dictionary with keys that match regular expression.
pg
.
typing
.
Dict
([
(
pg
.
typing
.
StrKey
(
' .*
foo
' ),
pg
.
typing
.
Int
()),
])
pg.typing.Object
# Declare a required instance of class A.
pg
.
typing
.
Object
(
A
)
# Declare an instance of class A that can accept None.
pg
.
typing
.
Object
(
B
)
pg.typing.Union
# Declare a required union of Int and Str types.
pg
.
typing
.
Union
([
pg
.
typing
.
Int
(),
pg
.
typing
.
Str
])
# Declare a union of Int and Str types that can accept None.
pg
.
typing
.
Union
([
pg
.
typing
.
Int
(),
pg
.
typing
.
Str
])
.
noneable
()
pg.typing.Any
# Declare a required value of any type (except None) with a default value.
pg
.
typing
.
Any
(
default
=
1
)
# Declare a value of any type that can accept None.
pg
.
typing
.
Any
()
.
noneable
()