
    i                         S r SSKJrJr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JrJr   " S
 S5      r\ " S S5      5       rg)zSimulator options.    )ListUnionOptional)MissingOptionalLibraryError)	BackendV2)	optionals)CouplingMap)field_validator   )Unset	UnsetTypeskip_unset_validationprimitive_dataclassc                       \ rS rSrSrSrg)
NoiseModel   z$Fake noise model class for pydantic. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       f/home/james-whalen/.local/lib/python3.13/site-packages/qiskit_ibm_runtime/options/simulator_options.pyr   r      s    .r   r   c            	           \ rS rSr% Sr\r\\\	\
\4      \S'    \r\\	\4   \S'    \r\\	\\\      \4   \S'    \r\\	\\   4   \S'    \" SSS9\\S	\\
\4   S
\\
\4   4S j5       5       5       rS\S
S4S jrSrg)SimulatorOptions!   zSimulator options.

For best practice in simulating a backend make sure to pass the
basis gates and coupling map of that backend.

noise_modelseed_simulatorcoupling_mapbasis_gatesplain)modemodelreturnc                     [        U[        5      (       dA  [        R                  (       d  [	        S5      eSSKJn  [        X5      (       d  [	        S5      eU$ )NzF'noise_model' can only be a dictionary or qiskit_aer.noise.NoiseModel.r   r   )
isinstancedictr   HAS_AER
ValueErrorqiskit_aer.noiser   )clsr%   AerNoiseModels      r   _validate_noise_model&SimulatorOptions._validate_noise_modelD   sS     %&&$$ \  e33 \  r   backendNc                     [         R                  (       d  [        SSS5      eSSKJn  UR                  U5      U l        [        U[        5      (       a#  UR                  U l	        UR                  U l        gg)zSet backend for simulation.
This method changes noise_model, coupling_map, basis_gates according to given backend.

Args:
    backend: backend to be set.

Raises:
    MissingOptionalLibraryError: if qiskit-aer is not found.
z
qiskit-aerzAer providerzpip install qiskit-aerr   r(   N)r   r+   r   r-   r   from_backendr   r)   r   r!   operation_namesr"   )selfr2   r/   s      r   set_backendSimulatorOptions.set_backendX   sj       -n.F 	
 )55g>gy)) ' 4 4D&66D *r   )r"   r!   r   )r   r   r   r   r   r   r   r   r   r   r*   r   __annotations__r    intr!   r   r	   r"   strr
   classmethodr   r0   r   r7   r   r   r   r   r   r   !   s     AFK%	4 ;<=E
 -2NE)S.)1 DIL%	4S	?K?@H 05Ky$s)+,4 ]1%j0@*A eDR\L\F]    2"79 7 7r   r   N)r   typingr   r   r   qiskit.exceptionsr   qiskit.providersr   qiskit.utilsr   qiskit.transpilerr	   pydanticr
   utilsr   r   r   r   r   r   r   r   r   <module>rD      sK     ( ( 9 & " ) $ O O	 	 M7 M7 M7r   