
    lj$                    
   d dl mZ d dlZd dlmc mZ d dlZd dl	Z	d dl
Z
d dlZd dlZd dlmc mZ d dlmZ d dlmZmZ  ee      j/                         j0                  d   Zedz  dz  ZdZd	Zd
ZdZdZdZ dZ!ddZ"ddZ#ddZ$y)    )annotationsN)Path)ZIP_DEFLATEDZipFile   pluginsopenai-templatess   PNG

s   PKi   i  i  @ee1a1469054c77c71dd54a5bc36122fa679a9b639daddf51f20a057fcafac136))z%artifact-template-analytics-dashboardzAnalytics Dashboardspreadsheetxlsx)z!artifact-template-business-reviewzBusiness Reviewpresentationpptx)zartifact-template-design-reportzDesign Reportdocumentdocx)z%artifact-template-experiment-analysiszExperiment Analysisr   r   )z"artifact-template-financial-budgetzFinancial Budgetr   r   )z+artifact-template-investment-committee-memozInvestment Committee Memor   r   )z"artifact-template-legal-memorandumzLegal Memorandumr   r   )z&artifact-template-market-trends-reportzMarket Trends Reportr   r   )z$artifact-template-minimal-letterheadzMinimal Letterheadr   r   )z$artifact-template-operating-calendarzOperating Calendarr   r   )z"artifact-template-operating-reviewzOperating Reviewr   r   )z!artifact-template-project-kickoffzProject Kickoffr   r   )z!artifact-template-project-trackerzProject Trackerr   r   )z artifact-template-sales-pipelinezSales Pipeliner   r   )z"artifact-template-simple-dark-modezSimple Dark Moder   r   )z#artifact-template-simple-light-modezSimple Light Moder   r   )z%artifact-template-strategy-memorandumzStrategy Memorandumr   r   )zartifact-template-system-designzSystem Designr   r   )z artifact-template-team-alignmentzTeam Alignmentr   r   )z*artifact-template-three-statement-forecastzThree-Statement Forecastr   r   c                 	   t        j                  t        dz  dz  j                               } t        j                  t        dz  j                               }t        j                  t        dz  j                               }| d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}| d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}| d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}| d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}| d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}| d   d   }g d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}dddddii}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}}dd d!d"d#d$d%d&d'}|d(   }||v }|slt        j                  d)|fd*||f      t        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}y )+Nz.codex-pluginzplugin.jsonz	.app.jsonzmarketplace.jsonnamer	   ==z%(py1)s == %(py4)spy1py4assert %(py6)spy6skillsz	./skills/appsz./.app.json	interfacedisplayNamezDefault templatesshortDescriptionz@Default templates for documents, spreadsheets, and presentationsdefaultPrompt)z7Create a document using the Minimal Letterhead templatezPCreate an Analytics Dashboard spreadsheet using the Analytics Dashboard templatez?Create a planning presentation with the Team Alignment templatedefault_templates"connector_openai_default_templatesT)idrequiredz%(py0)s == %(py3)sapp_manifestpy0py3assert %(py5)spy5localz./plugins/openai-templates)sourcepath	AVAILABLEON_USE)installationauthenticationProductivity)r   r-   policycategoryr   in)z%(py1)s in %(py4)s)jsonloadsPLUGIN_ROOT	read_text	REPO_ROOT
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanation@py_builtinslocals_should_repr_global_name)manifestr&   marketplace@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert1@py_format4@py_format6s              y/Users/ericning/code/openai/chatgpt/oai-maintained-plugins/plugins/openai-templates/tests/test_openai_templates_plugin.py%test_openai_templates_plugin_contractrP   z   s$   zz;8=HSSUVH::{[8CCEFL**i*<<GGIJKF11111111111111111111111H,,,,,,,,,,,,,,,,,,,F,},},,,,},,,,,,},,,,,,,K /F3FF/3FFFFF/3FFFF/FFF3FFFFFFFFK !34 J4J  4J   5    	K      K 1  6 1 6   	1 6   	 2   	6     	  	: "
 <    <                     #0

 (&
 #   
Y	   
         
      i      i	                  c            	     (   t        d t        j                  d      D              } t        |       }|t        k  }|s/t        j                  d|fd|t        f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }d	d
|iz  }t        t        j                  |            d x}}t        j                         }t        |dt               5 }| D ]'  }|j#                  ||j%                  t                     ) 	 d d d        |j&                  } |       }	|	t(        k  }
|
st        j                  d|
fd|	t(        f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |	      dt        j                         v st        j                  t(              rt        j                  t(              nddz  }dd|iz  }t        t        j                  |            d x}x}	}
d t        dz  j+                         D        }t        |      }	d t,        D        }t        |      }|	|k(  }
|
s&t        j                  d|
fd|	|f      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |	      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}	x}
x}}dD ci c]  t/        fdt,        D               }}dddd}	||	k(  }|slt        j                  d|fd ||	f      t        j                  |      t        j                  |	      d!z  }d"d#|iz  }t        t        j                  |            d x}x}}	t1        j2                         }t,        D ]  \  }}}t        dz  |z  }t5        j6                  |d$z  j9                               }|d%z  d&z  j9                         }|d'z  j9                         }|d(z  }|d)z  }|d*| z  }d+d,| d-d.}||k(  }|st        j                  d|fd/||f      d0t        j                         v st        j                  |      rt        j                  |      nd0t        j                  |      d1z  }d2d3|iz  }t        t        j                  |            d x}}d4 |j+                         D        }t        |      }	d)d*| g} |	| k(  }
|
st        j                  d|
fd5|	| f      dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |	      t        j                  |       d6z  }d7d8|iz  }!t        t        j                  |!            d x}x}	x}
} d9| d:}||v }|st        j                  d;|fd<||f      t        j                  |      d=t        j                         v st        j                  |      rt        j                  |      nd=d>z  }d2d3|iz  }t        t        j                  |            d x}}d? d@| dA}||v }|st        j                  d;|fd<||f      t        j                  |      d=t        j                         v st        j                  |      rt        j                  |      nd=d>z  }d2d3|iz  }t        t        j                  |            d x}}dB| dC}||v }|st        j                  d;|fd<||f      t        j                  |      dDt        j                         v st        j                  |      rt        j                  |      ndDd>z  }d2d3|iz  }t        t        j                  |            d x}}dE}||v }|st        j                  d;|fd<||f      t        j                  |      dDt        j                         v st        j                  |      rt        j                  |      ndDd>z  }d2d3|iz  }t        t        j                  |            d x}}dF dG}||v }|st        j                  d;|fd<||f      t        j                  |      dDt        j                         v st        j                  |      rt        j                  |      ndDd>z  }d2d3|iz  }t        t        j                  |            d x}}|j:                  }dH}	 ||	      }
|
sdIdDt        j                         v st        j                  |      rt        j                  |      ndDt        j                  |      t        j                  |	      t        j                  |
      dz  }t        t        j                  |            d x}x}	}
dJ}||v}|st        j                  dK|fdL||f      t        j                  |      d=t        j                         v st        j                  |      rt        j                  |      nd=d>z  }d2d3|iz  }t        t        j                  |            d x}}dM}||v }|st        j                  d;|fd<||f      t        j                  |      d=t        j                         v st        j                  |      rt        j                  |      nd=d>z  }d2d3|iz  }t        t        j                  |            d x}}dN}||v}|st        j                  dK|fdL||f      t        j                  |      d=t        j                         v st        j                  |      rt        j                  |      nd=d>z  }d2d3|iz  }t        t        j                  |            d x}}|j=                         }"|"j>                  } |t@              }|sdOdPt        j                         v st        j                  |"      rt        j                  |"      ndPt        j                  |      dQt        j                         v st        j                  t@              rt        j                  t@              ndQt        j                  |      dRz  }t        t        j                  |            d x}}tC        jD                  dS|"dTdU       \  }#}$g }dV}|#|kD  }	|	}|	r	dV}%|$|%kD  }&|&}|sXt        j                  dW|	fdX|#|f      dYt        j                         v st        j                  |#      rt        j                  |#      ndYt        j                  |      dZz  }d[d
|iz  }|jG                  |       |	rt        j                  dW&fd\|$%f      d]t        j                         v st        j                  |$      rt        j                  |$      nd]t        j                  |%      d^z  }d_d`|iz  }'|jG                  |'       t        jH                  |dV      i z  }(dadb|(iz  })t        t        j                  |)            d x}x}x}	x}x}&}%tK        |#|$      }	|	tL        k  }
|
spt        j                  dc|
fdd|	tL        f      det        j                         v st        j                  tJ              rt        j                  tJ              ndedYt        j                         v st        j                  |#      rt        j                  |#      ndYd]t        j                         v st        j                  |$      rt        j                  |$      nd]t        j                  |	      dft        j                         v st        j                  tL              rt        j                  tL              ndfdgz  }dd|iz  }t        t        j                  |            d x}	}
|j=                         }*|*j>                  } |tN              }|sdOdht        j                         v st        j                  |*      rt        j                  |*      ndht        j                  |      dit        j                         v st        j                  tN              rt        j                  tN              ndit        j                  |      dRz  }t        t        j                  |            d x}}tQ        |*|       ||"f||*ffD ]  \  }+},|jS                  |+j%                  t              jU                         jW                                |jS                  dj       |jS                  t1        j2                  |,      jY                                  |jZ                  } |       }	|	t\        k(  }
|
st        j                  d|
fdk|	t\        f      dlt        j                         v st        j                  |      rt        j                  |      ndlt        j                  |      t        j                  |	      dmt        j                         v st        j                  t\              rt        j                  t\              ndmdz  }dd|iz  }t        t        j                  |            d x}x}	}
y # 1 sw Y   nxY wc c}w )nNc              3  z   K   | ]3  }|j                         r!d |j                  vr|j                  dk7  r| 5 yw)__pycache__z.pycN)is_filepartssuffix.0r.   s     rO   	<genexpr>zAtest_openai_templates_are_packaged_for_chatgpt.<locals>.<genexpr>   s8      *D<<>m4::=$++QWBW 	*s   9;*)<)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} < %(py5)slenpackage_filesMAX_PLUGIN_ARCHIVE_ENTRIES)r(   r   r)   r+   zassert %(py7)spy7w)compression)zB%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.tell
}()
} < %(py6)sarchive_bufferMAX_PLUGIN_ARCHIVE_BYTES)r(   py2r   r   zassert %(py8)spy8c              3  4   K   | ]  }|j                     y wNr   rX   s     rO   rZ   zAtest_openai_templates_are_packaged_for_chatgpt.<locals>.<genexpr>   s     K(J$))(J   r   c              3  *   K   | ]  \  }}}}|  y wrh    )rY   r   _display_name_kind
_extensions        rO   rZ   zAtest_openai_templates_are_packaged_for_chatgpt.<locals>.<genexpr>   s      V;D7}eZ9s   r   )zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}sorted)r(   re   r   r   rf   py10zassert %(py12)spy12)r   r   r   c              3  2   K   | ]  \  }}}}|k(    y wrh   rl   )rY   _template_kindkinds      rO   rZ   zAtest_openai_templates_are_packaged_for_chatgpt.<locals>.<genexpr>   s      Pi,BAq--4'is         r   r   r   r   zartifact-template.jsonagentszopenai.yamlzSKILL.mdassetszpreview.pngz
reference.   zassets/reference.zassets/preview.png)schemaVersionrv   	referencepreviewr%   rE   r'   r*   r+   c              3  4   K   | ]  }|j                     y wrh   ri   rX   s     rO   rZ   zAtest_openai_templates_are_packaged_for_chatgpt.<locals>.<genexpr>   s     B,ADdii,Arj   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)s)r(   re   r   r`   zassert %(py9)spy9z
name: 
r6   )z%(py1)s in %(py3)sskillr   r)   zdescription: "Create a z using the z	 templatezdisplay_name: ""metadataz"icon_large: "./assets/preview.png"zdefault_prompt: "Create a new z with this template."z+policy:
  allow_implicit_invocation: false
zJassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.endswith
}(%(py4)s)
}z	plugin://not inz%(py1)s not in %(py3)szprompt-advertised preinstalledz,artifact_handoff.prepare_artifact_generationzLassert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py3)s)
}r~   PNG_SIGNATURE)r(   re   r)   r+   z>II      r   )>)z%(py2)s > %(py5)swidth)re   r+   %(py7)s)z%(py9)s > %(py12)sheight)r   rr   z%(py14)spy14zassert %(py17)spy17)<=)z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} <= %(py6)smaxMAX_PREVIEW_EDGE_PX)r(   r   re   r   r   r}   ZIP_SIGNATURE    )zH%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.hexdigest
}()
} == %(py6)sbinary_asset_set EXPECTED_BINARY_ASSET_SET_SHA256)/rp   r:   rglobr]   r_   r=   r>   rB   rC   rD   r?   r@   rA   ioBytesIOr   r   writerelative_totellrd   iterdir	TEMPLATESsumhashlibsha256r8   r9   r;   endswith
read_bytes
startswithr   structunpackappend_format_boolopr   r   r    _assert_sanitized_office_archiveupdateas_posixencodedigest	hexdigestr   )-r^   rI   @py_assert4rN   @py_format8rc   archiver.   rL   rH   @py_assert5rK   @py_format9@py_assert7@py_assert9@py_format11@py_format13rv   rG   rJ   r   r   display_name	extension
skill_rootrE   r   r   assets_rootpreview_pathreference_pathrM   @py_assert6@py_format10r~   r   r   @py_assert11@py_assert10@py_format15@py_format16@py_format18r}   binary_pathcontentss-                    `                           rO   .test_openai_templates_are_packaged_for_chatgptr      s    %%c* M
 }: ::::: :::::::3:::3::::::}:::}::::::::: :::: ::::::::ZZ\N	,	?7!DMM$ 0 0 => " 
@ ; ; #;;;;; #;;;;;;;>;;;>;;;;;; ;;;;;;#;;;;#;;;;;;;;Kx)?(H(H(JK 6KK  V;DV v V P K P    K P              L    L      PV    PV   V   P       
 @?D 	cPiPPP?>  1	=>  
>> > ->,=>  
>> > 5>I > > 5>I	=> > > > +>*=> >
 ~~'/8y+lD) 8+d2
::z,DDOOQR)M9DDFj(335 8+"]2$I;'?? ,YK8+	
 	
x 
 
 	

 	
x 
 	
 	

 
6	
 	

   	
 	

 
	  	
 	

 
	
 	
 	
 	
 	

 	
 	
 CK,?,?,AB 	
vBB 	
$G
 	
B G
 
 	
 	
B G
 	
 	
 
6	
 	
   	
 	
 
	  	
 	
 
	 C 	
 	
 
	 C 	
 	
 
	G
 	
 	
 	
 	
 	
 	
 	
 $r"+"e++++"e+++"++++++e+++e+++++++%dV;|nIN	
NRWW	
 	
NRW	
 	
 		 O	
 	
	6	
 	
  SX	
 	
 		 SX	
 	
 	
 	
 	
 	
 !a0<0H<<<<0H<<<0<<<<<<H<<<H<<<<<<<3?3x????3x???3??????x???x???????/v5JKWKxWWWWKxWWWKWWWWWWxWWWxWWWWWWW  Q!PQ !PQQQQQQQQxQQQxQQQ QQQ!PQQQQQQQQQQ'{%''''{%'''{''''''%'''%'''''''/8/58888/5888/888888588858888888=J=UJJJJ=UJJJ=JJJJJJUJJJUJJJJJJJ))+!!0!-00000000w000w000!000000-000-0000000000eWR^<v'q'uqy'a'VaZ''''uq''''''u'''u'''q'''''''Va''''''V'''V'''a''''''''''''''5&!8!%88888!%8888888s888s88888858885888888&888&888!888888%8888%88888888"--/	##2#M22222222y222y222#222222M222M2222222222(D9 7#Y'&
!K ##''4==?FFH ##E*##GNN8$<$C$C$EF&
Q 09d %%K%'K'+KKKKK'+KKKKKKKKKKKKK%KKK'KKKKKK+KKKK+KKKKKKKKA 
@	?s   -AP1) AP>P1AP;c                   t        t        j                  |             5 }|j                         }d |D        }t	        |      }|sddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }t        t        j                  |            d x}}|D ]r  }|j                  |      }|dk(  rt        j                  |      }	h d}
|	j                         D ]~  }|j                   j#                  dd      d	   }||
v s(g }|j$                  }|}|sd
}|}|j&                  } |       }| }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }|j)                  |       |s+ddt        j                        iz  }|j)                  |       t        j*                  |d      i z  }t        j,                  | d|       dz   |t        j                  |      t        j                  |      dz  }t        t        j                  |            d x}x}x}x}x}x}} |j/                  d      rst0        j2                  }d} |||      }| }|st        j,                  | d| d      dz   dt        j                         v st        j                  t0              rt        j                  t0              ndt        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d x}x}x}}d}||v}|st        j4                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddz  }dd |iz  }t        t        j                  |            d x}}t0        j2                  }d!}t0        j6                  } ||||      }| }|sct        j,                  | d| d"      d#z   dt        j                         v st        j                  t0              rt        j                  t0              ndt        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  t0              rt        j                  t0              ndt        j                  |      t        j                  |      d$z  }t        t        j                  |            d x}x}x}x}}|j9                  t:              sbt=        || d|        u 	 d d d        y # 1 sw Y   y xY w)%Nc              3  \   K   | ]$  }|j                         j                  d         & yw)z
customxml/N)lowerr   )rY   r   s     rO   rZ   z3_assert_sanitized_office_archive.<locals>.<genexpr>   s%     Otzz|..|<<s   *,z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)r(   re   r   zdocProps/core.xml>   createdcreatormodifiedrevisionlastPrintedlastModifiedBy}r{    z!%(py4)s
{%(py4)s = %(py2)s.text
}element)re   r   r   r`   z	 retains zK
>assert not %(py14)s
{%(py14)s = %(py12)s
{%(py12)s = %(py10)s.strip
}()
})rq   rr   r   )z.xmlz.relss   \bw:rsid(?:[A-Za-z]+)?=:z retains Word editing metadatazW
>assert not %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.search
}(%(py4)s, %(py5)s)
}rer   )r(   re   r   r+   r`   s   x15ac:absPathr   r   r   r*   r+   sS   (?:file:///)?(?:/Users/|/home/|[A-Za-z]:[\\/](?:Users|Documents and Settings)[\\/])z retains a local pathz
>assert not %(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.search
}(%(py4)s, %(py5)s, %(py8)s
{%(py8)s = %(py6)s.IGNORECASE
})
})r(   re   r   r+   r   rf   rq   )r   r   r   namelistr   rB   rC   r=   rD   r?   r@   rA   readET
fromstringitertagrsplittextstripr   r   _format_assertmsgr   r   searchr>   
IGNORECASEr   r   r   )r   labelpackagenamesrL   rH   rJ   r   r   rootprivate_fieldsr   
local_namerG   r   r   @py_assert13@py_assert15r   r   r   @py_assert8rI   rM   rN   r   r   @py_format12s                               rO   r   r      s   	G$	%  "OOOsOOOOOOOOOsOOOsOOOOOOOOOOOOOOD||D)H**}}X."  $yy{G!(!3!3C!;B!?J!^3GLL L LB B #=#= #=#? #?? ? 6  %,  	 %,  	 %1  6 %1 	 57  6>   %gYzl; 	 $>  	 $@        + }}./99 %@ 9%@(K KK K    gQtf$BC 6     	   	 %  	 &A  6   CK  	 CK  	 L       (7'x7777'x777'777777x777x777777799 :k: MM:9k! :   :  : ):(9eWAdV#89	: : 4:6	: : ":!9	  : : 1:		  : : 1:		 % : : 1:	 l: : 4:6	: : ":!9 : : 1:	 : : 4:6	: : ":!9 : : 1:	 : : 1:	 ": : 1:		 : : : ':&9	: : : ""=10eWAdV;LM? 	 
&	%	%s   D-Y!S4Y!Y!!Y*)returnNone)r   bytesr   strr   r   )%
__future__r   builtinsrB   _pytest.assertion.rewrite	assertionrewriter=   r   r   r8   r   r   xml.etree.ElementTreeetreeElementTreer   pathlibr   zipfiler   r   __file__resolveparentsr<   r:   r   r   r   rd   r_   r   r   rP   r   r   rl   rQ   rO   <module>r     s    "    	  	  " "  ) N""$,,Q/	)#&88$ + " F !`	F$ NILX$NrQ   