Skip to content

Commit 2cf40a7

Browse files
committed
wip perfetto
1 parent dbc7a19 commit 2cf40a7

3 files changed

Lines changed: 72 additions & 1 deletion

File tree

pyproject.toml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ dependencies = [
99
"typing-extensions>=4.15.0",
1010
]
1111

12+
[project.optional-dependencies]
13+
perfetto = [
14+
"perfetto>=0.14.0",
15+
]
16+
1217
[build-system]
1318
requires = ["uv_build>=0.8.19,<0.9.0"]
1419
build-backend = "uv_build"
@@ -25,12 +30,14 @@ test = [
2530
"pytest-asyncio",
2631
"pytest-codspeed",
2732
"pytest-xdist",
33+
"duron[perfetto]",
2834
]
2935
typing = [
3036
"basedmypy",
3137
"basedpyright",
3238
"pydantic",
3339
"pytest",
40+
"duron[perfetto]",
3441
]
3542
lint = [
3643
"ruff",
@@ -87,6 +94,10 @@ disable_error_code = [
8794
"any",
8895
]
8996

97+
[[tool.mypy.overrides]]
98+
module = ["perfetto.*"]
99+
follow_untyped_imports = true
100+
90101
[tool.pyright]
91102
include = ["src", "tests"]
92103
venv = "."

src/duron/contrib/perfetto.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import IO
2+
3+
from perfetto.protos.perfetto.trace.perfetto_trace_pb2 import Trace, TracePacket
4+
5+
6+
class StreamingTraceProtoBuilder:
7+
def __init__(self, file: IO[bytes]) -> None:
8+
self._file = file
9+
self._trace = Trace()
10+
11+
@staticmethod
12+
def create_packet() -> TracePacket:
13+
return TracePacket()
14+
15+
def write_packet(self, packet: TracePacket) -> None:
16+
# Clear the packet list.
17+
del self._trace.packet[:]
18+
self._trace.packet.append(packet)
19+
self._file.write(self._trace.SerializeToString())

uv.lock

Lines changed: 42 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)