SD2E / synbiohub_adapter

MIT License
1 stars 2 forks source link

Critical regression in query_designs_by_lab_ids #68

Closed mwes closed 5 years ago

mwes commented 5 years ago

Gents:

I need to use the latest SBHA given that the query endpoint changed on Friday. However, the previously working query_designs_by_lab_ids function no longer works. This breaks all conversion/dictionary lookup processes. There was previously a test for this, but it looks like it was commented out. The following will reproduce the issue locally:

    def test_query_designs_by_lab_ids(self):
       sbh_query = SynBioHubQuery(SD2Constants.SD2_SERVER)
       designs = sbh_query.query_designs_by_lab_ids(SD2Constants.GINKGO, ['1'], verbose=True)
       print(designs)

Traceback (most recent call last): File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/tests/test_sparql_queries.py", line 1276, in test_query_designs_by_lab_ids designs = sbh_query.query_designs_by_lab_ids(SD2Constants.GINKGO, ['1'], verbose=True) File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/synbiohub_adapter/query_synbiohub.py", line 1130, in query_designs_by_lab_ids return self.format_query_result(design_query_result, ['identity', 'name'], 'id') File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/synbiohub_adapter/SynBioHubUtil.py", line 590, in format_query_result for binding in query_result['results']['bindings']: TypeError: byte indices must be integers or slices, not str

mwes commented 5 years ago

Update: is this returning HTML somehow!?

python -m unittest tests/test_sparql_queries.TestSBHQueries.test_query_designs_by_lab_ids
Password: 
/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/py3/lib/python3.6/site-packages/SPARQLWrapper/Wrapper.py:992: RuntimeWarning: unknown response content type 'text/html; charset=utf-8' returning raw response...
  warnings.warn("unknown response content type '%s' returning raw response..." %(ct), RuntimeWarning)
b'<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="description" content="A parts repository for synthetic biology."><script type="application/ld+json">{\n  "name": "SD2 Synbiohub",\n  "description": "",\n  "url": "https://hub.sd2e.org",\n  "keywords": "synbiohub",\n  "identifier": [\n    "SD2Synbiohub"\n  ],\n  "dataset": [],\n  "@context": {\n    "scheme": "http://schema.org/",\n    "bs": "http://bioschema.org/"\n  },\n  "@type": "https://bioschemas.org/DataCatalog",\n  "provider": [\n    "foo@example.com"\n  ],\n  "publication": "https://pubs.acs.org/doi/abs/10.1021/acssynbio.7b00403",\n  "sourceOrganization": [\n    "Newcastle University"\n  ]\n}</script><title>SD2 Synbiohub</title><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"><link href="/styles/site.css" rel="stylesheet"><link href="/datatables.min.css" rel="stylesheet"><link rel="stylesheet" href="/css/popupS.min.css"><script>var $buoop = {vs:{i:10,f:-4,o:-4,s:8,c:-4},api:4};\nfunction $buo_f() {\n    var e = document.createElement("script");\n    e.src = "//browser-update.org/update.min.js";\n    document.body.appendChild(e);\n};\n\ntry {\n    document.addEventListener("DOMContentLoaded", $buo_f,false)\n} catch(e) {\n    window.attachEvent("onload", $buo_f)\n}\n\n</script><script src="/js/popupS.min.js"></script><style>body {\n    background-color: #f6f6f6;\n}\n\n.grey-page-mark {\n    background-color: #f6f6f6;\n}\n\n.top-search-form {\n    display: none;\n}\n\n.main-search-form input {\n    width: 60%;\n    margin-left: 0;\n    background-color: white;\n    padding: 14px 16px 13px 32px;\n    height: 40px;\n}\n\n.main-search-form .submit {\n    padding: 12px 21px;\n    height: 40px;\n}\n\n.main-search-form label {\n    color: #7F8C8D;\n}\n\n.search-section {\n    height: 60px;\n    padding: 20px;\n    margin: 0 auto;\n    width: 50%;\n    margin-bottom: 40px;\n    text-align: center;\n}\n\n.navbar {\n}\n\n.sbol-breadcrumbs {\n}\n\n.sbol-logo-dark-single-line {\n    display: none;\n}\n\nh1 {\n    margin-top: 10px;\n    margin-bottom: 10px;\n}\n</style><body><nav class="navbar navbar-fixed-top"><div class="content"><a href="/"><div class="pull-left"><h1 style="margin-left: 15px">SD2 Synbiohub</h1></div></a><div class="pull-right menu"><ul><li><a href="/submit"><span class="fa fa-cloud-upload"></span><span class="blue-text"> Submit</span></a></li><li><a href="/login"><span class="fa fa-sign-in"></span><span class="blue-text"> Login or Register</span></a></li></ul></div></div></nav><div class="clearfix"></div><div class="sbol-breadcrumbs" style="display: flex"><ul><li><span class="fa fa-home"></span> Home</li></ul><ul style="flex-grow: 1"><li style="width: 100%; height: 100%"><form class="top-search-form" action="search"><input class="sbh-autocomplete" type="text" name="q" placeholder="Search SD2 Synbiohub" value="" style="width: 96%"><button class="inactive submit" type="submit"><span class="fa fa-search"></span></button></form></li></ul></div><div class="container container-fluid"><div class="row"><div class="col-md-2"></div><div class="col-md-8" style="text-align: center"><h1>SD2 Synbiohub</h1></div></div><div class="row"><div class="col-md-2"></div><div class="col-md-8 sbh-frontpage-blurb"><p></p></div></div><div class="row sbh-main-page-row"><div class="col-md-12" style="text-align: center"><div class="sbh-frontpage-container"><table class="sbh-frontpage-pictures" style="text-align: left"><tr><td><span class="fa fa-search"></span></td><td><h3><b>Search</b> for useful parts and designs</h3><form class="main-search-form" action="/search"><input class="sbh-autocomplete" type="text" name="q" placeholder="Part name" value=""><button class="submit" type="submit" style="padding-top: 10px; padding-bottom: 14px">Search</button></form><br><a class="button btn btn-primary" href="/browse">Browse Design Collections</a></td></tr><tr><td><span class="fa fa-upload"></span></td><td><h3><b>Upload</b> your design for safekeeping</h3><a class="button btn btn-primary" href="/submit">Submit a Design</a></td></tr><tr><td><span class="fa fa-share-alt"></span></td><td><h3><b>Share</b> designs for publication or collaboration</h3><a class="button btn btn-primary" href="/manage">Manage Submissions</a></td></tr></table></div></div></div></div><div class="clearfix"></div><div class="footer-bar home-page-footer blue-text grey-page-mark" align="center"><span>&copy; 2018 <a href="http://ncl.ac.uk">Newcastle University</a>, <a href="http://utah.edu">University of Utah</a>, and collaborators</span><br/><span><a href="http://wiki.synbiohub.org">About SynBioHub</a>\n|\n<a href="https://github.com/SynBioHub/synbiohub">View Source on Github</a>\n|\n<a href="https://github.com/synbiohub/synbiohub/issues">Report an Issue</a>\n <div class="testignore" style="display:inline-block">| v1.4.1 (313175fa)</div></span></div></body><script src="/js/saveSvgAsPng.js"></script><script src="/js/jquery/jquery-2.1.3.min.js"></script><script src="/js/bootstrap/bootstrap-3.3.4.js"></script><script src="/js/typeahead.bundle.js"></script><script src="/js/typeahead.jquery.min.js"></script><script src="/datatables.min.js"></script><script src="/js/pathseg.js"></script><script src="/js/chosen.jquery.js"></script><script src="/js/dropzone.js"></script><script src="/js/BootstrapMenu.js"></script><script src="/bundle.js"></script></head></html>'
E
======================================================================
mwes commented 5 years ago

The other tests work - so it's not an authentication issue:

python -m unittest tests/test_sparql_queries.py
Password: 
......................./Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/py3/lib/python3.6/site-packages/SPARQLWrapper/Wrapper.py:992: RuntimeWarning: unknown response content type 'text/html; charset=utf-8' returning raw response...
  warnings.warn("unknown response content type '%s' returning raw response..." %(ct), RuntimeWarning)
E......................
======================================================================
ERROR: test_query_designs_by_lab_ids (tests.test_sparql_queries.TestSBHQueries)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/tests/test_sparql_queries.py", line 1276, in test_query_designs_by_lab_ids
    designs = sbh_query.query_designs_by_lab_ids(SD2Constants.GINKGO, ['1'], verbose=True)
  File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/synbiohub_adapter/query_synbiohub.py", line 1130, in query_designs_by_lab_ids
    return self.format_query_result(design_query_result, ['identity', 'name'], 'id')
  File "/Users/markweston/Documents/Netrias/jenkins-integration/synbiohub_adapter/synbiohub_adapter/SynBioHubUtil.py", line 590, in format_query_result
    for binding in query_result['results']['bindings']:
TypeError: byte indices must be integers or slices, not str

----------------------------------------------------------------------
Ran 46 tests in 15.472s

FAILED (errors=1)
mwes commented 5 years ago

Nevermind - those other tests do an explicit login call now - this is new. I assume this is by design? We can’t do open reads anymore?

mwes commented 5 years ago

Closing.

jakebeal commented 5 years ago

Just to record the full information here: requiring login is part of making sure people can't access private parts of the backing Virtuoso database without permission. This is intentional and a good thing, but does mean that code that used to be evading login now has to do login.