Skip to content

Commit 4582c34

Browse files
authored
opentelemetry-proto-json: update to use opentelemetry-proto v1.10.0 (#5224)
* update opentelemetry-proto-json to v1.10.0 * add changelog fragment
1 parent b5d6fcd commit 4582c34

7 files changed

Lines changed: 37 additions & 39 deletions

File tree

.changelog/5224.added

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
`opentelemetry-proto-json`: update to use opentelemetry-proto v1.10.0

codegen/opentelemetry-codegen-json/src/opentelemetry/codegen/json/generator.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -296,18 +296,7 @@ def _generate_header(
296296
writer.comment(
297297
[
298298
"Copyright The OpenTelemetry Authors",
299-
"",
300-
'Licensed under the Apache License, Version 2.0 (the "License");',
301-
"you may not use this file except in compliance with the License.",
302-
"You may obtain a copy of the License at",
303-
"",
304-
" http://www.apache.org/licenses/LICENSE-2.0",
305-
"",
306-
"Unless required by applicable law or agreed to in writing, software",
307-
'distributed under the License is distributed on an "AS IS" BASIS,',
308-
"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.",
309-
"See the License for the specific language governing permissions and",
310-
"limitations under the License.",
299+
"SPDX-License-Identifier: Apache-2.0",
311300
]
312301
)
313302
writer.blank_line()

opentelemetry-proto-json/README.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ OpenTelemetry Python Proto JSON
66
.. |pypi| image:: https://badge.fury.io/py/opentelemetry-proto-json.svg
77
:target: https://pypi.org/project/opentelemetry-proto-json/
88

9-
This library contains the generated code for OpenTelemetry protobuf data model with JSON encoding support. The code in the current package was generated using the v1.9.0 release_ of opentelemetry-proto and includes definitions for the OpenTelemetry JSON Protobuf encoding specification.
9+
This library contains the generated code for OpenTelemetry protobuf data model with JSON encoding support. The code in the current package was generated using the v1.10.0 release_ of opentelemetry-proto and includes definitions for the OpenTelemetry JSON Protobuf encoding specification.
1010

11-
.. _release: https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.9.0
11+
.. _release: https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v1.10.0
1212

1313
Installation
1414
------------
@@ -21,11 +21,11 @@ Code Generation
2121
---------------
2222

2323
These files were generated automatically using the custom protoc plugin opentelemetry-codegen-json_ from code in opentelemetry-proto_.
24-
To regenerate the code, run ``../scripts/proto_codegen_json.sh``.
24+
To regenerate the code, run ``uv run ./scripts/proto_codegen_json.sh`` from the project root.
2525

2626
To build against a new release or specific commit of opentelemetry-proto_,
2727
update the ``PROTO_REPO_BRANCH_OR_COMMIT`` variable in
28-
``../scripts/proto_codegen_json.sh``. Then run the script and commit the changes
28+
``./scripts/proto_codegen_json.sh``. Then run the script and commit the changes
2929
as well as any fixes needed in the OTLP exporter.
3030

3131
.. _opentelemetry-codegen-json: https://github.com/open-telemetry/opentelemetry-python/tree/main/codegen/opentelemetry-codegen-json

opentelemetry-proto-json/src/opentelemetry/proto_json/_json_codec.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ def to_json(self) -> str:
3838
return json.dumps(self.to_dict())
3939

4040
@classmethod
41-
def from_json(cls: type[M], data: typing.Union[str, bytes]) -> M:
41+
def from_json(cls: type[M], data: str | bytes) -> M:
4242
"""
4343
Deserialize from a JSON string or bytes.
4444
"""
4545
return cls.from_dict(json.loads(data))
4646

4747

48-
def encode_hex(value: typing.Optional[bytes]) -> str:
48+
def encode_hex(value: bytes | None) -> str:
4949
"""
5050
Encode bytes as hex string.
5151
@@ -57,7 +57,7 @@ def encode_hex(value: typing.Optional[bytes]) -> str:
5757
return value.hex() if value else ""
5858

5959

60-
def encode_base64(value: typing.Optional[bytes]) -> str:
60+
def encode_base64(value: bytes | None) -> str:
6161
"""
6262
Encode bytes as base64 string.
6363
Standard Proto3 JSON mapping for bytes.
@@ -83,7 +83,7 @@ def encode_int64(value: int) -> str:
8383
return str(value)
8484

8585

86-
def encode_float(value: float) -> typing.Union[float, str]:
86+
def encode_float(value: float) -> float | str:
8787
"""
8888
Encode float/double values.
8989
@@ -100,7 +100,7 @@ def encode_float(value: float) -> typing.Union[float, str]:
100100

101101

102102
def encode_repeated(
103-
values: typing.Optional[list[T]],
103+
values: list[T] | None,
104104
map_fn: typing.Callable[[T], typing.Any],
105105
) -> list[typing.Any]:
106106
"""
@@ -115,7 +115,7 @@ def encode_repeated(
115115
return [map_fn(v) for v in values] if values else []
116116

117117

118-
def decode_hex(value: typing.Optional[str], field_name: str) -> bytes:
118+
def decode_hex(value: str | None, field_name: str) -> bytes:
119119
"""
120120
Decode hex string to bytes.
121121
@@ -136,7 +136,7 @@ def decode_hex(value: typing.Optional[str], field_name: str) -> bytes:
136136
) from None
137137

138138

139-
def decode_base64(value: typing.Optional[str], field_name: str) -> bytes:
139+
def decode_base64(value: str | None, field_name: str) -> bytes:
140140
"""
141141
Decode base64 string to bytes.
142142
@@ -157,9 +157,7 @@ def decode_base64(value: typing.Optional[str], field_name: str) -> bytes:
157157
) from None
158158

159159

160-
def decode_int64(
161-
value: typing.Optional[typing.Union[int, str]], field_name: str
162-
) -> int:
160+
def decode_int64(value: int | str | None, field_name: str) -> int:
163161
"""
164162
Parse int64 from number or string.
165163
@@ -180,9 +178,7 @@ def decode_int64(
180178
) from None
181179

182180

183-
def decode_float(
184-
value: typing.Optional[typing.Union[float, int, str]], field_name: str
185-
) -> float:
181+
def decode_float(value: float | int | str | None, field_name: str) -> float:
186182
"""
187183
Parse float/double from number or string, handling special values.
188184
@@ -210,7 +206,7 @@ def decode_float(
210206

211207

212208
def decode_repeated(
213-
values: typing.Optional[list[typing.Any]],
209+
values: list[typing.Any] | None,
214210
item_parser: typing.Callable[[typing.Any], T],
215211
field_name: str,
216212
) -> list[T]:
@@ -232,7 +228,7 @@ def decode_repeated(
232228

233229
def validate_type(
234230
value: typing.Any,
235-
expected_types: typing.Union[type, tuple[type, ...]],
231+
expected_types: type | tuple[type, ...],
236232
field_name: str,
237233
) -> None:
238234
"""

opentelemetry-proto-json/src/opentelemetry/proto_json/common/v1/common.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class AnyValue(opentelemetry.proto_json._json_codec.JsonMessage):
3030
array_value: typing.Optional[ArrayValue] = None
3131
kvlist_value: typing.Optional[KeyValueList] = None
3232
bytes_value: typing.Optional[builtins.bytes] = None
33+
string_value_strindex: typing.Optional[builtins.int] = None
3334

3435
def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
3536
"""
@@ -39,7 +40,9 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
3940
Dictionary representation following OTLP JSON encoding
4041
"""
4142
_result = {}
42-
if self.bytes_value is not None:
43+
if self.string_value_strindex is not None:
44+
_result["stringValueStrindex"] = self.string_value_strindex
45+
elif self.bytes_value is not None:
4346
_result["bytesValue"] = opentelemetry.proto_json._json_codec.encode_base64(self.bytes_value)
4447
elif self.kvlist_value is not None:
4548
_result["kvlistValue"] = self.kvlist_value.to_dict()
@@ -69,7 +72,10 @@ def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "AnyValue":
6972
opentelemetry.proto_json._json_codec.validate_type(data, builtins.dict, "data")
7073
_args = {}
7174

72-
if (_value := data.get("bytesValue")) is not None:
75+
if (_value := data.get("stringValueStrindex")) is not None:
76+
opentelemetry.proto_json._json_codec.validate_type(_value, builtins.int, "string_value_strindex")
77+
_args["string_value_strindex"] = _value
78+
elif (_value := data.get("bytesValue")) is not None:
7379
_args["bytes_value"] = opentelemetry.proto_json._json_codec.decode_base64(_value, "bytes_value")
7480
elif (_value := data.get("kvlistValue")) is not None:
7581
_args["kvlist_value"] = KeyValueList.from_dict(_value)
@@ -180,6 +186,7 @@ class KeyValue(opentelemetry.proto_json._json_codec.JsonMessage):
180186

181187
key: typing.Optional[builtins.str] = ""
182188
value: typing.Optional[AnyValue] = None
189+
key_strindex: typing.Optional[builtins.int] = 0
183190

184191
def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
185192
"""
@@ -193,6 +200,8 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
193200
_result["key"] = self.key
194201
if self.value:
195202
_result["value"] = self.value.to_dict()
203+
if self.key_strindex:
204+
_result["keyStrindex"] = self.key_strindex
196205
return _result
197206

198207
@builtins.classmethod
@@ -214,6 +223,9 @@ def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "KeyValue":
214223
_args["key"] = _value
215224
if (_value := data.get("value")) is not None:
216225
_args["value"] = AnyValue.from_dict(_value)
226+
if (_value := data.get("keyStrindex")) is not None:
227+
opentelemetry.proto_json._json_codec.validate_type(_value, builtins.int, "key_strindex")
228+
_args["key_strindex"] = _value
217229

218230
return cls(**_args)
219231

opentelemetry-proto-json/src/opentelemetry/proto_json/profiles/v1development/profiles.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,9 +434,9 @@ class Sample(opentelemetry.proto_json._json_codec.JsonMessage):
434434
"""
435435

436436
stack_index: typing.Optional[builtins.int] = 0
437-
values: builtins.list[builtins.int] = dataclasses.field(default_factory=builtins.list)
438437
attribute_indices: builtins.list[builtins.int] = dataclasses.field(default_factory=builtins.list)
439438
link_index: typing.Optional[builtins.int] = 0
439+
values: builtins.list[builtins.int] = dataclasses.field(default_factory=builtins.list)
440440
timestamps_unix_nano: builtins.list[builtins.int] = dataclasses.field(default_factory=builtins.list)
441441

442442
def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
@@ -449,12 +449,12 @@ def to_dict(self) -> builtins.dict[builtins.str, typing.Any]:
449449
_result = {}
450450
if self.stack_index:
451451
_result["stackIndex"] = self.stack_index
452-
if self.values:
453-
_result["values"] = opentelemetry.proto_json._json_codec.encode_repeated(self.values, lambda _v: opentelemetry.proto_json._json_codec.encode_int64(_v))
454452
if self.attribute_indices:
455453
_result["attributeIndices"] = self.attribute_indices
456454
if self.link_index:
457455
_result["linkIndex"] = self.link_index
456+
if self.values:
457+
_result["values"] = opentelemetry.proto_json._json_codec.encode_repeated(self.values, lambda _v: opentelemetry.proto_json._json_codec.encode_int64(_v))
458458
if self.timestamps_unix_nano:
459459
_result["timestampsUnixNano"] = opentelemetry.proto_json._json_codec.encode_repeated(self.timestamps_unix_nano, lambda _v: opentelemetry.proto_json._json_codec.encode_int64(_v))
460460
return _result
@@ -476,13 +476,13 @@ def from_dict(cls, data: builtins.dict[builtins.str, typing.Any]) -> "Sample":
476476
if (_value := data.get("stackIndex")) is not None:
477477
opentelemetry.proto_json._json_codec.validate_type(_value, builtins.int, "stack_index")
478478
_args["stack_index"] = _value
479-
if (_value := data.get("values")) is not None:
480-
_args["values"] = opentelemetry.proto_json._json_codec.decode_repeated(_value, lambda _v: opentelemetry.proto_json._json_codec.decode_int64(_v, "values"), "values")
481479
if (_value := data.get("attributeIndices")) is not None:
482480
_args["attribute_indices"] = opentelemetry.proto_json._json_codec.decode_repeated(_value, lambda _v: _v, "attribute_indices")
483481
if (_value := data.get("linkIndex")) is not None:
484482
opentelemetry.proto_json._json_codec.validate_type(_value, builtins.int, "link_index")
485483
_args["link_index"] = _value
484+
if (_value := data.get("values")) is not None:
485+
_args["values"] = opentelemetry.proto_json._json_codec.decode_repeated(_value, lambda _v: opentelemetry.proto_json._json_codec.decode_int64(_v, "values"), "values")
486486
if (_value := data.get("timestampsUnixNano")) is not None:
487487
_args["timestamps_unix_nano"] = opentelemetry.proto_json._json_codec.decode_repeated(_value, lambda _v: opentelemetry.proto_json._json_codec.decode_int64(_v, "timestamps_unix_nano"), "timestamps_unix_nano")
488488

scripts/proto_codegen_json.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# PROTO_REPO_DIR - the path to an existing checkout of the opentelemetry-proto repo
1313

1414
# Pinned commit/branch/tag for the current version used in opentelemetry-proto python package.
15-
PROTO_REPO_BRANCH_OR_COMMIT="v1.9.0"
15+
PROTO_REPO_BRANCH_OR_COMMIT="v1.10.0"
1616

1717
set -e
1818

0 commit comments

Comments
 (0)