Stay organized with collections
Save and categorize content based on your preferences.
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()
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# PyGlove language reference\n\nRun the Vertex AI Neural Architecture Search tutorial:\n[Create search spaces](https://github.com/google/vertex-ai-nas/blob/main/third_party/tutorial/vertex_tutorial2.md)\nto get familiar with the [PyGlove](https://github.com/google/pyglove) language.\n\nConstraints for PyGlove types\n-----------------------------\n\nValue specification (for example, `pg.typing.Int()`) can be\nprovided when users declare members for a class using `@pg.members`\nor arguments for a functor using `@pg.functor`.\nValue specification will validate the values\nduring construction and member assignment.\n\n### `pg.typing.Bool`\n\n # Declare a required Bool type.\n pg.typing.Bool()\n # Declare a Bool type with default value set to True.\n pg.typing.Bool(default=True)\n\n # Declare a Bool type that can accept None.\n pg.typing.Bool().noneable()\n\n### `pg.typing.Str`\n\n # Declare a required Str type.\n pg.typing.Str()\n # Declare a required Str type that matches a regular expression.\n pg.typing.Str(regex='.*foo')\n\n # Declare a Str type with default value set to 'x'.\n pg.typing.Str(default='x')\n\n # Declare a Str type that can accept None.\n pg.typing.Str().noneable()\n\n### `pg.typing.Int`\n\n # Declare a required Int type.\n pg.typing.Int()\n # Declare a required Int type with minimum and maximum value.\n pg.typing.Int(min_value=1, max_value=10)\n\n # Declare an Int type with default value set to 10.\n pg.typing.Int(default=10)\n\n # Declare an Int type that can accept None.\n pg.typing.Int().noneable()\n\n### `pg.typing.Float`\n\n # Declare a required Float type.\n pg.typing.Float()\n # Declare a required Float type with minimum and maximum value.\n pg.typing.Float(min_value=0.0, max_value=1.0)\n\n # Declare a Float type with default value set to 0.0.\n pg.typing.Float(default=0.0)\n\n # Declare a Float type that can accept None.\n pg.typing.Float().noneable()\n\n### `pg.typing.Enum`\n\n # Declare a required Enum type with default value set to 1.\n pg.typing.Enum(1, [1, 'a', 'b'])\n\n # Declare a Enum type that can accept None with default value set to 1.\n pg.typing.Enum(1, [1, 'a', 'b']).noneable()\n\n### `pg.typing.List`\n\n # Declare a required list of any type.\n pg.typing.List(pg.typing.Any())\n\n # Declare a required Int type (or None) list with at least two elements.\n pg.typing.List(pg.typing.Int().noneable(), min_size=2)\n\n # Declare a Float type list of fixed size (10) that can be None.\n pg.typing.List(pg.typing.Float(), size=10).noneable()\n\n # Declare a Str type list with a default value.\n pg.typing.List(pg.typing.Str(), default=['foo'])\n\n### `pg.typing.Tuple`\n\n # Declare a required Int type tuple of size 2.\n pg.typing.Tuple([pg.typing.Int(), pg.typing.Int()])\n\n # Declare a tuple of (Int, Str) types, which can also be None.\n pg.typing.Tuple([pg.typing.Int(), pg.typing.Str()]).noneable()\n\n # Declare an Int type tuple of size 2 with a default value.\n pg.typing.Tuple([pg.typing.Int(), pg.typing.Int()], default=(1, 1))\n\n### `pg.typing.Dict`\n\n # Declare a required dictionary of any key-value pairs.\n pg.typing.Dict()\n\n # Declare a dictionary that can accept None with field 'a' and 'b'.\n pg.typing.Dict([\n ('a', pg.typing.Int()),\n ('b', pg.typing.Str()),\n ]).noneable()\n\n # Declare a dictionary that can accept None with field 'a' and 'b'.\n pg.typing.Dict([\n ('a', pg.typing.Int(default=1)),\n ('b', pg.typing.Str()),\n ]).noneable()\n\n # Declare a dictionary with keys that match regular expression.\n pg.typing.Dict([\n (pg.typing.StrKey('.*foo'), pg.typing.Int()),\n ])\n\n### `pg.typing.Object`\n\n # Declare a required instance of class A.\n pg.typing.Object(A)\n\n # Declare an instance of class A that can accept None.\n pg.typing.Object(B)\n\n### `pg.typing.Union`\n\n # Declare a required union of Int and Str types.\n pg.typing.Union([pg.typing.Int(), pg.typing.Str])\n\n # Declare a union of Int and Str types that can accept None.\n pg.typing.Union([pg.typing.Int(), pg.typing.Str]).noneable()\n\n### `pg.typing.Any`\n\n # Declare a required value of any type (except None) with a default value.\n pg.typing.Any(default=1)\n\n # Declare a value of any type that can accept None.\n pg.typing.Any().noneable()"]]