§
    º³Ùgµ  ã                   óJ   — d Z ddlmZ ddlmZ ddlmZ ddlmZ dedefd„Z	d	S )
zšPass manager for optimization level 0, providing no explicit optimization.

Level 0 pass manager: no explicit optimization other than mapping to backend.
é    )ÚPassManagerConfig)ÚStagedPassManager)Úcommon)ÚPassManagerStagePluginManagerÚpass_manager_configÚreturnc           
      óä  — t          ¦   «         }| j        }| j        }| j        }| j        pd}| j        pd}| j        pd}| j        pd}| j        pd}	| j	        pd}
| j
        }|                     d|| d¬¦  «        }|s|r|                     d|| d¬¦  «        }|}nd}d}|                     d	|| d¬¦  «        }|r|j        r|�1|                     d
¬¦  «        rt          j        ||¦  «        }||z  }nd}|                     d|
| d¬¦  «        }t          j        ||||	|
||¬¦  «        }|                     d|| d¬¦  «        }|                     d|	| d¬¦  «        }t#          ||||||||¬¦  «        S )a‰  Level 0 pass manager: no explicit optimization other than mapping to backend.

    This pass manager applies the user-given initial layout. If none is given, a trivial
    layout consisting of mapping the i-th virtual qubit to the i-th physical qubit is used.
    Any unused physical qubit is allocated as ancilla space.

    The pass manager then unrolls the circuit to the desired basis, and transforms the
    circuit to match the coupling map.

    Args:
        pass_manager_config: configuration of the pass manager.

    Returns:
        a level 0 pass manager.

    Raises:
        TranspilerError: if the passmanager config is invalid.
    ÚdefaultÚsabreÚ
translatorÚroutingr   )Úoptimization_levelÚlayoutNÚtranslationT)Ústrict_directionÚ
scheduling)Úlayout_methodÚrouting_methodÚtranslation_methodÚoptimization_methodÚscheduling_methodÚbasis_gatesÚtargetÚinitÚoptimization)Úpre_initr   r   r   r   Úpre_optimizationr   r   )r   r   Úcoupling_mapÚinitial_layoutÚinit_methodr   r   r   r   r   r   Úget_passmanager_stageÚis_symmetricÚget_non_global_operation_namesr   Úgenerate_pre_op_passmanagerÚ#generate_control_flow_options_checkr   )r   Úplugin_managerr   r   r   r    r   r   r   r   r   r   Ú
routing_pmr   r   r   Úpre_optÚschedr   r   r   s                        úb/granary/edev/quantum/lib/python3.11/site-packages/qiskit/transpiler/preset_passmanagers/level0.pyÚlevel_0_pass_managerr+      s;  € õ& 3Ñ4Ô4€NØ%Ô1€KØ&Ô3€LØ(Ô7€NØ%Ô1Ð>°Y€KØ'Ô5ÐB¸€MØ(Ô7ÐB¸7€NØ,Ô?ÐOÀ<ÐØ-ÔAÐNÀYÐØ+Ô=ÐJÀÐØ Ô'€Fð  ×5Ò5Ø�>Ð#6È1ð 6ñ ô €Jð
 ð �~ð Ø×5Ò5Ø�mÐ%8ÈQð 6ñ 
ô 
ˆð ˆˆàˆØˆà ×6Ò6ØÐ)Ð+>ÐSTð 7ñ ô €Kð 	ð ˜\Ô6ð ØÐ˜v×DÒDÐVZÐDÑ[Ô[ÐåÔ4°V¸\ÑJÔJˆØ�;Ñˆˆàˆà×0Ò0ØÐ'Ð)<ÐQRð 1ñ ô €Eõ Ô9Ø#Ø%Ø-Ø/Ø+ØØðñ ô €Hð ×/Ò/Ø�Ð0ÀQð 0ñ ô €Dð "×7Ò7ØÐ+Ð-@ÐUVð 8ñ ô €Lõ ØØØØØØ Ø!Øð	ñ 	ô 	ð 	ó    N)
Ú__doc__Ú$qiskit.transpiler.passmanager_configr   Úqiskit.transpiler.passmanagerr   Ú%qiskit.transpiler.preset_passmanagersr   Ú,qiskit.transpiler.preset_passmanagers.pluginr   r+   © r,   r*   ú<module>r3      sœ   ððð ð
 CÐ BÐ BÐ BÐ BÐ BØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð
WÐ.?ð WÐDUð Wð Wð Wð Wð Wð Wr,   