Your message dated Wed, 02 Sep 2015 09:52:39 +0200
with message-id <55e6aac7.2050...@debian.org>
and subject line Bug addressed and done
has caused the Debian Bug report #795910,
regarding python3-yaql: yaql not working: ImportError: No module named 'context'
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
795910: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795910
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: python3-yaql
Version: 0.2.3-2
Severity: grave
Tags: patch
Justification: renders package unusable

yaql (python 3 package) fails to launch or import because uses python 2 syntax.

2to3 seams to fix the issue.


-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'testing-updates'), (500, 'stable-
updates'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.1.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=es_UY.UTF-8, LC_CTYPE=es_UY.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages python3-yaql depends on:
ii  dpkg         1.18.2
ii  python3-ply  3.4-5
ii  python3.4    3.4.3-7
pn  python3:any  <none>

python3-yaql recommends no packages.

python3-yaql suggests no packages.
--- yaql/__init__.py	(original)
+++ yaql/__init__.py	(refactored)
@@ -12,8 +12,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import parser
-import context
+from . import parser
+from . import context
 from yaql.functions import builtin, extended
 
 __versioninfo__ = (0, 2, 3)
--- yaql/context.py	(original)
+++ yaql/context.py	(refactored)
@@ -14,7 +14,7 @@
 
 from functools import wraps
 import inspect
-from exceptions import NoArgumentFound
+from .exceptions import NoArgumentFound
 
 
 class Context():
--- yaql/exceptions.py	(original)
+++ yaql/exceptions.py	(refactored)
@@ -20,9 +20,9 @@
 
 class NoFunctionRegisteredException(YaqlException):
     def __init__(self, func_name, arg_num=None):
-        self.func_name = func_name
+        self.__name__ = func_name
         self.arg_num = arg_num
-        msg = "No function called '{0}' is registered".format(self.func_name)
+        msg = "No function called '{0}' is registered".format(self.__name__)
         if self.arg_num:
             msg += " which has {0} arguments".format(self.arg_num)
         super(NoFunctionRegisteredException, self).__init__(msg)
--- yaql/expressions.py	(original)
+++ yaql/expressions.py	(refactored)
@@ -13,8 +13,8 @@
 #    under the License.
 
 import types
-from context import *
-from exceptions import YaqlExecutionException, NoFunctionRegisteredException
+from .context import *
+from .exceptions import YaqlExecutionException, NoFunctionRegisteredException
 import yaql
 
 
@@ -87,7 +87,7 @@
                         fs = self._try_invoke(
                             resolvers,
                             [self.function_name, this], context) or []
-                        if not isinstance(fs, types.ListType):
+                        if not isinstance(fs, list):
                             fs = [fs]
                     except YaqlExecutionException:
                         fs = []
@@ -223,7 +223,7 @@
             ok = True
             if arg_type:
                 ok = ok and isinstance(arg_val, arg_type)
-                if type(arg_val) == types.BooleanType:
+                if type(arg_val) == bool:
                     ok = ok and type(arg_val) == arg_type
             if custom_validator:
                 ok = ok and custom_validator(arg_val)
--- yaql/parser.py	(original)
+++ yaql/parser.py	(refactored)
@@ -14,9 +14,9 @@
 
 import types
 import ply.yacc as yacc
-import expressions
-import exceptions
-import lexer
+from . import expressions
+from . import exceptions
+from . import lexer
 import tempfile
 
 
@@ -96,7 +96,7 @@
     """
     func : value '.' FUNC arg ')'
     """
-    if isinstance(p[4], types.ListType):
+    if isinstance(p[4], list):
         arg = p[4]
     else:
         arg = [p[4]]
@@ -114,7 +114,7 @@
     """
     func : FUNC arg ')'
     """
-    if isinstance(p[2], types.ListType):
+    if isinstance(p[2], list):
         arg = p[2]
     else:
         arg = [p[2]]
@@ -126,11 +126,11 @@
     arg : arg ',' arg
     """
     val_list = []
-    if isinstance(p[1], types.ListType):
+    if isinstance(p[1], list):
         val_list += p[1]
     else:
         val_list.append(p[1])
-    if isinstance(p[3], types.ListType):
+    if isinstance(p[3], list):
         val_list += p[3]
     else:
         val_list.append(p[3])
--- yaql/utils.py	(original)
+++ yaql/utils.py	(refactored)
@@ -18,9 +18,9 @@
 
 def limit(generator, limit=MAX_GENERATOR_ITEMS):
     res = []
-    for i in xrange(limit):
+    for i in range(limit):
         try:
-            res.append(generator.next())
+            res.append(next(generator))
         except StopIteration:
             return res
     raise YaqlSequenceException(limit)
--- yaql/cli/cli_functions.py	(original)
+++ yaql/cli/cli_functions.py	(refactored)
@@ -31,7 +31,7 @@
 @ContextAware()
 def main(context):
     print("Yet Another Query Language - command-line query tool")
-    print("Version {0}".format(version))
+    print(("Version {0}".format(version)))
     print("Copyright (c) 2013 Mirantis, Inc")
     print("")
     if not context.get_data():
@@ -44,7 +44,7 @@
     comm = True
     while comm != 'exit':
         try:
-            comm = raw_input(PROMPT)
+            comm = input(PROMPT)
         except EOFError:
             return
         if not comm:
@@ -52,7 +52,7 @@
         if comm[0] == '@':
             funcName, args = parse_service_command(comm)
             if funcName not in SERVICE_FUNCTIONS:
-                print("Unknown command " + funcName)
+                print(("Unknown command " + funcName))
             else:
                 SERVICE_FUNCTIONS[funcName](args, context)
             continue
@@ -62,17 +62,17 @@
             if ex.position:
                 pointer_string = (" " * (ex.position + len(PROMPT))) + '^'
                 print(pointer_string)
-            print(ex.message)
+            print((ex.message))
             continue
         try:
             res = expr.evaluate(context=Context(context))
             if isinstance(res, types.GeneratorType):
                 res = limit(res)
-            print(json.dumps(res, indent=4))
+            print((json.dumps(res, indent=4)))
         except Exception as ex:
             print("Execution exception:")
             if hasattr(ex, 'message'):
-                print(ex.message)
+                print((ex.message))
             else:
                 print("Unknown")
 
@@ -81,17 +81,17 @@
     try:
         json_str = open(os.path.expanduser(data_file)).read()
     except IOError as e:
-        print("Unable to read data file '{0}': {1}".format(data_file,
-                                                           e.strerror))
+        print(("Unable to read data file '{0}': {1}".format(data_file,
+                                                           e.strerror)))
         return
     try:
         decoder = JSONDecoder()
         data = decoder.decode(json_str)
     except Exception as e:
-        print("Unable to parse data: " + e.message)
+        print(("Unable to parse data: " + e.message))
         return
     context.set_data(data)
-    print("Data from file '{0}' loaded into context".format(data_file))
+    print(("Data from file '{0}' loaded into context".format(data_file)))
 
 
 
--- yaql/cli/run.py	(original)
+++ yaql/cli/run.py	(refactored)
@@ -30,7 +30,7 @@
             decoder = JSONDecoder()
             data = decoder.decode(json_str)
         except:
-            print("Unable to load data from "+options.data)
+            print(("Unable to load data from "+options.data))
             return
     else:
         data = None
--- yaql/functions/builtin.py	(original)
+++ yaql/functions/builtin.py	(refactored)
@@ -21,7 +21,7 @@
 
 
 def _get_att_or_key(item, value):
-    if isinstance(item, types.DictionaryType):
+    if isinstance(item, dict):
         return item.get(value)
     return getattr(item, value)
 
@@ -35,20 +35,20 @@
 
 
 @EvalArg('self', arg_type=collections.Iterable,
-         custom_validator=lambda v: not isinstance(v, types.DictionaryType)
-         and not isinstance(v, types.StringTypes))
+         custom_validator=lambda v: not isinstance(v, dict)
+         and not isinstance(v, str))
 def collection_attribution(self, att_name):
     for item in self:
         val = _get_att_or_key(item, att_name())
         if isinstance(val, collections.Iterable) and \
-                not isinstance(val, types.StringTypes):
+                not isinstance(val, str):
             for v in val:
                 yield v
         else:
             yield val
 
 
-@EvalArg('self', arg_type=types.DictionaryType)
+@EvalArg('self', arg_type=dict)
 def dict_attribution(self, arg_name):
     return self.get(arg_name())
 
@@ -63,7 +63,7 @@
 
 # Collection filtering
 
-@EvalArg("index", types.IntType)
+@EvalArg("index", int)
 def get_by_index(this, index):
     this = this()
     if isinstance(this, types.GeneratorType):
@@ -72,11 +72,11 @@
 
 
 @EvalArg("self", arg_type=collections.Iterable,
-         custom_validator=lambda v: not isinstance(v, types.StringTypes))
+         custom_validator=lambda v: not isinstance(v, str))
 def filter_by_predicate(self, predicate):
     for item in self:
         r = predicate(item)
-        if not isinstance(r, types.BooleanType):
+        if not isinstance(r, bool):
             raise YaqlExecutionException()
         if r is True:
             yield item
@@ -132,19 +132,19 @@
 
 # Boolean operations
 
-@EvalArg('a', arg_type=types.BooleanType)
-@EvalArg('b', arg_type=types.BooleanType)
+@EvalArg('a', arg_type=bool)
+@EvalArg('b', arg_type=bool)
 def _and(a, b):
     return a and b
 
 
-@EvalArg('a', arg_type=types.BooleanType)
-@EvalArg('b', arg_type=types.BooleanType)
+@EvalArg('a', arg_type=bool)
+@EvalArg('b', arg_type=bool)
 def _or(a, b):
     return a or b
 
 
-@EvalArg('self', arg_type=types.BooleanType)
+@EvalArg('self', arg_type=bool)
 def _not(self):
     return not self
 
@@ -186,7 +186,7 @@
 
 @EvalArg('value')
 def to_bool(value):
-    if isinstance(value, types.StringTypes):
+    if isinstance(value, str):
         if value.lower() == 'false':
             return False
     return bool(value)
--- yaql/functions/extended.py	(original)
+++ yaql/functions/extended.py	(refactored)
@@ -38,7 +38,7 @@
 
 
 def _range_limited(start, end):
-    for i in xrange(int(start()), int(end())):
+    for i in range(int(start()), int(end())):
         yield i
 
 
@@ -66,7 +66,7 @@
 
 
 @ContextAware()
-@EvalArg('levels', types.IntType)
+@EvalArg('levels', int)
 def parent(context, levels, func):
     con = context
     traversed = 0
@@ -113,7 +113,7 @@
     self = self()
     for cond in conditions:
         res = cond(self)
-        if not isinstance(res, types.TupleType):
+        if not isinstance(res, tuple):
             raise YaqlExecutionException("Switch must have tuple parameters")
         if len(res) != 2:
             raise YaqlExecutionException("Switch tuples must be of size 2")

--- End Message ---
--- Begin Message ---
Hi Gerardo,

I have uploaded to jessie-proposed-updates a version of the python-yaql
source package which does not produce a python3 package. This has been
accepted by the release team. So this bug can be closed now (note that
the Sid package doesn't produce a python3 package either, as this is
broken upstream in many ways).

Note that only version 1.x of python-yaql really has upstream support
for Python 3, though this isn't in use by the reverse dependencies of
python-yaql just yet (this is a work in progress upstream).

Cheers,

Thomas Goirand (zigo)

--- End Message ---

Reply via email to