
    	]j,                     F   d Z ddlZddl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mZ ddlmZmZ ej                   d	        Zej$                  j&                  ej$                  j)                  d
 ej*                  ddddgddddg      ddf ej*                  g       ddfg      d               Zej$                  j&                  d        Zej$                  j&                  d        Zej                   d        Zej                   d        Zej$                  j)                  dg ddfdgddfdgddfddgddfddgddfddgddfddgddfddgddfddgddfddgddfddgddfg      ej$                  j&                  d                Zej$                  j&                  d!        Zy)"zThis file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license.
    N)apps)reverse)Project)
AnnotationTask   )_client_is_annotatorinvite_client_to_projectc                     t         j                  j                  | j                        }d|_        |j                          |S )Nidr   )r   objectsgetr   !min_annotations_to_start_trainingsave)configured_projectps     M/root/env/lib/python3.12/site-packages/label_studio/tests/test_annotations.py$configured_project_min_annotations_1r      s6    1445A*+A'FFHH    z!result, logtext, ml_upload_called
text_classtextlabelsclass_Ar   startend	from_nameto_nametypevalueTc                    t         j                  j                         }t        |      r%t	        ||j
                        j                  dk(  sJ t        j                         5 }|j                  d       |j                  d       ||j                  dd}|j                  d|j                   d|      }	|j                          |j                  d	u sJ |	j                  d
k(  sJ t        j                  j                         }|j                         dk(  sJ |j                         }|j                   j                  |j                  k(  sJ t#        |d      rj|j$                  ^|j&                  j                  |j(                  j                  k(  sJ |j*                  j                  |j(                  j                  k(  stJ |j&                  j                  |j,                  j.                  j                  k(  sJ |j*                  j                  |j,                  j.                  j                  k(  sJ t1        j2                  d      r|j                   j4                  dk(  sJ |r|| j6                  v sJ d d d        y # 1 sw Y   y xY w)N   http://localhost:8999/trainhttp://localhost:8999/webhookgRQ@)resulttask	lead_timez/api/tasks/z/annotations/dataT   r   	annotator
businessesg      ?)r   r   firstr	   r
   projectstatus_coderequests_mockMockerpostr   refresh_from_db
is_labeledr   allcountr(   hasattrr-   completed_byuser
updated_bybusinessadminr   is_installedaccuracyr   )
caplog
any_clientr   r'   logtextml_upload_calledr(   m
annotationrs
             r   test_create_annotationrH      s#   0 <<DJ''
DLLAMMQTTTT				 *1	,-	./ &dK
OOk$''-@zOR 	$&&&}}###''++-
!Q&&&%%'
!!TWW,,,:{+
0D0D0P**--1C1CCCC((++z/A/AAAA **--1D1D1J1J1M1MMMM((++z/B/B/H/H/K/KKKK\*??++s222fkk)))7* * *s   #HJJc           	      d   t         j                  j                         }t        |      }|r%t	        ||j
                        j                  dk(  sJ | }|j                  t        j                  dddgddddg      d	d
}|j                  t        j                  dddgddddg      d}t        j                         5 }|j                  d       |j                  d       |j                  dj                  |j                        |      }	|	j                  dk(  sJ |j                  |k(  sJ |j                  dj                  |j                        |      }	|	j                  dk(  sJ |j                  sJ t         j                  j                  |j                        }|j                   j#                         dk(  sJ t$        j                  j'                  |      }
|
D ]1  }|j(                  j                  |j*                  j                  k(  r1J  	 d d d        y # 1 sw Y   y xY w)Nr$   r   r   r   r   r   r   )r   r    r"   T)r(   r'   ground_truthclass_Br(   r'   r&   r%   z/api/tasks/{}/annotations/r*   r,   r      r(   )r   r   r/   r	   r
   r0   r1   r   jsondumpsr2   r3   r4   formatcalledr   annotationsr8   r   filterr<   r;   )rA   rB   r   r(   client_is_annotatorwebhook_calledrJ   rF   rE   rG   rS   as               r   (test_create_annotation_with_ground_truthrX   Q   s    <<D.z:'
DLLAMMQTTTT,,N**'FQZP[fgpqErst
 L **'FQZP[fgpqErst
J 
			 91	./	,- OO8??H|O\}}###xx>))) OO8??HzOZ}}###xxx||477+%%'1,,, ((//T/: 	9A<<??joo&8&8888	9!9 9 9s   EH&H&&H/c                 v   t         j                  j                         }t        j                  j	                  ||g       }|j
                  j                         dk(  sJ | j                  dj                  |j                              }|j                  dk(  sJ |j
                  j                         dk(  sJ y )N)r(   r0   r'   r   z/api/annotations/{}/   r   )r   r   r/   r   createrS   r8   deleterQ   r   r1   )business_clientr   r(   rF   rG   s        r   test_delete_annotationr^   }   s    <<D##**>PY[*\J!!#q(((5<<Z]]KLA==C!!#q(((r   c                  6   t         j                  j                         } | j                  t	        j
                  ddddgddddg      d	| j                  t	        j
                  dddd
gddddg      d	| j                  t	        j
                  g       d	dS )Nr   r   r   r   r   
   r   r   rL   rK   )r   rK   empty)r   r   r/   r   rO   rP   rN   s    r   rS   rS      s    <<D GGjj &2#) (-6K!B!O		
 GGjj &2#) (-6K!B!O		
 ''TZZ^<7 r   c                 2    d| _         | j                          y )NrM   )maximum_annotationsr   )r   s    r   project_with_max_annotations_2rd      s    -.*r   z*annotations_sequence, accuracy, is_labeledF)r   r=   )r   r-   )rK   r=   g      ?)rK   r-   )ra   r-   )ra   r=   c                    | |d}t        t        |j                                     d   }t        j                  j                  |      }	t        ||	j                         |D ]<  \  }
}||   j                  t        dd|i      ||
         }|j                  dk(  r<J  t        j                  j                  |      }	|	j                  |k(  sJ y )	N)r=   r-   r(   r   tasks:api:task-annotationspkkwargsr*   r,   )nextitervaluesr   r   r   r
   r0   r4   r   r1   r6   )r]   annotator_clientrd   rS   annotations_sequencer@   r6   clienttask_idr(   annotation_key
client_keyrG   s                r   test_accuracyrs      s    8 *8HIF4**,-.v6G<<w'D-t||<&: $"
:##0$IP[\jPk $ 
 }}###	$
 <<w'D??j(((r   c                    t        t        |j                                     d   }t        j                  j                  |      }t        ||j                         t        |j                               }| j                  t        dd|i      |d          | j                  t        dd|i      |d          |j                  t        dd|i      |d	          t        j                  j                  |      }|j                  j                         t        |      k(  sJ |j                  sJ |j                  j                         D cg c]  }|j                    }}| j#                  t        d
d|d   i            }	|	j$                  dk(  sJ t        j                  j                  |      }|j                  sJ | j#                  t        d
d|d	   i            }	|	j$                  dk(  sJ t        j                  j                  |      }|j                  rJ | j#                  t        d
d|d   i            }	|	j$                  dk(  sJ t        j                  j                  |      }|j                  rJ y c c}w )Nr(   r   rf   rg   rh   r   r*   r   rM   z'tasks:api-annotations:annotation-detailrZ   )rj   rk   rl   r   r   r   r
   r0   listr4   r   rS   r8   lenr6   r7   r   r\   r1   )
r]   rm   rd   rS   rp   r(   annotation_listcannotation_idsrG   s
             r   test_accuracy_on_deleterz      sR   4**,-.v6G<<w'D-t||< ;--/0O!=tWoV]lmn]op!=tWoV]lmn]op'">gW^mno^pq<<w'D!!#s;'7777???$($4$4$8$8$:;qadd;N;w'PZ^`nop`qYrstA==C<<w'D??? 	w'PZ^`nop`qYrstA==C<<w'D 	w'PZ^`nop`qYrstA==C<<w'D# <s   J)__doc__rO   pytestr2   django.appsr   django.urlsr   projects.modelsr   tasks.modelsr   r   utilsr	   r
   fixturer   mark	django_dbparametrizerP   rH   rX   r^   rS   rd   rs   rz    r   r   <module>r      s;        # ) A   ' DJJ &2#) (-6K!A!N		 	
 
Bt$(!*) *!*H (9 (9V ) )  B   0	T5
!	"Au-
"	#Q.
!#:	;QF
!#;	<aF
"$;	<aF
!#:	;S%H
!#;	<c4H
"$;	<c4H
 "7	8!TB
"$9	:CF$ ) %&).    r   