
    z	i                     h    S r SSKrSSKJr  SSKJrJr  SSKJr  SSK	J
r
Jr   " S S	\
\\4   5      rg)
z@
Job for the reference implementations of Primitives V1 and V2.
    N)ThreadPoolExecutor)JobError	JobStatus)JOB_FINAL_STATES   )BasePrimitiveJobResultTc                      ^  \ rS rSrSrU 4S jrS rS rS rS\	4S jr
S\4S	 jrS
 rS rS\4S jrS\4S jrS\4S jrS\4S jrSrU =r$ )PrimitiveJob   zF
Primitive job class for the reference implementations of Primitives.
c                    > [         TU ]  [        [        R                  " 5       5      5        SU l        Xl        SU l        SU l        X l	        X0l
        g)z=
Args:
    function: A callable function to execute the job.
N)super__init__struuiduuid4_future	_function_result_status_args_kwargs)selffunctionargskwargs	__class__s       Y/home/james-whalen/.local/lib/python3.13/site-packages/qiskit/primitives/primitive_job.pyr   PrimitiveJob.__init__   sA    
 	TZZ\*+!
    c                     U R                   b  [        S5      e[        SS9nUR                  " U R                  /U R
                  Q70 U R                  D6U l         UR                  SS9  g )Nz)Primitive job has been submitted already.r   )max_workersF)wait)r   r   r   submitr   r   r   shutdown)r   executors     r   _submitPrimitiveJob._submit+   sY    <<#FGG%!4t~~S

SdllSu%r    c                     U R                  5       nU R                  5       nU R                  R                  5       nS US'   U$ )Nr   )resultstatus__dict__copy)r   _states      r   __getstate__PrimitiveJob.__getstate__3   s9    KKMKKM""$ir    c                 H    U R                   R                  U5        S U l        g N)r,   updater   )r   r/   s     r   __setstate__PrimitiveJob.__setstate__:   s    U#r    returnc                     U R                   c/  U R                  5         U R                  R                  5       U l         U R                   $ r3   )r   _check_submittedr   r*   r   s    r   r*   PrimitiveJob.result>   s6    <<!!#<<..0DL||r    c                    U R                   c  U R                  5         U R                  R                  5       (       a  [        R
                  $ U R                  R                  5       (       a!  [        R                  U l         U R                   $ U R                  R                  5       (       a<  U R                  R                  5       c!  [        R                  U l         U R                   $ [        R                  U l         U R                   $ r3   )r   r9   r   runningr   RUNNING	cancelled	CANCELLEDdone	exceptionDONEERRORr:   s    r   r+   PrimitiveJob.statusD   s    <<!!#||##%% (((''))(22
 ||	 ""$$)?)?)A)I(~~ ||  )||r    c                 4    U R                   c  [        S5      eg )Nz)Primitive Job has not been submitted yet.)r   r   r:   s    r   r9   PrimitiveJob._check_submittedR   s    <<FGG  r    c                 V    U R                  5         U R                  R                  5       $ r3   )r9   r   cancelr:   s    r   rI   PrimitiveJob.cancelV   s!    ||""$$r    c                 D    U R                  5       [        R                  :H  $ r3   )r+   r   rC   r:   s    r   rA   PrimitiveJob.doneZ   s    {{}	..r    c                 D    U R                  5       [        R                  :H  $ r3   )r+   r   r>   r:   s    r   r=   PrimitiveJob.running]   s    {{}	 1 111r    c                 D    U R                  5       [        R                  :H  $ r3   )r+   r   r@   r:   s    r   r?   PrimitiveJob.cancelled`   s    {{}	 3 333r    c                 0    U R                  5       [        ;   $ r3   )r+   r   r:   s    r   in_final_statePrimitiveJob.in_final_statec   s    {{} 000r    )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r'   r0   r5   r	   r*   r   r+   r9   rI   boolrA   r=   r?   rR   __static_attributes____classcell__)r   s   @r   r   r      st    & 	 H%/d /2 244 41 1 1r    r   )rX   r   concurrent.futuresr   qiskit.providersr   r   qiskit.providers.jobstatusr   base.base_primitive_jobr   r	   r    r    r   <module>ra      s4     1 0 7 >K1#GY$67 K1r    