# HG changeset patch # User Pierre-Yves David # Date 1497004793 -3600 # Node ID 086c1ef0f6660b94b6dcd8800e2272d558829963 # Parent 4483696dacee86b7c36822613a955dd09f75c3d4 profile: introduce a "start" method to the profile context The start method is doing all profiler setup and activation. It is currently unconditionally called by '__init__' but this will be made more flexible in later changesets. diff -r 4483696dacee -r 086c1ef0f666 mercurial/profiling.py --- a/mercurial/profiling.py Thu Jun 08 01:38:48 2017 +0100 +++ b/mercurial/profiling.py Fri Jun 09 11:39:53 2017 +0100 @@ -152,8 +152,24 @@ self._output = None self._fp = None self._profiler = None + self._entered = False + self._started = False def __enter__(self): + self._entered = True + self.start() + + def start(self): + """Start profiling. + + The profiling will stop at the context exit. + + If the profiler was already started, this has no effect.""" + if not self._entered: + raise error.ProgrammingError() + if self._started: + return + self._started = True profiler = encoding.environ.get('HGPROF') proffn = None if profiler is None: