
    i"                     Z   S r SSK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KJr  SS	KJr  SS
KJrJr  SSKJr  \" S \R.                  " S\5      R1                  S5      R3                  S5      SS  5       5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      rg)z2Plugin for IBM provider backend transpiler stages.    N)Optional)PassManager)PassManagerConfig)PassManagerStagePlugin)common)passes)__version__)ConvertIdToDelayFoldRzzAngle   )issue_deprecation_msgc              #   8   #    U  H  n[        U5      v   M     g 7fN)int).0xs     ^/home/james-whalen/.local/lib/python3.13/site-packages/qiskit_ibm_runtime/transpiler/plugin.py	<genexpr>r   !   s      \qCFF\s   z\d+\.\d+\.\d.   c                   :    \ rS rSrSr S	S\S\\   S\4S jjr	Sr
g)
IBMTranslationPlugin&   PA translation stage plugin for targeting Qiskit circuits
to IBM Quantum systems.Npass_manager_configoptimization_levelreturnc                    [         S   S:X  a  SUR                  0nO0 n[        R                  " SUR                  UR
                  UR                  UR                  UR                  UR                  UR                  UR                  S.UD6n/ nUR                  nU(       a  UR                  [        U5      5        [        U5      U-   $ )'Build IBMTranslationPlugin PassManager.r      backend_props)targetbasis_gatesapproximation_degreecoupling_mapunitary_synthesis_methodunitary_synthesis_plugin_config
hls_configqubits_initially_zero )_TERRA_VERSIONbackend_propertiesr    generate_translation_passmanagerr"   r#   r$   r%   r&   r'   r(   r)   instruction_durationsappendr
   r   )selfr   r   legacy_optionstranslator_pmplugin_passesr.   s          r   pass_manager!IBMTranslationPlugin.pass_manager*   s     !!-/B/U/UVNN?? 

&--+77!4!I!I,99%8%Q%Q,?,_,_*55"5"K"K

 

  3 I I   !12G!HI=)M99    r*   r   __name__
__module____qualname____firstlineno____doc__r   r   r   r   r4   __static_attributes__r*   r6   r   r   r   &   s6     -1:.: %SM: 
	: :r6   r   c                   :    \ rS rSrSr S	S\S\\   S\4S jjr	Sr
g)
IBMDynamicTranslationPluginJ   r   Nr   r   r   c                 "   [         S   S:X  a  SUR                  0nO0 n[        R                  " SUR                  UR
                  UR                  UR                  UR                  UR                  UR                  S.UD6nUR                  n/ nUR                  b  SUR                  ;   nOSUR
                  ;   nU(       a!  U(       d  UR                  [        U5      5        [        [        SS5      =nb
  Xh" 5       /-  n[!        U5      U-   $ )	r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   NidConvertConditionsToIfOpsr*   )r+   r,   r   r-   r"   r#   r$   r%   r&   r'   r(   r.   r/   r
   getattrr   r   )	r0   r   r   r1   r2   r.   r3   id_supportedconvert_passs	            r   r4   (IBMDynamicTranslationPlugin.pass_managerN   s    !!-/B/U/UVNN?? 	
&--+77!4!I!I,99%8%Q%Q,?,_,_*55	
 	
 !4 I I%%1#6#=#==L#6#B#BBL   !12G!HI#F,FMMLZln--M=)M99r6   r*   r   r7   r*   r6   r   r?   r?   J   s6     -1%:.%: %SM%: 
	%: %:r6   r?   c                   N   ^  \ rS rSrSrU 4S jr S	S\S\\   S\	4S jjr
SrU =r$ )
IBMFractionalTranslationPluginv   z(DEPRECATED) A translation stage plugin for targeting Qiskit circuits
to IBM Quantum systems with fractional gate support.

Currently coexistence of fractional gate operations and
dynamic circuits is not assumed.
c                 B   > [        SSSS9  [        TU ]  " U /UQ70 UD6$ )NzSince backends now support running jobs that contain both fractional gates and dynamic circuit, IBMFractionalTranslationPlugin is deprecatedz0.42.0z2Use IBMDynamicFractionalTranslationPlugin instead.)msgversionremedy)r   super__new__)clsargskwargs	__class__s      r   rQ   &IBMFractionalTranslationPlugin.__new__~   s2    aG		
 ws4T4V44r6   r   r   r   c                 $   [         S   S:X  a  SUR                  0nO0 n[        R                  " SUR                  UR
                  UR                  UR                  UR                  UR                  UR                  S.UD6nUR                  n/ n/ nUR                  =(       d    UR
                  nU(       a   SU;  a  UR                  [        U5      5        SU;   a  UR                  [        5       5        [        U5      U-   [        U5      -   $ )r   r   r    r!   rB   rC   rzzr*   )r+   r,   r   r-   r"   r#   r$   r%   r&   r'   r(   r.   r/   r
   r   r   )	r0   r   r   r1   r2   r.   
pre_passespost_passesr"   s	            r   r4   +IBMFractionalTranslationPlugin.pass_manager   s    !!-/B/U/UVNN?? 	
&--+77!4!I!I,99%8%Q%Q,?,_,_*55	
 	
 !4 I I
$++N/B/N/N ./DEFF?|~.:&6[9QQQr6   r*   r   )r8   r9   r:   r;   r<   rQ   r   r   r   r   r4   r=   __classcell__)rU   s   @r   rJ   rJ   v   sA    5 -1 R. R %SM R 
	 R  Rr6   rJ   c                   :    \ rS rSrSr S	S\S\\   S\4S jjr	Sr
g)
%IBMDynamicFractionalTranslationPlugin   zA translation stage plugin for targeting Qiskit circuits
to IBM Quantum systems with both dynamic circuits and fractional gate support.
Nr   r   r   c                 `   [         S   S:X  a  SUR                  0nO0 n[        R                  " S	UR                  UR
                  UR                  UR                  UR                  UR                  UR                  S.UD6nUR                  n/ n/ nUR                  =(       d    UR
                  nU(       a   SU;  a  UR                  [        U5      5        SU;   a  UR                  [        5       5        [        [         SS5      =n	b
  Xi" 5       /-  n[#        U5      U-   [#        U5      -   $ )
r   r   r    r!   rB   rC   rX   rD   Nr*   )r+   r,   r   r-   r"   r#   r$   r%   r&   r'   r(   r.   r/   r
   r   rE   r   r   )
r0   r   r   r1   r2   r.   rY   rZ   r"   rG   s
             r   r4   2IBMDynamicFractionalTranslationPlugin.pass_manager   s'    !!-/B/U/UVNN?? 	
&--+77!4!I!I,99%8%Q%Q,?,_,_*55	
 	
 !4 I I
$++N/B/N/N ./DEFF?|~.#F,FMMLZ<>**J:&6[9QQQr6   r*   r   r7   r*   r6   r   r^   r^      s;     -1$R.$R %SM$R 
	$R $Rr6   r^   )r<   retypingr   qiskit.transpiler.passmanagerr   $qiskit.transpiler.passmanager_configr   ,qiskit.transpiler.preset_passmanagers.pluginr   %qiskit.transpiler.preset_passmanagersr   qiskit.transpilerr   qiskit.versionr	   _terra_version_string*qiskit_ibm_runtime.transpiler.passes.basisr
   r   utils.deprecationr   tuplematchgroupsplitr+   r   r?   rJ   r^   r*   r6   r   <module>rq      s    9 	  5 B O 8 $ ?
 6 HH_.CDJJ1MSSTWXY[Z[\ 
!:1 !:H):"8 ):X1R%; 1Rh)R,B )Rr6   