|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"""Utils for using with Qiskit unit tests."""
|
|
|
|
import logging
|
|
import os
|
|
from enum import Enum
|
|
from itertools import product
|
|
|
|
from qiskit import __path__ as qiskit_path
|
|
|
|
|
|
class Path(Enum):
|
|
"""Helper with paths commonly used during the tests."""
|
|
|
|
|
|
SDK = qiskit_path[0]
|
|
|
|
TEST = os.path.normpath(os.path.join(SDK, "..", "test", "python"))
|
|
|
|
EXAMPLES = os.path.normpath(os.path.join(SDK, "..", "examples"))
|
|
|
|
SCHEMAS = os.path.normpath(os.path.join(SDK, "schemas"))
|
|
|
|
QASMS = os.path.normpath(os.path.join(TEST, "qasm"))
|
|
|
|
|
|
def setup_test_logging(logger, log_level, filename):
|
|
"""Set logging to file and stdout for a logger.
|
|
|
|
Args:
|
|
logger (Logger): logger object to be updated.
|
|
log_level (str): logging level.
|
|
filename (str): name of the output file.
|
|
"""
|
|
|
|
log_fmt = f"{logger.name}.%(funcName)s:%(levelname)s:%(asctime)s: %(message)s"
|
|
formatter = logging.Formatter(log_fmt)
|
|
|
|
|
|
file_handler = logging.FileHandler(filename)
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
if os.getenv("STREAM_LOG"):
|
|
|
|
stream_handler = logging.StreamHandler()
|
|
stream_handler.setFormatter(formatter)
|
|
logger.addHandler(stream_handler)
|
|
|
|
|
|
|
|
level = logging._nameToLevel.get(log_level, logging.INFO)
|
|
logger.setLevel(level)
|
|
|
|
|
|
class Case(dict):
|
|
"""<no description>"""
|
|
|
|
pass
|
|
|
|
|
|
def generate_cases(docstring, dsc=None, name=None, **kwargs):
|
|
"""Combines kwargs in Cartesian product and creates Case with them"""
|
|
ret = []
|
|
keys = kwargs.keys()
|
|
vals = kwargs.values()
|
|
for values in product(*vals):
|
|
case = Case(zip(keys, values))
|
|
if docstring is not None:
|
|
setattr(case, "__doc__", docstring.format(**case))
|
|
if dsc is not None:
|
|
setattr(case, "__doc__", dsc.format(**case))
|
|
if name is not None:
|
|
setattr(case, "__name__", name.format(**case))
|
|
ret.append(case)
|
|
return ret
|
|
|