§
    ¹³ÙgŽ"  ã                  óä   — d Z ddlmZ ddlmZ ddlZddlZddlm	Z	m
Z
mZ ddlmZ ddlmZ dd	lmZ ej        rdd
lmZ 	 d+d,d„Z	 d+d-d„Z	 d.d/d„Z	 d+d0d„Zd1d„Zd2d!„Zd3d#„Zd4d&„Zd4d'„Zd5d*„ZdS )6z´Primitive validation methods.

Note that these are not intended to be part of the public API of base primitives
but are here for backwards compatibility with deprecated functions.
é    )Úannotations)ÚSequenceN)ÚQuantumCircuitÚControlFlowOpÚMeasure)ÚSparsePauliOp)ÚBaseOperatoré   ©Úinit_observable)Ú
PauliSumOpÚcircuitsú)Sequence[QuantumCircuit] | QuantumCircuitÚobservablesúKSequence[BaseOperator | PauliSumOp | str] | BaseOperator | PauliSumOp | strÚparameter_valuesú:Sequence[Sequence[float]] | Sequence[float] | float | NoneÚreturnúFtuple[tuple[QuantumCircuit], tuple[BaseOperator], tuple[tuple[float]]]c                óÌ   — t          | ¦  «        } t          |¦  «        }t          |dgt          | ¦  «        z  ¬¦  «        }t	          | |¦  «         t          | |¦  «         | ||fS )a¾  Validate run arguments for a reference Estimator.

    Args:
        circuits: one or more circuit objects.
        observables: one or more observable objects.
        parameter_values: concrete parameters to be bound.

    Returns:
        The formatted arguments ``(circuits, observables, parameter_values)``.

    Raises:
        TypeError: If input arguments are invalid types.
        ValueError: if input arguments are invalid values.
    © ©Údefault)Ú_validate_circuitsÚ_validate_observablesÚ_validate_parameter_valuesÚlenÚ)_cross_validate_circuits_parameter_valuesÚ$_cross_validate_circuits_observables)r   r   r   s      úW/granary/edev/quantum/lib/python3.11/site-packages/qiskit/primitives/base/validation.pyÚ_validate_estimator_argsr!   #   sw   € õ( " (Ñ+Ô+€HÝ'¨Ñ4Ô4€KÝ1ØØ�•s˜8‘}”}Ñ$ðñ ô Ðõ .¨hÐ8HÑIÔIÐIÝ(¨°;Ñ?Ô?Ð?à�[Ð"2Ð2Ð2ó    c                ó�   — t          | d¬¦  «        } t          |dgt          | ¦  «        z  ¬¦  «        }t          | |¦  «         | |fS )az  Validate run arguments for a reference Sampler.

    Args:
        circuits: one or more circuit objects.
        parameter_values: concrete parameters to be bound.

    Returns:
        The formatted arguments ``(circuits, parameter_values)``.

    Raises:
        TypeError: If input arguments are invalid types.
        ValueError: if input arguments are invalid values.
    T)Úrequires_measurer   r   )r   r   r   r   )r   r   s     r    Ú_validate_sampler_argsr%   E   s]   € õ$ " (¸TÐBÑBÔB€HÝ1ØØ�•s˜8‘}”}Ñ$ðñ ô Ðõ .¨hÐ8HÑIÔIÐIàÐ%Ð%Ð%r"   Fr$   Úboolútuple[QuantumCircuit, ...]c                óì  — t          | t          ¦  «        r| f} nat          | t          ¦  «        rt          d„ | D ¦   «         ¦  «        st	          d¦  «        ‚t          | t
          ¦  «        st          | ¦  «        } t          | ¦  «        dk    rt          d¦  «        ‚|rUt          | ¦  «        D ]E\  }}|j	        dk    rt          d|› d�¦  «        ‚t          |¦  «        st          d|› d�¦  «        ‚ŒF| S )Nc              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S ©N)Ú
isinstancer   )Ú.0Úcirs     r    ú	<genexpr>z%_validate_circuits.<locals>.<genexpr>i   s=   è è € ð 7ð 7Ø,/�
�3�Ñ'Ô'ð7ð 7ð 7ð 7ð 7ð 7r"   z4Invalid circuits, expected Sequence[QuantumCircuit].r   zNo circuits were provided.zThe zv-th circuit does not have any classical bit. Sampler requires classical bits, plus measurements on the desired qubits.zh-th circuit does not have Measure instruction. Without measurements, the circuit cannot be sampled from.)r+   r   r   ÚallÚ	TypeErrorÚtupler   Ú
ValueErrorÚ	enumerateÚ
num_clbitsÚ_has_measure)r   r$   ÚiÚcircuits       r    r   r   c   sO  € õ �(�NÑ+Ô+ð #Ø�;ˆˆÝ˜¥(Ñ+Ô+ð #µ3ð 7ð 7Ø3;ð7ñ 7ô 7ñ 4ô 4ð #õ ÐNÑOÔOÐOÝ˜¥%Ñ(Ô(ð #Ý˜‘?”?ˆÝ
ˆ8�}„}˜ÒÐÝÐ5Ñ6Ô6Ð6àð Ý# HÑ-Ô-ð 	ð 	‰JˆAˆwØÔ! QÒ&Ð&Ý ð-˜1ð -ð -ð -ñô ð õ
   Ñ(Ô(ð Ý ðP˜1ð Pð Pð Pñô ð ðð
 €Or"   r   ú2Sequence[Sequence[float]] | Sequence[float] | Noneútuple[tuple[float, ...], ...]c                óN  — | €|€t          d¦  «        ‚|} t          | t          j        ¦  «        r|                      ¦   «         } n.t          | t
          ¦  «        rt          d„ | D ¦   «         ¦  «        } t          | ¦  «        r| ff} n1t          | t
          ¦  «        rt          d„ | D ¦   «         ¦  «        s| f} t          | t
          ¦  «        r2t          d„ | D ¦   «         ¦  «        rt          d„ | D ¦   «         ¦  «        st          d¦  «        ‚t          d„ | D ¦   «         ¦  «        S )Nz9No default `parameter_values`, optional input disallowed.c              3  óv   K  — | ]4}t          |t          j        ¦  «        r|                     ¦   «         n|V — Œ5d S r*   )r+   ÚnpÚndarrayÚtolist©r,   Úvectors     r    r.   z-_validate_parameter_values.<locals>.<genexpr>�   sS   è è € ð !
ð !
àõ  *¨&µ"´*Ñ=Ô=ÐIˆF�MŠM‰OŒOˆOÀ6ð!
ð !
ð !
ð !
ð !
ð !
r"   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r*   ©r+   r   r?   s     r    r.   z-_validate_parameter_values.<locals>.<genexpr>˜   s=   è è € ð <ð <Ø)/�
�6�8Ñ$Ô$ð<ð <ð <ð <ð <ð <r"   c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r*   rB   r?   s     r    r.   z-_validate_parameter_values.<locals>.<genexpr>    s,   è è € ÐOÐO°F•:˜f¥hÑ/Ô/ÐOÐOÐOÐOÐOÐOr"   c              3  óH   K  — | ]}t          d „ |D ¦   «         ¦  «        V — ŒdS )c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r*   )Ú_isreal©r,   Úvalues     r    r.   z7_validate_parameter_values.<locals>.<genexpr>.<genexpr>¡   s(   è è € Ð:Ð:¨%•w˜u‘~”~Ð:Ð:Ð:Ð:Ð:Ð:r"   N)r/   r?   s     r    r.   z-_validate_parameter_values.<locals>.<genexpr>¡   s9   è è € ÐZÐZ¸v•3Ð:Ð:°6Ð:Ñ:Ô:Ñ:Ô:ÐZÐZÐZÐZÐZÐZr"   z=Invalid parameter values, expected Sequence[Sequence[float]].c              3  óH   K  — | ]}t          d „ |D ¦   «         ¦  «        V — ŒdS )c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r*   )ÚfloatrG   s     r    r.   z7_validate_parameter_values.<locals>.<genexpr>.<genexpr>¥   s(   è è € Ð8Ð8¨•u˜U‘|”|Ð8Ð8Ð8Ð8Ð8Ð8r"   N)r1   r?   s     r    r.   z-_validate_parameter_values.<locals>.<genexpr>¥   s9   è è € ÐXÐX¸V•Ð8Ð8°Ð8Ñ8Ô8Ñ8Ô8ÐXÐXÐXÐXÐXÐXr"   )r2   r+   r<   r=   r>   r   r1   rF   Úanyr/   r0   )r   r   s     r    r   r   ‚   s…  € ð
 ÐØˆ?ÝÐXÑYÔYÐYØ"Ðõ Ð"¥B¤JÑ/Ô/ð 
Ø+×2Ò2Ñ4Ô4ÐÐÝ	Ð$¥hÑ	/Ô	/ð 
Ý ð !
ð !
à*ð!
ñ !
ô !
ñ 
ô 
Ðõ ÐÑ Ô ð /Ø-Ð/Ð1ÐÐÝ	Ð$¥hÑ	/Ô	/ð /½ð <ð <Ø3Cð<ñ <ô <ñ 9ô 9ð /ð -Ð.Ðõ Ð'­Ñ2Ô2ðYåÐOÐOÐ>NÐOÑOÔOÑOÔOðYõ ÐZÐZÐIYÐZÑZÔZÑZÔZðYõ
 ÐWÑXÔXÐXåÐXÐXÐGWÐXÑXÔXÑXÔXÐXr"   útuple[SparsePauliOp, ...]c                óÒ   — t          | t          ¦  «        st          | t          ¦  «        s| f} t          | ¦  «        dk    rt	          d¦  «        ‚t          d„ | D ¦   «         ¦  «        S )Nr   zNo observables were provided.c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r*   r   )r,   Úobss     r    r.   z(_validate_observables.<locals>.<genexpr>¯   s*   è è € Ð=Ð=¨#• Ñ%Ô%Ð=Ð=Ð=Ð=Ð=Ð=r"   )r+   Ústrr   r   r2   r1   )r   s    r    r   r   ¨   sm   € õ �+�sÑ#Ô#ð %­:°kÅ8Ñ+LÔ+Lð %Ø"�nˆÝ
ˆ;ÑÔ˜1ÒÐÝÐ8Ñ9Ô9Ð9ÝÐ=Ð=°Ð=Ñ=Ô=Ñ=Ô=Ð=r"   ÚNonec           
     óx  — t          | ¦  «        t          |¦  «        k    r0t          dt          | ¦  «        › dt          |¦  «        › d�¦  «        ‚t          t          | |¦  «        ¦  «        D ]K\  }\  }}t          |¦  «        |j        k    r+t          dt          |¦  «        › d|j        › d|› d�¦  «        ‚ŒLd S )NúThe number of circuits (z5) does not match the number of parameter value sets (ú).zThe number of values (z+) does not match the number of parameters (z
) for the z-th circuit.)r   r2   r3   ÚzipÚnum_parameters)r   r   r6   r7   r@   s        r    r   r   ²   s  € õ ˆ8�}„}�Ð,Ñ-Ô-Ò-Ð-ÝðM¥s¨8¡}¤}ð Mð MÝ36Ð7GÑ3HÔ3HðMð Mð Mñ
ô 
ð 	
õ !*­#¨hÐ8HÑ*IÔ*IÑ JÔ Jð ð ÑˆÑˆG�VÝˆv‰;Œ;˜'Ô0Ò0Ð0Ýð_­¨V©¬ð _ð _Ø-4Ô-Cð_ð _ØOPð_ð _ð _ñô ð ð 1ðð r"   ú%tuple[BaseOperator | PauliSumOp, ...]c                ó^  — t          | ¦  «        t          |¦  «        k    r0t          dt          | ¦  «        › dt          |¦  «        › d�¦  «        ‚t          t          | |¦  «        ¦  «        D ]>\  }\  }}|j        |j        k    r&t          d|› d|j        › d|› d|j        › d�	¦  «        ‚Œ?d S )NrT   z,) does not match the number of observables (rU   zThe number of qubits of the z-th circuit (z-) does not match the number of qubits of the z-th observable ()r   r2   r3   rV   Ú
num_qubits)r   r   r6   r7   Ú
observables        r    r   r   Â   s  € õ ˆ8�}„}�˜KÑ(Ô(Ò(Ð(Ýð?¥s¨8¡}¤}ð ?ð ?Ý*-¨kÑ*:Ô*:ð?ð ?ð ?ñ
ô 
ð 	
õ %.­c°(¸KÑ.HÔ.HÑ$IÔ$Ið ð Ñ ˆÑ ˆG�ZØÔ Ô!6Ò6Ð6Ýð.¨qð .ð .¸wÔ?Qð .ð .Ø9:ð.ð .àÔ)ð.ð .ð .ñô ð ð 7ðð r"   Úobjú3Sequence[Sequence[float]] | Sequence[float] | floatc                ót   — t           t          j        f}t          | |¦  «        ot          | t          ¦  «         S )zCheck if object is int.)Úintr<   Úintegerr+   r&   )r\   Ú	int_typess     r    Ú_isintrb   Ó   s0   € å•b”jÐ!€IÝ�c˜9Ñ%Ô%ÐC­j¸½dÑ.CÔ.CÐ*CÐCr"   c                óº   — t           t          j        f}t          | ¦  «        p9t	          | |¦  «        o)t          d¦  «        | cxk     ot          d¦  «        k     nc S )uL   Check if object is a real number: int or float except ``Â±Inf`` and ``NaN``.z-InfÚInf)rK   r<   Úfloatingrb   r+   )r\   Úfloat_typess     r    rF   rF   Ù   sZ   € å�"œ+Ð&€KÝ�#‰;Œ;Ð]�* S¨+Ñ6Ô6Ð]½5À¹=¼=È3Ð;]Ð;]Ò;]Ð;]ÕQVÐW\ÑQ]ÔQ]Ò;]Ð;]Ð;]Ð;]Ð]r"   r7   r   c                óÜ   — t          | ¦  «        D ][}t          |j        t          ¦  «        r dS t          |j        t          ¦  «        r"|j        j        D ]}t          |¦  «        r  dS ŒŒ\dS )NTF)Úreversedr+   Ú	operationr   r   Úblocksr5   )r7   ÚinstructionÚblocks      r    r5   r5   ß   sƒ   € Ý Ñ(Ô(ð  ð  ˆÝ�kÔ+­WÑ5Ô5ð 	 Ø�4�4Ý˜Ô-­}Ñ=Ô=ð 	 Ø$Ô.Ô5ð  ð  �Ý Ñ&Ô&ð  Ø˜4˜4˜4ð øàˆ5r"   r*   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )F)r   r   r$   r&   r   r'   )r   r   r   r8   r   r9   )r   r   r   rM   )r   r'   r   r9   r   rR   )r   r'   r   rX   r   rR   )r\   r]   r   r&   )r7   r   r   r&   )Ú__doc__Ú
__future__r   Úcollections.abcr   ÚtypingÚnumpyr<   Úqiskit.circuitr   r   r   Úqiskit.quantum_info.operatorsr   Ú+qiskit.quantum_info.operators.base_operatorr	   Úutilsr   ÚTYPE_CHECKINGÚqiskit.opflowr   r!   r%   r   r   r   r   r   rb   rF   r5   r   r"   r    ú<module>rx      sÌ  ððð ð #Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø €€€Ø Ð Ð Ð à AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø DÐ DÐ DÐ DÐ DÐ Dà #Ð #Ð #Ð #Ð #Ð #à	Ôð )Ø(Ð(Ð(Ð(Ð(Ð(ð TXð3ð 3ð 3ð 3ð 3ðH TXð&ð &ð &ð &ð &ð@ #ðð ð ð ð ðB CGð#Yð #Yð #Yð #Yð #YðL>ð >ð >ð >ðð ð ð ð ð ð ð ð"Dð Dð Dð Dð^ð ^ð ^ð ^ðð ð ð ð ð r"   