From 88451116e828a02469fb790eb0281a9752fde216 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Tue, 17 Sep 2019 12:28:10 +0200 Subject: [PATCH] URIs: added stdout output (empty URI) --- python/obitools3/uri/decode.pyx | 64 ++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/python/obitools3/uri/decode.pyx b/python/obitools3/uri/decode.pyx index 1b0c93d..b246f3b 100755 --- a/python/obitools3/uri/decode.pyx +++ b/python/obitools3/uri/decode.pyx @@ -3,6 +3,8 @@ from urllib.parse import urlparse, urlunparse, parse_qs, ParseResultBytes from os.path import isdir, isfile, basename, join +import sys + from obitools3.dms.dms import DMS from obitools3.parsers.fasta import fastaNucIterator @@ -224,34 +226,35 @@ def open_uri(uri, type(dms[1]), urlunparse(urip), len(dms[0])) - try: - resource=open_dms_element(dms[0], - dms[1], - create, - newviewtype) - - scheme=b"dms" - urip = ParseResultBytes(scheme=b"dms", - netloc=urip.netloc, - path=urip.path, - params=urip.params, - query=urip.query, - fragment=urip.fragment) - - if default_dms is None: - config["obi"]["defaultdms"]=resource[0] - - return (resource[0], - resource[1], - type(resource[1]), - urlunparse(urip), - len(resource[1])) - except Exception as e: - global obi_errno - if obi_errno == OBIVIEW_ALREADY_EXISTS_ERROR: - raise Exception("View name already exists in this DMS") - error=e - + if dms[1]: + try: + resource=open_dms_element(dms[0], + dms[1], + create, + newviewtype) + + scheme=b"dms" + urip = ParseResultBytes(scheme=b"dms", + netloc=urip.netloc, + path=urip.path, + params=urip.params, + query=urip.query, + fragment=urip.fragment) + + if default_dms is None: + config["obi"]["defaultdms"]=resource[0] + + return (resource[0], + resource[1], + type(resource[1]), + urlunparse(urip), + len(resource[1])) + except Exception as e: + global obi_errno + if obi_errno == OBIVIEW_ALREADY_EXISTS_ERROR: + raise Exception("View name already exists in this DMS") + error=e + if scheme==b"dms" : logger('Error','Could not open DMS URI: %s', uri) raise FileNotFoundError() @@ -268,7 +271,10 @@ def open_uri(uri, iseq = urib objclass = bytes else: # TODO update uopen to be able to write? - file = open(urip.path, 'wb') + if urip.path: + file = open(urip.path, 'wb') + else: + file = sys.stdout.buffer if file is not None: qualifiers=parse_qs(urip.query)