Class Encoding (2.32.0)

Encoding(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Rules used to convert to or from lower level types.

This message has oneof_ fields (mutually exclusive fields). For each oneof, at most one member field can be set at the same time. Setting any member of the oneof automatically clears all other members.

.. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

Attributes

Name Description
singleton google.cloud.bigtable_admin_v2.types.Type.Struct.Encoding.Singleton
Use Singleton encoding. This field is a member of oneof_ encoding.
delimited_bytes google.cloud.bigtable_admin_v2.types.Type.Struct.Encoding.DelimitedBytes
Use DelimitedBytes encoding. This field is a member of oneof_ encoding.
ordered_code_bytes google.cloud.bigtable_admin_v2.types.Type.Struct.Encoding.OrderedCodeBytes
User OrderedCodeBytes encoding. This field is a member of oneof_ encoding.

Classes

DelimitedBytes

DelimitedBytes(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Fields are encoded independently and concatenated with a configurable delimiter in between.

A struct with no fields defined is encoded as a single delimiter.

Sorted mode:

  • Fields are encoded in sorted mode.
  • Encoded field values must not contain any bytes <= delimiter[0]
  • Element-wise order is preserved: A < B if A[0] < B[0], or if A[0] == B[0] && A[1] < B[1], etc. Strict prefixes sort first.

Distinct mode:

  • Fields are encoded in distinct mode.
  • Encoded field values must not contain delimiter[0].

OrderedCodeBytes

OrderedCodeBytes(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Fields are encoded independently and concatenated with the fixed byte pair {0x00, 0x01} in between.

Any null (0x00) byte in an encoded field is replaced by the fixed byte pair {0x00, 0xFF}.

Fields that encode to the empty string "" have special handling:

  • If every field encodes to "", or if the STRUCT has no fields defined, then the STRUCT is encoded as the fixed byte pair {0x00, 0x00}.
  • Otherwise, the STRUCT only encodes until the last non-empty field, omitting any trailing empty fields. Any empty fields that aren't omitted are replaced with the fixed byte pair {0x00, 0x00}.

Examples:

  • STRUCT() -> "\00\00"
  • STRUCT("") -> "\00\00"
  • STRUCT("", "") -> "\00\00"
  • STRUCT("", "B") -> "\00\00" + "\00\01" + "B"
  • STRUCT("A", "") -> "A"
  • STRUCT("", "B", "") -> "\00\00" + "\00\01" + "B"
  • STRUCT("A", "", "C") -> "A" + "\00\01" + "\00\00" + "\00\01" + "C"

Since null bytes are always escaped, this encoding can cause size blowup for encodings like Int64.BigEndianBytes that are likely to produce many such bytes.

Sorted mode:

  • Fields are encoded in sorted mode.
  • All values supported by the field encodings are allowed
  • Element-wise order is preserved: A < B if A[0] < B[0], or if A[0] == B[0] && A[1] < B[1], etc. Strict prefixes sort first.

Distinct mode:

  • Fields are encoded in distinct mode.
  • All values supported by the field encodings are allowed.

Singleton

Singleton(mapping=None, *, ignore_unknown_fields=False, **kwargs)

Uses the encoding of fields[0].type as-is. Only valid if fields.size == 1.