From 34be1d5c33069c57e77e782980c4b345a9024770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20M=2E=20Rodr=C3=ADguez?= Date: Wed, 26 Dec 2018 16:46:30 +0100 Subject: [PATCH] Update pylint to recent version, solve cyclic dependencies (#1600) * Bump pylint version * Disable pylint unnecessary-pass, no-else-return Disable pylint checks: * unnecessary-pass: allow for methods with just "pass", for clarity * no-else-return: relax "elif" after a clause with a return * Fix linter: useless-object-inheritance * Fix new linting errors * Move version to its own file Move the reading of Terra version to its own file, avoiding cyclic import during at `qiskit/providers/basebackend.py`. * Prefer importing QiskitError from submodule Revise the imports of `QiskitError` in order to break cyclic dependencies. * Break more cyclic imports * Break more cyclic imports, redux * Update cyclic import in QuantumCircuit Move the pylint disable to an inner-most level for QuantumCircuit. There is still an import cycle (qiskit.circuit.quantumcircuit -> qiskit.converters.ast_to_dag) due to circuit.Measure and circuit.Reset being part of the module and the dynamic extension mechanism. * Unify extension handling in own modules Revise the Exceptions throughout the codebase, containing them into specific `.exceptions` modules. * Update passes imports after rebasing Update the `qiskit.transpiler` module imports to avoid cyclic import, after rebasing against master. * Update .pylintrc --- .pylintrc | 23 ++++----- qiskit/__init__.py | 12 +---- qiskit/circuit/compositegate.py | 2 +- qiskit/circuit/gate.py | 2 +- qiskit/circuit/instruction.py | 4 +- qiskit/circuit/instructionset.py | 4 +- qiskit/circuit/measure.py | 2 +- qiskit/circuit/quantumcircuit.py | 8 +-- qiskit/circuit/register.py | 4 +- qiskit/converters/__init__.py | 2 - qiskit/converters/ast_to_dag.py | 4 +- qiskit/dagcircuit/__init__.py | 2 +- qiskit/dagcircuit/_dagcircuit.py | 7 +-- .../{_dagcircuiterror.py => exceptions.py} | 2 +- qiskit/{qiskiterror.py => exceptions.py} | 0 .../{_extensionerror.py => exceptions.py} | 2 +- .../quantum_initializer/_initializer.py | 4 +- qiskit/extensions/simulator/load.py | 2 +- qiskit/extensions/simulator/noise.py | 2 +- qiskit/extensions/simulator/save.py | 2 +- qiskit/extensions/simulator/snapshot.py | 2 +- qiskit/extensions/standard/barrier.py | 4 +- qiskit/mapper/__init__.py | 3 +- qiskit/mapper/_compiling.py | 2 +- qiskit/mapper/_coupling.py | 2 +- qiskit/mapper/_couplingerror.py | 24 --------- qiskit/mapper/_layout.py | 16 +----- qiskit/mapper/_mappererror.py | 25 ---------- qiskit/mapper/_mapping.py | 6 ++- qiskit/mapper/exceptions.py | 50 +++++++++++++++++++ qiskit/providers/basebackend.py | 4 +- .../providers/builtinsimulators/__init__.py | 2 +- .../builtinsimulators/_simulatortools.py | 4 +- .../{_simulatorerror.py => exceptions.py} | 2 +- .../builtinsimulators/qasm_simulator.py | 8 +-- .../builtinsimulators/simulatorsprovider.py | 2 +- .../statevector_simulator.py | 6 +-- .../builtinsimulators/unitary_simulator.py | 4 +- qiskit/providers/exceptions.py | 2 +- qiskit/providers/ibmq/__init__.py | 2 +- qiskit/providers/ibmq/api/ibmqconnector.py | 6 +-- qiskit/providers/ibmq/credentials/__init__.py | 2 +- .../providers/ibmq/credentials/_configrc.py | 2 +- qiskit/providers/ibmq/credentials/_qconfig.py | 2 +- .../providers/ibmq/credentials/credentials.py | 2 +- .../{ibmqaccounterror.py => exceptions.py} | 13 ++++- qiskit/providers/ibmq/ibmqbackend.py | 12 +---- qiskit/providers/ibmq/ibmqjob.py | 1 - qiskit/providers/ibmq/ibmqprovider.py | 2 +- .../legacysimulators/legacyprovider.py | 2 +- qiskit/qasm/__init__.py | 2 +- qiskit/qasm/_node/_node.py | 2 +- qiskit/qasm/_qasm.py | 4 +- qiskit/qasm/_qasmlexer.py | 6 +-- qiskit/qasm/_qasmparser.py | 4 +- qiskit/qasm/{_qasmerror.py => exceptions.py} | 2 +- qiskit/qobj/__init__.py | 3 +- qiskit/qobj/_converter.py | 2 +- qiskit/qobj/_qobj.py | 2 +- qiskit/qobj/_schema_validation.py | 35 +------------ qiskit/qobj/_validation.py | 6 --- qiskit/qobj/exceptions.py | 43 ++++++++++++++++ qiskit/quantum_info/operators/pauli.py | 2 +- qiskit/quantum_info/states/_states.py | 2 +- qiskit/result/__init__.py | 2 +- .../result/{_resulterror.py => exceptions.py} | 2 +- qiskit/result/result.py | 4 +- qiskit/tools/compiler.py | 2 +- qiskit/tools/events/_pubsub.py | 8 +-- qiskit/tools/jupyter/_backend_monitor.py | 2 +- qiskit/tools/monitor/backend_overview.py | 4 +- qiskit/tools/monitor/job_monitor.py | 2 +- qiskit/tools/parallel.py | 2 +- qiskit/tools/qcvv/tomography.py | 2 +- qiskit/tools/qi/qi.py | 2 +- qiskit/tools/visualization/__init__.py | 2 +- .../visualization/_circuit_visualization.py | 4 +- .../visualization/_counts_visualization.py | 2 +- qiskit/tools/visualization/_gate_map.py | 2 +- qiskit/tools/visualization/_latex.py | 22 ++++---- qiskit/tools/visualization/_matplotlib.py | 4 +- .../visualization/_state_visualization.py | 6 +-- qiskit/tools/visualization/_text.py | 2 +- qiskit/tools/visualization/_utils.py | 2 +- .../tools/visualization/dag_visualization.py | 2 +- .../{_error.py => exceptions.py} | 2 +- .../visualization/interactive/__init__.py | 3 -- .../interactive/_iplot_histogram.py | 2 +- .../interactive/_iplot_qsphere.py | 2 +- .../visualization/interactive/_iplot_state.py | 2 +- qiskit/transpiler/__init__.py | 2 +- qiskit/transpiler/_fencedobjs.py | 2 +- qiskit/transpiler/_passmanager.py | 2 +- qiskit/transpiler/_transpiler.py | 16 ++++-- .../{_transpilererror.py => exceptions.py} | 2 +- .../transpiler/passes/commutation_analysis.py | 2 +- .../passes/commutation_transformation.py | 2 +- qiskit/transpiler/passes/mapping/__init__.py | 8 +++ .../barrier_before_final_measurements.py | 2 +- .../transpiler/passes/mapping/basic_swap.py | 2 +- .../transpiler/passes/mapping/cx_direction.py | 3 +- .../transpiler/passes/mapping/dense_layout.py | 2 +- .../passes/mapping/lookahead_swap.py | 5 +- .../passes/mapping/stochastic_swap.py | 5 +- .../passes/mapping/trivial_layout.py | 2 +- qiskit/transpiler/passes/optimize_1q_gates.py | 2 +- qiskit/unroll.py | 2 +- qiskit/unrollers/_backenderror.py | 25 ---------- qiskit/unrollers/_dagunroller.py | 4 +- qiskit/unrollers/_jsonbackend.py | 2 +- qiskit/unrollers/_unrollerbackend.py | 4 +- .../{_unrollererror.py => exceptions.py} | 16 +++++- qiskit/version.py | 15 ++++++ qiskit/wrapper/__init__.py | 2 - qiskit/wrapper/_wrapper.py | 2 +- requirements-dev.txt | 2 +- test/python/_mockutils.py | 5 +- test/python/common.py | 2 +- test/python/ibmq/test_ibmqjob.py | 4 +- test/python/test_backend_name_resolution.py | 4 +- test/python/test_dagcircuit.py | 2 +- test/python/test_extensions_standard.py | 2 +- test/python/test_layout.py | 2 +- test/python/test_mapper.py | 10 ++-- test/python/test_qobj.py | 2 +- test/python/tools/jupyter/test_notebooks.py | 4 +- test/python/tools/test_compiler.py | 2 +- 127 files changed, 340 insertions(+), 342 deletions(-) rename qiskit/dagcircuit/{_dagcircuiterror.py => exceptions.py} (93%) rename qiskit/{qiskiterror.py => exceptions.py} (100%) rename qiskit/extensions/{_extensionerror.py => exceptions.py} (93%) delete mode 100644 qiskit/mapper/_couplingerror.py delete mode 100644 qiskit/mapper/_mappererror.py create mode 100644 qiskit/mapper/exceptions.py rename qiskit/providers/builtinsimulators/{_simulatorerror.py => exceptions.py} (93%) rename qiskit/providers/ibmq/{ibmqaccounterror.py => exceptions.py} (59%) rename qiskit/qasm/{_qasmerror.py => exceptions.py} (92%) create mode 100644 qiskit/qobj/exceptions.py rename qiskit/result/{_resulterror.py => exceptions.py} (95%) rename qiskit/tools/visualization/{_error.py => exceptions.py} (89%) rename qiskit/transpiler/{_transpilererror.py => exceptions.py} (91%) delete mode 100644 qiskit/unrollers/_backenderror.py rename qiskit/unrollers/{_unrollererror.py => exceptions.py} (60%) create mode 100644 qiskit/version.py diff --git a/.pylintrc b/.pylintrc index b076cb398143..e4c82c9f0565 100644 --- a/.pylintrc +++ b/.pylintrc @@ -20,7 +20,8 @@ persistent=yes # List of plugins (as comma separated values of python modules names) to load, # usually to register additional checkers. -load-plugins=pylint.extensions.docparams # enable checking of docstring args +load-plugins=pylint.extensions.docparams, # enable checking of docstring args + pylint.extensions.docstyle # basic docstring stle checks # Use multiple processes to speed up Pylint. jobs=1 @@ -34,15 +35,6 @@ unsafe-load-any-extension=no # run arbitrary code extension-pkg-whitelist=numpy -# Allow optimization of some AST trees. This will activate a peephole AST -# optimizer, which will apply various small optimizations. For instance, it can -# be used to obtain the result of joining multiple strings with the addition -# operator. Joining a lot of strings can lead to a maximum recursion error in -# Pylint and this flag can prevent that. It has one side effect, the resulting -# AST will be different than the one from reality. This option is deprecated -# and it will be removed in Pylint 2.0. -optimize-ast=no - [MESSAGES CONTROL] @@ -65,8 +57,7 @@ confidence= # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" -disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,import-star-module-level,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,long-suffix,old-ne-operator,old-octal-literal,suppressed-message,useless-suppression, - no-self-use, # disabled as it is too verbose +disable=no-self-use, # disabled as it is too verbose fixme, # disabled as TODOs would show up as warnings protected-access, # disabled as we don't follow the public vs private # convention strictly @@ -75,7 +66,11 @@ disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax # disable the "too-many/few-..." refactoring hints too-many-lines, too-many-branches, too-many-locals, too-many-nested-blocks, too-many-statements, too-many-instance-attributes, too-many-arguments, - too-many-public-methods, too-few-public-methods, too-many-ancestors + too-many-public-methods, too-few-public-methods, too-many-ancestors, + unnecessary-pass, # allow for methods with just "pass", for clarity + no-else-return, # relax "elif" after a clause with a return + docstring-first-line-empty # relax docstring style + @@ -338,7 +333,7 @@ callbacks=cb_,_cb # List of qualified module names which can have objects that can redefine # builtins. -redefining-builtins-modules=six.moves,future.builtins +redefining-builtins-modules=six.moves,future.builtins,tools.compiler [CLASSES] diff --git a/qiskit/__init__.py b/qiskit/__init__.py index 3b1d14cd2a99..00bef50b4e58 100644 --- a/qiskit/__init__.py +++ b/qiskit/__init__.py @@ -6,18 +6,16 @@ # the LICENSE.txt file in the root directory of this source tree. # pylint: disable=wrong-import-order -# pylint: disable=redefined-builtin """Main Qiskit public functionality.""" -import os import pkgutil # First, check for required Python and API version from . import _util # qiskit errors operator -from .qiskiterror import QiskitError, QISKitError +from .exceptions import QiskitError, QISKitError # The main qiskit operators from qiskit.circuit import ClassicalRegister @@ -51,10 +49,4 @@ # TODO: Remove from .wrapper._wrapper import (load_qasm_string, load_qasm_file) -# Import the wrapper, to make it available when doing "import qiskit". -from . import wrapper -from . import tools - -ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) -with open(os.path.join(ROOT_DIR, "VERSION.txt"), "r") as version_file: - __version__ = version_file.read().strip() +from .version import __version__ diff --git a/qiskit/circuit/compositegate.py b/qiskit/circuit/compositegate.py index 358a2fa4565b..f7f63057195e 100644 --- a/qiskit/circuit/compositegate.py +++ b/qiskit/circuit/compositegate.py @@ -8,7 +8,7 @@ """ Composite gate, a container for a sequence of unitary gates. """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .gate import Gate diff --git a/qiskit/circuit/gate.py b/qiskit/circuit/gate.py index be7d74fb39e5..5df64a38dc39 100644 --- a/qiskit/circuit/gate.py +++ b/qiskit/circuit/gate.py @@ -8,7 +8,7 @@ """ Unitary gate. """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .instruction import Instruction diff --git a/qiskit/circuit/instruction.py b/qiskit/circuit/instruction.py index 8fd363c78b11..bb018983cffe 100644 --- a/qiskit/circuit/instruction.py +++ b/qiskit/circuit/instruction.py @@ -28,12 +28,12 @@ import sympy from qiskit.qasm._node import _node -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .quantumregister import QuantumRegister from .classicalregister import ClassicalRegister -class Instruction(object): +class Instruction: """Generic quantum instruction.""" def __init__(self, name, param, qargs, cargs, circuit=None): diff --git a/qiskit/circuit/instructionset.py b/qiskit/circuit/instructionset.py index ed5a8d728022..7ac4c847eec9 100644 --- a/qiskit/circuit/instructionset.py +++ b/qiskit/circuit/instructionset.py @@ -8,11 +8,11 @@ """ Instruction collection. """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .instruction import Instruction -class InstructionSet(object): +class InstructionSet: """Instruction collection.""" def __init__(self): diff --git a/qiskit/circuit/measure.py b/qiskit/circuit/measure.py index 9a1d5b9aabfe..cbbbd19b9ec2 100644 --- a/qiskit/circuit/measure.py +++ b/qiskit/circuit/measure.py @@ -8,7 +8,7 @@ """ Quantum measurement in the computational basis. """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .instruction import Instruction from .instructionset import InstructionSet diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py index 9a7d8b5b7749..ae387ac19bc2 100644 --- a/qiskit/circuit/quantumcircuit.py +++ b/qiskit/circuit/quantumcircuit.py @@ -5,11 +5,10 @@ # This source code is licensed under the Apache License, Version 2.0 found in # the LICENSE.txt file in the root directory of this source tree. -# pylint: disable=cyclic-import,invalid-name - """ Quantum circuit object. """ + from collections import OrderedDict from copy import deepcopy import itertools @@ -18,12 +17,12 @@ import multiprocessing as mp from qiskit.qasm import _qasm -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .quantumregister import QuantumRegister from .classicalregister import ClassicalRegister -class QuantumCircuit(object): +class QuantumCircuit: """Quantum circuit.""" instances = 0 prefix = 'circuit' @@ -413,6 +412,7 @@ def from_qasm_str(qasm_str): def _circuit_from_qasm(qasm): + # pylint: disable=cyclic-import from qiskit.converters import ast_to_dag from qiskit.converters import dag_to_circuit ast = qasm.parse() diff --git a/qiskit/circuit/register.py b/qiskit/circuit/register.py index 8d63ce8448a4..a5004625e0bd 100644 --- a/qiskit/circuit/register.py +++ b/qiskit/circuit/register.py @@ -12,12 +12,12 @@ import logging import itertools -from qiskit.qiskiterror import QiskitError, QiskitIndexError +from qiskit.exceptions import QiskitError, QiskitIndexError logger = logging.getLogger(__name__) -class Register(object): +class Register: """Implement a generic register.""" # Counter for the number of instances in this class. diff --git a/qiskit/converters/__init__.py b/qiskit/converters/__init__.py index a67eb22b6fd5..98fffa8b6c90 100644 --- a/qiskit/converters/__init__.py +++ b/qiskit/converters/__init__.py @@ -5,8 +5,6 @@ # This source code is licensed under the Apache License, Version 2.0 found in # the LICENSE.txt file in the root directory of this source tree. -# pylint: disable=redefined-builtin - """Helper module for simplified Qiskit usage. The functions in this module provide convenience converters diff --git a/qiskit/converters/ast_to_dag.py b/qiskit/converters/ast_to_dag.py index 0c48e968b964..07908d874e79 100644 --- a/qiskit/converters/ast_to_dag.py +++ b/qiskit/converters/ast_to_dag.py @@ -14,7 +14,7 @@ from qiskit.circuit import QuantumRegister from qiskit.circuit import ClassicalRegister from qiskit.dagcircuit import DAGCircuit -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from qiskit.circuit.measure import Measure from qiskit.circuit.reset import Reset @@ -70,7 +70,7 @@ def ast_to_dag(ast): return dag -class AstInterpreter(object): +class AstInterpreter: """Interprets an OpenQASM by expanding subroutines and unrolling loops.""" def __init__(self, dag): diff --git a/qiskit/dagcircuit/__init__.py b/qiskit/dagcircuit/__init__.py index 132f6a7e6096..a5f30ee89b85 100644 --- a/qiskit/dagcircuit/__init__.py +++ b/qiskit/dagcircuit/__init__.py @@ -7,4 +7,4 @@ """Module for DAG Circuits.""" from ._dagcircuit import DAGCircuit -from ._dagcircuiterror import DAGCircuitError +from .exceptions import DAGCircuitError diff --git a/qiskit/dagcircuit/_dagcircuit.py b/qiskit/dagcircuit/_dagcircuit.py index 8596e8730573..8e75e5ed19f8 100644 --- a/qiskit/dagcircuit/_dagcircuit.py +++ b/qiskit/dagcircuit/_dagcircuit.py @@ -23,9 +23,10 @@ import itertools import networkx as nx -from qiskit import QuantumRegister, ClassicalRegister -from qiskit.circuit import Gate -from ._dagcircuiterror import DAGCircuitError +from qiskit.circuit.quantumregister import QuantumRegister +from qiskit.circuit.classicalregister import ClassicalRegister +from qiskit.circuit.gate import Gate +from .exceptions import DAGCircuitError class DAGCircuit: diff --git a/qiskit/dagcircuit/_dagcircuiterror.py b/qiskit/dagcircuit/exceptions.py similarity index 93% rename from qiskit/dagcircuit/_dagcircuiterror.py rename to qiskit/dagcircuit/exceptions.py index 60684e426b88..db012ca6c679 100644 --- a/qiskit/dagcircuit/_dagcircuiterror.py +++ b/qiskit/dagcircuit/exceptions.py @@ -8,7 +8,7 @@ """ Exception for errors raised by the DAGCircuit object. """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class DAGCircuitError(QiskitError): diff --git a/qiskit/qiskiterror.py b/qiskit/exceptions.py similarity index 100% rename from qiskit/qiskiterror.py rename to qiskit/exceptions.py diff --git a/qiskit/extensions/_extensionerror.py b/qiskit/extensions/exceptions.py similarity index 93% rename from qiskit/extensions/_extensionerror.py rename to qiskit/extensions/exceptions.py index d84a0294a837..af82e1b4791f 100644 --- a/qiskit/extensions/_extensionerror.py +++ b/qiskit/extensions/exceptions.py @@ -8,7 +8,7 @@ """ Exception for errors raised by extensions module. """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class ExtensionError(QiskitError): diff --git a/qiskit/extensions/quantum_initializer/_initializer.py b/qiskit/extensions/quantum_initializer/_initializer.py index d9510944c4ed..cd92246aae89 100644 --- a/qiskit/extensions/quantum_initializer/_initializer.py +++ b/qiskit/extensions/quantum_initializer/_initializer.py @@ -13,8 +13,8 @@ import numpy as np import scipy -from qiskit import QiskitError -from qiskit import QuantumCircuit +from qiskit.exceptions import QiskitError +from qiskit.circuit import QuantumCircuit from qiskit.circuit import CompositeGate from qiskit.circuit import Gate from qiskit.extensions.standard.cx import CnotGate diff --git a/qiskit/extensions/simulator/load.py b/qiskit/extensions/simulator/load.py index 3009e8d73b3a..887108a7c17a 100644 --- a/qiskit/extensions/simulator/load.py +++ b/qiskit/extensions/simulator/load.py @@ -11,7 +11,7 @@ from qiskit import QuantumCircuit from qiskit import QuantumRegister from qiskit.circuit import Instruction -from qiskit.extensions._extensionerror import ExtensionError +from qiskit.extensions.exceptions import ExtensionError from qiskit.extensions.standard import header # pylint: disable=unused-import diff --git a/qiskit/extensions/simulator/noise.py b/qiskit/extensions/simulator/noise.py index d18e3fb43b10..597acb06569f 100644 --- a/qiskit/extensions/simulator/noise.py +++ b/qiskit/extensions/simulator/noise.py @@ -11,7 +11,7 @@ from qiskit import QuantumCircuit from qiskit import QuantumRegister from qiskit.circuit import Instruction -from qiskit.extensions._extensionerror import ExtensionError +from qiskit.extensions.exceptions import ExtensionError from qiskit.extensions.standard import header # pylint: disable=unused-import diff --git a/qiskit/extensions/simulator/save.py b/qiskit/extensions/simulator/save.py index 925d6fb8ef1a..a38866cc2f7d 100644 --- a/qiskit/extensions/simulator/save.py +++ b/qiskit/extensions/simulator/save.py @@ -11,7 +11,7 @@ from qiskit import QuantumCircuit from qiskit import QuantumRegister from qiskit.circuit import Instruction -from qiskit.extensions._extensionerror import ExtensionError +from qiskit.extensions.exceptions import ExtensionError from qiskit.extensions.standard import header # pylint: disable=unused-import diff --git a/qiskit/extensions/simulator/snapshot.py b/qiskit/extensions/simulator/snapshot.py index 17f27b1e3496..08fe0164ddf0 100644 --- a/qiskit/extensions/simulator/snapshot.py +++ b/qiskit/extensions/simulator/snapshot.py @@ -11,7 +11,7 @@ from qiskit import QuantumCircuit from qiskit import QuantumRegister from qiskit.circuit import Instruction -from qiskit.extensions._extensionerror import ExtensionError +from qiskit.extensions.exceptions import ExtensionError from qiskit.extensions.standard import header # pylint: disable=unused-import diff --git a/qiskit/extensions/standard/barrier.py b/qiskit/extensions/standard/barrier.py index 5d6cd77e36bf..44351128a4a8 100644 --- a/qiskit/extensions/standard/barrier.py +++ b/qiskit/extensions/standard/barrier.py @@ -8,8 +8,8 @@ """ Barrier instruction. """ -from qiskit import QuantumCircuit -from qiskit import QuantumRegister +from qiskit.circuit import QuantumCircuit +from qiskit.circuit import QuantumRegister from qiskit.circuit import Instruction from qiskit.extensions.standard import header # pylint: disable=unused-import diff --git a/qiskit/mapper/__init__.py b/qiskit/mapper/__init__.py index 7344becdbc7d..2ec1fcd4b8cd 100644 --- a/qiskit/mapper/__init__.py +++ b/qiskit/mapper/__init__.py @@ -9,7 +9,6 @@ from ._compiling import two_qubit_kak, euler_angles_1q from ._coupling import CouplingMap -from ._couplingerror import CouplingError from ._layout import Layout -from ._mappererror import MapperError +from .exceptions import CouplingError, MapperError from ._mapping import swap_mapper diff --git a/qiskit/mapper/_compiling.py b/qiskit/mapper/_compiling.py index d864b2c1e25e..5c4d291f77ef 100644 --- a/qiskit/mapper/_compiling.py +++ b/qiskit/mapper/_compiling.py @@ -15,7 +15,7 @@ import numpy as np import scipy.linalg as la -from ._mappererror import MapperError +from .exceptions import MapperError def euler_angles_1q(unitary_matrix): diff --git a/qiskit/mapper/_coupling.py b/qiskit/mapper/_coupling.py index 85b16a1bb205..b8cb813fc4a7 100644 --- a/qiskit/mapper/_coupling.py +++ b/qiskit/mapper/_coupling.py @@ -18,7 +18,7 @@ import warnings import networkx as nx -from ._couplingerror import CouplingError +from .exceptions import CouplingError class CouplingMap: diff --git a/qiskit/mapper/_couplingerror.py b/qiskit/mapper/_couplingerror.py deleted file mode 100644 index d7b32e51a9fb..000000000000 --- a/qiskit/mapper/_couplingerror.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2017, IBM. -# -# This source code is licensed under the Apache License, Version 2.0 found in -# the LICENSE.txt file in the root directory of this source tree. - -""" -Exception for errors raised by the CouplingMap object. -""" -from qiskit import QiskitError - - -class CouplingError(QiskitError): - """Base class for errors raised by the coupling graph object.""" - - def __init__(self, *msg): - """Set the error message.""" - super().__init__(*msg) - self.msg = ' '.join(msg) - - def __str__(self): - """Return the message.""" - return repr(self.msg) diff --git a/qiskit/mapper/_layout.py b/qiskit/mapper/_layout.py index 02d4d178013a..41476b411edf 100644 --- a/qiskit/mapper/_layout.py +++ b/qiskit/mapper/_layout.py @@ -12,8 +12,7 @@ Virtual (qu)bits are tuples (eg, `(QuantumRegister(3, 'qr'),2)`. Physical (qu)bits are numbers. """ - -from qiskit import QiskitError +from qiskit.mapper.exceptions import LayoutError class Layout(dict): @@ -182,16 +181,3 @@ def combine_into_edge_map(self, another_layout): edge_map[virtual] = another_layout[physical] return edge_map - - -class LayoutError(QiskitError): - """Errors raised by the layout object.""" - - def __init__(self, *msg): - """Set the error message.""" - super().__init__(*msg) - self.msg = ' '.join(msg) - - def __str__(self): - """Return the message.""" - return repr(self.msg) diff --git a/qiskit/mapper/_mappererror.py b/qiskit/mapper/_mappererror.py deleted file mode 100644 index 107ba6b8a4a3..000000000000 --- a/qiskit/mapper/_mappererror.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2017, IBM. -# -# This source code is licensed under the Apache License, Version 2.0 found in -# the LICENSE.txt file in the root directory of this source tree. - -""" -Exception for errors raised by mapper module. -""" - -from qiskit import QiskitError - - -class MapperError(QiskitError): - """Base class for errors raised by mapper module.""" - - def __init__(self, *message): - """Set the error message.""" - super().__init__(*message) - self.message = ' '.join(message) - - def __str__(self): - """Return the message.""" - return repr(self.message) diff --git a/qiskit/mapper/_mapping.py b/qiskit/mapper/_mapping.py index 014a2547718a..e508886d1db0 100644 --- a/qiskit/mapper/_mapping.py +++ b/qiskit/mapper/_mapping.py @@ -17,12 +17,14 @@ import numpy as np import sympy +from qiskit.circuit.quantumregister import QuantumRegister from qiskit.qasm import _node as node -from qiskit.mapper import MapperError from qiskit.dagcircuit import DAGCircuit -from qiskit import QuantumRegister from qiskit.extensions.standard.swap import SwapGate +from .exceptions import MapperError + + logger = logging.getLogger(__name__) # Notes: diff --git a/qiskit/mapper/exceptions.py b/qiskit/mapper/exceptions.py new file mode 100644 index 000000000000..46957c764203 --- /dev/null +++ b/qiskit/mapper/exceptions.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- + +# Copyright 2017, IBM. +# +# This source code is licensed under the Apache License, Version 2.0 found in +# the LICENSE.txt file in the root directory of this source tree. + +""" +Exception for errors raised by mapper module. +""" +from qiskit.exceptions import QiskitError + + +class MapperError(QiskitError): + """Base class for errors raised by mapper module.""" + + def __init__(self, *message): + """Set the error message.""" + super().__init__(*message) + self.message = ' '.join(message) + + def __str__(self): + """Return the message.""" + return repr(self.message) + + +class CouplingError(QiskitError): + """Base class for errors raised by the coupling graph object.""" + + def __init__(self, *msg): + """Set the error message.""" + super().__init__(*msg) + self.msg = ' '.join(msg) + + def __str__(self): + """Return the message.""" + return repr(self.msg) + + +class LayoutError(QiskitError): + """Errors raised by the layout object.""" + + def __init__(self, *msg): + """Set the error message.""" + super().__init__(*msg) + self.msg = ' '.join(msg) + + def __str__(self): + """Return the message.""" + return repr(self.msg) diff --git a/qiskit/providers/basebackend.py b/qiskit/providers/basebackend.py index 1fc25c531f10..e69afae74185 100644 --- a/qiskit/providers/basebackend.py +++ b/qiskit/providers/basebackend.py @@ -12,7 +12,7 @@ """ from abc import ABC, abstractmethod -import qiskit +from qiskit.version import __version__ from .models import BackendStatus @@ -75,7 +75,7 @@ def status(self): BackendStatus: the status of the backend. """ return BackendStatus(backend_name=self.name(), - backend_version=qiskit.__version__, + backend_version=__version__, operational=True, pending_jobs=0, status_msg='') diff --git a/qiskit/providers/builtinsimulators/__init__.py b/qiskit/providers/builtinsimulators/__init__.py index 02042f287b7e..451900d84833 100644 --- a/qiskit/providers/builtinsimulators/__init__.py +++ b/qiskit/providers/builtinsimulators/__init__.py @@ -12,7 +12,7 @@ from .qasm_simulator import QasmSimulatorPy from .statevector_simulator import StatevectorSimulatorPy from .unitary_simulator import UnitarySimulatorPy -from ._simulatorerror import SimulatorError +from .exceptions import SimulatorError # Global instance to be used as the entry point for convenience. BasicAer = SimulatorsProvider() # pylint: disable=invalid-name diff --git a/qiskit/providers/builtinsimulators/_simulatortools.py b/qiskit/providers/builtinsimulators/_simulatortools.py index a2b4dc5f544e..4fb83d83e64d 100644 --- a/qiskit/providers/builtinsimulators/_simulatortools.py +++ b/qiskit/providers/builtinsimulators/_simulatortools.py @@ -16,7 +16,7 @@ from string import ascii_uppercase, ascii_lowercase import numpy as np -from qiskit import QiskitError +from qiskit.exceptions import QiskitError def single_gate_params(gate, params=None): @@ -30,7 +30,7 @@ def single_gate_params(gate, params=None): Raises: QiskitError: if the gate name is not valid """ - if gate == 'U' or gate == 'u3': + if gate in ('U', 'u3'): return params[0], params[1], params[2] elif gate == 'u2': return np.pi / 2, params[0], params[1] diff --git a/qiskit/providers/builtinsimulators/_simulatorerror.py b/qiskit/providers/builtinsimulators/exceptions.py similarity index 93% rename from qiskit/providers/builtinsimulators/_simulatorerror.py rename to qiskit/providers/builtinsimulators/exceptions.py index 91534ecd8f44..c3d705099d32 100644 --- a/qiskit/providers/builtinsimulators/_simulatorerror.py +++ b/qiskit/providers/builtinsimulators/exceptions.py @@ -9,7 +9,7 @@ Exception for errors raised by simulators. """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class SimulatorError(QiskitError): diff --git a/qiskit/providers/builtinsimulators/qasm_simulator.py b/qiskit/providers/builtinsimulators/qasm_simulator.py index b91d78c3ab19..638264b81a3f 100644 --- a/qiskit/providers/builtinsimulators/qasm_simulator.py +++ b/qiskit/providers/builtinsimulators/qasm_simulator.py @@ -37,7 +37,7 @@ from qiskit.result import Result from qiskit.providers import BaseBackend from qiskit.providers.builtinsimulators.simulatorsjob import SimulatorsJob -from ._simulatorerror import SimulatorError +from .exceptions import SimulatorError from ._simulatortools import single_gate_matrix from ._simulatortools import cx_gate_matrix from ._simulatortools import einsum_vecmul_index @@ -188,7 +188,7 @@ def _add_sample_measure(self, measure_params, num_samples): list: A list of memory values in hex format. """ # Get unique qubits that are actually measured - measured_qubits = list(set([qubit for qubit, clbit in measure_params])) + measured_qubits = list({qubit for qubit, clbit in measure_params}) num_measured = len(measured_qubits) # Axis for numpy.sum to compute probabilities axis = list(range(self._number_of_qubits)) @@ -566,8 +566,8 @@ def _validate(self, qobj): for experiment in qobj.experiments: name = experiment.header.name if experiment.config.memory_slots == 0: - logger.warning('No classical registers in circuit "%s", ' + + logger.warning('No classical registers in circuit "%s", ' 'counts will be empty.', name) elif 'measure' not in [op.name for op in experiment.instructions]: - logger.warning('No measurements in circuit "%s", ' + + logger.warning('No measurements in circuit "%s", ' 'classical register will remain all zeros.', name) diff --git a/qiskit/providers/builtinsimulators/simulatorsprovider.py b/qiskit/providers/builtinsimulators/simulatorsprovider.py index 2b6587830b56..f8d8bb583c18 100644 --- a/qiskit/providers/builtinsimulators/simulatorsprovider.py +++ b/qiskit/providers/builtinsimulators/simulatorsprovider.py @@ -11,7 +11,7 @@ from collections import OrderedDict import logging -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from qiskit.providers import BaseProvider from qiskit.providers.exceptions import QiskitBackendNotFoundError from qiskit.providers.providerutils import resolve_backend_name, filter_backends diff --git a/qiskit/providers/builtinsimulators/statevector_simulator.py b/qiskit/providers/builtinsimulators/statevector_simulator.py index 6f5e6d8c3e79..794142d46c5b 100644 --- a/qiskit/providers/builtinsimulators/statevector_simulator.py +++ b/qiskit/providers/builtinsimulators/statevector_simulator.py @@ -23,7 +23,7 @@ import logging from math import log2 from qiskit._util import local_hardware_info -from qiskit.providers.builtinsimulators._simulatorerror import SimulatorError +from qiskit.providers.builtinsimulators.exceptions import SimulatorError from qiskit.providers.models import BackendConfiguration from .qasm_simulator import QasmSimulatorPy @@ -144,7 +144,7 @@ def _validate(self, qobj): for experiment in qobj.experiments: name = experiment.header.name if getattr(experiment.config, 'shots', 1) != 1: - logger.info('"{}" only supports 1 shot. ' + - 'Setting shots=1 for circuit "{}".', + logger.info('"%s" only supports 1 shot. ' + 'Setting shots=1 for circuit "%s".', self.name(), name) experiment.config.shots = 1 diff --git a/qiskit/providers/builtinsimulators/unitary_simulator.py b/qiskit/providers/builtinsimulators/unitary_simulator.py index 482431242253..01df84495eb4 100644 --- a/qiskit/providers/builtinsimulators/unitary_simulator.py +++ b/qiskit/providers/builtinsimulators/unitary_simulator.py @@ -31,7 +31,7 @@ from qiskit.providers import BaseBackend from qiskit.providers.builtinsimulators.simulatorsjob import SimulatorsJob from qiskit.result import Result -from ._simulatorerror import SimulatorError +from .exceptions import SimulatorError from ._simulatortools import single_gate_matrix from ._simulatortools import cx_gate_matrix from ._simulatortools import einsum_matmul_index @@ -367,7 +367,7 @@ def _validate(self, qobj): for experiment in qobj.experiments: name = experiment.header.name if getattr(experiment.config, 'shots', 1) != 1: - logger.info('"%s" only supports 1 shot. ' + + logger.info('"%s" only supports 1 shot. ' 'Setting shots=1 for circuit "%s".', self.name(), name) experiment.config.shots = 1 diff --git a/qiskit/providers/exceptions.py b/qiskit/providers/exceptions.py index 030d64ff1cab..d12b7f6ef680 100644 --- a/qiskit/providers/exceptions.py +++ b/qiskit/providers/exceptions.py @@ -9,7 +9,7 @@ Exceptions for errors raised while handling backends and jobs. """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class JobError(QiskitError): diff --git a/qiskit/providers/ibmq/__init__.py b/qiskit/providers/ibmq/__init__.py index 2205510c6a11..72579cedfb95 100644 --- a/qiskit/providers/ibmq/__init__.py +++ b/qiskit/providers/ibmq/__init__.py @@ -6,7 +6,7 @@ # the LICENSE.txt file in the root directory of this source tree. """Backends provided by IBM Quantum Experience.""" -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .ibmqprovider import IBMQProvider from .ibmqbackend import IBMQBackend from .ibmqjob import IBMQJob diff --git a/qiskit/providers/ibmq/api/ibmqconnector.py b/qiskit/providers/ibmq/api/ibmqconnector.py index 61f3e74f6725..b49a43bb50d0 100644 --- a/qiskit/providers/ibmq/api/ibmqconnector.py +++ b/qiskit/providers/ibmq/api/ibmqconnector.py @@ -60,7 +60,7 @@ def get_backends_url(config, hub, group, project): return '/Backends/v/1' -class _Credentials(object): +class _Credentials: """ The Credential class to manage the tokens """ @@ -202,7 +202,7 @@ def set_user_id(self, user_id): self.data_credentials['userId'] = user_id -class _Request(object): +class _Request: """ The Request class to manage the methods """ @@ -460,7 +460,7 @@ def _parse_response(self, response): return True -class IBMQConnector(object): +class IBMQConnector: """ The Connector Class to do request to QX Platform """ diff --git a/qiskit/providers/ibmq/credentials/__init__.py b/qiskit/providers/ibmq/credentials/__init__.py index 243c3d2b3fae..d701fd6d513b 100644 --- a/qiskit/providers/ibmq/credentials/__init__.py +++ b/qiskit/providers/ibmq/credentials/__init__.py @@ -11,7 +11,7 @@ from collections import OrderedDict import logging -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from .credentials import Credentials from ._configrc import read_credentials_from_qiskitrc, store_credentials from ._environ import read_credentials_from_environ diff --git a/qiskit/providers/ibmq/credentials/_configrc.py b/qiskit/providers/ibmq/credentials/_configrc.py index 4b7c2c8ebc30..332bdabedf3f 100644 --- a/qiskit/providers/ibmq/credentials/_configrc.py +++ b/qiskit/providers/ibmq/credentials/_configrc.py @@ -15,7 +15,7 @@ from collections import OrderedDict from configparser import ConfigParser, ParsingError -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from .credentials import Credentials DEFAULT_QISKITRC_FILE = os.path.join(os.path.expanduser("~"), diff --git a/qiskit/providers/ibmq/credentials/_qconfig.py b/qiskit/providers/ibmq/credentials/_qconfig.py index 6e5f44b0508b..e6b087f86a41 100644 --- a/qiskit/providers/ibmq/credentials/_qconfig.py +++ b/qiskit/providers/ibmq/credentials/_qconfig.py @@ -13,7 +13,7 @@ from collections import OrderedDict from importlib.util import module_from_spec, spec_from_file_location -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from .credentials import Credentials DEFAULT_QCONFIG_FILE = 'Qconfig.py' diff --git a/qiskit/providers/ibmq/credentials/credentials.py b/qiskit/providers/ibmq/credentials/credentials.py index c5b2b51a9312..be58496a65fa 100644 --- a/qiskit/providers/ibmq/credentials/credentials.py +++ b/qiskit/providers/ibmq/credentials/credentials.py @@ -18,7 +18,7 @@ TEMPLATE_IBMQ_HUBS = '{prefix}/Hubs/{hub}/Groups/{group}/Projects/{project}' -class Credentials(object): +class Credentials: """IBM Q account credentials. Note that, by convention, two credentials that have the same hub, group diff --git a/qiskit/providers/ibmq/ibmqaccounterror.py b/qiskit/providers/ibmq/exceptions.py similarity index 59% rename from qiskit/providers/ibmq/ibmqaccounterror.py rename to qiskit/providers/ibmq/exceptions.py index 65b71e2cb3c0..f869ddeb0a13 100644 --- a/qiskit/providers/ibmq/ibmqaccounterror.py +++ b/qiskit/providers/ibmq/exceptions.py @@ -8,10 +8,19 @@ """ Exception for errors raised by jobs. """ - -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class IBMQAccountError(QiskitError): """Base class for errors raised by account management.""" pass + + +class IBMQBackendError(QiskitError): + """IBM Q Backend Errors""" + pass + + +class IBMQBackendValueError(IBMQBackendError, ValueError): + """Value errors thrown within IBMQBackend """ + pass diff --git a/qiskit/providers/ibmq/ibmqbackend.py b/qiskit/providers/ibmq/ibmqbackend.py index ececd2bbf2a2..7420e94b1779 100644 --- a/qiskit/providers/ibmq/ibmqbackend.py +++ b/qiskit/providers/ibmq/ibmqbackend.py @@ -14,11 +14,11 @@ from marshmallow import ValidationError -from qiskit import QiskitError from qiskit.providers import BaseBackend, JobStatus from qiskit.providers.models import BackendStatus, BackendProperties from .api import ApiError +from .exceptions import IBMQBackendError, IBMQBackendValueError from .ibmqjob import IBMQJob, IBMQJobPreQobj logger = logging.getLogger(__name__) @@ -222,16 +222,6 @@ def __repr__(self): self.__class__.__name__, self.name(), credentials_info) -class IBMQBackendError(QiskitError): - """IBM Q Backend Errors""" - pass - - -class IBMQBackendValueError(IBMQBackendError, ValueError): - """Value errors thrown within IBMQBackend """ - pass - - def _job_class_from_job_response(job_response): is_qobj = job_response.get('kind', None) == 'q-object' return IBMQJob if is_qobj else IBMQJobPreQobj diff --git a/qiskit/providers/ibmq/ibmqjob.py b/qiskit/providers/ibmq/ibmqjob.py index e06b34813acf..bc7f415fecee 100644 --- a/qiskit/providers/ibmq/ibmqjob.py +++ b/qiskit/providers/ibmq/ibmqjob.py @@ -523,7 +523,6 @@ def _result_from_job_response(self, job_response): def qobj(self): """Return the Qobj submitted for this job.""" warnings.warn('This job has not been submitted using Qobj.') - return None def _reorder_bits(job_data): diff --git a/qiskit/providers/ibmq/ibmqprovider.py b/qiskit/providers/ibmq/ibmqprovider.py index 2b16649e3732..0a2d997c8382 100644 --- a/qiskit/providers/ibmq/ibmqprovider.py +++ b/qiskit/providers/ibmq/ibmqprovider.py @@ -15,7 +15,7 @@ from .credentials._configrc import remove_credentials from .credentials import (Credentials, read_credentials_from_qiskitrc, store_credentials, discover_credentials) -from .ibmqaccounterror import IBMQAccountError +from .exceptions import IBMQAccountError from .ibmqsingleprovider import IBMQSingleProvider QE_URL = 'https://quantumexperience.ng.bluemix.net/api' diff --git a/qiskit/providers/legacysimulators/legacyprovider.py b/qiskit/providers/legacysimulators/legacyprovider.py index bab5748a1641..bba8af7b98d2 100644 --- a/qiskit/providers/legacysimulators/legacyprovider.py +++ b/qiskit/providers/legacysimulators/legacyprovider.py @@ -11,7 +11,7 @@ import warnings from collections import OrderedDict -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from qiskit.providers.builtinsimulators import SimulatorsProvider from .qasm_simulator import QasmSimulator, CliffordSimulator diff --git a/qiskit/qasm/__init__.py b/qiskit/qasm/__init__.py index 5cfb933934b5..d79e3a33760a 100644 --- a/qiskit/qasm/__init__.py +++ b/qiskit/qasm/__init__.py @@ -13,4 +13,4 @@ from sympy import pi from ._qasm import Qasm -from ._qasmerror import QasmError +from .exceptions import QasmError diff --git a/qiskit/qasm/_node/_node.py b/qiskit/qasm/_node/_node.py index 52b9def21826..175e8df0a5f2 100644 --- a/qiskit/qasm/_node/_node.py +++ b/qiskit/qasm/_node/_node.py @@ -10,7 +10,7 @@ """ -class Node(object): +class Node: """Base node object for the OPENQASM syntax tree.""" def __init__(self, type, children=None, root=None): diff --git a/qiskit/qasm/_qasm.py b/qiskit/qasm/_qasm.py index 5d45518fcb35..8d030d78ea4e 100644 --- a/qiskit/qasm/_qasm.py +++ b/qiskit/qasm/_qasm.py @@ -8,11 +8,11 @@ """ OPENQASM circuit object. """ -from ._qasmerror import QasmError +from .exceptions import QasmError from ._qasmparser import QasmParser -class Qasm(object): +class Qasm: """OPENQASM circuit object.""" def __init__(self, filename=None, data=None): diff --git a/qiskit/qasm/_qasmlexer.py b/qiskit/qasm/_qasmlexer.py index 6509ca6940ab..47ae278db1a5 100644 --- a/qiskit/qasm/_qasmlexer.py +++ b/qiskit/qasm/_qasmlexer.py @@ -18,20 +18,20 @@ from sympy import Number from . import _node as node -from ._qasmerror import QasmError +from .exceptions import QasmError CORE_LIBS_PATH = os.path.join(os.path.dirname(__file__), 'libs') CORE_LIBS = os.listdir(CORE_LIBS_PATH) -class QasmLexer(object): +class QasmLexer: """OPENQASM Lexer. This is a wrapper around the PLY lexer to support the "include" statement by creating a stack of lexers. """ # pylint: disable=invalid-name,missing-docstring,unused-argument - # pylint: disable=attribute-defined-outside-init + # pylint: disable=attribute-defined-outside-init,bad-docstring-quotes def __mklexer__(self, filename): """Create a PLY lexer.""" diff --git a/qiskit/qasm/_qasmparser.py b/qiskit/qasm/_qasmparser.py index 6698d9c8539f..3086e966d1cc 100644 --- a/qiskit/qasm/_qasmparser.py +++ b/qiskit/qasm/_qasmparser.py @@ -16,11 +16,11 @@ import sympy from . import _node as node -from ._qasmerror import QasmError +from .exceptions import QasmError from ._qasmlexer import QasmLexer -class QasmParser(object): +class QasmParser: """OPENQASM Parser.""" # pylint: disable=unused-argument,missing-docstring,invalid-name diff --git a/qiskit/qasm/_qasmerror.py b/qiskit/qasm/exceptions.py similarity index 92% rename from qiskit/qasm/_qasmerror.py rename to qiskit/qasm/exceptions.py index 0541aa78f003..a5d0cfb27239 100644 --- a/qiskit/qasm/_qasmerror.py +++ b/qiskit/qasm/exceptions.py @@ -9,7 +9,7 @@ Exception for errors raised while parsing OPENQASM. """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError class QasmError(QiskitError): diff --git a/qiskit/qobj/__init__.py b/qiskit/qobj/__init__.py index dd87ee8e159d..945e4090bb8b 100644 --- a/qiskit/qobj/__init__.py +++ b/qiskit/qobj/__init__.py @@ -10,4 +10,5 @@ from ._qobj import (Qobj, QobjConfig, QobjExperiment, QobjInstruction, QobjItem, QobjHeader, QobjExperimentHeader) from ._converter import qobj_to_dict -from ._validation import validate_qobj_against_schema, QobjValidationError +from ._validation import validate_qobj_against_schema +from .exceptions import QobjValidationError diff --git a/qiskit/qobj/_converter.py b/qiskit/qobj/_converter.py index bc259942eb5f..583d715603d6 100644 --- a/qiskit/qobj/_converter.py +++ b/qiskit/qobj/_converter.py @@ -8,7 +8,7 @@ """Qobj conversion helpers.""" import logging -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from ._qobj import QOBJ_VERSION from ._qobj import QobjItem diff --git a/qiskit/qobj/_qobj.py b/qiskit/qobj/_qobj.py index d4706c8b219f..633aaa21387e 100644 --- a/qiskit/qobj/_qobj.py +++ b/qiskit/qobj/_qobj.py @@ -12,7 +12,7 @@ import numpy import sympy -from ._validation import QobjValidationError +from .exceptions import QobjValidationError from ._utils import QobjType # Current version of the Qobj schema. diff --git a/qiskit/qobj/_schema_validation.py b/qiskit/qobj/_schema_validation.py index 0187ab1f33b8..3c076d40c954 100644 --- a/qiskit/qobj/_schema_validation.py +++ b/qiskit/qobj/_schema_validation.py @@ -12,8 +12,7 @@ import logging import jsonschema -from qiskit import QiskitError -from qiskit import __path__ as qiskit_path +from .exceptions import SchemaValidationError, _SummaryValidationError logger = logging.getLogger(__name__) @@ -101,8 +100,7 @@ def _get_validator(name, schema=None, check_schema=True, def _load_schemas_and_validators(): """Load all default schemas into `_SCHEMAS`.""" - - schema_base_path = qiskit_path[0] + schema_base_path = os.path.join(os.path.dirname(__file__), '..') for name, path in _DEFAULT_SCHEMA_PATHS.items(): _load_schema(os.path.join(schema_base_path, path), name) _get_validator(name) @@ -212,32 +210,3 @@ def _format(item): lines.append(_format_causes(suberr, level+1)) return '\n'.join(lines) - - -class SchemaValidationError(QiskitError): - """Represents an error during JSON Schema validation.""" - pass - - -class _SummaryValidationError(QiskitError): - """Cut off the message of a jsonschema.ValidationError for compactness. - - Cut off the message of a jsonschema.ValidationError to avoid printing - noise in the standard output. The original validation error is in the - `validation_error` property. - - Attributes: - validation_error (jsonschama.ValidationError): original validations - error. - """ - - def __init__(self, validation_error): - super().__init__(self._shorten_message(str(validation_error))) - self.validation_error = validation_error - - def _shorten_message(self, message): - if len(message) > 1000: - return 'Original message too long to be useful: {}[...]'\ - ''.format(message[:1000]) - - return message diff --git a/qiskit/qobj/_validation.py b/qiskit/qobj/_validation.py index 725294493fb5..ff5a15f4c760 100644 --- a/qiskit/qobj/_validation.py +++ b/qiskit/qobj/_validation.py @@ -7,15 +7,9 @@ """QObj validation module for validation against JSON schemas.""" -from qiskit.qiskiterror import QiskitError from . import _schema_validation -class QobjValidationError(QiskitError): - """Represents an error during Qobj validation.""" - pass - - def validate_qobj_against_schema(qobj): """Validates a QObj against a schema.""" _schema_validation.validate_json_against_schema( diff --git a/qiskit/qobj/exceptions.py b/qiskit/qobj/exceptions.py new file mode 100644 index 000000000000..1960a6be59b7 --- /dev/null +++ b/qiskit/qobj/exceptions.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018, IBM. +# +# This source code is licensed under the Apache License, Version 2.0 found in +# the LICENSE.txt file in the root directory of this source tree. + +"""Error handling for Qobj.""" +from qiskit.exceptions import QiskitError + + +class SchemaValidationError(QiskitError): + """Represents an error during JSON Schema validation.""" + pass + + +class _SummaryValidationError(QiskitError): + """Cut off the message of a jsonschema.ValidationError for compactness. + + Cut off the message of a jsonschema.ValidationError to avoid printing + noise in the standard output. The original validation error is in the + `validation_error` property. + + Attributes: + validation_error (jsonschema.ValidationError): original validations + error. + """ + + def __init__(self, validation_error): + super().__init__(self._shorten_message(str(validation_error))) + self.validation_error = validation_error + + def _shorten_message(self, message): + if len(message) > 1000: + return 'Original message too long to be useful: {}[...]'\ + ''.format(message[:1000]) + + return message + + +class QobjValidationError(QiskitError): + """Represents an error during Qobj validation.""" + pass diff --git a/qiskit/quantum_info/operators/pauli.py b/qiskit/quantum_info/operators/pauli.py index 19fb91ec94f9..91c2082e538b 100644 --- a/qiskit/quantum_info/operators/pauli.py +++ b/qiskit/quantum_info/operators/pauli.py @@ -17,7 +17,7 @@ import numpy as np from scipy import sparse -from qiskit import QiskitError +from qiskit.exceptions import QiskitError def _make_np_bool(arr): diff --git a/qiskit/quantum_info/states/_states.py b/qiskit/quantum_info/states/_states.py index 87647e482044..57eb295c3b94 100644 --- a/qiskit/quantum_info/states/_states.py +++ b/qiskit/quantum_info/states/_states.py @@ -14,7 +14,7 @@ """ import numpy as np -from qiskit import QiskitError +from qiskit.exceptions import QiskitError def basis_state(str_state, num): diff --git a/qiskit/result/__init__.py b/qiskit/result/__init__.py index 3eaf0d0fd115..901516e3ea33 100644 --- a/qiskit/result/__init__.py +++ b/qiskit/result/__init__.py @@ -8,4 +8,4 @@ """Module for working with results.""" from .result import Result -from ._resulterror import ResultError +from .exceptions import ResultError diff --git a/qiskit/result/_resulterror.py b/qiskit/result/exceptions.py similarity index 95% rename from qiskit/result/_resulterror.py rename to qiskit/result/exceptions.py index 5b011530ce18..95fa4abf238c 100644 --- a/qiskit/result/_resulterror.py +++ b/qiskit/result/exceptions.py @@ -9,7 +9,7 @@ Exception for errors when there's an error in the Result """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class ResultError(QiskitError): diff --git a/qiskit/result/result.py b/qiskit/result/result.py index 719aa9a0f0f5..3f34e80d07eb 100644 --- a/qiskit/result/result.py +++ b/qiskit/result/result.py @@ -8,7 +8,9 @@ """Model for schema-conformant Results.""" import warnings -from qiskit import QiskitError, QuantumCircuit +from qiskit.circuit.quantumcircuit import QuantumCircuit +from qiskit.exceptions import QiskitError + from qiskit.validation.base import BaseModel, bind_schema from .postprocess import (format_counts, format_statevector, format_unitary, format_memory) diff --git a/qiskit/tools/compiler.py b/qiskit/tools/compiler.py index 01b5fe5ee869..19942250e188 100644 --- a/qiskit/tools/compiler.py +++ b/qiskit/tools/compiler.py @@ -12,7 +12,7 @@ from qiskit import transpiler from qiskit.transpiler._passmanager import PassManager from qiskit.converters import circuits_to_qobj -from qiskit import QiskitError +from qiskit.exceptions import QiskitError logger = logging.getLogger(__name__) diff --git a/qiskit/tools/events/_pubsub.py b/qiskit/tools/events/_pubsub.py index af0b4cd4374a..5eaea22b9044 100644 --- a/qiskit/tools/events/_pubsub.py +++ b/qiskit/tools/events/_pubsub.py @@ -9,10 +9,10 @@ Message broker for the Publisher / Subscriber mechanism """ -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError -class _Broker(object): +class _Broker: """The event/message broker. It's a singleton. In order to keep consistency across all the components, it would be great to @@ -114,7 +114,7 @@ def clear(self): self._subscribers.clear() -class Publisher(object): +class Publisher: """ Represents a Publisher, every component (class) can become a Publisher and send events by inheriting this class. Functions can call this class like: Publisher().publish("event", args, ... ) @@ -128,7 +128,7 @@ def publish(self, event, *args, **kwargs): return self._broker.dispatch(event, *args, **kwargs) -class Subscriber(object): +class Subscriber: """ Represents a Subscriber, every component (class) can become a Subscriber and subscribe to events, that will call callback functions when they are emitted. """ diff --git a/qiskit/tools/jupyter/_backend_monitor.py b/qiskit/tools/jupyter/_backend_monitor.py index 0736b8848069..e4d03f3e7bf3 100644 --- a/qiskit/tools/jupyter/_backend_monitor.py +++ b/qiskit/tools/jupyter/_backend_monitor.py @@ -19,7 +19,7 @@ from matplotlib.patches import Circle # pylint: disable=import-error import ipywidgets as widgets # pylint: disable=import-error from qiskit.providers.ibmq import IBMQ -from qiskit.qiskiterror import QISKitError +from qiskit.exceptions import QISKitError from qiskit.providers.ibmq.ibmqbackend import IBMQBackend from qiskit.tools.visualization._gate_map import plot_gate_map diff --git a/qiskit/tools/monitor/backend_overview.py b/qiskit/tools/monitor/backend_overview.py index 793bd7a87e6c..35c69ac42309 100644 --- a/qiskit/tools/monitor/backend_overview.py +++ b/qiskit/tools/monitor/backend_overview.py @@ -9,7 +9,7 @@ """ import math -from qiskit.qiskiterror import QISKitError +from qiskit.exceptions import QISKitError from qiskit.providers.ibmq import IBMQ from qiskit.providers.ibmq.ibmqbackend import IBMQBackend @@ -166,7 +166,7 @@ def backend_overview(): str_list[3] += 'Pending Jobs: %s' % stati[count].pending_jobs str_list[4] += (' '*(max_len-len(str_list[4]))+offset) - str_list[4] += 'Least busy: %s' % (True if count == least_pending_idx else False) + str_list[4] += 'Least busy: %s' % (count == least_pending_idx) str_list[5] += (' '*(max_len-len(str_list[5]))+offset) str_list[5] += 'Operational: %s' % stati[count].operational diff --git a/qiskit/tools/monitor/job_monitor.py b/qiskit/tools/monitor/job_monitor.py index c2d7753dc40e..62bd55210779 100644 --- a/qiskit/tools/monitor/job_monitor.py +++ b/qiskit/tools/monitor/job_monitor.py @@ -11,7 +11,7 @@ import sys import time import threading -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError _NOTEBOOK_ENV = False if ('ipykernel' in sys.modules) and ('spyder' not in sys.modules): diff --git a/qiskit/tools/parallel.py b/qiskit/tools/parallel.py index 420f40513344..46714c25ade9 100644 --- a/qiskit/tools/parallel.py +++ b/qiskit/tools/parallel.py @@ -46,7 +46,7 @@ import os import platform from multiprocessing import Pool -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from qiskit._util import local_hardware_info from qiskit.tools.events._pubsub import Publisher diff --git a/qiskit/tools/qcvv/tomography.py b/qiskit/tools/qcvv/tomography.py index 7915bb7793b1..c9a7a2ea4710 100644 --- a/qiskit/tools/qcvv/tomography.py +++ b/qiskit/tools/qcvv/tomography.py @@ -50,7 +50,7 @@ import numpy as np from qiskit import QuantumCircuit -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from qiskit.tools.qi.qi import vectorize, devectorize, outer logger = logging.getLogger(__name__) diff --git a/qiskit/tools/qi/qi.py b/qiskit/tools/qi/qi.py index 30d6a14cc431..b3878cc81e2b 100644 --- a/qiskit/tools/qi/qi.py +++ b/qiskit/tools/qi/qi.py @@ -22,7 +22,7 @@ from scipy.stats import unitary_group -from qiskit import QiskitError +from qiskit.exceptions import QiskitError from qiskit.quantum_info import pauli_group from qiskit.quantum_info import state_fidelity as new_state_fidelity diff --git a/qiskit/tools/visualization/__init__.py b/qiskit/tools/visualization/__init__.py index 4dd471c307e4..773869701cf0 100644 --- a/qiskit/tools/visualization/__init__.py +++ b/qiskit/tools/visualization/__init__.py @@ -21,7 +21,7 @@ from ._circuit_visualization import circuit_drawer, plot_circuit, generate_latex_source, \ latex_circuit_drawer, matplotlib_circuit_drawer, _text_circuit_drawer, qx_color_scheme -from ._error import VisualizationError +from .exceptions import VisualizationError from ._matplotlib import HAS_MATPLOTLIB if ('ipykernel' in sys.modules) and ('spyder' not in sys.modules): diff --git a/qiskit/tools/visualization/_circuit_visualization.py b/qiskit/tools/visualization/_circuit_visualization.py index 2fcc21a4279d..b1f007fd23b1 100644 --- a/qiskit/tools/visualization/_circuit_visualization.py +++ b/qiskit/tools/visualization/_circuit_visualization.py @@ -25,7 +25,7 @@ from PIL import Image -from qiskit.tools.visualization import _error +from qiskit.tools.visualization import exceptions from qiskit.tools.visualization import _latex from qiskit.tools.visualization import _text from qiskit.tools.visualization import _utils @@ -236,7 +236,7 @@ def circuit_drawer(circuit, plot_barriers=plot_barriers, reverse_bits=reverse_bits) else: - raise _error.VisualizationError( + raise exceptions.VisualizationError( 'Invalid output type %s selected. The only valid choices ' 'are latex, latex_source, text, and mpl' % output) if image and interactive: diff --git a/qiskit/tools/visualization/_counts_visualization.py b/qiskit/tools/visualization/_counts_visualization.py index a6445508c4db..8704de191aa9 100644 --- a/qiskit/tools/visualization/_counts_visualization.py +++ b/qiskit/tools/visualization/_counts_visualization.py @@ -15,7 +15,7 @@ import functools import numpy as np from ._matplotlib import HAS_MATPLOTLIB -from ._error import VisualizationError +from .exceptions import VisualizationError if HAS_MATPLOTLIB: import matplotlib.pyplot as plt diff --git a/qiskit/tools/visualization/_gate_map.py b/qiskit/tools/visualization/_gate_map.py index c9c7b1b35a35..c5940abd6267 100644 --- a/qiskit/tools/visualization/_gate_map.py +++ b/qiskit/tools/visualization/_gate_map.py @@ -9,7 +9,7 @@ import matplotlib.pyplot as plt # pylint: disable=import-error import matplotlib.patches as mpatches # pylint: disable=import-error -from qiskit.qiskiterror import QISKitError +from qiskit.exceptions import QISKitError class _GraphDist(): diff --git a/qiskit/tools/visualization/_latex.py b/qiskit/tools/visualization/_latex.py index 5b6d21f96369..2cb1ca2aa955 100644 --- a/qiskit/tools/visualization/_latex.py +++ b/qiskit/tools/visualization/_latex.py @@ -19,11 +19,11 @@ import numpy as np -from qiskit.tools.visualization import _error +from qiskit.tools.visualization import exceptions from qiskit.tools.visualization import _qcstyle -class QCircuitImage(object): +class QCircuitImage: """This class contains methods to create \\LaTeX circuit images. The class targets the \\LaTeX package Q-circuit @@ -370,9 +370,9 @@ def _get_image_depth(self, aliases=None): max_column_width[columns]) elif op['name'] == "measure": if len(op['cargs']) != 1 or len(op['qargs']) != 1: - raise _error.VisualizationError("bad operation record") + raise exceptions.VisualizationError("bad operation record") if 'condition' in op and op['condition']: - raise _error.VisualizationError( + raise exceptions.VisualizationError( 'conditional measures currently not supported.') qname, qindex = op['qargs'][0] cname, cindex = op['cargs'][0] @@ -399,7 +399,7 @@ def _get_image_depth(self, aliases=None): max_column_width[columns] = 0 elif op['name'] == "reset": if 'conditional' in op and op['condition']: - raise _error.VisualizationError( + raise exceptions.VisualizationError( 'conditional reset currently not supported.') qname, qindex = op['qargs'][0] if aliases: @@ -436,7 +436,7 @@ def _get_image_depth(self, aliases=None): if columns not in max_column_width: max_column_width[columns] = 0 else: - raise _error.VisualizationError("bad node data") + raise exceptions.VisualizationError("bad node data") # every 3 characters is roughly one extra 'unit' of width in the cell # the gate name is 1 extra 'unit' # the qubit/cbit labels plus initial states is 2 more @@ -883,9 +883,9 @@ def _build_latex_array(self, aliases=None): if (len(op['cargs']) != 1 or len(op['qargs']) != 1 or op['op'].param): - raise _error.VisualizationError("bad operation record") + raise exceptions.VisualizationError("bad operation record") if 'condition' in op and op['condition']: - raise _error.VisualizationError( + raise exceptions.VisualizationError( "If controlled measures currently not supported.") qname, qindex = op['qargs'][0] @@ -924,7 +924,7 @@ def _build_latex_array(self, aliases=None): self._latex[pos_2][columns] = \ "\\cw \\cwx[-" + str(pos_2 - pos_1) + "]" except Exception as e: - raise _error.VisualizationError( + raise exceptions.VisualizationError( 'Error during Latex building: %s' % str(e)) elif op['name'] in ["barrier", 'snapshot', 'load', 'save', 'noise']: @@ -948,7 +948,7 @@ def _build_latex_array(self, aliases=None): self._latex[start][columns] = "\\qw \\barrier{" + str( span) + "}" else: - raise _error.VisualizationError("bad node data") + raise exceptions.VisualizationError("bad node data") def _get_qubit_index(self, qubit): """Get the index number for a quantum bit @@ -965,7 +965,7 @@ def _get_qubit_index(self, qubit): qindex = i break else: - raise _error.VisualizationError( + raise exceptions.VisualizationError( "unable to find bit for operation") return qindex diff --git a/qiskit/tools/visualization/_matplotlib.py b/qiskit/tools/visualization/_matplotlib.py index ca0b2ec53126..0817ed1d8c16 100644 --- a/qiskit/tools/visualization/_matplotlib.py +++ b/qiskit/tools/visualization/_matplotlib.py @@ -25,7 +25,7 @@ except ImportError: HAS_MATPLOTLIB = False -from qiskit.tools.visualization import _error +from qiskit.tools.visualization import exceptions from qiskit.tools.visualization import _qcstyle from qiskit.tools.visualization import _utils @@ -674,7 +674,7 @@ def _draw_ops(self, verbose=False): self._line(qreg_b, qreg_t) else: logger.critical('Invalid gate %s', op) - raise _error.VisualizationError('invalid gate {}'.format(op)) + raise exceptions.VisualizationError('invalid gate {}'.format(op)) # # adjust window size and draw horizontal lines # diff --git a/qiskit/tools/visualization/_state_visualization.py b/qiskit/tools/visualization/_state_visualization.py index 3b72137e6478..d771266c4e91 100644 --- a/qiskit/tools/visualization/_state_visualization.py +++ b/qiskit/tools/visualization/_state_visualization.py @@ -27,7 +27,7 @@ from matplotlib.colors import Normalize, LightSource from mpl_toolkits.mplot3d import proj3d from mpl_toolkits.mplot3d.art3d import Poly3DCollection - from qiskit.tools.visualization._error import VisualizationError + from qiskit.tools.visualization.exceptions import VisualizationError from qiskit.tools.visualization._bloch import Bloch from qiskit.tools.visualization._utils import _validate_input_state @@ -278,7 +278,7 @@ def plot_state_city(rho, title="", figsize=None, color=None, pc1 = Poly3DCollection(verts, alpha=0.15, facecolor='k', linewidths=1, zorder=1) - if min(dzr) < 0 and max(dzr) > 0: + if min(dzr) < 0 < max(dzr): ax1.add_collection3d(pc1) ax2 = fig.add_subplot(1, 2, 2, projection='3d') @@ -296,7 +296,7 @@ def plot_state_city(rho, title="", figsize=None, color=None, pc2 = Poly3DCollection(verts, alpha=0.2, facecolor='k', linewidths=1, zorder=1) - if min(dzi) < 0 and max(dzi) > 0: + if min(dzi) < 0 < max(dzi): ax2.add_collection3d(pc2) ax1.set_xticks(np.arange(0.5, lx+0.5, 1)) diff --git a/qiskit/tools/visualization/_text.py b/qiskit/tools/visualization/_text.py index f61cc8320227..736ef847544b 100644 --- a/qiskit/tools/visualization/_text.py +++ b/qiskit/tools/visualization/_text.py @@ -12,7 +12,7 @@ from shutil import get_terminal_size import sys -from ._error import VisualizationError +from .exceptions import VisualizationError class DrawElement(): diff --git a/qiskit/tools/visualization/_utils.py b/qiskit/tools/visualization/_utils.py index 90bc838823dc..b6423fbdbaa2 100644 --- a/qiskit/tools/visualization/_utils.py +++ b/qiskit/tools/visualization/_utils.py @@ -10,7 +10,7 @@ import PIL import numpy as np from qiskit.converters import circuit_to_dag -from qiskit.tools.visualization._error import VisualizationError +from qiskit.tools.visualization.exceptions import VisualizationError def _validate_input_state(quantum_state): diff --git a/qiskit/tools/visualization/dag_visualization.py b/qiskit/tools/visualization/dag_visualization.py index 6995d4550112..5053728ac560 100644 --- a/qiskit/tools/visualization/dag_visualization.py +++ b/qiskit/tools/visualization/dag_visualization.py @@ -19,7 +19,7 @@ except ImportError: raise ImportError("dag_drawer requires nxpd, pydot, and Graphviz. " "Run 'pip install nxpd pydot', and install graphviz") -from ._error import VisualizationError +from .exceptions import VisualizationError def dag_drawer(dag, scale=0.7, filename=None, style='color'): diff --git a/qiskit/tools/visualization/_error.py b/qiskit/tools/visualization/exceptions.py similarity index 89% rename from qiskit/tools/visualization/_error.py rename to qiskit/tools/visualization/exceptions.py index 9751957ceba5..4bd360080e16 100644 --- a/qiskit/tools/visualization/_error.py +++ b/qiskit/tools/visualization/exceptions.py @@ -7,7 +7,7 @@ """Exception for errors raised by visualization module.""" -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class VisualizationError(QiskitError): diff --git a/qiskit/tools/visualization/interactive/__init__.py b/qiskit/tools/visualization/interactive/__init__.py index a146851e4c19..a72ab75cc705 100644 --- a/qiskit/tools/visualization/interactive/__init__.py +++ b/qiskit/tools/visualization/interactive/__init__.py @@ -5,9 +5,6 @@ # This source code is licensed under the Apache License, Version 2.0 found in # the LICENSE.txt file in the root directory of this source tree. -# pylint: disable=wrong-import-order -# pylint: disable=redefined-builtin - """Qsikit visualization library.""" from ._iplot_state import iplot_state diff --git a/qiskit/tools/visualization/interactive/_iplot_histogram.py b/qiskit/tools/visualization/interactive/_iplot_histogram.py index 196c8501848c..f41e92024574 100644 --- a/qiskit/tools/visualization/interactive/_iplot_histogram.py +++ b/qiskit/tools/visualization/interactive/_iplot_histogram.py @@ -14,7 +14,7 @@ import time import re import numpy as np -from .._error import VisualizationError +from ..exceptions import VisualizationError if ('ipykernel' in sys.modules) and ('spyder' not in sys.modules): try: diff --git a/qiskit/tools/visualization/interactive/_iplot_qsphere.py b/qiskit/tools/visualization/interactive/_iplot_qsphere.py index d81cf8abbc36..337f53a5b3b7 100644 --- a/qiskit/tools/visualization/interactive/_iplot_qsphere.py +++ b/qiskit/tools/visualization/interactive/_iplot_qsphere.py @@ -18,7 +18,7 @@ import numpy as np from scipy import linalg from qiskit.tools.visualization._utils import _validate_input_state -from qiskit.tools.visualization import VisualizationError +from qiskit.tools.visualization.exceptions import VisualizationError if ('ipykernel' in sys.modules) and ('spyder' not in sys.modules): diff --git a/qiskit/tools/visualization/interactive/_iplot_state.py b/qiskit/tools/visualization/interactive/_iplot_state.py index 9fc478411a87..88e8486b35e8 100644 --- a/qiskit/tools/visualization/interactive/_iplot_state.py +++ b/qiskit/tools/visualization/interactive/_iplot_state.py @@ -9,7 +9,7 @@ Qiskit visualization library. """ import warnings -from qiskit.tools.visualization import VisualizationError +from qiskit.tools.visualization.exceptions import VisualizationError from qiskit.tools.visualization._utils import _validate_input_state from ._iplot_blochsphere import iplot_bloch_multivector from ._iplot_cities import iplot_state_city diff --git a/qiskit/transpiler/__init__.py b/qiskit/transpiler/__init__.py index bbe17c41f089..e2098012809a 100644 --- a/qiskit/transpiler/__init__.py +++ b/qiskit/transpiler/__init__.py @@ -9,7 +9,7 @@ import os from ._passmanager import PassManager, FlowController from ._propertyset import PropertySet -from ._transpilererror import TranspilerError, TranspilerAccessError +from .exceptions import TranspilerError, TranspilerAccessError from ._fencedobjs import FencedDAGCircuit, FencedPropertySet from ._basepasses import AnalysisPass, TransformationPass from ._transpiler import transpile, transpile_dag diff --git a/qiskit/transpiler/_fencedobjs.py b/qiskit/transpiler/_fencedobjs.py index 23e9a0fdc1cb..852e4a5dd204 100644 --- a/qiskit/transpiler/_fencedobjs.py +++ b/qiskit/transpiler/_fencedobjs.py @@ -7,7 +7,7 @@ """ Fenced objects are wraps for raising TranspilerAccessError when they are modified.""" -from ._transpilererror import TranspilerAccessError +from .exceptions import TranspilerAccessError class FencedObject(): diff --git a/qiskit/transpiler/_passmanager.py b/qiskit/transpiler/_passmanager.py index 66ff9f2fdee1..cd2548444b3e 100644 --- a/qiskit/transpiler/_passmanager.py +++ b/qiskit/transpiler/_passmanager.py @@ -12,7 +12,7 @@ from ._propertyset import PropertySet from ._basepasses import BasePass from ._fencedobjs import FencedPropertySet, FencedDAGCircuit -from ._transpilererror import TranspilerError +from .exceptions import TranspilerError class PassManager(): diff --git a/qiskit/transpiler/_transpiler.py b/qiskit/transpiler/_transpiler.py index a43f0d711455..7c540465a83d 100644 --- a/qiskit/transpiler/_transpiler.py +++ b/qiskit/transpiler/_transpiler.py @@ -15,9 +15,19 @@ from qiskit.converters import circuit_to_dag from qiskit.converters import dag_to_circuit from qiskit.extensions.standard import SwapGate -from .passes import (Unroller, CXDirection, CXCancellation, DenseLayout, TrivialLayout, - CheckMap, Decompose, Optimize1qGates, BarrierBeforeFinalMeasurements) -from ._transpilererror import TranspilerError + + +from .passes.cx_cancellation import CXCancellation +from .passes.decompose import Decompose +from .passes.optimize_1q_gates import Optimize1qGates +from .passes.mapping.barrier_before_final_measurements import BarrierBeforeFinalMeasurements +from .passes.mapping.check_map import CheckMap +from .passes.mapping.cx_direction import CXDirection +from .passes.mapping.dense_layout import DenseLayout +from .passes.mapping.trivial_layout import TrivialLayout +from .passes.mapping.unroller import Unroller + +from .exceptions import TranspilerError logger = logging.getLogger(__name__) diff --git a/qiskit/transpiler/_transpilererror.py b/qiskit/transpiler/exceptions.py similarity index 91% rename from qiskit/transpiler/_transpilererror.py rename to qiskit/transpiler/exceptions.py index 2d2179a3e195..1b4b0f141731 100644 --- a/qiskit/transpiler/_transpilererror.py +++ b/qiskit/transpiler/exceptions.py @@ -8,7 +8,7 @@ """ Exception for errors raised by the transpiler. """ -from qiskit import QiskitError +from qiskit.exceptions import QiskitError class TranspilerError(QiskitError): diff --git a/qiskit/transpiler/passes/commutation_analysis.py b/qiskit/transpiler/passes/commutation_analysis.py index 71f4544d593a..6b269703e83f 100644 --- a/qiskit/transpiler/passes/commutation_analysis.py +++ b/qiskit/transpiler/passes/commutation_analysis.py @@ -134,7 +134,7 @@ def _gate_master_def(name, para=None): if name == 'tdag': return np.array([[1.0, 0.0], [0.0, -np.exp(1j * np.pi / 4.0)]], dtype=np.complex) - if name == 'rz' or name == 'u1': + if name in ('rz', 'u1'): return np.array([[np.exp(-1j * float(para[0]) / 2), 0], [0, np.exp(1j * float(para[0]) / 2)]], dtype=np.complex) if name == 'rx': diff --git a/qiskit/transpiler/passes/commutation_transformation.py b/qiskit/transpiler/passes/commutation_transformation.py index 567b1321d366..bf62b2b03348 100644 --- a/qiskit/transpiler/passes/commutation_transformation.py +++ b/qiskit/transpiler/passes/commutation_transformation.py @@ -11,7 +11,7 @@ """ from qiskit.transpiler._basepasses import TransformationPass -from qiskit.transpiler.passes import CommutationAnalysis +from .commutation_analysis import CommutationAnalysis class CommutationTransformation(TransformationPass): diff --git a/qiskit/transpiler/passes/mapping/__init__.py b/qiskit/transpiler/passes/mapping/__init__.py index e69de29bb2d1..cc0870634383 100644 --- a/qiskit/transpiler/passes/mapping/__init__.py +++ b/qiskit/transpiler/passes/mapping/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018, IBM. +# +# This source code is licensed under the Apache License, Version 2.0 found in +# the LICENSE.txt file in the root directory of this source tree. + +"""Module containing transpiler mapping passes.""" diff --git a/qiskit/transpiler/passes/mapping/barrier_before_final_measurements.py b/qiskit/transpiler/passes/mapping/barrier_before_final_measurements.py index cc96dd8d9f6b..7dca3948d7c1 100644 --- a/qiskit/transpiler/passes/mapping/barrier_before_final_measurements.py +++ b/qiskit/transpiler/passes/mapping/barrier_before_final_measurements.py @@ -11,7 +11,7 @@ """ from qiskit.extensions.standard.barrier import Barrier -from qiskit.transpiler import TransformationPass +from qiskit.transpiler._basepasses import TransformationPass from qiskit.dagcircuit import DAGCircuit diff --git a/qiskit/transpiler/passes/mapping/basic_swap.py b/qiskit/transpiler/passes/mapping/basic_swap.py index 1439b641a48e..919303a0547d 100644 --- a/qiskit/transpiler/passes/mapping/basic_swap.py +++ b/qiskit/transpiler/passes/mapping/basic_swap.py @@ -19,7 +19,7 @@ from qiskit.dagcircuit import DAGCircuit from qiskit.mapper import Layout from qiskit.extensions.standard import SwapGate -from qiskit.transpiler.passes import BarrierBeforeFinalMeasurements +from .barrier_before_final_measurements import BarrierBeforeFinalMeasurements class BasicSwap(TransformationPass): diff --git a/qiskit/transpiler/passes/mapping/cx_direction.py b/qiskit/transpiler/passes/mapping/cx_direction.py index cb9fe45dfab4..f37523f2e383 100644 --- a/qiskit/transpiler/passes/mapping/cx_direction.py +++ b/qiskit/transpiler/passes/mapping/cx_direction.py @@ -11,7 +11,8 @@ """ from qiskit.transpiler._basepasses import TransformationPass -from qiskit.transpiler import TranspilerError +from qiskit.transpiler.exceptions import TranspilerError + from qiskit.dagcircuit import DAGCircuit from qiskit.mapper import Layout from qiskit.extensions.standard import HGate diff --git a/qiskit/transpiler/passes/mapping/dense_layout.py b/qiskit/transpiler/passes/mapping/dense_layout.py index 00c1be3ad581..7d0770c6c6f5 100644 --- a/qiskit/transpiler/passes/mapping/dense_layout.py +++ b/qiskit/transpiler/passes/mapping/dense_layout.py @@ -21,7 +21,7 @@ from qiskit.mapper import Layout from qiskit.transpiler._basepasses import AnalysisPass -from qiskit.transpiler import TranspilerError +from qiskit.transpiler.exceptions import TranspilerError class DenseLayout(AnalysisPass): diff --git a/qiskit/transpiler/passes/mapping/lookahead_swap.py b/qiskit/transpiler/passes/mapping/lookahead_swap.py index 287702845a59..b564c58a8373 100644 --- a/qiskit/transpiler/passes/mapping/lookahead_swap.py +++ b/qiskit/transpiler/passes/mapping/lookahead_swap.py @@ -46,10 +46,11 @@ from qiskit.dagcircuit import DAGCircuit from qiskit.extensions.standard import SwapGate from qiskit.transpiler._basepasses import TransformationPass -from qiskit.transpiler.passes import BarrierBeforeFinalMeasurements -from qiskit.transpiler import TranspilerError +from qiskit.transpiler.exceptions import TranspilerError from qiskit.mapper import Layout +from .barrier_before_final_measurements import BarrierBeforeFinalMeasurements + SEARCH_DEPTH = 4 SEARCH_WIDTH = 4 diff --git a/qiskit/transpiler/passes/mapping/stochastic_swap.py b/qiskit/transpiler/passes/mapping/stochastic_swap.py index a9595be2a4ba..325930678d7e 100644 --- a/qiskit/transpiler/passes/mapping/stochastic_swap.py +++ b/qiskit/transpiler/passes/mapping/stochastic_swap.py @@ -15,11 +15,12 @@ import numpy as np from qiskit.transpiler._basepasses import TransformationPass -from qiskit.transpiler import TranspilerError +from qiskit.transpiler.exceptions import TranspilerError from qiskit.dagcircuit import DAGCircuit from qiskit.extensions.standard import SwapGate from qiskit.mapper import Layout -from qiskit.transpiler.passes import BarrierBeforeFinalMeasurements +from .barrier_before_final_measurements import BarrierBeforeFinalMeasurements + logger = getLogger(__name__) diff --git a/qiskit/transpiler/passes/mapping/trivial_layout.py b/qiskit/transpiler/passes/mapping/trivial_layout.py index 0d467edf9536..4312c9f42ed0 100644 --- a/qiskit/transpiler/passes/mapping/trivial_layout.py +++ b/qiskit/transpiler/passes/mapping/trivial_layout.py @@ -14,7 +14,7 @@ from qiskit.mapper import Layout from qiskit.transpiler._basepasses import AnalysisPass -from qiskit.transpiler import TranspilerError +from qiskit.transpiler.exceptions import TranspilerError class TrivialLayout(AnalysisPass): diff --git a/qiskit/transpiler/passes/optimize_1q_gates.py b/qiskit/transpiler/passes/optimize_1q_gates.py index ab8f7a221ab4..2cead837391e 100644 --- a/qiskit/transpiler/passes/optimize_1q_gates.py +++ b/qiskit/transpiler/passes/optimize_1q_gates.py @@ -21,7 +21,7 @@ from qiskit.extensions.standard.u2 import U2Gate from qiskit.extensions.standard.u3 import U3Gate from qiskit.circuit.instruction import Instruction -from qiskit.transpiler import TransformationPass +from qiskit.transpiler._basepasses import TransformationPass from qiskit.quantum_info.operators.quaternion import quaternion_from_euler from qiskit.transpiler.passes.mapping.unroller import Unroller diff --git a/qiskit/unroll.py b/qiskit/unroll.py index a3a446dea5ae..83222fd30246 100644 --- a/qiskit/unroll.py +++ b/qiskit/unroll.py @@ -8,7 +8,7 @@ """Unroll QASM and different backends.""" -from qiskit.unrollers._backenderror import BackendError +from qiskit.unrollers.exceptions import BackendError from qiskit.unrollers._dagunroller import DagUnroller from qiskit.unrollers._unrollerbackend import UnrollerBackend from qiskit.unrollers._jsonbackend import JsonBackend diff --git a/qiskit/unrollers/_backenderror.py b/qiskit/unrollers/_backenderror.py deleted file mode 100644 index e009d9e4b59e..000000000000 --- a/qiskit/unrollers/_backenderror.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2017, IBM. -# -# This source code is licensed under the Apache License, Version 2.0 found in -# the LICENSE.txt file in the root directory of this source tree. - -""" -Exception for errors raised by unroller backends. -""" - -from qiskit import QiskitError - - -class BackendError(QiskitError): - """Base class for errors raised by unroller backends.""" - - def __init__(self, *message): - """Set the error message.""" - super().__init__(*message) - self.message = ' '.join(message) - - def __str__(self): - """Return the message.""" - return repr(self.message) diff --git a/qiskit/unrollers/_dagunroller.py b/qiskit/unrollers/_dagunroller.py index ab339587825b..620955553c68 100644 --- a/qiskit/unrollers/_dagunroller.py +++ b/qiskit/unrollers/_dagunroller.py @@ -11,10 +11,10 @@ import networkx as nx -from ._unrollererror import UnrollerError +from .exceptions import UnrollerError -class DagUnroller(object): +class DagUnroller: """An Unroller that takes Dag circuits as the input.""" def __init__(self, dag_circuit, backend=None): diff --git a/qiskit/unrollers/_jsonbackend.py b/qiskit/unrollers/_jsonbackend.py index cae4fdb1a490..b211f7a41a6f 100644 --- a/qiskit/unrollers/_jsonbackend.py +++ b/qiskit/unrollers/_jsonbackend.py @@ -41,7 +41,7 @@ from collections import OrderedDict import sympy -from qiskit.unrollers._backenderror import BackendError +from qiskit.unrollers.exceptions import BackendError from qiskit.unrollers._unrollerbackend import UnrollerBackend diff --git a/qiskit/unrollers/_unrollerbackend.py b/qiskit/unrollers/_unrollerbackend.py index 93d15a7ef3ed..97fb893d9c96 100644 --- a/qiskit/unrollers/_unrollerbackend.py +++ b/qiskit/unrollers/_unrollerbackend.py @@ -8,10 +8,10 @@ """ Base backend object for the unroller that raises BackendError. """ -from ._backenderror import BackendError +from qiskit.unrollers.exceptions import BackendError -class UnrollerBackend(object): +class UnrollerBackend: """Backend for the unroller that raises BackendError. This backend also serves as a base class for other unroller backends. diff --git a/qiskit/unrollers/_unrollererror.py b/qiskit/unrollers/exceptions.py similarity index 60% rename from qiskit/unrollers/_unrollererror.py rename to qiskit/unrollers/exceptions.py index 6a84290fbdb2..5a4dbfb264a3 100644 --- a/qiskit/unrollers/_unrollererror.py +++ b/qiskit/unrollers/exceptions.py @@ -9,7 +9,8 @@ Exception for errors raised by unroller. """ -from qiskit import QiskitError + +from qiskit.exceptions import QiskitError class UnrollerError(QiskitError): @@ -23,3 +24,16 @@ def __init__(self, *message): def __str__(self): """Return the message.""" return repr(self.message) + + +class BackendError(QiskitError): + """Base class for errors raised by unroller backends.""" + + def __init__(self, *message): + """Set the error message.""" + super().__init__(*message) + self.message = ' '.join(message) + + def __str__(self): + """Return the message.""" + return repr(self.message) diff --git a/qiskit/version.py b/qiskit/version.py new file mode 100644 index 000000000000..c4be857fe67b --- /dev/null +++ b/qiskit/version.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018, IBM. +# +# This source code is licensed under the Apache License, Version 2.0 found in +# the LICENSE.txt file in the root directory of this source tree. + +"""Contains the terra version.""" + +import os + + +ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) +with open(os.path.join(ROOT_DIR, "VERSION.txt"), "r") as version_file: + __version__ = version_file.read().strip() diff --git a/qiskit/wrapper/__init__.py b/qiskit/wrapper/__init__.py index 571f2b2ac6ca..afb3a89d623f 100644 --- a/qiskit/wrapper/__init__.py +++ b/qiskit/wrapper/__init__.py @@ -5,8 +5,6 @@ # This source code is licensed under the Apache License, Version 2.0 found in # the LICENSE.txt file in the root directory of this source tree. -# pylint: disable=redefined-builtin - """Helper module for simplified Qiskit usage. The functions in this module provide convenience helpers for accessing commonly diff --git a/qiskit/wrapper/_wrapper.py b/qiskit/wrapper/_wrapper.py index bb69ad3fe0b7..71a24dbd1781 100644 --- a/qiskit/wrapper/_wrapper.py +++ b/qiskit/wrapper/_wrapper.py @@ -8,7 +8,7 @@ """Helper module for simplified Qiskit usage.""" import logging import warnings -from qiskit import QuantumCircuit +from qiskit.circuit.quantumcircuit import QuantumCircuit logger = logging.getLogger(__name__) diff --git a/requirements-dev.txt b/requirements-dev.txt index ebd71a29a2e6..9671f77ed533 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ nxpd>=0.2 pillow>=4.2.1 pycodestyle pydot -pylint>=1.8,<1.9 +pylint>=2.2,<2.3 Sphinx==1.7.5 sphinxcontrib-fulltoc==1.2.0 sphinx_materialdesign_theme diff --git a/test/python/_mockutils.py b/test/python/_mockutils.py index 17ffcd26a3ec..8b086a763bfd 100644 --- a/test/python/_mockutils.py +++ b/test/python/_mockutils.py @@ -181,9 +181,8 @@ def new_fake_qobj(): ) -class FakeBackend(object): - """A fake backend. - """ +class FakeBackend: + """A fake backend.""" def name(self): """ name of fake backend""" diff --git a/test/python/common.py b/test/python/common.py index 5e682a6ee77f..8f84b7414830 100644 --- a/test/python/common.py +++ b/test/python/common.py @@ -279,7 +279,7 @@ def _get_credentials(test_object, test_options): if test_options['mock_online']: return dummy_credentials - if os.getenv('USE_ALTERNATE_ENV_CREDENTIALS', False): + if os.getenv('USE_ALTERNATE_ENV_CREDENTIALS', ''): # Special case: instead of using the standard credentials mechanism, # load them from different environment variables. This assumes they # will always be in place, as is used by the Travis setup. diff --git a/test/python/ibmq/test_ibmqjob.py b/test/python/ibmq/test_ibmqjob.py index cbb1caf2180c..387261954f27 100644 --- a/test/python/ibmq/test_ibmqjob.py +++ b/test/python/ibmq/test_ibmqjob.py @@ -24,7 +24,7 @@ from qiskit import compile from qiskit.providers import JobStatus, JobError from qiskit.providers.ibmq import least_busy -from qiskit.providers.ibmq.ibmqbackend import IBMQBackendError +from qiskit.providers.ibmq.exceptions import IBMQBackendError from qiskit.providers.ibmq.ibmqjob import IBMQJob from ..common import requires_qe_access, JobTestCase, slow_test @@ -138,7 +138,7 @@ def test_run_async_simulator(self, qe_token, qe_url): for job in job_array: self.log.info('%s %s %s %s', job.status(), job.status() is JobStatus.RUNNING, check, job.job_id()) - self.log.info('-'*20 + ' ' + str(time.time()-start_time)) + self.log.info('- %s', str(time.time()-start_time)) if time.time() - start_time > timeout: raise TimeoutError('failed to see multiple running jobs after ' '{0} s'.format(timeout)) diff --git a/test/python/test_backend_name_resolution.py b/test/python/test_backend_name_resolution.py index 057ddd0c064c..854856ac8065 100644 --- a/test/python/test_backend_name_resolution.py +++ b/test/python/test_backend_name_resolution.py @@ -30,8 +30,8 @@ def test_deprecated(self): deprecated_names = provider._deprecated_backend_names() for oldname, newname in deprecated_names.items(): - if (newname == 'qasm_simulator' or - newname == 'statevector_simulator') and not is_cpp_simulator_available(): + if newname in ('qasm_simulator', + 'statevector_simulator') and not is_cpp_simulator_available(): continue with self.subTest(provider=provider, oldname=oldname, newname=newname): diff --git a/test/python/test_dagcircuit.py b/test/python/test_dagcircuit.py index a5d484296260..5b9db6d40c74 100644 --- a/test/python/test_dagcircuit.py +++ b/test/python/test_dagcircuit.py @@ -19,7 +19,7 @@ from qiskit.extensions.standard.h import HGate from qiskit.extensions.standard.cx import CnotGate from qiskit.extensions.standard.x import XGate -from qiskit.dagcircuit._dagcircuiterror import DAGCircuitError +from qiskit.dagcircuit.exceptions import DAGCircuitError from qiskit.converters import circuit_to_dag from .common import QiskitTestCase diff --git a/test/python/test_extensions_standard.py b/test/python/test_extensions_standard.py index ea8ab1155a79..c3aa70c5d48c 100644 --- a/test/python/test_extensions_standard.py +++ b/test/python/test_extensions_standard.py @@ -11,7 +11,7 @@ from qiskit import ClassicalRegister, QuantumCircuit, QuantumRegister from qiskit.qasm import pi -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from .common import QiskitTestCase diff --git a/test/python/test_layout.py b/test/python/test_layout.py index d335e5bd75eb..bbc4cfb52d78 100644 --- a/test/python/test_layout.py +++ b/test/python/test_layout.py @@ -12,7 +12,7 @@ from qiskit import QuantumRegister from qiskit.mapper import Layout -from qiskit.mapper._layout import LayoutError +from qiskit.mapper.exceptions import LayoutError from .common import QiskitTestCase diff --git a/test/python/test_mapper.py b/test/python/test_mapper.py index e700e049631a..8d6d7626066c 100644 --- a/test/python/test_mapper.py +++ b/test/python/test_mapper.py @@ -25,9 +25,8 @@ from .common import QiskitTestCase -class FakeQX4BackEnd(object): - """A fake QX4 backend. - """ +class FakeQX4BackEnd: + """A fake QX4 backend.""" def name(self): return 'qiskit_is_cool' @@ -51,9 +50,8 @@ def configuration(self): ) -class FakeQX5BackEnd(object): - """A fake QX5 backend. - """ +class FakeQX5BackEnd: + """A fake QX5 backend.""" def name(self): return 'qiskit_is_cool' diff --git a/test/python/test_qobj.py b/test/python/test_qobj.py index 52f9455235a1..2c82243f2ad3 100644 --- a/test/python/test_qobj.py +++ b/test/python/test_qobj.py @@ -14,7 +14,7 @@ import jsonschema from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit from qiskit import compile, BasicAer -from qiskit.qobj._schema_validation import SchemaValidationError +from qiskit.qobj.exceptions import SchemaValidationError from qiskit.qobj import Qobj, QobjConfig, QobjExperiment, QobjInstruction from qiskit.qobj import QobjHeader, validate_qobj_against_schema from qiskit.providers.builtinsimulators import simulatorsjob diff --git a/test/python/tools/jupyter/test_notebooks.py b/test/python/tools/jupyter/test_notebooks.py index 8aaf576d78a4..7f666f5d0828 100644 --- a/test/python/tools/jupyter/test_notebooks.py +++ b/test/python/tools/jupyter/test_notebooks.py @@ -56,7 +56,7 @@ def _execute_notebook(self, filename, qe_token=None, qe_url=None): @requires_cpp_simulator def test_jupyter_jobs_pbars(self): - "Test Jupyter progress bars and job status functionality" + """Test Jupyter progress bars and job status functionality""" self._execute_notebook(self._get_resource_path( 'notebooks/test_pbar_status.ipynb')) @@ -64,7 +64,7 @@ def test_jupyter_jobs_pbars(self): @requires_qe_access @slow_test def test_backend_tools(self, qe_token, qe_url): - "Test Jupyter backend tools." + """Test Jupyter backend tools.""" self._execute_notebook(self._get_resource_path( 'notebooks/test_backend_tools.ipynb'), qe_token=qe_token, diff --git a/test/python/tools/test_compiler.py b/test/python/tools/test_compiler.py index a3e87a8e4aec..22f3565dcfc7 100644 --- a/test/python/tools/test_compiler.py +++ b/test/python/tools/test_compiler.py @@ -18,7 +18,7 @@ from qiskit import compile from qiskit.result import Result from qiskit import execute -from qiskit.qiskiterror import QiskitError +from qiskit.exceptions import QiskitError from qiskit.providers.ibmq import least_busy from .._mockutils import FakeBackend from ..common import QiskitTestCase