Skip to content

text_format

Contains routines for printing protocol messages in text format.

Simple usage example::

# Create a proto object and serialize it to a text proto string. message = my_proto_pb2.MyMessage(foo='bar') text_proto = text_format.MessageToString(message)

# Parse a text proto string. message = text_format.Parse(text_proto, my_proto_pb2.MyMessage())

Error

Bases: Exception

Top-level module error for text_format.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
71
72
class Error(Exception):
  """Top-level module error for text_format."""

ParseError

Bases: Error

Thrown in case of text parsing or tokenizing error.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
class ParseError(Error):
  """Thrown in case of text parsing or tokenizing error."""

  def __init__(self, message=None, line=None, column=None):
    if message is not None and line is not None:
      loc = str(line)
      if column is not None:
        loc += ':{0}'.format(column)
      message = '{0} : {1}'.format(loc, message)
    if message is not None:
      super(ParseError, self).__init__(message)
    else:
      super(ParseError, self).__init__()
    self._line = line
    self._column = column

  def GetLine(self):
    return self._line

  def GetColumn(self):
    return self._column

Tokenizer

Bases: object

Protocol buffer text representation tokenizer.

This class handles the lower level string parsing by splitting it into meaningful tokens.

It was directly ported from the Java protocol buffer API.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
class Tokenizer(object):
  """Protocol buffer text representation tokenizer.

  This class handles the lower level string parsing by splitting it into
  meaningful tokens.

  It was directly ported from the Java protocol buffer API.
  """

  _WHITESPACE = re.compile(r'\s+')
  _COMMENT = re.compile(r'(\s*#.*$)', re.MULTILINE)
  _WHITESPACE_OR_COMMENT = re.compile(r'(\s|(#.*$))+', re.MULTILINE)
  _TOKEN = re.compile('|'.join([
      r'[a-zA-Z_][0-9a-zA-Z_+-]*',  # an identifier
      r'([0-9+-]|(\.[0-9]))[0-9a-zA-Z_.+-]*',  # a number
  ] + [  # quoted str for each quote mark
      # Avoid backtracking! https://stackoverflow.com/a/844267
      r'{qt}[^{qt}\n\\]*((\\.)+[^{qt}\n\\]*)*({qt}|\\?$)'.format(qt=mark)
      for mark in _QUOTES
  ]))

  _IDENTIFIER = re.compile(r'[^\d\W]\w*')
  _IDENTIFIER_OR_NUMBER = re.compile(r'\w+')

  def __init__(self, lines, skip_comments=True):
    self._position = 0
    self._line = -1
    self._column = 0
    self._token_start = None
    self.token = ''
    self._lines = iter(lines)
    self._current_line = ''
    self._previous_line = 0
    self._previous_column = 0
    self._more_lines = True
    self._skip_comments = skip_comments
    self._whitespace_pattern = (skip_comments and self._WHITESPACE_OR_COMMENT
                                or self._WHITESPACE)
    self._SkipWhitespace()
    self.NextToken()

  def LookingAt(self, token):
    return self.token == token

  def AtEnd(self):
    """Checks the end of the text was reached.

    Returns:
      True iff the end was reached.
    """
    return not self.token

  def _PopLine(self):
    while len(self._current_line) <= self._column:
      try:
        self._current_line = next(self._lines)
      except StopIteration:
        self._current_line = ''
        self._more_lines = False
        return
      else:
        self._line += 1
        self._column = 0

  def _SkipWhitespace(self):
    while True:
      self._PopLine()
      match = self._whitespace_pattern.match(self._current_line, self._column)
      if not match:
        break
      length = len(match.group(0))
      self._column += length

  def TryConsume(self, token):
    """Tries to consume a given piece of text.

    Args:
      token: Text to consume.

    Returns:
      True iff the text was consumed.
    """
    if self.token == token:
      self.NextToken()
      return True
    return False

  def Consume(self, token):
    """Consumes a piece of text.

    Args:
      token: Text to consume.

    Raises:
      ParseError: If the text couldn't be consumed.
    """
    if not self.TryConsume(token):
      raise self.ParseError('Expected "%s".' % token)

  def ConsumeComment(self):
    result = self.token
    if not self._COMMENT.match(result):
      raise self.ParseError('Expected comment.')
    self.NextToken()
    return result

  def ConsumeCommentOrTrailingComment(self):
    """Consumes a comment, returns a 2-tuple (trailing bool, comment str)."""

    # Tokenizer initializes _previous_line and _previous_column to 0. As the
    # tokenizer starts, it looks like there is a previous token on the line.
    just_started = self._line == 0 and self._column == 0

    before_parsing = self._previous_line
    comment = self.ConsumeComment()

    # A trailing comment is a comment on the same line than the previous token.
    trailing = (self._previous_line == before_parsing
                and not just_started)

    return trailing, comment

  def TryConsumeIdentifier(self):
    try:
      self.ConsumeIdentifier()
      return True
    except ParseError:
      return False

  def ConsumeIdentifier(self):
    """Consumes protocol message field identifier.

    Returns:
      Identifier string.

    Raises:
      ParseError: If an identifier couldn't be consumed.
    """
    result = self.token
    if not self._IDENTIFIER.match(result):
      raise self.ParseError('Expected identifier.')
    self.NextToken()
    return result

  def TryConsumeIdentifierOrNumber(self):
    try:
      self.ConsumeIdentifierOrNumber()
      return True
    except ParseError:
      return False

  def ConsumeIdentifierOrNumber(self):
    """Consumes protocol message field identifier.

    Returns:
      Identifier string.

    Raises:
      ParseError: If an identifier couldn't be consumed.
    """
    result = self.token
    if not self._IDENTIFIER_OR_NUMBER.match(result):
      raise self.ParseError('Expected identifier or number, got %s.' % result)
    self.NextToken()
    return result

  def TryConsumeInteger(self):
    try:
      self.ConsumeInteger()
      return True
    except ParseError:
      return False

  def ConsumeInteger(self):
    """Consumes an integer number.

    Returns:
      The integer parsed.

    Raises:
      ParseError: If an integer couldn't be consumed.
    """
    try:
      result = _ParseAbstractInteger(self.token)
    except ValueError as e:
      raise self.ParseError(str(e))
    self.NextToken()
    return result

  def TryConsumeFloat(self):
    try:
      self.ConsumeFloat()
      return True
    except ParseError:
      return False

  def ConsumeFloat(self):
    """Consumes an floating point number.

    Returns:
      The number parsed.

    Raises:
      ParseError: If a floating point number couldn't be consumed.
    """
    try:
      result = ParseFloat(self.token)
    except ValueError as e:
      raise self.ParseError(str(e))
    self.NextToken()
    return result

  def ConsumeBool(self):
    """Consumes a boolean value.

    Returns:
      The bool parsed.

    Raises:
      ParseError: If a boolean value couldn't be consumed.
    """
    try:
      result = ParseBool(self.token)
    except ValueError as e:
      raise self.ParseError(str(e))
    self.NextToken()
    return result

  def TryConsumeByteString(self):
    try:
      self.ConsumeByteString()
      return True
    except ParseError:
      return False

  def ConsumeString(self):
    """Consumes a string value.

    Returns:
      The string parsed.

    Raises:
      ParseError: If a string value couldn't be consumed.
    """
    the_bytes = self.ConsumeByteString()
    try:
      return str(the_bytes, 'utf-8')
    except UnicodeDecodeError as e:
      raise self._StringParseError(e)

  def ConsumeByteString(self):
    """Consumes a byte array value.

    Returns:
      The array parsed (as a string).

    Raises:
      ParseError: If a byte array value couldn't be consumed.
    """
    the_list = [self._ConsumeSingleByteString()]
    while self.token and self.token[0] in _QUOTES:
      the_list.append(self._ConsumeSingleByteString())
    return b''.join(the_list)

  def _ConsumeSingleByteString(self):
    """Consume one token of a string literal.

    String literals (whether bytes or text) can come in multiple adjacent
    tokens which are automatically concatenated, like in C or Python.  This
    method only consumes one token.

    Returns:
      The token parsed.
    Raises:
      ParseError: When the wrong format data is found.
    """
    text = self.token
    if len(text) < 1 or text[0] not in _QUOTES:
      raise self.ParseError('Expected string but found: %r' % (text,))

    if len(text) < 2 or text[-1] != text[0]:
      raise self.ParseError('String missing ending quote: %r' % (text,))

    try:
      result = text_encoding.CUnescape(text[1:-1])
    except ValueError as e:
      raise self.ParseError(str(e))
    self.NextToken()
    return result

  def ConsumeEnum(self, field):
    try:
      result = ParseEnum(field, self.token)
    except ValueError as e:
      raise self.ParseError(str(e))
    self.NextToken()
    return result

  def ParseErrorPreviousToken(self, message):
    """Creates and *returns* a ParseError for the previously read token.

    Args:
      message: A message to set for the exception.

    Returns:
      A ParseError instance.
    """
    return ParseError(message, self._previous_line + 1,
                      self._previous_column + 1)

  def ParseError(self, message):
    """Creates and *returns* a ParseError for the current token."""
    return ParseError('\'' + self._current_line + '\': ' + message,
                      self._line + 1, self._column + 1)

  def _StringParseError(self, e):
    return self.ParseError('Couldn\'t parse string: ' + str(e))

  def NextToken(self):
    """Reads the next meaningful token."""
    self._previous_line = self._line
    self._previous_column = self._column

    self._column += len(self.token)
    self._SkipWhitespace()

    if not self._more_lines:
      self.token = ''
      return

    match = self._TOKEN.match(self._current_line, self._column)
    if not match and not self._skip_comments:
      match = self._COMMENT.match(self._current_line, self._column)
    if match:
      token = match.group(0)
      self.token = token
    else:
      self.token = self._current_line[self._column]

AtEnd()

Checks the end of the text was reached.

Returns:

Type Description

True iff the end was reached.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1261
1262
1263
1264
1265
1266
1267
def AtEnd(self):
  """Checks the end of the text was reached.

  Returns:
    True iff the end was reached.
  """
  return not self.token

Consume(token)

Consumes a piece of text.

Parameters:

Name Type Description Default
token

Text to consume.

required

Raises:

Type Description
ParseError

If the text couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
def Consume(self, token):
  """Consumes a piece of text.

  Args:
    token: Text to consume.

  Raises:
    ParseError: If the text couldn't be consumed.
  """
  if not self.TryConsume(token):
    raise self.ParseError('Expected "%s".' % token)

ConsumeBool()

Consumes a boolean value.

Returns:

Type Description

The bool parsed.

Raises:

Type Description
ParseError

If a boolean value couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
def ConsumeBool(self):
  """Consumes a boolean value.

  Returns:
    The bool parsed.

  Raises:
    ParseError: If a boolean value couldn't be consumed.
  """
  try:
    result = ParseBool(self.token)
  except ValueError as e:
    raise self.ParseError(str(e))
  self.NextToken()
  return result

ConsumeByteString()

Consumes a byte array value.

Returns:

Type Description

The array parsed (as a string).

Raises:

Type Description
ParseError

If a byte array value couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
def ConsumeByteString(self):
  """Consumes a byte array value.

  Returns:
    The array parsed (as a string).

  Raises:
    ParseError: If a byte array value couldn't be consumed.
  """
  the_list = [self._ConsumeSingleByteString()]
  while self.token and self.token[0] in _QUOTES:
    the_list.append(self._ConsumeSingleByteString())
  return b''.join(the_list)

ConsumeCommentOrTrailingComment()

Consumes a comment, returns a 2-tuple (trailing bool, comment str).

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
def ConsumeCommentOrTrailingComment(self):
  """Consumes a comment, returns a 2-tuple (trailing bool, comment str)."""

  # Tokenizer initializes _previous_line and _previous_column to 0. As the
  # tokenizer starts, it looks like there is a previous token on the line.
  just_started = self._line == 0 and self._column == 0

  before_parsing = self._previous_line
  comment = self.ConsumeComment()

  # A trailing comment is a comment on the same line than the previous token.
  trailing = (self._previous_line == before_parsing
              and not just_started)

  return trailing, comment

ConsumeFloat()

Consumes an floating point number.

Returns:

Type Description

The number parsed.

Raises:

Type Description
ParseError

If a floating point number couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
def ConsumeFloat(self):
  """Consumes an floating point number.

  Returns:
    The number parsed.

  Raises:
    ParseError: If a floating point number couldn't be consumed.
  """
  try:
    result = ParseFloat(self.token)
  except ValueError as e:
    raise self.ParseError(str(e))
  self.NextToken()
  return result

ConsumeIdentifier()

Consumes protocol message field identifier.

Returns:

Type Description

Identifier string.

Raises:

Type Description
ParseError

If an identifier couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
def ConsumeIdentifier(self):
  """Consumes protocol message field identifier.

  Returns:
    Identifier string.

  Raises:
    ParseError: If an identifier couldn't be consumed.
  """
  result = self.token
  if not self._IDENTIFIER.match(result):
    raise self.ParseError('Expected identifier.')
  self.NextToken()
  return result

ConsumeIdentifierOrNumber()

Consumes protocol message field identifier.

Returns:

Type Description

Identifier string.

Raises:

Type Description
ParseError

If an identifier couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
def ConsumeIdentifierOrNumber(self):
  """Consumes protocol message field identifier.

  Returns:
    Identifier string.

  Raises:
    ParseError: If an identifier couldn't be consumed.
  """
  result = self.token
  if not self._IDENTIFIER_OR_NUMBER.match(result):
    raise self.ParseError('Expected identifier or number, got %s.' % result)
  self.NextToken()
  return result

ConsumeInteger()

Consumes an integer number.

Returns:

Type Description

The integer parsed.

Raises:

Type Description
ParseError

If an integer couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
def ConsumeInteger(self):
  """Consumes an integer number.

  Returns:
    The integer parsed.

  Raises:
    ParseError: If an integer couldn't be consumed.
  """
  try:
    result = _ParseAbstractInteger(self.token)
  except ValueError as e:
    raise self.ParseError(str(e))
  self.NextToken()
  return result

ConsumeString()

Consumes a string value.

Returns:

Type Description

The string parsed.

Raises:

Type Description
ParseError

If a string value couldn't be consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
def ConsumeString(self):
  """Consumes a string value.

  Returns:
    The string parsed.

  Raises:
    ParseError: If a string value couldn't be consumed.
  """
  the_bytes = self.ConsumeByteString()
  try:
    return str(the_bytes, 'utf-8')
  except UnicodeDecodeError as e:
    raise self._StringParseError(e)

NextToken()

Reads the next meaningful token.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
def NextToken(self):
  """Reads the next meaningful token."""
  self._previous_line = self._line
  self._previous_column = self._column

  self._column += len(self.token)
  self._SkipWhitespace()

  if not self._more_lines:
    self.token = ''
    return

  match = self._TOKEN.match(self._current_line, self._column)
  if not match and not self._skip_comments:
    match = self._COMMENT.match(self._current_line, self._column)
  if match:
    token = match.group(0)
    self.token = token
  else:
    self.token = self._current_line[self._column]

ParseError(message)

Creates and returns a ParseError for the current token.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1527
1528
1529
1530
def ParseError(self, message):
  """Creates and *returns* a ParseError for the current token."""
  return ParseError('\'' + self._current_line + '\': ' + message,
                    self._line + 1, self._column + 1)

ParseErrorPreviousToken(message)

Creates and returns a ParseError for the previously read token.

Parameters:

Name Type Description Default
message

A message to set for the exception.

required

Returns:

Type Description

A ParseError instance.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
def ParseErrorPreviousToken(self, message):
  """Creates and *returns* a ParseError for the previously read token.

  Args:
    message: A message to set for the exception.

  Returns:
    A ParseError instance.
  """
  return ParseError(message, self._previous_line + 1,
                    self._previous_column + 1)

TryConsume(token)

Tries to consume a given piece of text.

Parameters:

Name Type Description Default
token

Text to consume.

required

Returns:

Type Description

True iff the text was consumed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
def TryConsume(self, token):
  """Tries to consume a given piece of text.

  Args:
    token: Text to consume.

  Returns:
    True iff the text was consumed.
  """
  if self.token == token:
    self.NextToken()
    return True
  return False

Merge(text, message, allow_unknown_extension=False, allow_field_number=False, descriptor_pool=None, allow_unknown_field=False)

Parses a text representation of a protocol message into a message.

Like Parse(), but allows repeated values for a non-repeated field, and uses the last one. This means any non-repeated, top-level fields specified in text replace those in the message.

Parameters:

Name Type Description Default
text str

Message text representation.

required
message Message

A protocol buffer message to merge into.

required
allow_unknown_extension

if True, skip over missing extensions and keep parsing

False
allow_field_number

if True, both field number and field name are allowed.

False
descriptor_pool DescriptorPool

Descriptor pool used to resolve Any types.

None
allow_unknown_field

if True, skip over unknown field and keep parsing. Avoid to use this option if possible. It may hide some errors (e.g. spelling error on field name)

False

Returns:

Name Type Description
Message

The same message passed as argument.

Raises:

Type Description
ParseError

On text parsing problems.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
def Merge(text,
          message,
          allow_unknown_extension=False,
          allow_field_number=False,
          descriptor_pool=None,
          allow_unknown_field=False):
  """Parses a text representation of a protocol message into a message.

  Like Parse(), but allows repeated values for a non-repeated field, and uses
  the last one. This means any non-repeated, top-level fields specified in text
  replace those in the message.

  Args:
    text (str): Message text representation.
    message (Message): A protocol buffer message to merge into.
    allow_unknown_extension: if True, skip over missing extensions and keep
      parsing
    allow_field_number: if True, both field number and field name are allowed.
    descriptor_pool (DescriptorPool): Descriptor pool used to resolve Any types.
    allow_unknown_field: if True, skip over unknown field and keep
      parsing. Avoid to use this option if possible. It may hide some
      errors (e.g. spelling error on field name)

  Returns:
    Message: The same message passed as argument.

  Raises:
    ParseError: On text parsing problems.
  """
  return MergeLines(
      text.split(b'\n' if isinstance(text, bytes) else u'\n'),
      message,
      allow_unknown_extension,
      allow_field_number,
      descriptor_pool=descriptor_pool,
      allow_unknown_field=allow_unknown_field)

MergeLines(lines, message, allow_unknown_extension=False, allow_field_number=False, descriptor_pool=None, allow_unknown_field=False)

Parses a text representation of a protocol message into a message.

See Merge() for more details.

Parameters:

Name Type Description Default
lines

An iterable of lines of a message's text representation.

required
message

A protocol buffer message to merge into.

required
allow_unknown_extension

if True, skip over missing extensions and keep parsing

False
allow_field_number

if True, both field number and field name are allowed.

False
descriptor_pool

A DescriptorPool used to resolve Any types.

None
allow_unknown_field

if True, skip over unknown field and keep parsing. Avoid to use this option if possible. It may hide some errors (e.g. spelling error on field name)

False

Returns:

Type Description

The same message passed as argument.

Raises:

Type Description
ParseError

On text parsing problems.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
def MergeLines(lines,
               message,
               allow_unknown_extension=False,
               allow_field_number=False,
               descriptor_pool=None,
               allow_unknown_field=False):
  """Parses a text representation of a protocol message into a message.

  See Merge() for more details.

  Args:
    lines: An iterable of lines of a message's text representation.
    message: A protocol buffer message to merge into.
    allow_unknown_extension: if True, skip over missing extensions and keep
      parsing
    allow_field_number: if True, both field number and field name are allowed.
    descriptor_pool: A DescriptorPool used to resolve Any types.
    allow_unknown_field: if True, skip over unknown field and keep
      parsing. Avoid to use this option if possible. It may hide some
      errors (e.g. spelling error on field name)

  Returns:
    The same message passed as argument.

  Raises:
    ParseError: On text parsing problems.
  """
  parser = _Parser(allow_unknown_extension,
                   allow_field_number,
                   descriptor_pool=descriptor_pool,
                   allow_unknown_field=allow_unknown_field)
  return parser.MergeLines(lines, message)

MessageToBytes(message, **kwargs)

Convert protobuf message to encoded text format. See MessageToString.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
195
196
197
198
199
200
201
202
def MessageToBytes(message, **kwargs):
  # type: (...) -> bytes
  """Convert protobuf message to encoded text format.  See MessageToString."""
  text = MessageToString(message, **kwargs)
  if isinstance(text, bytes):
    return text
  codec = 'utf-8' if kwargs.get('as_utf8') else 'ascii'
  return text.encode(codec)

MessageToString(message, as_utf8=False, as_one_line=False, use_short_repeated_primitives=False, pointy_brackets=False, use_index_order=False, float_format=None, double_format=None, use_field_number=False, descriptor_pool=None, indent=0, message_formatter=None, print_unknown_fields=False, force_colon=False)

Convert protobuf message to text format.

Double values can be formatted compactly with 15 digits of precision (which is the most that IEEE 754 "double" can guarantee) using double_format='.15g'. To ensure that converting to text and back to a proto will result in an identical value, double_format='.17g' should be used.

Parameters:

Name Type Description Default
message

The protocol buffers message.

required
as_utf8

Return unescaped Unicode for non-ASCII characters. In Python 3 actual Unicode characters may appear as is in strings. In Python 2 the return value will be valid UTF-8 rather than only ASCII.

False
as_one_line

Don't introduce newlines between fields.

False
use_short_repeated_primitives

Use short repeated format for primitives.

False
pointy_brackets

If True, use angle brackets instead of curly braces for nesting.

False
use_index_order

If True, fields of a proto message will be printed using the order defined in source code instead of the field number, extensions will be printed at the end of the message and their relative order is determined by the extension number. By default, use the field number order.

False
float_format str

If set, use this to specify float field formatting (per the "Format Specification Mini-Language"); otherwise, shortest float that has same value in wire will be printed. Also affect double field if double_format is not set but float_format is set.

None
double_format str

If set, use this to specify double field formatting (per the "Format Specification Mini-Language"); if it is not set but float_format is set, use float_format. Otherwise, use str()

None
use_field_number

If True, print field numbers instead of names.

False
descriptor_pool DescriptorPool

Descriptor pool used to resolve Any types.

None
indent int

The initial indent level, in terms of spaces, for pretty print.

0
message_formatter function(message, indent, as_one_line) -> unicode|None

Custom formatter for selected sub-messages (usually based on message type). Use to pretty print parts of the protobuf for easier diffing.

None
print_unknown_fields

If True, unknown fields will be printed.

False
force_colon

If set, a colon will be added after the field name even if the field is a proto message.

False

Returns:

Name Type Description
str

A string of the text formatted protocol buffer message.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
def MessageToString(
    message,
    as_utf8=False,
    as_one_line=False,
    use_short_repeated_primitives=False,
    pointy_brackets=False,
    use_index_order=False,
    float_format=None,
    double_format=None,
    use_field_number=False,
    descriptor_pool=None,
    indent=0,
    message_formatter=None,
    print_unknown_fields=False,
    force_colon=False):
  # type: (...) -> str
  """Convert protobuf message to text format.

  Double values can be formatted compactly with 15 digits of
  precision (which is the most that IEEE 754 "double" can guarantee)
  using double_format='.15g'. To ensure that converting to text and back to a
  proto will result in an identical value, double_format='.17g' should be used.

  Args:
    message: The protocol buffers message.
    as_utf8: Return unescaped Unicode for non-ASCII characters.
        In Python 3 actual Unicode characters may appear as is in strings.
        In Python 2 the return value will be valid UTF-8 rather than only ASCII.
    as_one_line: Don't introduce newlines between fields.
    use_short_repeated_primitives: Use short repeated format for primitives.
    pointy_brackets: If True, use angle brackets instead of curly braces for
      nesting.
    use_index_order: If True, fields of a proto message will be printed using
      the order defined in source code instead of the field number, extensions
      will be printed at the end of the message and their relative order is
      determined by the extension number. By default, use the field number
      order.
    float_format (str): If set, use this to specify float field formatting
      (per the "Format Specification Mini-Language"); otherwise, shortest float
      that has same value in wire will be printed. Also affect double field
      if double_format is not set but float_format is set.
    double_format (str): If set, use this to specify double field formatting
      (per the "Format Specification Mini-Language"); if it is not set but
      float_format is set, use float_format. Otherwise, use ``str()``
    use_field_number: If True, print field numbers instead of names.
    descriptor_pool (DescriptorPool): Descriptor pool used to resolve Any types.
    indent (int): The initial indent level, in terms of spaces, for pretty
      print.
    message_formatter (function(message, indent, as_one_line) -> unicode|None):
      Custom formatter for selected sub-messages (usually based on message
      type). Use to pretty print parts of the protobuf for easier diffing.
    print_unknown_fields: If True, unknown fields will be printed.
    force_colon: If set, a colon will be added after the field name even if the
      field is a proto message.

  Returns:
    str: A string of the text formatted protocol buffer message.
  """
  out = TextWriter(as_utf8)
  printer = _Printer(
      out,
      indent,
      as_utf8,
      as_one_line,
      use_short_repeated_primitives,
      pointy_brackets,
      use_index_order,
      float_format,
      double_format,
      use_field_number,
      descriptor_pool,
      message_formatter,
      print_unknown_fields=print_unknown_fields,
      force_colon=force_colon)
  printer.PrintMessage(message)
  result = out.getvalue()
  out.close()
  if as_one_line:
    return result.rstrip()
  return result

Parse(text, message, allow_unknown_extension=False, allow_field_number=False, descriptor_pool=None, allow_unknown_field=False)

Parses a text representation of a protocol message into a message.

NOTE: for historical reasons this function does not clear the input message. This is different from what the binary msg.ParseFrom(...) does. If text contains a field already set in message, the value is appended if the field is repeated. Otherwise, an error is raised.

Example::

a = MyProto() a.repeated_field.append('test') b = MyProto()

# Repeated fields are combined text_format.Parse(repr(a), b) text_format.Parse(repr(a), b) # repeated_field contains ["test", "test"]

# Non-repeated fields cannot be overwritten a.singular_field = 1 b.singular_field = 2 text_format.Parse(repr(a), b) # ParseError

# Binary version: b.ParseFromString(a.SerializeToString()) # repeated_field is now "test"

Caller is responsible for clearing the message as needed.

Parameters:

Name Type Description Default
text str

Message text representation.

required
message Message

A protocol buffer message to merge into.

required
allow_unknown_extension

if True, skip over missing extensions and keep parsing

False
allow_field_number

if True, both field number and field name are allowed.

False
descriptor_pool DescriptorPool

Descriptor pool used to resolve Any types.

None
allow_unknown_field

if True, skip over unknown field and keep parsing. Avoid to use this option if possible. It may hide some errors (e.g. spelling error on field name)

False

Returns:

Name Type Description
Message

The same message passed as argument.

Raises:

Type Description
ParseError

On text parsing problems.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
def Parse(text,
          message,
          allow_unknown_extension=False,
          allow_field_number=False,
          descriptor_pool=None,
          allow_unknown_field=False):
  """Parses a text representation of a protocol message into a message.

  NOTE: for historical reasons this function does not clear the input
  message. This is different from what the binary msg.ParseFrom(...) does.
  If text contains a field already set in message, the value is appended if the
  field is repeated. Otherwise, an error is raised.

  Example::

    a = MyProto()
    a.repeated_field.append('test')
    b = MyProto()

    # Repeated fields are combined
    text_format.Parse(repr(a), b)
    text_format.Parse(repr(a), b) # repeated_field contains ["test", "test"]

    # Non-repeated fields cannot be overwritten
    a.singular_field = 1
    b.singular_field = 2
    text_format.Parse(repr(a), b) # ParseError

    # Binary version:
    b.ParseFromString(a.SerializeToString()) # repeated_field is now "test"

  Caller is responsible for clearing the message as needed.

  Args:
    text (str): Message text representation.
    message (Message): A protocol buffer message to merge into.
    allow_unknown_extension: if True, skip over missing extensions and keep
      parsing
    allow_field_number: if True, both field number and field name are allowed.
    descriptor_pool (DescriptorPool): Descriptor pool used to resolve Any types.
    allow_unknown_field: if True, skip over unknown field and keep
      parsing. Avoid to use this option if possible. It may hide some
      errors (e.g. spelling error on field name)

  Returns:
    Message: The same message passed as argument.

  Raises:
    ParseError: On text parsing problems.
  """
  return ParseLines(text.split(b'\n' if isinstance(text, bytes) else u'\n'),
                    message,
                    allow_unknown_extension,
                    allow_field_number,
                    descriptor_pool=descriptor_pool,
                    allow_unknown_field=allow_unknown_field)

ParseBool(text)

Parse a boolean value.

Parameters:

Name Type Description Default
text

Text to parse.

required

Returns:

Type Description

Boolean values parsed

Raises:

Type Description
ValueError

If text is not a valid boolean.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
def ParseBool(text):
  """Parse a boolean value.

  Args:
    text: Text to parse.

  Returns:
    Boolean values parsed

  Raises:
    ValueError: If text is not a valid boolean.
  """
  if text in ('true', 't', '1', 'True'):
    return True
  elif text in ('false', 'f', '0', 'False'):
    return False
  else:
    raise ValueError('Expected "true" or "false".')

ParseEnum(field, value)

Parse an enum value.

The value can be specified by a number (the enum value), or by a string literal (the enum name).

Parameters:

Name Type Description Default
field

Enum field descriptor.

required
value

String value.

required

Returns:

Type Description

Enum value number.

Raises:

Type Description
ValueError

If the enum value could not be parsed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
def ParseEnum(field, value):
  """Parse an enum value.

  The value can be specified by a number (the enum value), or by
  a string literal (the enum name).

  Args:
    field: Enum field descriptor.
    value: String value.

  Returns:
    Enum value number.

  Raises:
    ValueError: If the enum value could not be parsed.
  """
  enum_descriptor = field.enum_type
  try:
    number = int(value, 0)
  except ValueError:
    # Identifier.
    enum_value = enum_descriptor.values_by_name.get(value, None)
    if enum_value is None:
      raise ValueError('Enum type "%s" has no value named %s.' %
                       (enum_descriptor.full_name, value))
  else:
    # Numeric value.
    if hasattr(field.file, 'syntax'):
      # Attribute is checked for compatibility.
      if field.file.syntax == 'proto3':
        # Proto3 accept numeric unknown enums.
        return number
    enum_value = enum_descriptor.values_by_number.get(number, None)
    if enum_value is None:
      raise ValueError('Enum type "%s" has no value with number %d.' %
                       (enum_descriptor.full_name, number))
  return enum_value.number

ParseFloat(text)

Parse a floating point number.

Parameters:

Name Type Description Default
text

Text to parse.

required

Returns:

Type Description

The number parsed.

Raises:

Type Description
ValueError

If a floating point number couldn't be parsed.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
def ParseFloat(text):
  """Parse a floating point number.

  Args:
    text: Text to parse.

  Returns:
    The number parsed.

  Raises:
    ValueError: If a floating point number couldn't be parsed.
  """
  try:
    # Assume Python compatible syntax.
    return float(text)
  except ValueError:
    # Check alternative spellings.
    if _FLOAT_INFINITY.match(text):
      if text[0] == '-':
        return float('-inf')
      else:
        return float('inf')
    elif _FLOAT_NAN.match(text):
      return float('nan')
    else:
      # assume '1.0f' format
      try:
        return float(text.rstrip('f'))
      except ValueError:
        raise ValueError('Couldn\'t parse float: %s' % text)

ParseInteger(text, is_signed=False, is_long=False)

Parses an integer.

Parameters:

Name Type Description Default
text

The text to parse.

required
is_signed

True if a signed integer must be parsed.

False
is_long

True if a long integer must be parsed.

False

Returns:

Type Description

The integer value.

Raises:

Type Description
ValueError

Thrown Iff the text is not a valid integer.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
def ParseInteger(text, is_signed=False, is_long=False):
  """Parses an integer.

  Args:
    text: The text to parse.
    is_signed: True if a signed integer must be parsed.
    is_long: True if a long integer must be parsed.

  Returns:
    The integer value.

  Raises:
    ValueError: Thrown Iff the text is not a valid integer.
  """
  # Do the actual parsing. Exception handling is propagated to caller.
  result = _ParseAbstractInteger(text)

  # Check if the integer is sane. Exceptions handled by callers.
  checker = _INTEGER_CHECKERS[2 * int(is_long) + int(is_signed)]
  checker.CheckValue(result)
  return result

ParseLines(lines, message, allow_unknown_extension=False, allow_field_number=False, descriptor_pool=None, allow_unknown_field=False)

Parses a text representation of a protocol message into a message.

See Parse() for caveats.

Parameters:

Name Type Description Default
lines

An iterable of lines of a message's text representation.

required
message

A protocol buffer message to merge into.

required
allow_unknown_extension

if True, skip over missing extensions and keep parsing

False
allow_field_number

if True, both field number and field name are allowed.

False
descriptor_pool

A DescriptorPool used to resolve Any types.

None
allow_unknown_field

if True, skip over unknown field and keep parsing. Avoid to use this option if possible. It may hide some errors (e.g. spelling error on field name)

False

Returns:

Type Description

The same message passed as argument.

Raises:

Type Description
ParseError

On text parsing problems.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
def ParseLines(lines,
               message,
               allow_unknown_extension=False,
               allow_field_number=False,
               descriptor_pool=None,
               allow_unknown_field=False):
  """Parses a text representation of a protocol message into a message.

  See Parse() for caveats.

  Args:
    lines: An iterable of lines of a message's text representation.
    message: A protocol buffer message to merge into.
    allow_unknown_extension: if True, skip over missing extensions and keep
      parsing
    allow_field_number: if True, both field number and field name are allowed.
    descriptor_pool: A DescriptorPool used to resolve Any types.
    allow_unknown_field: if True, skip over unknown field and keep
      parsing. Avoid to use this option if possible. It may hide some
      errors (e.g. spelling error on field name)

  Returns:
    The same message passed as argument.

  Raises:
    ParseError: On text parsing problems.
  """
  parser = _Parser(allow_unknown_extension,
                   allow_field_number,
                   descriptor_pool=descriptor_pool,
                   allow_unknown_field=allow_unknown_field)
  return parser.ParseLines(lines, message)

PrintField(field, value, out, indent=0, as_utf8=False, as_one_line=False, use_short_repeated_primitives=False, pointy_brackets=False, use_index_order=False, float_format=None, double_format=None, message_formatter=None, print_unknown_fields=False, force_colon=False)

Print a single field name/value pair.

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
def PrintField(field,
               value,
               out,
               indent=0,
               as_utf8=False,
               as_one_line=False,
               use_short_repeated_primitives=False,
               pointy_brackets=False,
               use_index_order=False,
               float_format=None,
               double_format=None,
               message_formatter=None,
               print_unknown_fields=False,
               force_colon=False):
  """Print a single field name/value pair."""
  printer = _Printer(out, indent, as_utf8, as_one_line,
                     use_short_repeated_primitives, pointy_brackets,
                     use_index_order, float_format, double_format,
                     message_formatter=message_formatter,
                     print_unknown_fields=print_unknown_fields,
                     force_colon=force_colon)
  printer.PrintField(field, value)

PrintFieldValue(field, value, out, indent=0, as_utf8=False, as_one_line=False, use_short_repeated_primitives=False, pointy_brackets=False, use_index_order=False, float_format=None, double_format=None, message_formatter=None, print_unknown_fields=False, force_colon=False)

Print a single field value (not including name).

Source code in client/ayon_hiero/vendor/google/protobuf/text_format.py
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
def PrintFieldValue(field,
                    value,
                    out,
                    indent=0,
                    as_utf8=False,
                    as_one_line=False,
                    use_short_repeated_primitives=False,
                    pointy_brackets=False,
                    use_index_order=False,
                    float_format=None,
                    double_format=None,
                    message_formatter=None,
                    print_unknown_fields=False,
                    force_colon=False):
  """Print a single field value (not including name)."""
  printer = _Printer(out, indent, as_utf8, as_one_line,
                     use_short_repeated_primitives, pointy_brackets,
                     use_index_order, float_format, double_format,
                     message_formatter=message_formatter,
                     print_unknown_fields=print_unknown_fields,
                     force_colon=force_colon)
  printer.PrintFieldValue(field, value)