a ,õkgdQã @sXddlZddlmmZddlZddlZddlZddl 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ƒZ5dkdYdZ„Z6d[d\„Z7d]d^„Z8d_d`„Z9dadb„Z:dcdd„Z;dedf„ZdS)lé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}|sˆt d|fd||f¡dt ¡vsJt |¡rTt |¡ndt |¡t |¡dœ}dd|i}tt  |¡ƒ‚d}}}d }t j }|j }||ƒ} | j } | ƒ} || v} | svt d | fd || f¡t |¡d t ¡vsút t ¡rt t ¡nd t |¡dt ¡vs(t |¡r2t |¡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 CsRtj tj t¡¡}tj |dd¡}t |¡}t t j ›dt j ›d¡}|  ¡}|dd}t |ƒD]è\}}z$|dddd dd …d }Wnty¦d }Yn0d | dd¡›d} | |v} | sHt d| fd| |f¡dt ¡vsôt | ¡rþt | ¡nddt ¡vst |¡r$t |¡nddœ} dd| i} tt | ¡ƒ‚d} qddS)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¡krft|d  d d ¡|ƒrftƒ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 ¡krft |j¡dddd }d}||k}|sÐt d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}t |j¡dddddd}d}||k}|sXt d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}n€t |j¡dddd }d}||k}|sÚt d |fd ||f¡t  |¡t  |¡dœ}dd|i} t t  | ¡ƒ‚d}}}n t   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ƒ}|rä|rä| d¡}t |j¡d}|dd}t |¡t d ¡krâ|dd }|d d }g}d} || k} | } | s d} || k} | } | s’t d | fd || f¡dt   ¡vsÐt  |¡rÚt  |¡ndt  | ¡dœ}dd|i}|  |¡| sht d | fd|| f¡dt   ¡vs6t  |¡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   ¡vst  |¡rt  |¡ndt  | ¡dœ}dd|i}|  |¡| s t d | fd|| f¡dt   ¡vsnt  |¡rxt  |¡ndt  | ¡dœ}dd|i}|  |¡t |d ¡i}dd|i}tt |¡ƒ‚d} }} } } } n t 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       ÿ3ÿ;r’cCsÂ| d¡}t |j¡d}|dd}t |¡t d¡kr¾|dd}|dd}g}d}||k}|} |s|d } || k} | } | snt d |fd ||f¡d t  ¡vs¬t  |¡r¶t  |¡nd t  |¡d œ} dd| i} |  | ¡|sDt d | fd|| f¡d t  ¡vst  |¡rt  |¡nd t  | ¡dœ}dd|i}|  |¡t  |d¡i}dd|i}tt |¡ƒ‚d} }}}} } g}d}||k}|} |s°d } || k} | } | s¦t d |fd ||f¡dt  ¡vsät  |¡rît  |¡ndt  |¡d œ} dd| i} |  | ¡|s|t d | fd|| f¡dt  ¡vsJt  |¡rTt  |¡ndt  | ¡dœ}dd|i}|  |¡t  |d¡i}dd|i}tt |¡ƒ‚d} }}}} } dS)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    ÿ3r“c Cs | d¡}|j}d}||k}|sˆt d|fd||f¡dt ¡vsJt |¡rTt |¡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 Šr˜cCs€| d¡}t |j¡d}d}||k}|spt 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_datavs rcCsŠ|jddddœd}t |j¡d}d}||k}|szt d|fd ||f¡t |¡t |¡d œ}d d |i}tt |¡ƒ‚d}}}dS) Nr™ÚorganÚheart)ÚtermÚfacetrerr”r•r—rtrur!r›rœr r rÚtest_scicrunch_filter{sr¢cCs€| d¡}t |j¡d}d}||k}|spt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) Nz-/filter-search/?facet=scaffolds&term=datasetsré r•r—rtrur!r›rœr r rÚtest_scicrunch_filter_scaffolds€s r¤cCs€| d¡}t |j¡d}d}||k}|spt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) Nz4/filter-search/Heart/?facet=All+Species&term=speciesrr£r•r—rtrur!r›rœr r rÚtest_scicrunch_basic_search…s r¥cCs€| d¡}t |j¡d}d}||k}|spt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) NzS/multiple_dataset_info/using_multiple_mimetype/?q="*jp2*+OR+*vnd.ome.xml*+OR+*jpx*"rér•r—rtrur!r›rœr r rÚtest_scicrunch_image_search‰s r§cCs€| d¡}t |j¡d}d}||k}|spt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) Nz^/filter-search/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderrér•r—rtrur!r›rœr r rÚtest_scicrunch_boolean_logics r©cCs€| d¡}t |j¡d}d}||k}|spt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}dS) Nzd/filter-search/heart/?facet=All+Species&term=species&facet=male&term=gender&facet=female&term=genderrr€r•r—rtrur!r›rœr r rÚ"test_scicrunch_combined_facet_text’s rªcCs | d¡}t |j¡}dd„|Dƒ}d}||v}|s”t d|fd||f¡t |¡dt ¡vsft  |¡rpt |¡nddœ}d d |i}t t  |¡ƒ‚d}}dS) Nz/get-facets/organcSsg|] }|d‘qS)Úkeyr )Ú.0Z facet_resultr r rÚ šóz'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}|s†t d|fd||f¡t |¡dt ¡vsXt  |¡rbt |¡nddœ}dd|i}t t  |¡ƒ‚d}}|d}t |ƒ}d }||k} | s|jdd|id}|j d¡}t |¡}t|dƒdkr4|dd d d kr(|dd d }|dd d }d}||k} | sút d| fd||f¡dt   ¡vsÄt  |¡rÎt  |¡ndt  |¡dœ} dd| i} t t | ¡ƒ‚d} }d}||k} | sxt d| fd||f¡d t   ¡vsBt  |¡rLt  |¡nd t  |¡dœ} dd| i} t t | ¡ƒ‚d} }d dd||df¡} |dd d} t| ƒ} d}| |k}|s2t d|fd| |f¡dt   ¡vsìt  t¡röt  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd dD]Æ}|dd d!D]®}|rfd | |f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d"} || k}|st d|fd#|| f¡t  |¡t  | ¡d$œ}d%d&|i}t t |¡ƒ‚d}}} qfqR|dd d'} t| ƒ} d(}| |k}|s¸t d|fd| |f¡dt   ¡vsrt  t¡r|t  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd d'D]Æ}|dd d!D]®}|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¡rt  t¡ndt  | ¡t  | ¡t  |¡dœ}dd|i}t t |¡ƒ‚d} } }}|dd d)D]Æ}|dd*d!D]®}|rrd | |f¡}| |¡}|j d¡}t |¡}t|ƒ|d}d"} || k}|st d|fd#|| f¡t  |¡t  | ¡d$œ}d%d&|i}t t |¡ƒ‚d}}} qrq^n t d+¡n t d,¡dS)-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-thumbnailZ isDerivedFromrØrwrÙ)rrdrirzrr2rµr{r=r4r³r7rÛr6rÇr»r8rÈrÜrQrÝrÞrßr9rbr|r r rÚtest_response_abi_scaffoldûs\   x~®   t®   t®   v rãcCs´| d¡}|j d¡}t |¡}t|ƒ|d}t|ƒ}d}||k}|s¸t d|fd||f¡dt   ¡vsrt  t¡r|t  t¡ndt  |¡t  |¡t  |¡dœ}d d |i} t t | ¡ƒ‚d}}}}|dd d } d }| |k} | s0t 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    tråÚ 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 rrþpsrþTcCsÜ|D]Ò}t|tƒr4|r||vrtd|›ƒdSqt| ¡ƒdksHt‚tt|ƒƒ}|rt||vrttd|›ƒdS||vrt||||ƒstd|›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     Br cCs†|d}t||ƒr‚|turHt||ddds0dSt||ddds~dSn6|turp|D]}t||dƒsTdSqTntdt|ƒƒdSdS) NrírîT)rîFrïrCztype if not dict or list)rÚdictr ÚlistrrÚrí)r2rZstructure_typeÚ list_itemr r rr‘s  rcCsêtdƒ}t|ƒ}t|tƒ}|s¤ddt ¡vs6t t¡r@t t¡nddt ¡vsXt |¡rbt |¡nddt ¡vszt t¡r„t t¡ndt |¡dœ}t t  |¡ƒ‚d}d}||v}|st  d|fd ||f¡t |¡dt ¡vsìt |¡röt |¡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 ƒ} | sddt ¡vsÆt t ¡rÐt t ¡ndt | ¡dt ¡vsôt t ¡rþt t ¡ndt | ¡dœ}t t  |¡ƒ‚d} } |ddD]:} d| ddvrbt| ddddƒntdƒq2|ddD]} t| d ¡ƒqz|ddddd} | D]0}| dd¡ dd¡}|d kr®td!d"d#q®tƒ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)rrrr r+r,r)r-r.r/r0r*rr rÚr3r')rÚqueryr2r6rbr9r=r³r7r|r4r5r`röÚorùr r rÚtest_raw_response_structure¨s$˜zl˜  rcCsÆ| d¡}t |j¡}|d}d}||k}|stt 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 }||k}|sJt 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   jjlrcCs| d¡}t |j¡}t|ddƒ}d}||k}|s–t d|fd||f¡dt ¡vs`t  |¡rjt  |¡ndt  |¡dœ}d d |i}t t  |¡ƒ‚d}}| d ¡}t |j¡}t|ddƒ}||k}|sRt d|fd ||f¡dt ¡vsþt  |¡rt  |¡ndd t ¡vs$t  |¡r.t  |¡nd dœ} dd| i} t t  | ¡ƒ‚d}|ddD]¬} | dt vrbt | d} | d} | j}|ƒ}| |k}|søt d|fd| |f¡t  | ¡t  | ¡t  |¡t  |¡dœ}dd|i}t t  |¡ƒ‚d} }} }}qbdS)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  ’rc Cs^| d¡}t |j¡}t|ƒt|ddƒ}d}||k}|sžt d|fd||f¡dt  ¡vsht  |¡rrt  |¡ndt  |¡dœ}d d |i}t t  |¡ƒ‚d}}d }|ddD]$} | d d kr¶| ddkr¶d}qÜq¶d}||k}|sRt d|fd||f¡dt  ¡vst  |¡r&t  |¡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  xr!cCs|| d¡}t |j¡}|d}d}||k}|stt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d D]î}d |vrˆd |vrˆ|d } |d dd d } t   dd| ›d| ›¡} t   dd| ¡} | d| ›d| ›¡}|j  d¡} t | ¡}|d}d}||k}|sjt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}qˆdS)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   r&cCs4| d¡}t |j¡}|d}d}||k}|stt d|fd||f¡t |¡t |¡dœ}dd|i}tt |¡ƒ‚d}}}|d D]¦}|d } t | ƒ}d} || k} | st d| fd || f¡d t   ¡vsØt  t ¡rât t ¡nd t | ¡t |¡t | ¡d œ} dd| i} tt | ¡ƒ‚d} }} } qˆdS)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  ¡vszt  t¡r„t  t¡nd t  |¡t  |¡t  |¡d œ} d d| i} t t  | ¡ƒ‚d}}} }d} |dd}| |v} | s4t 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)NÚ17z10.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   pr))T)?Úbuiltinsr+Ú_pytest.assertion.rewriteÚ assertionÚrewriter)rrxr"Ú packagingrrWrPrZapp.mainrÚapp.scicrunch_requestsrÚ app.configrZ known_uberonsrÚ known_doisrr Úfixturerr@rcror}r’r“r˜rr¢r¤r¥r§r©rªr´r½rÉrÍràrãrår r Zsource_structurer Ú Exceptionrþr rrrrr!r&r'r)r r r rÚs®"         ": ÿûÿ÷ ýþÿ÷ôÿûÿÿÿ òÿë