Skip to content

Commit

Permalink
Update pylint to recent version, solve cyclic dependencies (Qiskit#1600)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
diego-plan9 authored and 1ucian0 committed Dec 26, 2018
1 parent 2219d6b commit 34be1d5
Show file tree
Hide file tree
Showing 127 changed files with 340 additions and 342 deletions.
23 changes: 9 additions & 14 deletions .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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]

Expand All @@ -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
Expand All @@ -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




Expand Down Expand Up @@ -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]
Expand Down
12 changes: 2 additions & 10 deletions qiskit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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__
2 changes: 1 addition & 1 deletion qiskit/circuit/compositegate.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion qiskit/circuit/gate.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
Unitary gate.
"""
from qiskit.qiskiterror import QiskitError
from qiskit.exceptions import QiskitError
from .instruction import Instruction


Expand Down
4 changes: 2 additions & 2 deletions qiskit/circuit/instruction.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
4 changes: 2 additions & 2 deletions qiskit/circuit/instructionset.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion qiskit/circuit/measure.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions qiskit/circuit/quantumcircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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'
Expand Down Expand Up @@ -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()
Expand Down
4 changes: 2 additions & 2 deletions qiskit/circuit/register.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 0 additions & 2 deletions qiskit/converters/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions qiskit/converters/ast_to_dag.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion qiskit/dagcircuit/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@

"""Module for DAG Circuits."""
from ._dagcircuit import DAGCircuit
from ._dagcircuiterror import DAGCircuitError
from .exceptions import DAGCircuitError
7 changes: 4 additions & 3 deletions qiskit/dagcircuit/_dagcircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
Exception for errors raised by the DAGCircuit object.
"""
from qiskit import QiskitError
from qiskit.exceptions import QiskitError


class DAGCircuitError(QiskitError):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"""
Exception for errors raised by extensions module.
"""
from qiskit import QiskitError
from qiskit.exceptions import QiskitError


class ExtensionError(QiskitError):
Expand Down
4 changes: 2 additions & 2 deletions qiskit/extensions/quantum_initializer/_initializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion qiskit/extensions/simulator/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion qiskit/extensions/simulator/noise.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion qiskit/extensions/simulator/save.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
2 changes: 1 addition & 1 deletion qiskit/extensions/simulator/snapshot.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down
4 changes: 2 additions & 2 deletions qiskit/extensions/standard/barrier.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
3 changes: 1 addition & 2 deletions qiskit/mapper/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
2 changes: 1 addition & 1 deletion qiskit/mapper/_compiling.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
2 changes: 1 addition & 1 deletion qiskit/mapper/_coupling.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import warnings
import networkx as nx
from ._couplingerror import CouplingError
from .exceptions import CouplingError


class CouplingMap:
Expand Down
24 changes: 0 additions & 24 deletions qiskit/mapper/_couplingerror.py

This file was deleted.

16 changes: 1 addition & 15 deletions qiskit/mapper/_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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)
Loading

0 comments on commit 34be1d5

Please sign in to comment.