Initial port to python3
[htsworkflow.git] / htsworkflow / util / rdfhelp.py
index cbe2a9188b091d0cb5f22fa99069345728204ee9..76cde06e97d10593e9eef6d166df59e0329270d6 100644 (file)
@@ -3,8 +3,8 @@
 import collections
 from datetime import datetime
 from glob import glob
-from urlparse import urlparse, urlunparse
-from urllib2 import urlopen
+from urllib.parse import urlparse, urlunparse
+from urllib.request import urlopen
 import logging
 import os
 import sys
@@ -42,9 +42,9 @@ def display_query_results(results):
     """A very simple display of sparql query results showing name value pairs
     """
     for row in results:
-        for k, v in row.items()[::-1]:
-            print "{0}: {1}".format(k, v)
-        print
+        for k, v in list(row.items())[::-1]:
+            print("{0}: {1}".format(k, v))
+        print()
 
 def html_query_results(result_stream):
     from django.conf import settings
@@ -65,11 +65,11 @@ def html_query_results(result_stream):
     for row in result_stream:
         new_row = collections.OrderedDict()
         row_urls = []
-        for k,v in row.items():
+        for k,v in list(row.items()):
             new_row[k] = Simplified(v)
         results.append(new_row)
     context = Context({'results': results,})
-    print template.render(context)
+    print(template.render(context))
 
 def blankOrUri(value=None):
     """Return a blank node for None or a resource node for strings.
@@ -77,7 +77,7 @@ def blankOrUri(value=None):
     node = None
     if value is None:
         node = RDF.Node()
-    elif type(value) in types.StringTypes:
+    elif type(value) in str:
         node = RDF.Node(uri_string=value)
     elif isinstance(value, RDF.Node):
         node = value
@@ -88,18 +88,18 @@ def blankOrUri(value=None):
 def toTypedNode(value, language="en"):
     """Convert a python variable to a RDF Node with its closest xsd type
     """
-    if type(value) == types.BooleanType:
+    if type(value) == bool:
         value_type = xsdNS['boolean'].uri
         if value:
-            value = u'1'
+            value = '1'
         else:
-            value = u'0'
-    elif type(value) in (types.IntType, types.LongType):
+            value = '0'
+    elif type(value) in (int, int):
         value_type = xsdNS['decimal'].uri
-        value = unicode(value)
-    elif type(value) == types.FloatType:
+        value = str(value)
+    elif type(value) == float:
         value_type = xsdNS['float'].uri
-        value = unicode(value)
+        value = str(value)
     elif isinstance(value, datetime):
         value_type = xsdNS['dateTime'].uri
         if value.microsecond == 0:
@@ -108,12 +108,12 @@ def toTypedNode(value, language="en"):
             value = value.strftime(ISOFORMAT_MS)
     else:
         value_type = None
-        value = unicode(value)
+        value = str(value)
 
     if value_type is not None:
         node = RDF.Node(literal=value, datatype=value_type)
     else:
-        node = RDF.Node(literal=unicode(value).encode('utf-8'), language=language)
+        node = RDF.Node(literal=str(value).encode('utf-8'), language=language)
     return node
 
 
@@ -147,7 +147,7 @@ def fromTypedNode(node):
     elif value_type in ('dateTime'):
         try:
             return datetime.strptime(literal, ISOFORMAT_MS)
-        except ValueError, _:
+        except ValueError as _:
             return datetime.strptime(literal, ISOFORMAT_SHORT)
     return literal
 
@@ -249,7 +249,7 @@ def get_model(model_name=None, directory=None):
 
 
 def load_into_model(model, parser_name, path, ns=None):
-    if type(ns) in types.StringTypes:
+    if type(ns) in str:
         ns = RDF.Uri(ns)
 
     if isinstance(path, RDF.Node):
@@ -276,7 +276,7 @@ def load_into_model(model, parser_name, path, ns=None):
             retries -= 1
             statements = rdf_parser.parse_as_stream(url, ns)
             retries = 0
-        except RDF.RedlandError, e:
+        except RDF.RedlandError as e:
             errmsg = "RDF.RedlandError: {0} {1} tries remaining"
             logger.error(errmsg.format(str(e), retries))
 
@@ -296,7 +296,7 @@ def load_string_into_model(model, parser_name, data, ns=None):
 def fixup_namespace(ns):
     if ns is None:
         ns = RDF.Uri("http://localhost/")
-    elif type(ns) in types.StringTypes:
+    elif type(ns) in str:
         ns = RDF.Uri(ns)
     elif not(isinstance(ns, RDF.Uri)):
         errmsg = "Namespace should be string or uri not {0}"
@@ -330,7 +330,7 @@ def add_default_schemas(model, schema_path=None):
         add_schema(model, schema, namespace)
 
     if schema_path:
-        if type(schema_path) in types.StringTypes:
+        if type(schema_path) in str:
             schema_path = [schema_path]
 
         for path in schema_path: