o N¼ßh“Rã @s`ddlZddlmmZddlZddlZddlZddl m Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZddlmZddlmZmZejd d „ƒZd d „Zd d„Zdd„Zdd„Zdd„Zdd„Z dd„Z!dd„Z"dd„Z#dd„Z$dd „Z%d!d"„Z&d#d$„Z'd%d&„Z(d'd(„Z)d)d*„Z*d+d,„Z+d-d.„Z,d/d0„Z-d1d2„Z.d3d4„Z/e0d5d6d7e0gd8¢d9e0d:ggd;œidd?gd;œid@dAdBgdCdDdEdFdGdHe1e0gdI¢dGgd;œdJœidKdLdMdNg d;œZ2e0dOe0dOe1e0dPdQdRdSdTe2igdUgd;œdJœiggd;œiggd;œZ3GdVdW„dWe4ƒZ5dmdYdZ„Z6d[d\„Z7d]d^„Z8d_d`„Z9dadb„Z:dcdd„Z;dedf„Zdkdl„Z?dS)néN)Úversion)Úapp)Údataset_search)Úcreate_query_string)ÚConfig)Ú UBERONS_DICT)Úhas_doi_changedÚwarn_doi_changescCsdtjd<t ¡S)NTÚTESTING)rÚconfigÚ test_client©r r úC/home/cmiss/Jenkins/workspace/SPARC-API-DEV/tests/test_scicrunch.pyÚclients rc CsŽ| d¡}|j}d}||k}|sDt d|fd||f¡dt ¡vs%t |¡r*t |¡ndt |¡t |¡dœ}dd|i}tt  |¡ƒ‚d}}}d }t j }|j }||ƒ} | j } | ƒ} || v} | s·t d | fd || f¡t |¡d t ¡vs{t t ¡r€t t ¡nd t |¡dt ¡vst |¡r•t |¡ndt |¡t | ¡t | ¡t | ¡d œ} dd| i}tt  |¡ƒ‚d}} }}} } } dS)Nz/search/éÈ©ú==©z3%(py2)s {%(py2)s = %(py0)s.status_code } == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7Ú numberOfHits©Úin)zœ%(py1)s in %(py14)s {%(py14)s = %(py12)s {%(py12)s = %(py10)s {%(py10)s = %(py5)s {%(py5)s = %(py3)s.loads }(%(py8)s {%(py8)s = %(py6)s.data }) }.keys }() }Újson)Úpy1Úpy3rÚpy6Úpy8Úpy10Úpy12Úpy14zassert %(py16)sÚpy16)ÚgetÚ status_codeÚ @pytest_arÚ_call_reprcompareÚ @py_builtinsÚlocalsÚ_should_repr_global_nameÚ _safereprÚAssertionErrorÚ_format_explanationrÚloadsÚdataÚkeys)rrÚ @py_assert1Ú @py_assert4Ú @py_assert3Ú @py_format6Ú @py_format8Ú @py_assert0Ú @py_assert7Z @py_assert9Ú @py_assert11Ú @py_assert13Ú @py_assert2Ú @py_format15Ú @py_format17r r rÚtest_scicrunch_keyss Šúr@c CsLtj tj t¡¡}tj |dd¡}t |¡}t t j ›dt j ›d¡}|  ¡}|dd}t |ƒD]q\}}z|dddd dd …d }Wn tySd }Ynwd | dd¡›d} | |v} | s¡t d| fd| |f¡dt ¡vsyt | ¡r~t | ¡nddt ¡vsŠt |¡rt |¡nddœ} dd| i} tt | ¡ƒ‚d} q2dS)Nz..rz/_search?api_key=z&q=""ÚhitsÚ_sourceÚitemrÚkeywordéÿÿÿÿÚXÚ undefinedÚscicrunch_processing_v_Ú.Ú_z.pyr)z%(py0)s in %(py2)sÚpackage_versionÚavailable_versions©rrúassert %(py4)sÚpy4)ÚosÚpathÚdirnameÚabspathÚ__file__ÚjoinÚlistdirÚrequestsr'rÚSCI_CRUNCH_HOSTÚKNOWLEDGEBASE_KEYrÚ enumerateÚKeyErrorÚreplacer)r*r+r,r-r.r/r0) Úcurrent_directoryZ app_directoryrLrÚresultsrAÚiÚhitrrKr4Ú @py_format3Ú @py_format5r r rÚ%test_scicrunch_versions_are_supporteds  $ þŒørccCsj|jdd|id}t |j¡}|dd}d}t |d¡t d¡kr3t|d  d d ¡|ƒr3tƒd }|S) Nz(/dataset_info/using_pennsieve_identifierÚ identifier©Ú query_stringÚresultrTrú1.1.4Údoizhttps://doi.org/ÚF) r'rr1r2rÚparserr\r )rÚ dataset_idrirÚresponsergÚstatusr r rÚcheck_doi_status4s  roc Csòd}t||dƒ}|rò| d¡}t |j¡ddddddd }t |¡t d ¡kr±t |j¡dddd }d}||k}|sft d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}t |j¡dddddd}d}||k}|s©t d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}dSt |j¡dddd }d}||k}|sêt d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}dSt   d¡dS)NÚ55ú10.26275/pzek-91wxz-/scicrunch-dataset/DOI%3A10.26275%2Fpzek-91wxrArrBrCrrDrhÚ_idr©z%(py1)s == %(py4)s©rrOúassert %(py6)sr!ÚcuriezDOI:10.26275/pzek-91wxú DOI used in test is out of date.)ror'rr1r2rrkr)r*r.r/r0ÚpytestÚskip) rrdÚ run_doi_testrÚdataset_versionr9r6r=rbÚ @py_format7r r rÚtest_scicrunch_dataset_doiAs  (~Š‚r}cCsìt|ddƒ}t|ddƒ}|ro|ro| d¡}t |j¡d}|dd}t |¡t d ¡krm|dd }|d d }g}d} || k} | } | sPd} || k} | } | sÅt d | fd || f¡dt   ¡vsgt  |¡rlt  |¡ndt  | ¡dœ}dd|i}|  |¡| s°t d | fd|| f¡dt   ¡vs—t  |¡rœt  |¡ndt  | ¡dœ}dd|i}|  |¡t |d ¡i}dd|i}tt |¡ƒ‚d} }} } } } g}d} || k} | } | såd} || k} | } | s_t d | fd || f¡dt   ¡vsþt  |¡rt  |¡ndt  | ¡dœ}dd|i}|  |¡| sJt d | fd|| f¡dt   ¡vs1t  |¡r6t  |¡ndt  | ¡dœ}dd|i}|  |¡t |d ¡i}dd|i}tt |¡ƒ‚d} }} } } } dSdSt d¡dS)NrprqÚ68z10.26275/4qvr-kwzqzV/dataset_info/using_multiple_dois/?dois=10.26275%2Fpzek-91wx&dois=10.26275%2F4qvr-kwzqr^rrrhÚdataset_identifierér©z%(py2)s == %(py5)sÚ discover_id_1©rrú%(py7)sr©z%(py9)s == %(py12)s©Úpy9r$ú%(py14)sr%úassert %(py17)sÚpy17Ú discover_id_2rw)ror'rr1r2rrkr)r*r+r,r-r.ÚappendÚ_format_boolopr/r0rxry)rZrun_doi_test_1Zrun_doi_test_2rr^r{r‚r‹r4r5r6r9r;Ú @py_assert10r7r8Ú @py_format13r>Ú @py_format16Ú @py_format18r r rÚ#test_scicrunch_multiple_dataset_doiRs       þ,þ:ür’cCs¸| d¡}t |j¡d}|dd}t |¡t d¡krZ|dd}|dd}g}d}||k}|} |s>d } || k} | } | s³t d |fd ||f¡d t  ¡vsUt  |¡rZt  |¡nd t  |¡d œ} dd| i} |  | ¡|sžt d | fd|| f¡d t  ¡vs…t  |¡rŠt  |¡nd t  | ¡dœ}dd|i}|  |¡t  |d¡i}dd|i}tt |¡ƒ‚d} }}}} } g}d}||k}|} |sÓd } || k} | } | sLt d |fd ||f¡dt  ¡vsët  |¡rðt  |¡ndt  |¡d œ} dd| i} |  | ¡|s7t d | fd|| f¡dt  ¡vst  |¡r#t  |¡ndt  | ¡dœ}dd|i}|  |¡t  |d¡i}dd|i}tt |¡ƒ‚d} }}}} } dSdS)NzG/dataset_info/using_multiple_discoverIds/?discoverIds=55&discoverIds=68r^rrrhrr€rpr~rrr‚rƒr„rr…r†rˆr%r‰rŠr‹)r'rr1r2rrkr)r*r+r,r-r.rŒrr/r0)rrr^r{r‚r‹r4r5r6r9r;rŽr7r8rr>rr‘r r rÚ#test_scicrunch_multiple_dataset_idsds    þ,þ8ür“c Cs | d¡}|j}d}||k}|sDt d|fd||f¡dt ¡vs%t |¡r*t |¡ndt |¡t |¡dœ}dd|i}tt  |¡ƒ‚d}}}t   |j ¡d }d }||k}|s}t d |fd ||f¡t |¡t |¡d œ} dd| i} tt  | ¡ƒ‚d}}}dS)Nz /search/heartrrrrrrrré©Ú>©z%(py1)s > %(py4)srtrur!) r'r(r)r*r+r,r-r.r/r0rr1r2) rrr4r5r6r7r8r9r=rbr|r r rÚtest_scicrunch_searchps Švr˜cCó€| d¡}t |j¡d}d}||k}|s8t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) Nú/filter-search/ré(r•r—rtrur!© r'rr1r2r)r*r.r/r0©rrr9r6r=rbr|r r rÚtest_scicrunch_all_datavó vržcCsŠ|jddddœd}t |j¡d}d}||k}|s=t d|fd ||f¡t |¡t |¡d œ}d d |i}tt |¡ƒ‚d}}}dS) NršÚorganÚheart)ÚtermÚfacetrerr”r•r—rtrur!rœrr r rÚtest_scicrunch_filter{svr¤cCr™) Nz-/filter-search/?facet=scaffolds&term=datasetsré r•r—rtrur!rœrr r rÚtest_scicrunch_filter_scaffolds€rŸr¦cCr™) Nz4/filter-search/Heart/?facet=All+Species&term=speciesrr¥r•r—rtrur!rœrr r rÚtest_scicrunch_basic_search…rŸr§cCr™) NzS/multiple_dataset_info/using_multiple_mimetype/?q="*jp2*+OR+*vnd.ome.xml*+OR+*jpx*"rér•r—rtrur!rœrr r rÚtest_scicrunch_image_search‰rŸr©cCr™) Nz^/filter-search/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderrér•r—rtrur!rœrr r rÚtest_scicrunch_boolean_logicrŸr«cCr™) Nzd/filter-search/heart/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderrr€r•r—rtrur!rœrr r rÚ"test_scicrunch_combined_facet_text’rŸr¬cCs | d¡}t |j¡}dd„|Dƒ}d}||v}|sJt d|fd||f¡t |¡dt ¡vs3t  |¡r8t |¡nddœ}d d |i}t t  |¡ƒ‚d}}dS) Nz/get-facets/organcSsg|]}|d‘qS)Úkeyr )Ú.0Z facet_resultr r rÚ šsz'test_getting_facets..r¡r©z%(py1)s in %(py3)sÚfacets©rr úassert %(py5)sr) r'rr1r2r)r*r.r+r,r-r/r0)rrZ facet_resultsr±r9r=Ú @py_format4r7r r rÚtest_getting_facets—s  |rµcCs| d¡}t |j¡}d}||v}|sCt d|fd||f¡t |¡dt ¡vs,t  |¡r1t |¡nddœ}dd|i}t t  |¡ƒ‚d}}|d}t |ƒ}d }||k} | sœt d | fd ||f¡d t ¡vslt  t ¡rqt t ¡nd d t ¡vs}t  |¡r‚t |¡nd t |¡t |¡dœ} dd| i} t t  | ¡ƒ‚d}} }|d} d}|| v}|sÞt d|fd|| f¡t |¡dt ¡vsÇt  | ¡rÌt | ¡nddœ}dd|i}t t  |¡ƒ‚d}}| d}d} || k}|st d |fd|| f¡t |¡t | ¡dœ}dd|i} t t  | ¡ƒ‚d}}} d}|| v}|sSt d|fd|| f¡t |¡dt ¡vst  | ¡rCt  | ¡ndt  |¡dœ}dd|i}t t |¡ƒ‚d}}d dd|| df¡}|dddD]c}|d d!d"D]W}|rÏd ||f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d#}||k}|sÉt d |fd$||f¡t  |¡t  |¡d%œ}d&d'|i}t t |¡ƒ‚d}}}qyqodSt d(¡dSt d)¡dS)*NZ212z10.26275/lok5-wje6rËrirerÌrgr€rrÁr¸rÂrÃr‡rrú1.1.5zabi-plotr”rr{©z%(py0)s == %(py3)srd©rr r³rÚ1ú/rjÚexistsÚfilesÚdataciteÚ isDescribedByrQÚtruersrtrur!ú)Only test abi-plot against version 1.1.5.rw©ror'r2rÍrr1r¸r)r*r+r,r-r.r/r0rUÚprintrxry)rrdrirzrr2r¶r4r6rÈr¼r8rÉrr=r´r7Ú path_prefixÚplotrQÚr2Údata2Ú json_data2r9rbr|r r rÚtest_response_abi_plotÙs:    ¨|~   l€øÿ rác Cs@d}d}t|||ƒ}|r|jdd|id}|j d¡}t |¡}t|dƒdkr|dd d d kr|dd d }|dd d }d}||k} | s}t d| fd||f¡dt   ¡vsbt  |¡rgt  |¡ndt  |¡dœ} dd| i} t t | ¡ƒ‚d} }d}||k} | s¹t d| fd||f¡d t   ¡vsžt  |¡r£t  |¡nd t  |¡dœ} dd| i} t t | ¡ƒ‚d} }d dd||df¡} |dd d} t| ƒ} d}| |k}|st d|fd| |f¡dt   ¡vsñt  t¡röt  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd dD]c}|dd d!D]W}|r„d | |f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d"} || k}|s~t d|fd#|| f¡t  |¡t  | ¡d$œ}d%d&|i}t t |¡ƒ‚d}}} q.q$|dd d'} t| ƒ} d(}| |k}|s×t d|fd| |f¡dt   ¡vs´t  t¡r¹t  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd d'D]c}|dd d!D]W}|rGd | |f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d"} || k}|sAt d|fd#|| f¡t  |¡t  | ¡d$œ}d%d&|i}t t |¡ƒ‚d}}} qñqç|dd d)} t| ƒ} d(}| |k}|sšt d|fd| |f¡dt   ¡vswt  t¡r|t  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd d)D]c}|dd*d!D]W}|r d | |f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d"} || k}|st d|fd#|| f¡t  |¡t  | ¡d$œ}d%d&|i}t t |¡ƒ‚d}}} q´qªdSt d+¡dSt d,¡dSdS)-NZ76z10.26275/jarb-s8jwrËrirerÌrgr€rrrÏrr{rrÐrdrÑr³rÚ4rÓrjrÔrÕúabi-scaffold-metadata-filerÁr¸rÂrÃr‡rÖZ isSourceOfrQrØrsrtrur!zabi-scaffold-view-filer”zabi-scaffold-thumbnailÚ isDerivedFromrÙrwrÚ)rrdrirzrr2r¶r{r=r4r´r7rÜr6rÈr¼r8rÉrÝrQrÞrßràr9rbr|r r rÚtest_response_abi_scaffoldûsl   xxª   l€ø®    l€ø®    l€øÿ ÎråcCs°| d¡}|j d¡}t |¡}t|ƒ|d}t|ƒ}d}||k}|s\t d|fd||f¡dt   ¡vs9t  t¡r>t  t¡ndt  |¡t  |¡t  |¡dœ}d d |i} t t | ¡ƒ‚d}}}}|dd d } d }| |k} | s—t d| fd| |f¡t  | ¡t  |¡dœ} dd| i} t t | ¡ƒ‚d} } }|dd d} d }| |k} | sÐt d| fd| |f¡t  | ¡t  |¡dœ} dd| i} t t | ¡ƒ‚d} } }dS)Nz&/filter-search/?facet=liver&term=organrÌr^r€rrÁr¸rÂrÃr‡rZ sampleSizeÚ9rsrtrur!Z subjectSize)r'r2rÍrr1rÛr¸r)r*r+r,r-r.r/r0)rrr2r¶r4r6rÈr¼r8rÉr9r=rbr|r r rÚ!test_response_sample_subject_size5s    rvrçÚ contributorsZdataItemrC) ÚtypesZ contentTypesÚ statisticsÚkeywordsÚ publishedÚ descriptionÚnamerdZdocidrvrrD)ÚtypeÚrequiredÚoptionalZ techniquesÚreadmeZ modalitiesÚnamesÚ pennsieveZ provenanceZsupportingAwardsr¿Ú attributesÚdatesZdiseasesÚ distributionsÚobjects)ÚbytesÚdatasetrdÚmimetyperîÚupdated)rïrCrÄÚ protocolsZ publicationZxrefsrAÚ_indexÚ_typerrZ_scorerBZ_ignoredc@s eZdZdS)ÚStructureDefinitionErrorN)Ú__name__Ú __module__Ú __qualname__r r r rrpsrTcCsÜ|D]i}t|tƒr|r||vrtd|›ƒdSqt| ¡ƒdks$t‚tt|ƒƒ}|r:||vr:td|›ƒdS||vrkt||||ƒsktd|›d||d›dt ||ƒ›d||›dt||ƒ› ƒdSqd S) Nzfailed: Fr€z key failed: zstructure failed: z - rïz, T) Ú isinstanceÚstrrÛr¸r3rÚnextÚiterÚ_test_structurerï)r2Ú structurerðÚstr­r r rÚ_test_sub_structurets"    B€r cCsŠ|d}t||ƒrC|tur%t||dddsdSt||ddds#dSdS|tur:|D] }t||dƒs7dSq+dStdt|ƒƒdSdS) NrïrðT)rðFrñrCztype if not dict or list)rÚdictr ÚlistrrÛrï)r2r Zstructure_typeÚ list_itemr r rr‘s" ùÿþrcCsàtdƒ}t|ƒ}t|tƒ}|sRddt ¡vst t¡r t t¡nddt ¡vs,t |¡r1t |¡nddt ¡vs=t t¡rBt t¡ndt |¡dœ}t t  |¡ƒ‚d}d}||v}|sŒt  d|fd ||f¡t |¡dt ¡vsut |¡rzt |¡ndd œ}d d |i}t t  |¡ƒ‚d}}d}|d}||v}|s¿t  d|fd ||f¡t |¡t |¡dœ}dd|i} t t  | ¡ƒ‚d}}}|dd} t | t ƒ} | s ddt ¡vsßt t ¡rät t ¡ndt | ¡dt ¡vsôt t ¡rùt t ¡ndt | ¡dœ}t t  |¡ƒ‚d} } |ddD]} d| ddvr,t| ddddƒqtdƒq|ddD] } t| d ¡ƒq8|ddddd} | D]}| dd¡ dd¡}|d kritd!d"d#qRtƒdS)$NZ computationalz5assert %(py4)s {%(py4)s = %(py0)s(%(py1)s, %(py2)s) }rr2Úraw_structure_base)rrrrOrArr°r²r³rrÀrtrur!z5assert %(py5)s {%(py5)s = %(py0)s(%(py2)s, %(py3)s) }rr )rrr rrrBrCrDz no versionrrørûz not-specifiedrîzno-namez image/pngrIrj)Úend)rrrrr+r,r)r-r.r/r0r*rr rÛr3r')rÚqueryr2r6rbr9r=r´r7r|r4r5r`røÚorûr r rÚtest_raw_response_structure¨s&˜xj   € rcCsÂ| d¡}t |j¡}|d}d}||k}|s:t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d }d }||k}|sot d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d }d }||k}|s¤t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}d }|d}||v}|sÙt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS)Nz/get_body_scaffold_info/humanÚidÚ307rrsrtrur!rQz#derivative/human_body_metadata.jsonÚ contextinfoz0derivative/human_body_metadata_context_info.jsonzprd-sparc-discover50-use1Ús3urirrÀrœ)rrrgr9r6r=rbr|r r rÚtest_get_body_scaffold_infoÈs  jjjnrcCs| d¡}t |j¡}t|ddƒ}d}||k}|sKt d|fd||f¡dt ¡vs0t  |¡r5t  |¡ndt  |¡dœ}d d |i}t t  |¡ƒ‚d}}| d ¡}t |j¡}t|ddƒ}||k}|s¥t d|fd ||f¡dt ¡vs}t  |¡r‚t  |¡ndd t ¡vsŽt  |¡r“t  |¡nd dœ} dd| i} t t  | ¡ƒ‚d}|ddD]T} | dt vrt | d} | d} | j}|ƒ}| |k}|s÷t d|fd| |f¡t  | ¡t  | ¡t  |¡t  |¡dœ}dd|i}t t  |¡ƒ‚d} }} }}q­dS)Nz/get-organ-curies/ÚuberonÚarrayrr•©z%(py0)s > %(py3)sÚtotalrÑr³rz /get-organ-curies/?species=human)z%(py0)s > %(py2)sÚhumanrMrNrOrrîr)zD%(py1)s == %(py8)s {%(py8)s = %(py6)s {%(py6)s = %(py4)s.lower }() })rrOr!r"zassert %(py10)sr#)r'rr1r2r¸r)r*r+r,r-r.r/r0rÚlower)rrÚuberons_resultsrr=r4r´r7rrarbrCr9r6r¼r:r½Ú @py_format11r r rÚtest_getting_curiesÑs  x  Š–€þr!c CsX| d¡}t |j¡}t|ƒt|ddƒ}d}||k}|sOt d|fd||f¡dt  ¡vs4t  |¡r9t  |¡ndt  |¡dœ}d d |i}t t  |¡ƒ‚d}}d }|ddD]} | d d krm| ddkrmd}nq[d}||k}|s¦t d|fd||f¡dt  ¡vs‹t  |¡rt  |¡ndt  |¡dœ}d d |i}t t  |¡ƒ‚d}}dS)Nz!/get-related-terms/UBERON:0002084rrrr•rrrÑr³rFrzUBERON:0000948rîr¡TrrÐÚ findHeart)r'rr1r2rÛr¸r)r*r+r,r-r.r/r0) rrrrr=r4r´r7r"rCr r rÚtest_get_related_termsás  x€|r#cCsz| d¡}t |j¡}|d}d}||k}|s:t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d D]v}d |vrºd |vrº|d } |d dd d } t   dd| ›d| ›¡} t   dd| ¡} | d| ›d| ›¡}|j  d¡} t | ¡}|d}d}||k}|s´t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}qDdS)Nz/filter-search/?size=30rrr•r—rtrur!r^rãrrúrQz s3://[^/]*/rjzfiles/z s3://|/.*z/exists/z?s3BucketName=rÌrÔrØrrs) r'rr1r2r)r*r.r/r0ÚreÚsubrÍ)rrr^r9r6r=rbr|rCÚurirQr­Ús3_bucket_namer2r¶r r rÚtest_scaffold_filesñs  j   j€÷r(cCs2| d¡}t |j¡}|d}d}||k}|s:t d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d D]R}|d } t | ƒ}d} || k} | sŽt d| fd || f¡d t   ¡vskt  t ¡rpt t ¡nd t | ¡t |¡t | ¡d œ} dd| i} tt | ¡ƒ‚d} }} } qDdS)Nz8/dataset_info/using_multiple_discoverIds/?discoverIds=76rrr•r—rtrur!r^zabi-contextual-information)z/%(py4)s {%(py4)s = %(py0)s(%(py2)s) } > %(py7)sr¸rÂrÃr‡) r'rr1r2r)r*r.r/r0r¸r+r,r-)rrr^r9r6r=rbr|rCr4rÈr¼r8rÉr r rÚ#test_finding_contextual_informations  j ¢ÿr)cCs´d}d}|jdd|id}|j d¡}t |¡}|d}t|ƒ}d}||k} | s`t d | fd ||f¡d t  ¡vs=t  t¡rBt  t¡nd t  |¡t  |¡t  |¡d œ} d d| i} t t  | ¡ƒ‚d}}} }d} |dd}| |v} | s™t d| fd| |f¡t  | ¡t  |¡dœ}dd|i}t t  |¡ƒ‚d} } }|ddd} d}| |k} | sÒt d | fd| |f¡t  | ¡t  |¡dœ}dd|i}t t  |¡ƒ‚d} } }dS)NZ17ú10.26275/mlua-o9ojrËrirerÌrgr€rrÁr¸rÂrÃr‡rrrrÀrtrur!rs)r'r2rÍrr1r¸r)r*r+r,r-r.r/r0)rrdrirr2r¶r4r6rÈr¼r8rÉr9r=rbr|r r rÚ%test_undefined_version_dataset_search s   nvr+c Cs d}d}| d¡}|j d¡}t |¡}d}||v}|sLt d|fd||f¡t |¡dt  ¡vs5t  |¡r:t |¡ndd œ}d d |i} t t  | ¡ƒ‚d}}|d}||k}|sŠt d |fd ||f¡t |¡dt  ¡vsst  |¡rxt |¡ndd œ}d d |i} t t  | ¡ƒ‚d}}dS)Né r*z/dataset_citations/9rÌrrr°r¶r²r³rr)z%(py1)s == %(py3)srd) r'r2rÍrr1r)r*r.r+r,r-r/r0) rrdrirr2r¶r9r=r´r7r r rÚtest_dataset_citations_searchs   x€r-)T)@Úbuiltinsr+Ú_pytest.assertion.rewriteÚ assertionÚrewriter)rrxr$Ú packagingrrWrPrZapp.mainrÚapp.scicrunch_requestsrÚ app.configrZ known_uberonsrÚ known_doisrr Úfixturerr@rcror}r’r“r˜ržr¤r¦r§r©r«r¬rµr¾rÊrÎrárårçr r Zsource_structurerÚ Exceptionrr rrrr!r#r(r)r+r-r r r rÚs²"         ": ÿûÿ÷ ýþÿ÷ôÿûÿÿÿ òÿë