
    z	it                    N    S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  S	S jrg)
zPass manager for optimization level 1, providing light optimization.

Level 1 pass manager: light optimization by simple adjacent gate collapsing.
    )annotations)PassManagerConfig)StagedPassManager)common)PassManagerStagePluginManagerc           
        [        5       nU R                  nU R                  nU R                  nU R                  =(       d    SnU R
                  =(       d    SnU R                  =(       d    SnU R                  =(       d    SnU R                  =(       d    Sn	U R                  =(       d    Sn
U R                  nUR                  SXpSS9nU(       d  U(       a  UR                  SX`SS9nUnOSnSnUR                  SXSS9nUR                  SXSS9nUR                  S	XSS9n[        R                  " UUUU	U
UUS
9nUR                  SXPSS9n[        UUUUUUUS9$ )a9  Level 1 pass manager: light optimization by simple adjacent gate collapsing.

This pass manager applies the user-given initial layout. If none is given,
and a trivial layout (i-th virtual -> i-th physical) makes the circuit fit
the coupling map, that is used.
Otherwise, the circuit is mapped to the most densely connected coupling subgraph,
and swaps are inserted to map. 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. Finally, optimizations in the form of adjacent
gate collapse and redundant reset removal are performed.

Args:
    pass_manager_config: configuration of the pass manager.

Returns:
    a level 1 pass manager.

Raises:
    TranspilerError: if the passmanager config is invalid.
defaultrouting   )optimization_levellayoutNtranslationoptimization
scheduling)layout_methodrouting_methodtranslation_methodoptimization_methodscheduling_methodbasis_gatestargetinit)pre_initr   r   r
   r   r   r   )r   r   coupling_mapinitial_layoutinit_methodr   r   r   r   r   r   get_passmanager_stager   #generate_control_flow_options_checkr   )pass_manager_configplugin_managerr   r   r   r   r   r   r   r   r   r   
routing_pmr   r
   r   r   schedr   r   s                       f/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/transpiler/preset_passmanagers/level1.pylevel_1_pass_managerr$      s   * 34N%11K&33L(77N%11>YK'55BM(77D9N,??L9-AANY+==J ''F  55>1 6 J
 ~55mQ 6 
   66)ST 7 K "77+UV 8 L 00'QR 1 E 99#%-/+H //Q 0 D !     N)r   r   returnr   )__doc__
__future__r   $qiskit.transpiler.passmanager_configr   qiskit.transpiler.passmanagerr   %qiskit.transpiler.preset_passmanagersr   ,qiskit.transpiler.preset_passmanagers.pluginr   r$    r%   r#   <module>r.      s#    # B ; 8
Rr%   