
    uki"W                     L   d Z ddlZddlZddl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 dd
lmZ ddlmZ ej(                  Zej*                  Zej,                  Zej.                  Z G d dej0                        Zedk(  r ej6                          yy)z6Tests for mediapipe.python._framework_bindings.packet.    N)absltest)text_format)detection_pb2)packet_creator)packet_getter)calculator_graph)image)image_frame)packetc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%y$)%
PacketTestc                 j    t        j                         }| j                  |j                                y )N)r   Packet
assertTrueis_emptyselfps     W/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/mediapipe/python/packet_test.pytest_empty_packetzPacketTest.test_empty_packet(   s    AOOAJJL!    c                     t        j                  d      }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       y )NTr   )r   create_bool	timestampassertEqualr   get_boolr   s     r   test_boolean_packetzPacketTest.test_boolean_packet,   sH    ""4(AAK]++A.5Q[[!$r   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nexeceeds the maximum value        *   r      )
assertRaisesRegexOverflowErrorr   
create_intr   r   r   get_intnpintcr   r   p2s      r   test_int_packetzPacketTest.test_int_packet2   s    			/K	L +

#
#E
*a+!!"%AAK]**1-r2Q[[!$		"	"2771:	.BBL]**2.2R\\1%+ +   DDc                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr         r   r"   )
r#   r$   r   create_int8r   r   r   r&   r'   int8r)   s      r   test_int8_packetzPacketTest.test_int8_packet>   s    			/K	L +

$
$T
*a+""8,AAK]**1-x8Q[[!$		#	#BGGAJ	/BBL]**2.2R\\1%+ +r,   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr   i   i  r   r"   )
r#   r$   r   create_int16r   r   r   r&   r'   int16r)   s      r   test_int16_packetzPacketTest.test_int16_packetJ   s    			/K	L -

%
%e
,a-##I.AAK]**1-y9Q[[!$		$	$RXXa[	1BBL]**2.2R\\1%- -r,   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr   l        ir   r"   )
r#   r$   r   create_int32r   r   r   r&   r'   int32r)   s      r   test_int32_packetzPacketTest.test_int32_packetV   s    			/K	L -

%
%e
,a- 	##I.AAK]**1-y9Q[[!$		$	$RXXa[	1BBL]**2.2R\\1%- -r,   c                    t        j                  d      }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       y )Nl    r   r"   )r   create_int64r   r   r   r&   r'   int64r)   s      r   test_int64_packetzPacketTest.test_int64_packetc   s    ##I.AAK]**1-y9Q[[!$		$	$RXXa[	1BBL]**2.2R\\1%r   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr         r   r"   )
r#   r$   r   create_uint8r   r   r   get_uintr'   uint8r)   s      r   test_uint8_packetzPacketTest.test_uint8_packetm   s    			/K	L ,

%
%d
+a,##H-AAK]++A.9Q[[!$		$	$RXXa[	1BBL]++B/3R\\1%, ,r,   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr   i     r   r"   )
r#   r$   r   create_uint16r   r   r   rC   r'   uint16r)   s      r   test_uint16_packetzPacketTest.test_uint16_packety       			/K	L .

&
&u
-a.$$Y/AAK]++A.	:Q[[!$		%	%biil	3BBL]++B/3R\\1%. .r,   c                    | j                  t        d      5  t        j                  d      }d d d        t        j                  d      }d|_        | j                  t        j                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t        j                  |      d       | j                  |j                  d       y # 1 sw Y   xY w)Nr   r    l    r   r"   )
r#   r$   r   create_uint32r   r   r   rC   r'   uint32r)   s      r   test_uint32_packetzPacketTest.test_uint32_packet   rK   r,   c                    t        j                  d      }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       y )Nl    r   r"   )r   create_uint64r   r   r   rC   r'   uint64r)   s      r   test_uint64_packetzPacketTest.test_uint64_packet   s    $$Y/AAK]++A.	:Q[[!$		%	%biil	3BBL]++B/3R\\1%r   c                    t        j                  d      }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       t        j                  t        d            }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       y NzG?r   )r   create_floatr   assertAlmostEqualr   	get_floatr   floatr)   s      r   test_float_packetzPacketTest.test_float_packet   s    ##D)AAK=2215t<Q[[!$		$	$U4[	1BBL=2226=R\\1%r   c                    t        j                  d      }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       t        j                  t        j                  d            }d|_        | j                  t	        j
                  |      d       | j                  |j                  d       y rU   )	r   create_doubler   rX   r   rY   r   r'   doubler)   s      r   test_double_packetzPacketTest.test_double_packet   s    $$T*AAK=2215t<Q[[!$		%	%biio	6BBL=2226=R\\1%r   c                     t        j                         }t        j                  d|       t	        j
                  |      j                  d      }y )Nz
score: 0.5d   )r   	Detectionr   Parser   create_protoat)r   	detectionr   s      r   test_detection_proto_packetz&PacketTest.test_detection_proto_packet   s;    '')IlI.##I.11#6Ar   c                    t        j                  d      j                  d      }| j                  t	        j
                  |      d       | j                  |j                  d       d|_        | j                  |j                  d       y )Nabcra      )r   create_stringre   r   r   get_strr   r   s     r   test_string_packetzPacketTest.test_string_packet   sg    $$U+..s3A]**1-u5Q[[#&AKQ[[#&r   c                     t        j                  d      j                  d      }| j                  t	        j
                  |      d       | j                  |j                  d       y )Ns   xd0i,  )r   rk   re   r   r   	get_bytesr   r   s     r   test_bytes_packetzPacketTest.test_bytes_packet   sL    $$^477<A],,Q/@Q[[#&r   c                     t        j                  g d      j                  d      }| j                  |j                  d       y N)r"         ra   )r   create_int_arrayre   r   r   r   s     r   test_int_array_packetz PacketTest.test_int_array_packet   s1    ''	255c:AQ[[#&r   c                     t        j                  g d      j                  d      }| j                  |j                  d       y )N皙?皙?333333?ra   )r   create_float_arrayre   r   r   r   s     r   test_float_array_packetz"PacketTest.test_float_array_packet   s1    ))/:==cBAQ[[#&r   c                     t        j                  g d      j                  d      }| j                  t	        j
                  |      g d       | j                  |j                  d       y rr   )r   create_int_vectorre   r   r   get_int_listr   r   s     r   test_int_vector_packetz!PacketTest.test_int_vector_packet   sL    ((366s;A]//2I>Q[[#&r   c                 0   t        j                  g d      j                  d      }t        j                  |      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |j                  d       y )	Nrx   ra   r   ry   r"   rz   rs   r{   )r   create_float_vectorre   r   get_float_listrX   r   r   r   r   output_lists      r   test_float_vector_packetz#PacketTest.test_float_vector_packet   s}    **?;>>sCA..q1K;q>3/;q>3/;q>3/Q[[#&r   c                    d\  }}}t         j                  j                  d||dft         j                        }t	        j
                  t        t        j                  |      t        t        j                  t        j                  ||| || d d f               g      j                  d      }t        j                  |      }| j                  |d       | j                  t        j                  |d   j!                         |             | j                  t        j                  |d	   j!                         ||| || d d f                | j#                  |j$                  d       y )
N)P   (   
   rA   rt   sizedtypeimage_formatdatara   rs   r   r"   )r'   randomrandintrD   r   create_image_vectorImageImageFormatSRGBascontiguousarrayre   r   get_image_list	assertLenr   array_equal
numpy_viewr   r   )r   whoffsetmatr   r   s          r   test_image_vector_packetz#PacketTest.test_image_vector_packet   sA   LAq&
))

HAq!9BHH

EC**;++#6$))%%c&&.&&.!*K&LM	O, 	
 
r#w   ..q1KNN;"OOBNN;q>#<#<#>DEOO
{1~002Cw8>w9J 5K 	LM 	Q[[#&r   c                 0   t        j                  g d      j                  d      }t        j                  |      }| j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |j                  d       y )	N)abcra   r   r   r"   r   rs   r   )r   create_string_vectorre   r   get_str_listr   r   r   s      r   test_string_vector_packetz$PacketTest.test_string_vector_packet   s}    ++O<??DA,,Q/K[^S)[^S)[^S)Q[[#&r   c                    t        j                  t        j                  d      t        j                  d      t        j                  d      g      j                  d      }t        j                  |      }| j                  t        j                  |d         d       | j                  t        j                  |d         d       | j                  t        j                  |d         d       | j                  |j                  d       y )NrV   r!   42ra   r   r"   rs   )r   create_packet_vectorrW   r%   rk   re   r   get_packet_listrX   rY   r   r&   rl   r   r   s      r   test_packet_vector_packetz$PacketTest.test_packet_vector_packet   s    ++##D)!!"%$$T*- 	 
r#w	 
  //2K=22;q>BDI]**;q>:B?]**;q>:DAQ[[#&r   c                    t        j                  t        j                  d      t        j                  d      t        j                  d      d      j                  d      }t        j                  |      }| j                  t        j                  |d         d       | j                  t        j                  |d         d       | j                  t        j                  |d         d       | j                  |j                  d       y )	NrV   r!   r   )rZ   intstringra   rZ   r   r   )r   create_string_to_packet_maprW   r%   rk   re   r   get_str_to_packet_dictrX   rY   r   r&   rl   r   r   s      r    test_string_to_packet_map_packetz+PacketTest.test_string_to_packet_map_packet   s    22,,T2((, ..t44 	 
r#w	 
  66q9K=22;w3GH$O]**;u+=>C]**;x+@A4HQ[[#&r   c                    t         j                  j                  dt        j                  dd      t        j                  dd      dft         j                        }t        j                  t        j                  t        j                  j                  |            }t        j                  |      }| j                  t        j                  |j                         |             t        j                   t#        t        j                  |            }t        j$                  |      }| j                  t        j                  |j                         |             y )NrA   rt   ra   r   r   )r'   r   r   	randrangerD   r   create_image_framer
   
ImageFramer   r   r   get_image_framer   r   r   create_imager   	get_image)r   	uint8_imgimage_frame_packetoutput_image_frameimage_packetoutput_images         r   test_uint8_image_packetz"PacketTest.test_uint8_image_packet  s   		!!q#&(8(8C(@!Dhh " I (::$0055I	GH '667IJOOBNN#5#@#@#BINO!..;++)<>L **<8LOOBNN<#:#:#<iHIr   c                    t         j                  j                  dt        j                  dd      t        j                  dd      dft         j                        }t        j                  t        t        j                  |            }t        j                  |      }| j                  t        j                  |j                         |             t        j                  t!        t        j                  |            }t        j"                  |      }| j                  t        j                  |j                         |             y )NrG   rt   ra      r   r   )r'   r   r   r   rI   r   r   r   r   SRGBA64r   r   r   r   r   r   r   r   )r   
uint16_imgr   r   r   r   s         r   test_uint16_image_packetz#PacketTest.test_uint16_image_packet  s    ""q#&(8(8C(@!Dii # J (:: 3 3*EG&667IJOOBNN#5#@#@#BJOP!..;..Z@BL **<8LOOBNN<#:#:#<jIJr   c           	         t        j                  t         j                  j                  t        j                  dd      t        j                  dd      df            }t        j                  t        t        j                  |            }t        j                  |      }| j                  t        j                  |j                         |             t        j                  t!        t        j                  |            }t        j"                  |      }| j                  t        j$                  |j                         |             y )Nrt   ra   rs   r   )r'   float32r   random_sampler   r   r   r   r   VEC32F2r   r   r   allcloser   r   r   r   r   )r   	float_imgr   r   r   r   s         r   test_float_image_frame_packetz(PacketTest.test_float_image_frame_packet#  s    


		a%v'7'73'?C	EFI (:: 3 3)DF&667IJOOBKK 2 = = ?KL!..;..Y?AL **<8LOOBNN<#:#:#<iHIr   c                    t        j                  dd      t        j                  dd      d}}}t        j                   j                  d|||ft        j                        }| j                  |j                  j                         t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |       |d d d d d d df   }| j                  |j                  j                         t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |       t!        j"                  |      }| j                  |j$                  |       | j                  |j&                  |       | j                  |j(                  |       | j                  t        j*                  |j-                         |             ~~t/        j0                          | j                  t        j                  |      |       y Nrt   ra   rA   r   r   )r   r   r'   r   rD   r   flagsc_contiguoussysgetrefcountr   r   r   r   r   assertFalser   r   heightwidthchannelsr   r   gccollect)r   r   r   r   rgb_datainitial_ref_countr   output_frames           r   *test_image_frame_packet_creation_copy_modez5PacketTest.test_image_frame_packet_creation_copy_mode0  s   %%a-v/?/?3/G(qAyy  Aq(+;288 LHOOHNN//01)) %%H	6A 	S__X.0AB1dd
#HX^^0011)) %%H	6A 	S__X.0AB 003L\((!,\''+\**H5OOBNN<#:#:#<hGH	JJL 	S__X.0ABr   c                 h   t        j                  dd      t        j                  dd      d}}}t        j                   j                  d|||ft        j                        }d|j
                  _        t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |dz          ~t        j                          | j                  t        j                  |      |       t        j                   |      }| j                  t        j                  |      |       d}t#        |	      }	|	j%                  d
t        j                  t        j                  |      i       | j                  t        j                  |      |dz          |	j'                          |	j)                  d      }
~~	t        j                          | j+                  t        j,                  t/        j0                  |
      j3                         |             y Nrt   ra   rA   r   Fr   r"   z
      node {
        calculator: 'PassThroughCalculator'
        input_side_packet: "in"
        output_side_packet: "out"
      }
    )graph_configin)input_side_packetsout)r   r   r'   r   rD   r   	writeabler   r   r   r   r   r   r   r   r   copyCalculatorGraph	start_runwait_until_doneget_output_side_packetr   r   r   r   r   )r   r   r   r   r   r   r   rgb_data_copytext_configgraphoutput_packets              r   /test_image_frame_packet_creation_reference_modez:PacketTest.test_image_frame_packet_creation_reference_modeQ  s   %%a-v/?/?3/G(qAyy  Aq(+;288 LH$HNN1':: %%H6 	S__X.0AA0EFJJLS__X.0ABGGH%MS__X.0ABK 5E	OO11!,!1!1B
   	S__X.0AA0EF	007MJJL 	OO
))-8CCE	r   c           	         t        j                  dd      t        j                  dd      d}}}d\  }}t        j                   j                  d|||ft        j                        }t        j                  |      }t        j                  t        j                  ||| || d d f         }| j                  t        j                  |      |       t        j                  |      }| j                  |j                  |d|z  z
         | j                  |j                  |d|z  z
         | j                  |j                   |       | j#                  t        j$                  ||| || d d f   |j'                                      ~~t)        j*                          | j                  t        j                  |      |       y 	Nr   ra   rt   )rt   r   rA   r   r   rs   )r   r   r'   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   s	            r   3test_image_frame_packet_copy_creation_with_croppingz>PacketTest.test_image_frame_packet_copy_creation_with_cropping}  s   %%b#.0@0@S0I1(qAHfyy  Aq(+;288 LH1)) %%ffWnffWna78	:A 	S__X.0AB 003L\((!a&j.9\''QZ8\**H5OO
xww AB#..0	23 	
JJL 	S__X.0ABr   c                    t        j                  dd      t        j                  dd      d}}}t        j                   j                  d|||ft        j                        }| j                  |j                  j                         t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |       |d d d d d d df   }| j                  |j                  j                         t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |       t!        j"                  |      }| j                  |j$                  |       | j                  |j&                  |       | j                  |j(                  |       | j                  t        j*                  |j-                         |             ~~t/        j0                          | j                  t        j                  |      |       y r   )r   r   r'   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s           r   $test_image_packet_creation_copy_modez/PacketTest.test_image_packet_creation_copy_mode  s   %%a-v/?/?3/G(qAyy  Aq(+;288 LHOOHNN//01## %%H	6A 	S__X.0AB1dd
#HX^^0011## %%H	6A 	S__X.0AB **1-L\((!,\''+\**H5OOBNN<#:#:#<hGH	JJL 	S__X.0ABr   c                 h   t        j                  dd      t        j                  dd      d}}}t        j                   j                  d|||ft        j                        }d|j
                  _        t        j                  |      }t        j                  t        j                  |      }| j                  t        j                  |      |dz          ~t        j                          | j                  t        j                  |      |       t        j                   |      }| j                  t        j                  |      |       d}t#        |	      }	|	j%                  d
t        j                  t        j                  |      i       | j                  t        j                  |      |dz          |	j'                          |	j)                  d      }
~~	t        j                          | j+                  t        j,                  t/        j0                  |
      j3                         |             y r   )r   r   r'   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   s              r   )test_image_packet_creation_reference_modez4PacketTest.test_image_packet_creation_reference_mode  s   %%a-v/?/?3/G(qAyy  Aq(+;288 LH$HNN1!.. %%H6L 	S__X.0AA0EFJJLS__X.0ABGGH%MS__X.0ABK 5E	OO++!,!1!1B
   	S__X.0AA0EF	007MJJL 	OO
##M2==?	PQr   c           	         t        j                  dd      t        j                  dd      d}}}d\  }}t        j                   j                  d|||ft        j                        }t        j                  |      }t        j                  t        j                  ||| || d d f         }| j                  t        j                  |      |       t        j                  |      }| j                  |j                  |d|z  z
         | j                  |j                  |d|z  z
         | j                  |j                   |       | j#                  t        j$                  ||| || d d f   |j'                                      ~~t)        j*                          | j                  t        j                  |      |       y r   )r   r   r'   r   rD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   s	            r   -test_image_packet_copy_creation_with_croppingz8PacketTest.test_image_packet_copy_creation_with_cropping  s   %%b#.0@0@S0I1(qAHfyy  Aq(+;288 LH1## %%ffWnffWna78	:A 	S__X.0AB **1-L\((!a&j.9\''QZ8\**H5OO
xww AB#..0	23 	
JJL 	S__X.0ABr   c           
         t        j                  g dg dg      }t        j                  |      }t	        j
                  |      }| j                  |t        j                  |             t        j                  |      }~t        j                          | j                  t        j                  |t        j                  g dg dg                   y )Nrx   g?g      ?g333333?)r'   arrayr   r   r   create_matrixr   r   
get_matrixr   r   r   r   )r   	np_matrixr   r   output_matrixs        r   test_matrix_packetzPacketTest.test_matrix_packet  s    ,56I	2$$Y/A&	(BC!,,Q/MJJLOO
M288\<,H#IJLr   c           
         t        j                  g dg dg      d d d d df   }| j                  |j                  j                         t        j                  |      }t        j                  |      }| j                  |t        j                  |             t        j                  |      }~t        j                          | j                  t        j                  |t        j                  g dg dg      d d d d df                y )Nrx   r   r   )r'   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   s        r   -test_matrix_packet_with_non_c_contiguous_dataz8PacketTest.test_matrix_packet_with_non_c_contiguous_data  s    ,56q$B$w?IY__112$$Y/A	2&	(BC!,,Q/MJJLOO
MHHlL9:1dd7C	EFr   N)&__name__
__module____qualname__r   r   r+   r2   r6   r:   r>   rE   rJ   rO   rS   r[   r_   rg   rm   rp   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   &   s    "%
&
&
&&&
&
&
&&&&7
''
'''
''"'
'
'JKJCB*XC0CB)QVC0
LFr   r   __main__)__doc__r   r   r   absl.testingr   numpyr'   google.protobufr   mediapipe.framework.formatsr   mediapipe.pythonr   r   $mediapipe.python._framework_bindingsr   r	   r
   r   r   r   r   r   TestCaser   r  mainr  r   r   <module>r     s    = 	  
 !  ' 5 + * A 6 < 7"22%%##
lF"" lF\ z(--/ r   