new mcp servers format

This commit is contained in:
Davidson Gomes
2025-04-28 12:37:58 -03:00
parent 0112573d9b
commit e98744b7a4
7182 changed files with 4839 additions and 4998 deletions

View File

@@ -58,7 +58,6 @@ we repeatedly read a tag, look up the corresponding decoder, and invoke it.
__author__ = 'kenton@google.com (Kenton Varda)'
import math
import numbers
import struct
from google.protobuf import message
@@ -72,27 +71,6 @@ from google.protobuf.internal import wire_format
_DecodeError = message.DecodeError
def IsDefaultScalarValue(value):
"""Returns whether or not a scalar value is the default value of its type.
Specifically, this should be used to determine presence of implicit-presence
fields, where we disallow custom defaults.
Args:
value: A scalar value to check.
Returns:
True if the value is equivalent to a default value, False otherwise.
"""
if isinstance(value, numbers.Number) and math.copysign(1.0, value) < 0:
# Special case for negative zero, where "truthiness" fails to give the right
# answer.
return False
# Normally, we can just use Python's boolean conversion.
return not value
def _VarintDecoder(mask, result_type):
"""Return an encoder for a basic varint value (does not include tag).
@@ -190,19 +168,6 @@ def ReadTag(buffer, pos):
return tag_bytes, pos
def DecodeTag(tag_bytes):
"""Decode a tag from the bytes.
Args:
tag_bytes: the bytes of the tag
Returns:
Tuple[int, int] of the tag field number and wire type.
"""
(tag, _) = _DecodeVarint(tag_bytes, 0)
return wire_format.UnpackTag(tag)
# --------------------------------------------------------------------
@@ -259,7 +224,7 @@ def _SimpleDecoder(wire_type, decode_value):
(new_value, pos) = decode_value(buffer, pos)
if pos > end:
raise _DecodeError('Truncated message.')
if clear_if_default and IsDefaultScalarValue(new_value):
if clear_if_default and not new_value:
field_dict.pop(key, None)
else:
field_dict[key] = new_value
@@ -500,7 +465,7 @@ def EnumDecoder(field_number, is_repeated, is_packed, key, new_default,
(enum_value, pos) = _DecodeSignedVarint32(buffer, pos)
if pos > end:
raise _DecodeError('Truncated message.')
if clear_if_default and IsDefaultScalarValue(enum_value):
if clear_if_default and not enum_value:
field_dict.pop(key, None)
return pos
# pylint: disable=protected-access
@@ -595,7 +560,7 @@ def StringDecoder(field_number, is_repeated, is_packed, key, new_default,
new_pos = pos + size
if new_pos > end:
raise _DecodeError('Truncated string.')
if clear_if_default and IsDefaultScalarValue(size):
if clear_if_default and not size:
field_dict.pop(key, None)
else:
field_dict[key] = _ConvertToUnicode(buffer[pos:new_pos])
@@ -636,7 +601,7 @@ def BytesDecoder(field_number, is_repeated, is_packed, key, new_default,
new_pos = pos + size
if new_pos > end:
raise _DecodeError('Truncated string.')
if clear_if_default and IsDefaultScalarValue(size):
if clear_if_default and not size:
field_dict.pop(key, None)
else:
field_dict[key] = buffer[pos:new_pos].tobytes()
@@ -765,6 +730,7 @@ def MessageSetItemDecoder(descriptor):
local_ReadTag = ReadTag
local_DecodeVarint = _DecodeVarint
local_SkipField = SkipField
def DecodeItem(buffer, pos, end, message, field_dict):
"""Decode serialized message set to its value and new position.
@@ -796,10 +762,9 @@ def MessageSetItemDecoder(descriptor):
elif tag_bytes == item_end_tag_bytes:
break
else:
field_number, wire_type = DecodeTag(tag_bytes)
_, pos = _DecodeUnknownField(buffer, pos, end, field_number, wire_type)
pos = SkipField(buffer, pos, end, tag_bytes)
if pos == -1:
raise _DecodeError('Unexpected end-group tag.')
raise _DecodeError('Missing group end tag.')
if pos > end:
raise _DecodeError('Truncated message.')
@@ -857,10 +822,9 @@ def UnknownMessageSetItemDecoder():
elif tag_bytes == item_end_tag_bytes:
break
else:
field_number, wire_type = DecodeTag(tag_bytes)
_, pos = _DecodeUnknownField(buffer, pos, end, field_number, wire_type)
pos = SkipField(buffer, pos, end, tag_bytes)
if pos == -1:
raise _DecodeError('Unexpected end-group tag.')
raise _DecodeError('Missing group end tag.')
if pos > end:
raise _DecodeError('Truncated message.')
@@ -918,6 +882,30 @@ def MapDecoder(field_descriptor, new_default, is_message_map):
return DecodeMap
# --------------------------------------------------------------------
# Optimization is not as heavy here because calls to SkipField() are rare,
# except for handling end-group tags.
def _SkipVarint(buffer, pos, end):
"""Skip a varint value. Returns the new position."""
# Previously ord(buffer[pos]) raised IndexError when pos is out of range.
# With this code, ord(b'') raises TypeError. Both are handled in
# python_message.py to generate a 'Truncated message' error.
while ord(buffer[pos:pos+1].tobytes()) & 0x80:
pos += 1
pos += 1
if pos > end:
raise _DecodeError('Truncated message.')
return pos
def _SkipFixed64(buffer, pos, end):
"""Skip a fixed64 value. Returns the new position."""
pos += 8
if pos > end:
raise _DecodeError('Truncated message.')
return pos
def _DecodeFixed64(buffer, pos):
"""Decode a fixed64."""
@@ -925,11 +913,25 @@ def _DecodeFixed64(buffer, pos):
return (struct.unpack('<Q', buffer[pos:new_pos])[0], new_pos)
def _DecodeFixed32(buffer, pos):
"""Decode a fixed32."""
def _SkipLengthDelimited(buffer, pos, end):
"""Skip a length-delimited value. Returns the new position."""
new_pos = pos + 4
return (struct.unpack('<I', buffer[pos:new_pos])[0], new_pos)
(size, pos) = _DecodeVarint(buffer, pos)
pos += size
if pos > end:
raise _DecodeError('Truncated message.')
return pos
def _SkipGroup(buffer, pos, end):
"""Skip sub-group. Returns the new position."""
while 1:
(tag_bytes, pos) = ReadTag(buffer, pos)
new_pos = SkipField(buffer, pos, end, tag_bytes)
if new_pos == -1:
return pos
pos = new_pos
def _DecodeUnknownFieldSet(buffer, pos, end_pos=None):
@@ -942,16 +944,14 @@ def _DecodeUnknownFieldSet(buffer, pos, end_pos=None):
field_number, wire_type = wire_format.UnpackTag(tag)
if wire_type == wire_format.WIRETYPE_END_GROUP:
break
(data, pos) = _DecodeUnknownField(
buffer, pos, end_pos, field_number, wire_type
)
(data, pos) = _DecodeUnknownField(buffer, pos, wire_type)
# pylint: disable=protected-access
unknown_field_set._add(field_number, wire_type, data)
return (unknown_field_set, pos)
def _DecodeUnknownField(buffer, pos, end_pos, field_number, wire_type):
def _DecodeUnknownField(buffer, pos, wire_type):
"""Decode a unknown field. Returns the UnknownField and new position."""
if wire_type == wire_format.WIRETYPE_VARINT:
@@ -965,19 +965,72 @@ def _DecodeUnknownField(buffer, pos, end_pos, field_number, wire_type):
data = buffer[pos:pos+size].tobytes()
pos += size
elif wire_type == wire_format.WIRETYPE_START_GROUP:
end_tag_bytes = encoder.TagBytes(
field_number, wire_format.WIRETYPE_END_GROUP
)
data, pos = _DecodeUnknownFieldSet(buffer, pos, end_pos)
# Check end tag.
if buffer[pos - len(end_tag_bytes) : pos] != end_tag_bytes:
raise _DecodeError('Missing group end tag.')
(data, pos) = _DecodeUnknownFieldSet(buffer, pos)
elif wire_type == wire_format.WIRETYPE_END_GROUP:
return (0, -1)
else:
raise _DecodeError('Wrong wire type in tag.')
if pos > end_pos:
raise _DecodeError('Truncated message.')
return (data, pos)
def _EndGroup(buffer, pos, end):
"""Skipping an END_GROUP tag returns -1 to tell the parent loop to break."""
return -1
def _SkipFixed32(buffer, pos, end):
"""Skip a fixed32 value. Returns the new position."""
pos += 4
if pos > end:
raise _DecodeError('Truncated message.')
return pos
def _DecodeFixed32(buffer, pos):
"""Decode a fixed32."""
new_pos = pos + 4
return (struct.unpack('<I', buffer[pos:new_pos])[0], new_pos)
def _RaiseInvalidWireType(buffer, pos, end):
"""Skip function for unknown wire types. Raises an exception."""
raise _DecodeError('Tag had invalid wire type.')
def _FieldSkipper():
"""Constructs the SkipField function."""
WIRETYPE_TO_SKIPPER = [
_SkipVarint,
_SkipFixed64,
_SkipLengthDelimited,
_SkipGroup,
_EndGroup,
_SkipFixed32,
_RaiseInvalidWireType,
_RaiseInvalidWireType,
]
wiretype_mask = wire_format.TAG_TYPE_MASK
def SkipField(buffer, pos, end, tag_bytes):
"""Skips a field with the specified tag.
|pos| should point to the byte immediately after the tag.
Returns:
The new position (after the tag value), or -1 if the tag is an end-group
tag (in which case the calling loop should break).
"""
# The wire type is always in the first byte since varints are little-endian.
wire_type = ord(tag_bytes[0:1]) & wiretype_mask
return WIRETYPE_TO_SKIPPER[wire_type](buffer, pos, end)
return SkipField
SkipField = _FieldSkipper()