pony icon indicating copy to clipboard operation
pony copied to clipboard

TypeError: FormattedValue constructor takes either 0 or 3 positional arguments

Open yilmazmuhammed opened this issue 3 years ago • 2 comments

I have 3 tables at below:

class Member(db.Entity):
    id = PrimaryKey(int, auto=True)
    web_user_ref = Optional('WebUser')
    sandik_ref = Required('Sandik')

class WebUser(db.Entity):
    id = PrimaryKey(int, auto=True)
    name = Required(str)
    surname = Required(str)
    members_set = Set(Member)

    @property
    def name_surname(self):
        return f"{self.name} {self.surname}"

class Sandik(db.Entity):
    id = PrimaryKey(int, auto=True)
    members_set = Set(Member)

I can run query at below in pony 0.7.14:

members = Sandik[1].members_set.order_by(lambda m: m.web_user_ref.name_surname.lower())

However I get error at below in 0.7.15rc and after:

Traceback (most recent call last):
  File "/home/myilmaz/PycharmProjects/Temp/pony_example/pony_example.py", line 35, in <module>
    members = Sandik[1].members_set.order_by(lambda m: m.web_user_ref.name_surname.lower())
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/core.py", line 3601, in order_by
    return wrapper.select().order_by(*args)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/core.py", line 6005, in order_by
    return query._order_by('order_by', *args)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/core.py", line 6025, in _order_by
    return query._process_lambda(func, globals, locals, order_by=True)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/core.py", line 6097, in _process_lambda
    new_translator = prev_translator.apply_lambda(func_id, new_filter_num, order_by, func_ast, argnames, original_names, extractors, new_vars, vartypes)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 923, in apply_lambda
    translator.dispatch(func_ast)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 107, in dispatch
    return ASTTranslator.dispatch(translator, node)  # default route
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/asttranslation.py", line 40, in dispatch
    translator.dispatch(child)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 107, in dispatch
    return ASTTranslator.dispatch(translator, node)  # default route
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/asttranslation.py", line 40, in dispatch
    translator.dispatch(child)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 107, in dispatch
    return ASTTranslator.dispatch(translator, node)  # default route
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/asttranslation.py", line 47, in dispatch
    translator.call(post_method, node)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 196, in call
    reraise(exc_class, exc, tb)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/utils/utils.py", line 94, in reraise
    try: raise exc.with_traceback(tb)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 185, in call
    monad = method(translator, node)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 1045, in postAttribute
    return node.value.monad.getattr(node.attr)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 1451, in wrapper
    return method(monad, *args, **kwargs)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 2176, in getattr
    return new_monad()
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 1451, in wrapper
    return method(monad, *args, **kwargs)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/sqltranslation.py", line 2665, in __call__
    func_ast, external_names, cells = decompile(func)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/decompiling.py", line 38, in decompile
    decompiler = Decompiler(codeobject)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/decompiling.py", line 156, in __init__
    decompiler.decompile()
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/decompiling.py", line 259, in decompile
    x = method(*arg)
  File "/home/myilmaz/PycharmProjects/Temp/venv/lib/python3.6/site-packages/pony/orm/decompiling.py", line 363, in BUILD_STRING
    items[i] = ast.FormattedValue(item, -1)
TypeError: FormattedValue constructor takes either 0 or 3 positional arguments

Process finished with exit code 1

yilmazmuhammed avatar Feb 14 '22 18:02 yilmazmuhammed

Hello, what python version do you run on?

sashaaero avatar Feb 23 '22 21:02 sashaaero

Hello, it is Python 3.6

yilmazmuhammed avatar Mar 03 '22 16:03 yilmazmuhammed