IMPORTANT: The Bazel docs have moved! Please update your bookmark to https://bazel.build/rules/lib/struct
You can read about the migration, and let us know what you think.
Extensions >
API reference >
struct
struct
A generic object with fields.Structs fields cannot be reassigned once the struct is created. Two structs are equal if they have the same fields and if corresponding field values are equal.
struct
struct struct(**kwargs)Creates an immutable struct using the keyword arguments as attributes. It is used to group multiple values together. Example:
s = struct(x = 2, y = 3) return s.x + getattr(s, "y") # returns 5
Parameters
Parameter | Description |
---|---|
kwargs
|
default = {} Dictionary of arguments. |
to_json
string struct.to_json()Deprecated. This API is deprecated and will be removed soon. Please do not depend on it. It is disabled with
---incompatible_struct_has_no_methods
. Use this flag to verify your code is compatible with its imminent removal. Creates a JSON string from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs, a list of these types or a dictionary with string keys and values of these types. Quotes and new lines in strings are escaped. Examples:
struct(key=123).to_json() # {"key":123} struct(key=True).to_json() # {"key":true} struct(key=[1, 2, 3]).to_json() # {"key":[1,2,3]} struct(key='text').to_json() # {"key":"text"} struct(key=struct(inner_key='text')).to_json() # {"key":{"inner_key":"text"}} struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json() # {"key":[{"inner_key":1},{"inner_key":2}]} struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json() # {"key":{"inner_key":{"inner_inner_key":"text"}}}.
Deprecated: instead, use json.encode(x) or json.encode_indent(x), which work for values other than structs and do not pollute the struct field namespace.
to_proto
string struct.to_proto()Deprecated. This API is deprecated and will be removed soon. Please do not depend on it. It is disabled with
---incompatible_struct_has_no_methods
. Use this flag to verify your code is compatible with its imminent removal. Creates a text message from the struct parameter. This method only works if all struct elements (recursively) are strings, ints, booleans, other structs or dicts or lists of these types. Quotes and new lines in strings are escaped. Struct keys are iterated in the sorted order. Examples:
struct(key=123).to_proto() # key: 123 struct(key=True).to_proto() # key: true struct(key=[1, 2, 3]).to_proto() # key: 1 # key: 2 # key: 3 struct(key='text').to_proto() # key: "text" struct(key=struct(inner_key='text')).to_proto() # key { # inner_key: "text" # } struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto() # key { # inner_key: 1 # } # key { # inner_key: 2 # } struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto() # key { # inner_key { # inner_inner_key: "text" # } # } struct(foo={4: 3, 2: 1}).to_proto() # foo: { # key: 4 # value: 3 # } # foo: { # key: 2 # value: 1 # }
Deprecated: use proto.encode_text(x) instead.