§
    ¹³Ùg}  ã                  óÌ   — d Z ddlmZ ddlmZ ddlmZ ddlm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  e	j        e¦  «        ZegZ G d„ de¦  «        ZdS )zDProvider for basic simulator backends, formerly known as `BasicAer`.é    )Úannotations)ÚCallable)ÚOrderedDict)ÚTypeN)ÚQiskitError)ÚBackend)Ú
ProviderV1)ÚQiskitBackendNotFoundError)Úfilter_backendsé   )ÚBasicSimulatorc                  óV   ‡ — e Zd ZdZdˆ fd„Zddˆ fd	„Z	 ddd„Zdd„Zdd„Zdd„Z	ˆ xZ
S )ÚBasicProviderzProvider for test simulators.ÚreturnÚNonec                óz   •— t          ¦   «                              ¦   «          |                      ¦   «         | _        d S ©N)ÚsuperÚ__init__Ú_verify_backendsÚ	_backends)ÚselfÚ	__class__s    €úd/granary/edev/quantum/lib/python3.11/site-packages/qiskit/providers/basic_provider/basic_provider.pyr   zBasicProvider.__init__)   s2   ø€ Ý‰Œ×ÒÑÔÐð ×.Ò.Ñ0Ô0ˆŒˆˆó    NÚnameú
str | Noner   c                ó:   •—  t          ¦   «         j        dd|i|¤ŽS )Nr   © )r   Úget_backend)r   r   Úkwargsr   s      €r   r    zBasicProvider.get_backend/   s%   ø€ Ø"�u‰wŒwÔ"Ð7Ð7¨Ð7°Ð7Ð7Ð7r   ÚfiltersúCallable | Noneúlist[Backend]c                óœ   — | j                              ¦   «         }|r#d„ |D ¦   «         }||vrt          d|› d�¦  «        ‚t          |fd|i|¤ŽS )Nc                óZ   — g | ](}|j         d k    r|                     ¦   «         n|j        ‘Œ)S )r   )Úversionr   )Ú.0Úbackends     r   ú
<listcomp>z*BasicProvider.backends.<locals>.<listcomp>7   s?   € ð ð ð ØMT '¤/°QÒ"6Ð"6�—’‘”�¸G¼Lðð ð r   zThe 'z*' backend is not installed in your system.r"   )r   Úvaluesr
   r   )r   r   r"   r!   ÚbackendsÚ	availables         r   r,   zBasicProvider.backends2   s‡   € ð ”>×(Ò(Ñ*Ô*ˆØð 	ðð ØX`ðñ ô ˆIð ˜9Ð$Ð$Ý0ØL˜DÐLÐLÐLñô ð õ ˜xÐCÐC°ÐC¸FÐCÐCÐCr   úOrderedDict[str, Backend]c                óx   — t          ¦   «         }t          D ]#}|                      |¦  «        }|j        }|||<   Œ$|S )aw  
        Return the test backends in `BACKENDS` that are
        effectively available (as some of them might depend on the presence
        of an optional dependency or on the existence of a binary).

        Returns:
            dict[str:Backend]: a dict of test backend instances for
                the backends that could be instantiated, keyed by backend name.
        )r   Ú
SIMULATORSÚ_get_backend_instancer   )r   ÚretÚbackend_clsÚbackend_instanceÚbackend_names        r   r   zBasicProvider._verify_backends@   sJ   € õ ‰mŒmˆÝ%ð 	1ð 	1ˆKØ#×9Ò9¸+ÑFÔFÐØ+Ô0ˆLØ 0ˆC�ÑÐØˆ
r   r3   úType[Backend]c                ór   — 	  || ¬¦  «        }n(# t           $ r}t          d|› d|› �¦  «        |‚d}~ww xY w|S )a  
        Return an instance of a backend from its class.

        Args:
            backend_cls (class): backend class.
        Returns:
            Backend: a backend instance.
        Raises:
            QiskitError: if the backend could not be instantiated.
        )ÚproviderzBackend z could not be instantiated: N)Ú	Exceptionr   )r   r3   r4   Úerrs       r   r1   z#BasicProvider._get_backend_instanceQ   sl   € ð	bØ*˜{°DÐ9Ñ9Ô9ÐÐøÝð 	bð 	bð 	bÝÐW¨ÐWÐWÐRUÐWÐWÑXÔXÐ^aÐaøøøøð	bøøøð  Ðs   ‚ �
4™/¯4Ústrc                ó   — dS )Nr   r   )r   s    r   Ú__str__zBasicProvider.__str__d   s   € Øˆr   )r   r   r   )r   r   r   r   )NN)r   r   r"   r#   r   r$   )r   r.   )r3   r6   r   r   )r   r;   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r,   r   r1   r=   Ú__classcell__)r   s   @r   r   r   &   sÇ   ø€ € € € € Ø'Ð'ð1ð 1ð 1ð 1ð 1ð 1ð8ð 8ð 8ð 8ð 8ð 8ð 8ð CGðDð Dð Dð Dð Dðð ð ð ð" ð  ð  ð  ð&ð ð ð ð ð ð ð r   r   )rA   Ú
__future__r   Úcollections.abcr   Úcollectionsr   Útypingr   ÚloggingÚqiskit.exceptionsr   Úqiskit.providers.backendr   Úqiskit.providers.providerr	   Úqiskit.providers.exceptionsr
   Úqiskit.providers.providerutilsr   Úbasic_simulatorr   Ú	getLoggerr>   Úloggerr0   r   r   r   r   ú<module>rP      s  ðð KÐ Jà "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à €€€à )Ð )Ð )Ð )Ð )Ð )Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø BÐ BÐ BÐ BÐ BÐ BØ :Ð :Ð :Ð :Ð :Ð :à +Ð +Ð +Ð +Ð +Ð +ð 
ˆÔ	˜8Ñ	$Ô	$€àÐ€
ð?ð ?ð ?ð ?ð ?�Jñ ?ô ?ð ?ð ?ð ?r   