PyGlove language reference

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()