/usr/share/python3/debpython/__init__.py is in python3-minimal 3.4.0-0ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | try:
from datetime import datetime
except ImportError:
datetime = None
import logging
import re
from subprocess import PIPE, Popen
from pickle import dumps
log = logging.getLogger(__name__)
PUBLIC_DIR_RE = re.compile(r'.*?/usr/lib/python(\d(?:.\d+)?)/(site|dist)-packages')
class memoize:
def __init__(self, func):
self.func = func
self.cache = {}
def __call__(self, *args, **kwargs):
key = dumps((args, kwargs))
if key not in self.cache:
self.cache[key] = self.func(*args, **kwargs)
return self.cache[key]
def execute(command, cwd=None, env=None, log_output=None):
"""Execute external shell commad.
:param cdw: currennt working directory
:param env: environment
:param log_output:
* opened log file or path to this file, or
* None if output should be included in the returned dict, or
* False if output should be redirectored to stdout/stderr
"""
args = {'shell': True, 'cwd': cwd, 'env': env}
close = False
if log_output is False:
pass
elif log_output is None:
args.update(stdout=PIPE, stderr=PIPE)
elif log_output:
if isinstance(log_output, str):
close = True
log_output = open(log_output, 'a')
if datetime:
log_output.write('\n# command executed on {}'.format(datetime.now().isoformat()))
log_output.write('\n$ {}\n'.format(command))
log_output.flush()
args.update(stdout=log_output, stderr=log_output)
log.debug('invoking: %s', command)
with Popen(command, **args) as process:
stdout, stderr = process.communicate()
close and log_output.close()
return dict(returncode=process.returncode,
stdout=stdout and str(stdout, 'utf-8'),
stderr=stderr and str(stderr, 'utf-8'))
|