
    z	i                         S r  " S S5      rg)z!Pass Manager Configuration class.c                   `    \ rS rSrSr                  SS jr\S	S j5       rS rSr	g)
PassManagerConfig   zPass Manager Configuration.Nc                     Xl         X l        X0l        UU l        X@l        XPl        X`l        UU l        Xpl        Xl	        Xl
        Xl        Xl        Xl        Xl        Xl        Xl        UU l        SU l        g)a  Initialize a PassManagerConfig object

Args:
    initial_layout (Layout): Initial position of virtual qubits on
        physical qubits.
    basis_gates (list): List of basis gate names to unroll to.
    coupling_map (CouplingMap): Directed graph represented a coupling
        map.
    layout_method (str): the pass to use for choosing initial qubit
        placement. This will be the plugin name if an external layout stage
        plugin is being used.
    routing_method (str): the pass to use for routing qubits on the
        architecture. This will be a plugin name if an external routing stage
        plugin is being used.
    translation_method (str): the pass to use for translating gates to
        basis_gates. This will be a plugin name if an external translation stage
        plugin is being used.
    scheduling_method (str): the pass to use for scheduling instructions. This will
        be a plugin name if an external scheduling stage plugin is being used.
    instruction_durations (InstructionDurations): Dictionary of duration
        (in dt) for each instruction.
    approximation_degree (float): heuristic dial used for circuit approximation
        (1.0=no approximation, 0.0=maximal approximation)
    seed_transpiler (int): Sets random seed for the stochastic parts of
        the transpiler.
    timing_constraints (TimingConstraints): Hardware time alignment restrictions.
    unitary_synthesis_method (str): The string method to use for the
        :class:`~qiskit.transpiler.passes.UnitarySynthesis` pass. Will
        search installed plugins for a valid method. You can see a list of
        installed plugins with :func:`.unitary_synthesis_plugin_names`.
    target (Target): The backend target
    hls_config (HLSConfig): An optional configuration class to use for
        :class:`~qiskit.transpiler.passes.HighLevelSynthesis` pass.
        Specifies how to synthesize various high-level objects.
    init_method (str): The plugin name for the init stage plugin to use
    optimization_method (str): The plugin name for the optimization stage plugin
        to use.
    qubits_initially_zero (bool): Indicates whether the input circuit is
        zero-initialized.
FN)initial_layoutbasis_gatescoupling_mapinit_methodlayout_methodrouting_methodtranslation_methodoptimization_methodscheduling_methodinstruction_durationsapproximation_degreeseed_transpilertiming_constraintsunitary_synthesis_methodunitary_synthesis_plugin_configtarget
hls_configqubits_initially_zero_is_clifford_t)selfr   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   s                      ^/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/transpiler/passmanager_config.py__init__PassManagerConfig.__init__   s    z -&(&*,"4#6 !2%:"$8!."4(@%/N,$%:" $    c                    U " S0 UD6nUR                   c  UR                  Ul         UR                  c  UR                  Ul        UR                  c  UR                  Ul        UR                  c  U(       d  UR                  Ul        UR
                  c&  [        US5      (       a  UR                  5       Ul        UR                  c&  [        US5      (       a  UR                  5       Ul        U$ )a  Construct a configuration based on a backend and user input.

This method automatically generates a PassManagerConfig object based on the backend's
features. User options can be used to overwrite the configuration.

Args:
    backend (BackendV2): The backend that provides the configuration.
    pass_manager_options: User-defined option-value pairs.

Returns:
    PassManagerConfig: The configuration generated based on the arguments.

Raises:
    AttributeError: If the backend does not support a `configuration()` method.
get_scheduling_stage_pluginget_translation_stage_plugin )
r   operation_namesr   r   r   r   hasattrr   r   r    )clsbackend_skip_targetpass_manager_optionsress        r   from_backendPassManagerConfig.from_backendf   s    " )()??"%55CO#&33C$$,(/(E(EC%::l CJ  (WW>[-\-\$+$G$G$IC!!!)gg?].^.^%,%I%I%KC"
r   c                 R   SnSnSR                  / SPU R                   PSPU R                   PSPU R                   PSPU R                   PSPU R
                   PS	PU R                   PS
PU R                   PSP[        U R                  5      R                  X5       PSPU R                   PSPU R                   PSPU R                   PSPU R                   PSPU R                   PSPU R                    PSP[        U R"                  5      R                  X5       PSP5      $ )N
z
	 z&Pass Manager Config:
	initial_layout: z
	basis_gates: z
	coupling_map: z
	layout_method: z
	routing_method: z
	translation_method: z
	scheduling_method: z
	instruction_durations: z
	approximation_degree: z
	seed_transpiler: z
	timing_constraints: z
	unitary_synthesis_method: z#
	unitary_synthesis_plugin_config: z
	qubits_initially_zero: z

	target: )joinr   r   r   r
   r   r   r   strr   replacer   r   r   r   r   r   r   )r   newlinenewline_tabs      r   __str__PassManagerConfig.__str__   s   L L ! L!%!4!4 5L6L"../L0L  $001L2 L !% 2 23	L4!	L
 "&!4!4 5L
6%L &*%<%<$=L>$L %)$:$:#;L<(L ),D,F,F(G(O(OPW(e'fLg'L (,'@'@&ALB"L #'"6"6!7L8%L &*%<%<$=L>+L ,0+H+H*ILJ2L 372V2V1WLX(L )-(B(B'CLDL T[[)11'GHL IKL	
r   )r   r   r   r   r   r	   r   r   r
   r   r   r   r   r   r   r   r   r   r   )NNNNNNNNNNNdefaultNNNNNT)F)
__name__
__module____qualname____firstlineno____doc__r   classmethodr)   r3   __static_attributes__r!   r   r   r   r      s]    % "!!*(, "'Q$f  >
r   r   N)r:   r   r!   r   r   <module>r=      s    (J
 J
r   