Skip to content

Commit

Permalink
Disable pylint's import-error (Qiskit#8973)
Browse files Browse the repository at this point in the history
This pylint rule has a tendency to be overzealous when we're dealing
with optional packages that we don't require to be installed, with
compiled modules, and with packages which dynamically mutate the Python
path look-up.  Overall, it was giving far more false positives than
anything else, and a failure-to-import should be abundantly obvious from
a standard test run, so we shouldn't be _effectively_ losing coverage.

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
  • Loading branch information
jakelishman and mergify[bot] authored Oct 21, 2022
1 parent 6aad914 commit 6f8d2ce
Show file tree
Hide file tree
Showing 33 changed files with 27 additions and 41 deletions.
3 changes: 2 additions & 1 deletion .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ disable=spelling, # way too noisy
no-else-return, # relax "elif" after a clause with a return
docstring-first-line-empty, # relax docstring style
import-outside-toplevel,
bad-continuation, bad-whitespace # differences of opinion with black
bad-continuation, bad-whitespace, # differences of opinion with black
import-error # overzealous with our optionals/dynamic packages



Expand Down
2 changes: 0 additions & 2 deletions qiskit/algorithms/optimizers/nlopts/nloptimizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ class NLoptOptimizer(Optimizer):
NLopt global optimizer base class
"""

# pylint: disable=import-error

_OPTIONS = ["max_evals"]

def __init__(self, max_evals: int = 1000) -> None: # pylint: disable=unused-argument
Expand Down
2 changes: 1 addition & 1 deletion qiskit/circuit/equivalence.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

from collections import namedtuple

from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module,import-error
from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module
import retworkx as rx

from qiskit.exceptions import InvalidFileError
Expand Down
2 changes: 1 addition & 1 deletion qiskit/compiler/transpiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=import-error,invalid-sequence-index
# pylint: disable=invalid-sequence-index

"""Circuit transpile function"""
import io
Expand Down
2 changes: 1 addition & 1 deletion qiskit/opflow/gradients/gradient.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ def is_coeff_c_abs(coeff, c):
grad_combo_fn = operator.grad_combo_fn
else:
_optionals.HAS_JAX.require_now("automatic differentiation")
from jax import jit, grad # pylint: disable=import-error
from jax import jit, grad

grad_combo_fn = jit(grad(operator.combo_fn, holomorphic=True))

Expand Down
2 changes: 1 addition & 1 deletion qiskit/opflow/gradients/hessian.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ def is_coeff_c(coeff, c):
)

_optionals.HAS_JAX.require_now("automatic differentiation")
from jax import grad, jit # pylint: disable=import-error
from jax import grad, jit

if operator.grad_combo_fn:
first_partial_combo_fn = operator.grad_combo_fn
Expand Down
2 changes: 1 addition & 1 deletion qiskit/providers/fake_provider/fake_backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=no-name-in-module,import-error
# pylint: disable=no-name-in-module

"""
Base class for dummy backends.
Expand Down
2 changes: 1 addition & 1 deletion qiskit/providers/fake_provider/fake_backend_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=no-name-in-module,import-error
# pylint: disable=no-name-in-module

"""Mock BackendV2 object without run implemented for testing backwards compat"""

Expand Down
2 changes: 1 addition & 1 deletion qiskit/providers/fake_provider/fake_mumbai_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=no-name-in-module,import-error
# pylint: disable=no-name-in-module

"""Mock BackendV2 object without run implemented for testing backwards compat"""

Expand Down
2 changes: 1 addition & 1 deletion qiskit/quantum_info/operators/measures.py
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ def _cvxpy_check(name):
"""Check that a supported CVXPY version is installed"""
# Check if CVXPY package is installed
_optionals.HAS_CVXPY.require_now(name)
import cvxpy # pylint: disable=import-error
import cvxpy

# Check CVXPY version
version = cvxpy.__version__
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import numpy as np
import retworkx as rx

from qiskit._accelerate.sparse_pauli_op import unordered_unique # pylint: disable=import-error
from qiskit._accelerate.sparse_pauli_op import unordered_unique
from qiskit.exceptions import QiskitError
from qiskit.quantum_info.operators.custom_iterator import CustomIterator
from qiskit.quantum_info.operators.linear_op import LinearOp
Expand Down
1 change: 0 additions & 1 deletion qiskit/quantum_info/states/densitymatrix.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
from qiskit.quantum_info.operators.channel.quantum_channel import QuantumChannel
from qiskit.quantum_info.operators.channel.superop import SuperOp

# pylint: disable=import-error
from qiskit._accelerate.pauli_expval import density_expval_pauli_no_x, density_expval_pauli_with_x


Expand Down
1 change: 0 additions & 1 deletion qiskit/quantum_info/states/statevector.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
from qiskit.quantum_info.operators.op_shape import OpShape
from qiskit.quantum_info.operators.predicates import matrix_equal

# pylint: disable=import-error
from qiskit._accelerate.pauli_expval import (
expval_pauli_no_x,
expval_pauli_with_x,
Expand Down
2 changes: 0 additions & 2 deletions qiskit/result/sampled_expval.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
"""Routines for computing expectation values from sampled distributions"""
import numpy as np


# pylint: disable=import-error
from qiskit._accelerate.sampled_exp_val import sampled_expval_float, sampled_expval_complex
from qiskit.exceptions import QiskitError
from .distributions import QuasiDistribution, ProbDistribution
Expand Down
3 changes: 1 addition & 2 deletions qiskit/result/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@

from qiskit.result.postprocess import _bin_to_hex

# pylint: disable=import-error, no-name-in-module
from qiskit._accelerate import results as results_rs
from qiskit._accelerate import results as results_rs # pylint: disable=no-name-in-module


def marginal_counts(
Expand Down
2 changes: 1 addition & 1 deletion qiskit/test/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
# unittest's TestCase. This will enable the fixtures used for capturing stdout
# stderr, and pylogging to attach the output to stestr's result stream.
if _optionals.HAS_TESTTOOLS:
import testtools # pylint: disable=import-error
import testtools

class BaseTestCase(testtools.TestCase):
"""Base test class."""
Expand Down
1 change: 0 additions & 1 deletion qiskit/tools/jupyter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@

_IP.register_magics(BackendOverview)
if _optionals.HAS_IBMQ:
# pylint: disable=import-error
from qiskit.providers.ibmq import IBMQBackend # pylint: disable=no-name-in-module

HTML_FORMATTER = _IP.display_formatter.formatters["text/html"]
Expand Down
2 changes: 0 additions & 2 deletions qiskit/tools/jupyter/job_watcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
class JobWatcher(Subscriber):
"""An IBM Q job watcher."""

# pylint: disable=import-error

def __init__(self):
super().__init__()
self.jobs = []
Expand Down
2 changes: 1 addition & 1 deletion qiskit/transpiler/coupling.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

import numpy as np
import retworkx as rx
from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module,import-error
from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module

from qiskit.transpiler.exceptions import CouplingError

Expand Down
2 changes: 1 addition & 1 deletion qiskit/transpiler/passes/layout/dense_layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from qiskit.transpiler.basepasses import AnalysisPass
from qiskit.transpiler.exceptions import TranspilerError

from qiskit._accelerate.dense_layout import best_subset # pylint: disable=import-error
from qiskit._accelerate.dense_layout import best_subset


class DenseLayout(AnalysisPass):
Expand Down
2 changes: 1 addition & 1 deletion qiskit/transpiler/passes/optimization/_gate_extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
from qiskit.utils import optionals as _optionals

if _optionals.HAS_Z3:
import z3 # pylint: disable=import-error
import z3

# FLIP GATES #
# XGate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@
class CrosstalkAdaptiveSchedule(TransformationPass):
"""Crosstalk mitigation through adaptive instruction scheduling."""

# pylint: disable=import-error

def __init__(self, backend_prop, crosstalk_prop, weight_factor=0.5, measured_qubits=None):
"""CrosstalkAdaptiveSchedule initializer.
Expand Down
2 changes: 0 additions & 2 deletions qiskit/transpiler/passes/optimization/hoare_opt.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ class HoareOptimizer(TransformationPass):
https://arxiv.org/abs/1810.00375
"""

# pylint: disable=import-error

def __init__(self, size=10):
"""
Args:
Expand Down
2 changes: 1 addition & 1 deletion qiskit/transpiler/passes/optimization/optimize_1q_gates.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from qiskit.circuit.gate import Gate
from qiskit.transpiler.basepasses import TransformationPass
from qiskit.quantum_info.synthesis import Quaternion
from qiskit._accelerate.optimize_1q_gates import compose_u3_rust # pylint: disable=import-error
from qiskit._accelerate.optimize_1q_gates import compose_u3_rust

_CHOP_THRESHOLD = 1e-15

Expand Down
3 changes: 1 addition & 2 deletions qiskit/transpiler/passes/routing/sabre_swap.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,13 @@
from qiskit.dagcircuit import DAGOpNode
from qiskit.tools.parallel import CPU_COUNT

# pylint: disable=import-error
from qiskit._accelerate.sabre_swap import (
build_swap_map,
Heuristic,
NeighborTable,
SabreDAG,
)
from qiskit._accelerate.stochastic_swap import NLayout # pylint: disable=import-error
from qiskit._accelerate.stochastic_swap import NLayout

logger = logging.getLogger(__name__)

Expand Down
2 changes: 1 addition & 1 deletion qiskit/utils/backend_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

_UNSUPPORTED_BACKENDS = ["unitary_simulator", "clifford_simulator"]

# pylint: disable=no-name-in-module, import-error, unused-import
# pylint: disable=no-name-in-module,unused-import


class ProviderCheck:
Expand Down
2 changes: 1 addition & 1 deletion qiskit/utils/optionals.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@
def _nlopt_callback(available):
if not available:
return
import nlopt # pylint: disable=import-error
import nlopt

_logger.info(
"NLopt version: %s.%s.%s",
Expand Down
2 changes: 1 addition & 1 deletion qiskit/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=no-name-in-module,broad-except,cyclic-import,import-error
# pylint: disable=no-name-in-module,broad-except,cyclic-import

"""Contains the terra version."""

Expand Down
2 changes: 1 addition & 1 deletion qiskit/visualization/dag_visualization.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"""
Visualization function for DAG circuit representation.
"""
from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module,import-error
from retworkx.visualization import graphviz_draw # pylint: disable=no-name-in-module

from qiskit.dagcircuit.dagnode import DAGOpNode, DAGInNode, DAGOutNode
from qiskit.circuit import Qubit
Expand Down
4 changes: 2 additions & 2 deletions test/python/algorithms/test_measure_error_mitigation.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,11 @@
from qiskit.utils import optionals

if optionals.HAS_AER:
# pylint: disable=import-error,no-name-in-module
# pylint: disable=no-name-in-module
from qiskit import Aer
from qiskit.providers.aer import noise
if optionals.HAS_IGNIS:
# pylint: disable=import-error,no-name-in-module
# pylint: disable=no-name-in-module
from qiskit.ignis.mitigation.measurement import (
CompleteMeasFitter as CompleteMeasFitter_IG,
TensoredMeasFitter as TensoredMeasFitter_IG,
Expand Down
2 changes: 1 addition & 1 deletion test/python/opflow/test_state_op_meas_evals.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.

# pylint: disable=no-name-in-module,import-error
# pylint: disable=no-name-in-module


""" Test Operator construction, including OpPrimitives and singletons. """
Expand Down
2 changes: 1 addition & 1 deletion test/python/utils/mitigation/test_meas.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
from qiskit.utils import optionals

if optionals.HAS_AER:
# pylint: disable=import-error,no-name-in-module
# pylint: disable=no-name-in-module
from qiskit.providers.aer import Aer
from qiskit.providers.aer.noise import NoiseModel
from qiskit.providers.aer.noise.errors.standard_errors import pauli_error
Expand Down
2 changes: 1 addition & 1 deletion tools/subunit_to_junit.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import argparse
import sys

from junitxml import JUnitXmlResult # pylint: disable=import-error
from junitxml import JUnitXmlResult
from subunit.filters import run_tests_from_stream
from testtools import StreamToExtendedDecorator

Expand Down

0 comments on commit 6f8d2ce

Please sign in to comment.