# HG changeset patch # User Gregory Szorc # Date 2016-08-15 02:14:05 # Node ID f42cd5434cc20f06a0595efeede1c09dcd8a9694 # Parent ad4c0236168dc374e73f9fc0987c03bcd2a2d618 statprof: require paths to save or load profile data Upstream appears to aggressively save statprof data in a well-defined home directory path. Change the code to not do that. We also change file saving to fail if an error has occurred instead of silently failing. Callers can catch the exception. This behavior is more suitable for a generic "library" module. diff --git a/mercurial/statprof.py b/mercurial/statprof.py --- a/mercurial/statprof.py +++ b/mercurial/statprof.py @@ -311,13 +311,11 @@ def stop(): state.accumulate_time(clock()) state.last_start_time = None statprofpath = os.environ.get('STATPROF_DEST') - save_data(statprofpath) + if statprofpath: + save_data(statprofpath) -def save_data(path=None): - try: - path = path or (os.environ['HOME'] + '/statprof.data') - file = open(path, "w+") - +def save_data(path): + with open(path, 'w+') as file: file.write(str(state.accumulated_time) + '\n') for sample in state.samples: time = str(sample.time) @@ -326,13 +324,7 @@ def save_data(path=None): for s in stack] file.write(time + '\0' + '\0'.join(sites) + '\n') - file.close() - except (IOError, OSError): - # The home directory probably didn't exist, or wasn't writable. Oh well. - pass - -def load_data(path=None): - path = path or (os.environ['HOME'] + '/statprof.data') +def load_data(path): lines = open(path, 'r').read().splitlines() state.accumulated_time = float(lines[0])