99from typing import Type
1010from typing import cast
1111
12+ from typing_extensions import Self
13+
1214
1315try :
1416 from ddtrace .profiling .collector import _memalloc
@@ -55,8 +57,9 @@ def start(self) -> None:
5557 _memalloc .stop ()
5658 _memalloc .start (self .max_nframe , self .heap_sample_size )
5759
58- def __enter__ (self ) -> None :
60+ def __enter__ (self ) -> Self :
5961 self .start ()
62+ return self
6063
6164 def __exit__ (
6265 self ,
@@ -66,7 +69,7 @@ def __exit__(
6669 ) -> None :
6770 self .stop ()
6871
69- def join (self ) -> None :
72+ def join (self , timeout : Optional [ float ] = None ) -> None :
7073 pass
7174
7275 def stop (self ) -> None :
@@ -76,7 +79,8 @@ def stop(self) -> None:
7679 except RuntimeError :
7780 LOG .debug ("Failed to stop memalloc profiling on shutdown" , exc_info = True )
7881
79- def _get_thread_id_ignore_set (self ) -> Set [int ]:
82+ @staticmethod
83+ def _get_thread_id_ignore_set () -> Set [int ]:
8084 # This method is not perfect and prone to race condition in theory, but very little in practice.
8185 # Anyhow it's not a big deal — it's a best effort feature.
8286 return {
@@ -86,7 +90,8 @@ def _get_thread_id_ignore_set(self) -> Set[int]:
8690 }
8791
8892 def snapshot (self ) -> None :
89- thread_id_ignore_set = self ._get_thread_id_ignore_set ()
93+ """Take a snapshot of collected data, to be exported."""
94+ thread_id_ignore_set = MemoryCollector ._get_thread_id_ignore_set ()
9095
9196 try :
9297 if _memalloc is None :
0 commit comments