Skip to content

Commit

Permalink
Merge branch '1.0.x' into 'master'
Browse files Browse the repository at this point in the history
  • Loading branch information
remram44 committed Nov 16, 2018
2 parents ff6a4a3 + 7b08517 commit f55bed4
Show file tree
Hide file tree
Showing 5 changed files with 126 additions and 81 deletions.
2 changes: 1 addition & 1 deletion .travis/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ in
python tests --run-docker
;;
checks)
flake8 --ignore=E731,W504 reprozip/reprozip reprounzip/reprounzip reprounzip-*/reprounzip reprounzip-qt/reprounzip_qt reprozip-jupyter/reprozip_jupyter tests/*.py
flake8 --ignore=E731,W504
find scripts -name '*.py' -exec flake8 {} +
diff -q reprozip/reprozip/common.py reprounzip/reprounzip/common.py
diff -q reprozip/reprozip/utils.py reprounzip/reprounzip/utils.py
Expand Down
24 changes: 12 additions & 12 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,21 +246,21 @@
# -- Options for LaTeX output ---------------------------------------------

latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',

# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',

# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',

# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}

# Grouping the document tree into LaTeX files. List of tuples
Expand Down
89 changes: 55 additions & 34 deletions reprounzip/reprounzip/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from datetime import datetime
from distutils.version import LooseVersion
import functools
import gzip
import json
import logging
import logging.handlers
Expand Down Expand Up @@ -183,13 +184,33 @@ def extract_config(self, target):
It is up to the caller to remove that file once done.
"""
member = copy.copy(self.tar.getmember('METADATA/config.yml'))
self._extract_file(self.tar.getmember('METADATA/config.yml'),
target)

def _extract_file(self, member, target):
member = copy.copy(member)
member.name = str(target.components[-1])
self.tar.extract(member,
path=str(Path.cwd() / target.parent))
target.chmod(0o644)
assert target.is_file()

def _extract_file_gz(self, member, target):
f_in = self.tar.extractfile(member)
f_in_gz = gzip.open(f_in)
f_out = target.open('wb')
try:
chunk = f_in_gz.read(4096)
while len(chunk) == 4096:
f_out.write(chunk)
chunk = f_in_gz.read(4096)
if chunk:
f_out.write(chunk)
finally:
f_out.close()
f_in_gz.close()
f_in.close()

@contextlib.contextmanager
def with_config(self):
"""Context manager that extracts the config to a temporary file.
Expand All @@ -208,19 +229,19 @@ def extract_trace(self, target):
target = Path(target)
if self.version == 1:
member = self.tar.getmember('METADATA/trace.sqlite3')
self._extract_file(member, target)
elif self.version == 2:
try:
member = self.tar.getmember('METADATA/trace.sqlite3.gz')
except KeyError:
member = self.tar.getmember('METADATA/trace.sqlite3')
pass
else:
self._extract_file_gz(member, target)
return
member = self.tar.getmember('METADATA/trace.sqlite3')
self._extract_file(member, target)
else:
assert False
member = copy.copy(member)
member.name = str(target.components[-1])
self.tar.extract(member,
path=str(Path.cwd() / target.parent))
target.chmod(0o644)
assert target.is_file()

@contextlib.contextmanager
def with_trace(self):
Expand Down Expand Up @@ -619,34 +640,34 @@ def setup_logging(tag, verbosity):
handler.setFormatter(formatter)

# Set up logger
logger = logging.root
logger.setLevel(min_level)
logger.addHandler(handler)
rootlogger = logging.root
rootlogger.setLevel(min_level)
rootlogger.addHandler(handler)

# File logger
dotrpz = Path('~/.reprozip').expand_user()
try:
if not dotrpz.is_dir():
dotrpz.mkdir()
filehandler = logging.handlers.RotatingFileHandler(str(dotrpz / 'log'),
mode='a',
delay=False,
maxBytes=400000,
backupCount=5)
except (IOError, OSError):
logger.warning("Couldn't create log file %s", dotrpz / 'log')
else:
filehandler.setFormatter(formatter)
filehandler.setLevel(file_level)
logger.addHandler(filehandler)

filehandler.emit(logging.root.makeRecord(
__name__.split('.', 1)[0],
logging.INFO,
"(log start)", 0,
"Log opened %s %s",
(datetime.now().strftime("%Y-%m-%d"), sys.argv),
None))
if os.environ.get('REPROZIP_NO_LOGFILE', '').lower() in ('', 'false',
'0', 'off'):
dotrpz = Path('~/.reprozip').expand_user()
try:
if not dotrpz.is_dir():
dotrpz.mkdir()
filehandler = logging.handlers.RotatingFileHandler(
str(dotrpz / 'log'), mode='a',
delay=False, maxBytes=400000, backupCount=5)
except (IOError, OSError):
logger.warning("Couldn't create log file %s", dotrpz / 'log')
else:
filehandler.setFormatter(formatter)
filehandler.setLevel(file_level)
rootlogger.addHandler(filehandler)

filehandler.emit(logging.root.makeRecord(
__name__.split('.', 1)[0],
logging.INFO,
"(log start)", 0,
"Log opened %s %s",
(datetime.now().strftime("%Y-%m-%d"), sys.argv),
None))


_usage_report = None
Expand Down
89 changes: 55 additions & 34 deletions reprozip/reprozip/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
from datetime import datetime
from distutils.version import LooseVersion
import functools
import gzip
import json
import logging
import logging.handlers
Expand Down Expand Up @@ -183,13 +184,33 @@ def extract_config(self, target):
It is up to the caller to remove that file once done.
"""
member = copy.copy(self.tar.getmember('METADATA/config.yml'))
self._extract_file(self.tar.getmember('METADATA/config.yml'),
target)

def _extract_file(self, member, target):
member = copy.copy(member)
member.name = str(target.components[-1])
self.tar.extract(member,
path=str(Path.cwd() / target.parent))
target.chmod(0o644)
assert target.is_file()

def _extract_file_gz(self, member, target):
f_in = self.tar.extractfile(member)
f_in_gz = gzip.open(f_in)
f_out = target.open('wb')
try:
chunk = f_in_gz.read(4096)
while len(chunk) == 4096:
f_out.write(chunk)
chunk = f_in_gz.read(4096)
if chunk:
f_out.write(chunk)
finally:
f_out.close()
f_in_gz.close()
f_in.close()

@contextlib.contextmanager
def with_config(self):
"""Context manager that extracts the config to a temporary file.
Expand All @@ -208,19 +229,19 @@ def extract_trace(self, target):
target = Path(target)
if self.version == 1:
member = self.tar.getmember('METADATA/trace.sqlite3')
self._extract_file(member, target)
elif self.version == 2:
try:
member = self.tar.getmember('METADATA/trace.sqlite3.gz')
except KeyError:
member = self.tar.getmember('METADATA/trace.sqlite3')
pass
else:
self._extract_file_gz(member, target)
return
member = self.tar.getmember('METADATA/trace.sqlite3')
self._extract_file(member, target)
else:
assert False
member = copy.copy(member)
member.name = str(target.components[-1])
self.tar.extract(member,
path=str(Path.cwd() / target.parent))
target.chmod(0o644)
assert target.is_file()

@contextlib.contextmanager
def with_trace(self):
Expand Down Expand Up @@ -619,34 +640,34 @@ def setup_logging(tag, verbosity):
handler.setFormatter(formatter)

# Set up logger
logger = logging.root
logger.setLevel(min_level)
logger.addHandler(handler)
rootlogger = logging.root
rootlogger.setLevel(min_level)
rootlogger.addHandler(handler)

# File logger
dotrpz = Path('~/.reprozip').expand_user()
try:
if not dotrpz.is_dir():
dotrpz.mkdir()
filehandler = logging.handlers.RotatingFileHandler(str(dotrpz / 'log'),
mode='a',
delay=False,
maxBytes=400000,
backupCount=5)
except (IOError, OSError):
logger.warning("Couldn't create log file %s", dotrpz / 'log')
else:
filehandler.setFormatter(formatter)
filehandler.setLevel(file_level)
logger.addHandler(filehandler)

filehandler.emit(logging.root.makeRecord(
__name__.split('.', 1)[0],
logging.INFO,
"(log start)", 0,
"Log opened %s %s",
(datetime.now().strftime("%Y-%m-%d"), sys.argv),
None))
if os.environ.get('REPROZIP_NO_LOGFILE', '').lower() in ('', 'false',
'0', 'off'):
dotrpz = Path('~/.reprozip').expand_user()
try:
if not dotrpz.is_dir():
dotrpz.mkdir()
filehandler = logging.handlers.RotatingFileHandler(
str(dotrpz / 'log'), mode='a',
delay=False, maxBytes=400000, backupCount=5)
except (IOError, OSError):
logger.warning("Couldn't create log file %s", dotrpz / 'log')
else:
filehandler.setFormatter(formatter)
filehandler.setLevel(file_level)
rootlogger.addHandler(filehandler)

filehandler.emit(logging.root.makeRecord(
__name__.split('.', 1)[0],
logging.INFO,
"(log start)", 0,
"Log opened %s %s",
(datetime.now().strftime("%Y-%m-%d"), sys.argv),
None))


_usage_report = None
Expand Down
3 changes: 3 additions & 0 deletions tests/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ def createTests(self):
# Disables usage reporting
os.environ['REPROZIP_USAGE_STATS'] = 'off'

# Disable log file
os.environ['REPROZIP_NO_LOGFILE'] = 'on'

setup_logging('TESTSUITE', 999)

parser = argparse.ArgumentParser(description="reprozip tests")
Expand Down

0 comments on commit f55bed4

Please sign in to comment.