§
    ¹³Ùgx  ã                   ó    — d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ dd	lmZ  G d
„ d¦  «        Z G d„ de¦  «        ZdS )z 
Base class for dummy backends.
é    N)Úcircuit)ÚBackendProperties)Ú	BackendV1)Úpulse)ÚQiskitError)Ú	optionalsÚdeprecate_func)Úbasic_providerc                   ó   — e Zd Zdd„ZdS )Ú_CredentialsÚ123456úhttps://c                 óL   — || _         || _        d| _        d| _        d| _        d S )NÚhubÚgroupÚproject)ÚtokenÚurlr   r   r   )Úselfr   r   s      úa/granary/edev/quantum/lib/python3.11/site-packages/qiskit/providers/fake_provider/fake_backend.pyÚ__init__z_Credentials.__init__   s)   € ØˆŒ
ØˆŒØˆŒØˆŒ
Ø ˆŒˆˆó    N)r   r   )Ú__name__Ú
__module__Ú__qualname__r   © r   r   r   r      s(   € € € € € ð!ð !ð !ð !ð !ð !r   r   c                   ót   ‡ — e Zd ZdZ eddd¬¦  «        dˆ fd„	¦   «         Zd„ Zd	„ Zed
„ ¦   «         Z	d„ Z
ˆ xZS )ÚFakeBackendz2This is a dummy backend just for testing purposes.z1.2zin the 2.0 releasez¨Fake backends using BackendV1 are deprecated in favor of :class:`.GenericBackendV2`. You can convert BackendV1 to :class:`.BackendV2` with :class:`.BackendV2Converter`.)ÚsinceÚremoval_timelineÚadditional_msgé
   c                 óŒ   •— t          ¦   «                              |¦  «         || _        t          ¦   «         | _        d| _        dS )z»FakeBackend initializer.

        Args:
            configuration (BackendConfiguration): backend configuration
            time_alive (int): time to wait before returning result
        N)Úsuperr   Ú
time_aliver   Ú_credentialsÚsim)r   Úconfigurationr%   Ú	__class__s      €r   r   zFakeBackend.__init__*   s;   ø€ õ 	‰Œ×Ò˜Ñ'Ô'Ð'Ø$ˆŒÝ(™NœNˆÔØˆŒˆˆr   c                 ó@  — t           j        ryddlm} ddlm}  |¦   «         | _        |                      ¦   «         rH|                     | ¦  «        }| j         	                    |¬¦  «         |  	                    |¬¦  «         d S d S t          j        ¦   «         | _        d S )Nr   )ÚAerSimulator)Ú
NoiseModel)Únoise_model)Ú
_optionalsÚHAS_AERÚ
qiskit_aerr+   Úqiskit_aer.noiser,   r'   Ú
propertiesÚfrom_backendÚset_optionsr
   ÚBasicSimulator)r   r+   r,   r-   s       r   Ú
_setup_simzFakeBackend._setup_sim=   s»   € ÝÔð 	7Ø/Ð/Ð/Ð/Ð/Ð/Ø3Ð3Ð3Ð3Ð3Ð3à#�|‘~”~ˆDŒHØ�ŠÑ Ô ð :Ø(×5Ò5°dÑ;Ô;�Ø”×$Ò$°Ð$Ñ=Ô=Ð=ð × Ò ¨[Ð Ñ9Ô9Ð9Ð9Ð9ð:ð :õ &Ô4Ñ6Ô6ˆDŒHˆHˆHr   c           	      ój  — |                       ¦   «         j        }|€dS t           t          ¦   «         j        |Ž ¦  «        }|                      ¦   «         |                       ¦   «         j        dd„ t          t          |¦  «        ¦  «        D ¦   «         d„ |D ¦   «         g dœ}t          j
        |¦  «        S )zReturn backend propertiesNú2000-01-01 00:00:00Zc                 óN   — g | ]"}d ddddœd ddddœd ddddœd dd	ddœd d
d	ddœg‘Œ#S )r8   ÚT1u   Âµsç        ©ÚdateÚnameÚunitÚvalueÚT2Ú	frequencyÚGHzÚreadout_errorÚ Úoperationalé   r   )Ú.0Ú_s     r   ú
<listcomp>z*FakeBackend.properties.<locals>.<listcomp>W   s�   € ð ð ð ð$ ð! 4¸TÈ9Ð_bÐcÐcØ3¸TÈ9Ð_bÐcÐcà 6Ø +Ø %Ø!$ð	ð ð !7Ø /Ø "Ø!$ð	ð ð 4¸]ÐTVÐabÐcÐcððð ð r   c           	      ó¢   — g | ]L}d dt          |d         ¦  «        z   dz   t          |d         ¦  «        z   ddddd	œg|d         |d         gd
œ‘ŒMS )ÚcxÚCXr   rI   rG   r8   Ú
gate_errorrE   r;   r<   )Úgater>   Ú
parametersÚqubits)Ústr)rH   Úpairs     r   rJ   z*FakeBackend.properties.<locals>.<listcomp>k   s‰   € ð ð ð ð ð !Ø ¥3 t¨A¤w¡<¤<Ñ/°#Ñ5½¸DÀ¼G¹¼ÑDð %;Ø$0Ø$&Ø%(ð	ð ð#ð  $ Aœw¨¨Q¬Ð0ðð ðð ð r   )Úbackend_nameÚbackend_versionÚlast_update_daterQ   ÚgatesÚgeneral)r(   Úcoupling_mapÚlistÚsetÚunionr>   rU   ÚrangeÚlenr   Ú	from_dict)r   rY   Úunique_qubitsr2   s       r   r2   zFakeBackend.propertiesL   sÏ   € à×)Ò)Ñ+Ô+Ô8ˆØÐØ�4Ý˜[�S™UœUœ[¨,Ð7Ñ8Ô8ˆð !ŸIšI™KœKØ#×1Ò1Ñ3Ô3ÔCØ 6ðð õ$ �s =Ñ1Ô1Ñ2Ô2ð%ñ ô ð(ð ð )ðñ ô ð  ðQ)
ð )
ˆ
õV !Ô*¨:Ñ6Ô6Ð6r   c                 óŠ   — t           j        rddlm} |                     ¦   «         S t
          j                             ¦   «         S )Nr   )ÚQasmSimulator)r.   r/   r0   rb   Ú_default_optionsr
   r5   )Úclsrb   s     r   rc   zFakeBackend._default_options€   sG   € åÔð 	DØ0Ð0Ð0Ð0Ð0Ð0à ×1Ò1Ñ3Ô3Ð3å!Ô0×AÒAÑCÔCÐCr   c                 óL  — |}d}t          |t          j        t          j        f¦  «        rd}nkt          |t          j        ¦  «        rd}nNt          |t          ¦  «        r9|r7t          d„ |D ¦   «         ¦  «        rd}nt          d„ |D ¦   «         ¦  «        rd}|€t          d|› d�¦  «        ‚|rt          d¦  «        ‚t          j
        st          j        d	t          ¦  «         | j        €|                      ¦   «          | j        | j        _         | j        j        |fi |¤Ž}|S )
zMain job in simulatorNTFc              3   ób   K  — | ]*}t          |t          j        t          j        f¦  «        V — Œ+d S ©N)Ú
isinstancer   ÚScheduleÚScheduleBlock©rH   Úxs     r   ú	<genexpr>z"FakeBackend.run.<locals>.<genexpr>“   s7   è è € Ð^Ð^ÐPQ•z !¥e¤nµeÔ6IÐ%JÑKÔKÐ^Ð^Ð^Ð^Ð^Ð^r   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rg   )rh   r   ÚQuantumCircuitrk   s     r   rm   z"FakeBackend.run.<locals>.<genexpr>•   s/   è è € ÐQÐQÀ1� A¥wÔ'=Ñ>Ô>ÐQÐQÐQÐQÐQÐQr   zInvalid input object z@, must be either a QuantumCircuit, Schedule, or a list of eitherz>Pulse simulation is currently not supported for fake backends.z)Aer not found using BasicAer and no noise)rh   r   ri   rj   r   ro   rZ   Úallr   r.   r/   ÚwarningsÚwarnÚRuntimeWarningr'   r6   Ú_optionsÚrun)r   Ú	run_inputÚkwargsÚcircuitsÚ	pulse_jobÚjobs         r   ru   zFakeBackend.run‰   s_  € àˆØˆ	Ý�h¥¤µÔ1DÐ EÑFÔFð 		&ØˆIˆIÝ˜¥'Ô"8Ñ9Ô9ð 	&ØˆIˆIÝ˜¥$Ñ'Ô'ð 	&Øð &ÝÐ^Ð^ÐU]Ð^Ñ^Ô^Ñ^Ô^ð &Ø $�I�IÝÐQÐQÈÐQÑQÔQÑQÔQð &Ø %�IØÐÝð@¨ð @ð @ð @ñô ð ð ð 	`ÝÐ^Ñ_Ô_Ð_åÔ!ð 	WÝŒMÐEÅ~ÑVÔVÐVØŒ8ÐØ�OŠOÑÔÐØ œMˆŒÔØˆdŒhŒl˜8Ð.Ð. vÐ.Ð.ˆØˆ
r   )r"   )r   r   r   Ú__doc__r	   r   r6   r2   Úclassmethodrc   ru   Ú__classcell__)r)   s   @r   r   r   '   s¹   ø€ € € € € Ø<Ð<à€^ØØ-ðAðñ ô ð
ð 
ð 
ð 
ð 
ñô ð
ð7ð 7ð 7ð27ð 27ð 27ðh ðDð Dñ „[ðDðð ð ð ð ð ð r   r   )r{   rq   Úqiskitr   Úqiskit.providers.modelsr   Úqiskit.providersr   r   Úqiskit.exceptionsr   Úqiskit.utilsr   r.   r	   r
   r   r   r   r   r   ú<module>rƒ      s  ððð ð €€€à Ð Ð Ð Ð Ð Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø +Ð +Ð +Ð +Ð +Ð +ð!ð !ð !ð !ð !ñ !ô !ð !ð~ð ~ð ~ð ~ð ~�)ñ ~ô ~ð ~ð ~ð ~r   