Skip to content

Commit 370cd88

Browse files
Implement and enforce explicit re-export for cirq modules (quantumlib#6722)
* Enable and enforce the `no_implicit_reexport` mypy rule for cirq modules * Update `__init__.py` files so they explicitly re-export public symbols, but do not re-export local symbols or submodules already in parent namespace * Fix few instances of imports from incorrect modules Fixes quantumlib#6717 --------- Co-authored-by: Pavol Juhas <[email protected]>
1 parent e00c56c commit 370cd88

File tree

47 files changed

+1705
-1365
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1705
-1365
lines changed

cirq/__init__.py

+585-568
Large diffs are not rendered by default.

cirq/circuits/__init__.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@
1414

1515
"""Circuit classes, mutators, and outputs."""
1616

17-
from cirq.circuits.text_diagram_drawer import TextDiagramDrawer
17+
from cirq.circuits.text_diagram_drawer import TextDiagramDrawer as TextDiagramDrawer
18+
from cirq.circuits.qasm_output import QasmOutput as QasmOutput
1819

19-
from cirq.circuits.qasm_output import QasmOutput
20+
from cirq.circuits.circuit import (
21+
AbstractCircuit as AbstractCircuit,
22+
Alignment as Alignment,
23+
Circuit as Circuit,
24+
)
25+
from cirq.circuits.circuit_operation import CircuitOperation as CircuitOperation
26+
from cirq.circuits.frozen_circuit import FrozenCircuit as FrozenCircuit
27+
from cirq.circuits.insert_strategy import InsertStrategy as InsertStrategy
2028

21-
from cirq.circuits.circuit import AbstractCircuit, Alignment, Circuit
22-
from cirq.circuits.circuit_operation import CircuitOperation
23-
from cirq.circuits.frozen_circuit import FrozenCircuit
24-
from cirq.circuits.insert_strategy import InsertStrategy
29+
from cirq.circuits.moment import Moment as Moment
2530

26-
from cirq.circuits.moment import Moment
27-
28-
from cirq.circuits.optimization_pass import PointOptimizer, PointOptimizationSummary
31+
from cirq.circuits.optimization_pass import (
32+
PointOptimizer as PointOptimizer,
33+
PointOptimizationSummary as PointOptimizationSummary,
34+
)

cirq/contrib/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@
2121
from cirq.contrib import acquaintance
2222
from cirq.contrib import graph_device
2323
from cirq.contrib import quirk
24-
from cirq.contrib.qcircuit import circuit_to_latex_using_qcircuit
24+
from cirq.contrib.qcircuit import circuit_to_latex_using_qcircuit as circuit_to_latex_using_qcircuit
2525
from cirq.contrib import json
26-
from cirq.contrib.circuitdag import CircuitDag, Unique
26+
from cirq.contrib.circuitdag import CircuitDag as CircuitDag, Unique as Unique

cirq/contrib/acquaintance/__init__.py

+44-29
Original file line numberDiff line numberDiff line change
@@ -13,55 +13,70 @@
1313
# limitations under the License.
1414

1515
"""Tools for creating and using acquaintance strategies."""
16+
from cirq.contrib.acquaintance.bipartite import (
17+
BipartiteGraphType as BipartiteGraphType,
18+
BipartiteSwapNetworkGate as BipartiteSwapNetworkGate,
19+
)
1620

17-
from cirq.contrib.acquaintance.bipartite import BipartiteGraphType, BipartiteSwapNetworkGate
18-
19-
from cirq.contrib.acquaintance.devices import get_acquaintance_size, UnconstrainedAcquaintanceDevice
21+
from cirq.contrib.acquaintance.devices import (
22+
get_acquaintance_size as get_acquaintance_size,
23+
UnconstrainedAcquaintanceDevice as UnconstrainedAcquaintanceDevice,
24+
)
2025

2126
from cirq.contrib.acquaintance.executor import (
22-
AcquaintanceOperation,
23-
GreedyExecutionStrategy,
24-
StrategyExecutorTransformer,
27+
AcquaintanceOperation as AcquaintanceOperation,
28+
GreedyExecutionStrategy as GreedyExecutionStrategy,
29+
StrategyExecutorTransformer as StrategyExecutorTransformer,
2530
)
2631

27-
from cirq.contrib.acquaintance.gates import acquaint, AcquaintanceOpportunityGate, SwapNetworkGate
32+
from cirq.contrib.acquaintance.gates import (
33+
acquaint as acquaint,
34+
AcquaintanceOpportunityGate as AcquaintanceOpportunityGate,
35+
SwapNetworkGate as SwapNetworkGate,
36+
)
2837

29-
from cirq.contrib.acquaintance.inspection_utils import get_logical_acquaintance_opportunities
38+
from cirq.contrib.acquaintance.inspection_utils import (
39+
get_logical_acquaintance_opportunities as get_logical_acquaintance_opportunities,
40+
)
3041

3142
from cirq.contrib.acquaintance.mutation_utils import (
32-
expose_acquaintance_gates,
33-
rectify_acquaintance_strategy,
34-
replace_acquaintance_with_swap_network,
43+
expose_acquaintance_gates as expose_acquaintance_gates,
44+
rectify_acquaintance_strategy as rectify_acquaintance_strategy,
45+
replace_acquaintance_with_swap_network as replace_acquaintance_with_swap_network,
3546
)
3647

37-
from cirq.contrib.acquaintance.optimizers import remove_redundant_acquaintance_opportunities
48+
from cirq.contrib.acquaintance.optimizers import (
49+
remove_redundant_acquaintance_opportunities as remove_redundant_acquaintance_opportunities,
50+
)
3851

3952
from cirq.contrib.acquaintance.permutation import (
40-
LinearPermutationGate,
41-
PermutationGate,
42-
SwapPermutationGate,
43-
update_mapping,
44-
get_logical_operations,
45-
display_mapping,
46-
return_to_initial_mapping,
47-
uses_consistent_swap_gate,
48-
EXPAND_PERMUTATION_GATES,
49-
DECOMPOSE_PERMUTATION_GATES,
53+
LinearPermutationGate as LinearPermutationGate,
54+
PermutationGate as PermutationGate,
55+
SwapPermutationGate as SwapPermutationGate,
56+
update_mapping as update_mapping,
57+
get_logical_operations as get_logical_operations,
58+
display_mapping as display_mapping,
59+
return_to_initial_mapping as return_to_initial_mapping,
60+
uses_consistent_swap_gate as uses_consistent_swap_gate,
61+
EXPAND_PERMUTATION_GATES as EXPAND_PERMUTATION_GATES,
62+
DECOMPOSE_PERMUTATION_GATES as DECOMPOSE_PERMUTATION_GATES,
5063
)
5164

52-
from cirq.contrib.acquaintance.shift import CircularShiftGate
65+
from cirq.contrib.acquaintance.shift import CircularShiftGate as CircularShiftGate
5366

54-
from cirq.contrib.acquaintance.shift_swap_network import ShiftSwapNetworkGate
67+
from cirq.contrib.acquaintance.shift_swap_network import (
68+
ShiftSwapNetworkGate as ShiftSwapNetworkGate,
69+
)
5570

5671
from cirq.contrib.acquaintance.strategies import (
57-
complete_acquaintance_strategy,
58-
cubic_acquaintance_strategy,
59-
quartic_paired_acquaintance_strategy,
72+
complete_acquaintance_strategy as complete_acquaintance_strategy,
73+
cubic_acquaintance_strategy as cubic_acquaintance_strategy,
74+
quartic_paired_acquaintance_strategy as quartic_paired_acquaintance_strategy,
6075
)
6176

6277
from cirq.contrib.acquaintance.topological_sort import (
63-
is_topologically_sorted,
64-
random_topological_sort,
78+
is_topologically_sorted as is_topologically_sorted,
79+
random_topological_sort as random_topological_sort,
6580
)
6681

6782
from cirq.contrib.acquaintance import testing

cirq/contrib/acquaintance/strategies/__init__.py

+9-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414

1515
"""Acquaintance strategies."""
1616

17-
from cirq.contrib.acquaintance.strategies.complete import complete_acquaintance_strategy
18-
from cirq.contrib.acquaintance.strategies.cubic import cubic_acquaintance_strategy
19-
from cirq.contrib.acquaintance.strategies.quartic_paired import quartic_paired_acquaintance_strategy
17+
from cirq.contrib.acquaintance.strategies.complete import (
18+
complete_acquaintance_strategy as complete_acquaintance_strategy,
19+
)
20+
from cirq.contrib.acquaintance.strategies.cubic import (
21+
cubic_acquaintance_strategy as cubic_acquaintance_strategy,
22+
)
23+
from cirq.contrib.acquaintance.strategies.quartic_paired import (
24+
quartic_paired_acquaintance_strategy as quartic_paired_acquaintance_strategy,
25+
)

cirq/contrib/bayesian_network/__init__.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from cirq.contrib.bayesian_network.bayesian_network_gate import BayesianNetworkGate
15+
from cirq.contrib.bayesian_network.bayesian_network_gate import (
16+
BayesianNetworkGate as BayesianNetworkGate,
17+
)

cirq/contrib/circuitdag/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@
1414

1515
"""Tools for representing a Circuit as a directed acyclic graph."""
1616

17-
from cirq.contrib.circuitdag.circuit_dag import CircuitDag, Unique
17+
from cirq.contrib.circuitdag.circuit_dag import CircuitDag as CircuitDag, Unique as Unique

cirq/contrib/circuitdag/circuit_dag.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,14 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14-
from typing import Any, Callable, Dict, Generic, Iterator, TypeVar, cast, TYPE_CHECKING
14+
15+
from typing import Any, Callable, Dict, Generic, Iterator, TypeVar, cast
1516

1617
import functools
1718
import networkx
1819

20+
import cirq
1921
from cirq import ops
20-
from cirq.circuits import circuit
21-
22-
if TYPE_CHECKING:
23-
import cirq
2422

2523
T = TypeVar('T')
2624

@@ -98,7 +96,7 @@ def make_node(op: 'cirq.Operation') -> Unique:
9896

9997
@staticmethod
10098
def from_circuit(
101-
circuit: circuit.Circuit,
99+
circuit: cirq.Circuit,
102100
can_reorder: Callable[['cirq.Operation', 'cirq.Operation'], bool] = _disjoint_qubits,
103101
) -> 'CircuitDag':
104102
return CircuitDag.from_ops(circuit.all_operations(), can_reorder=can_reorder)
@@ -179,8 +177,8 @@ def all_operations(self) -> Iterator['cirq.Operation']:
179177
def all_qubits(self):
180178
return frozenset(q for node in self.nodes for q in node.val.qubits)
181179

182-
def to_circuit(self) -> circuit.Circuit:
183-
return circuit.Circuit(self.all_operations(), strategy=circuit.InsertStrategy.EARLIEST)
180+
def to_circuit(self) -> cirq.Circuit:
181+
return cirq.Circuit(self.all_operations(), strategy=cirq.InsertStrategy.EARLIEST)
184182

185183
def findall_nodes_until_blocked(
186184
self, is_blocker: Callable[['cirq.Operation'], bool]

cirq/contrib/graph_device/__init__.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@
1414

1515
"""Tools for representing a device as an edge-labelled graph."""
1616

17-
from cirq.contrib.graph_device.hypergraph import UndirectedHypergraph
17+
from cirq.contrib.graph_device.hypergraph import UndirectedHypergraph as UndirectedHypergraph
1818

1919
from cirq.contrib.graph_device.graph_device import (
20-
is_undirected_device_graph,
21-
is_crosstalk_graph,
22-
FixedDurationUndirectedGraphDeviceEdge,
23-
UndirectedGraphDevice,
24-
UnconstrainedUndirectedGraphDeviceEdge,
20+
is_undirected_device_graph as is_undirected_device_graph,
21+
is_crosstalk_graph as is_crosstalk_graph,
22+
FixedDurationUndirectedGraphDeviceEdge as FixedDurationUndirectedGraphDeviceEdge,
23+
UndirectedGraphDevice as UndirectedGraphDevice,
24+
UnconstrainedUndirectedGraphDeviceEdge as UnconstrainedUndirectedGraphDeviceEdge,
2525
)
2626

2727
from cirq.contrib.graph_device.uniform_graph_device import (
28-
uniform_undirected_graph_device,
29-
uniform_undirected_linear_device,
28+
uniform_undirected_graph_device as uniform_undirected_graph_device,
29+
uniform_undirected_linear_device as uniform_undirected_linear_device,
3030
)

cirq/contrib/noise_models/__init__.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14-
1514
from cirq.contrib.noise_models.noise_models import (
16-
DepolarizingNoiseModel,
17-
ReadoutNoiseModel,
18-
DampedReadoutNoiseModel,
19-
DepolarizingWithReadoutNoiseModel,
20-
DepolarizingWithDampedReadoutNoiseModel,
15+
DepolarizingNoiseModel as DepolarizingNoiseModel,
16+
ReadoutNoiseModel as ReadoutNoiseModel,
17+
DampedReadoutNoiseModel as DampedReadoutNoiseModel,
18+
DepolarizingWithReadoutNoiseModel as DepolarizingWithReadoutNoiseModel,
19+
DepolarizingWithDampedReadoutNoiseModel as DepolarizingWithDampedReadoutNoiseModel,
2120
)

cirq/contrib/paulistring/__init__.py

+18-10
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,31 @@
1414

1515
"""Methods related to optimizing and transforming PauliStrings."""
1616

17-
from cirq.contrib.paulistring.clifford_target_gateset import CliffordTargetGateset
17+
from cirq.contrib.paulistring.clifford_target_gateset import (
18+
CliffordTargetGateset as CliffordTargetGateset,
19+
)
1820

1921
from cirq.contrib.paulistring.separate import (
20-
convert_and_separate_circuit,
21-
pauli_string_half,
22-
regular_half,
22+
convert_and_separate_circuit as convert_and_separate_circuit,
23+
pauli_string_half as pauli_string_half,
24+
regular_half as regular_half,
2325
)
2426

2527
from cirq.contrib.paulistring.pauli_string_dag import (
26-
pauli_string_dag_from_circuit,
27-
pauli_string_reorder_pred,
28+
pauli_string_dag_from_circuit as pauli_string_dag_from_circuit,
29+
pauli_string_reorder_pred as pauli_string_reorder_pred,
2830
)
2931

30-
from cirq.contrib.paulistring.recombine import move_pauli_strings_into_circuit
32+
from cirq.contrib.paulistring.recombine import (
33+
move_pauli_strings_into_circuit as move_pauli_strings_into_circuit,
34+
)
3135

32-
from cirq.contrib.paulistring.pauli_string_optimize import pauli_string_optimized_circuit
36+
from cirq.contrib.paulistring.pauli_string_optimize import (
37+
pauli_string_optimized_circuit as pauli_string_optimized_circuit,
38+
)
3339

34-
from cirq.contrib.paulistring.clifford_optimize import clifford_optimized_circuit
40+
from cirq.contrib.paulistring.clifford_optimize import (
41+
clifford_optimized_circuit as clifford_optimized_circuit,
42+
)
3543

36-
from cirq.contrib.paulistring.optimize import optimized_circuit
44+
from cirq.contrib.paulistring.optimize import optimized_circuit as optimized_circuit

cirq/contrib/qasm_import/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
from cirq.contrib.qasm_import.exception import QasmException
16-
from cirq.contrib.qasm_import.qasm import circuit_from_qasm
15+
from cirq.contrib.qasm_import.exception import QasmException as QasmException
16+
from cirq.contrib.qasm_import.qasm import circuit_from_qasm as circuit_from_qasm

cirq/contrib/qcircuit/__init__.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414

1515
"""Converts cirq circuits into latex using qcircuit."""
1616

17-
from cirq.contrib.qcircuit.qcircuit_diagram import circuit_to_latex_using_qcircuit
17+
from cirq.contrib.qcircuit.qcircuit_diagram import (
18+
circuit_to_latex_using_qcircuit as circuit_to_latex_using_qcircuit,
19+
)
1820

1921
from cirq.contrib.qcircuit.qcircuit_diagram_info import (
20-
escape_text_for_latex,
21-
get_multigate_parameters,
22-
get_qcircuit_diagram_info,
22+
escape_text_for_latex as escape_text_for_latex,
23+
get_multigate_parameters as get_multigate_parameters,
24+
get_qcircuit_diagram_info as get_qcircuit_diagram_info,
2325
)

cirq/contrib/quantum_volume/__init__.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@
1414
"""Utilities running the Quantum Volume benchmark on devices"""
1515

1616
from cirq.contrib.quantum_volume.quantum_volume import (
17-
generate_model_circuit,
18-
compute_heavy_set,
19-
sample_heavy_set,
20-
compile_circuit,
21-
calculate_quantum_volume,
22-
QuantumVolumeResult,
23-
CompilationResult,
17+
generate_model_circuit as generate_model_circuit,
18+
compute_heavy_set as compute_heavy_set,
19+
sample_heavy_set as sample_heavy_set,
20+
compile_circuit as compile_circuit,
21+
calculate_quantum_volume as calculate_quantum_volume,
22+
QuantumVolumeResult as QuantumVolumeResult,
23+
CompilationResult as CompilationResult,
2424
)

cirq/contrib/quimb/__init__.py

+16-13
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,26 @@
11
# pylint: disable=wrong-or-nonexistent-copyright-notice
22
from cirq.contrib.quimb.state_vector import (
3-
circuit_for_expectation_value,
4-
tensor_expectation_value,
5-
circuit_to_tensors,
6-
tensor_state_vector,
7-
tensor_unitary,
3+
circuit_for_expectation_value as circuit_for_expectation_value,
4+
tensor_expectation_value as tensor_expectation_value,
5+
circuit_to_tensors as circuit_to_tensors,
6+
tensor_state_vector as tensor_state_vector,
7+
tensor_unitary as tensor_unitary,
88
)
99

1010
from cirq.contrib.quimb.density_matrix import (
11-
tensor_density_matrix,
12-
circuit_to_density_matrix_tensors,
11+
tensor_density_matrix as tensor_density_matrix,
12+
circuit_to_density_matrix_tensors as circuit_to_density_matrix_tensors,
1313
)
1414

15-
from cirq.contrib.quimb.grid_circuits import simplify_expectation_value_circuit, get_grid_moments
15+
from cirq.contrib.quimb.grid_circuits import (
16+
simplify_expectation_value_circuit as simplify_expectation_value_circuit,
17+
get_grid_moments as get_grid_moments,
18+
)
1619

1720
from cirq.contrib.quimb.mps_simulator import (
18-
MPSOptions,
19-
MPSSimulator,
20-
MPSSimulatorStepResult,
21-
MPSState,
22-
MPSTrialResult,
21+
MPSOptions as MPSOptions,
22+
MPSSimulator as MPSSimulator,
23+
MPSSimulatorStepResult as MPSSimulatorStepResult,
24+
MPSState as MPSState,
25+
MPSTrialResult as MPSTrialResult,
2326
)

cirq/contrib/quirk/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@
1414

1515
"""Converts cirq circuits into quirk circuits."""
1616

17-
from cirq.contrib.quirk.export_to_quirk import circuit_to_quirk_url
17+
from cirq.contrib.quirk.export_to_quirk import circuit_to_quirk_url as circuit_to_quirk_url

0 commit comments

Comments
 (0)