If I write this function
from typing import Dict @auth.requires(lambda: (auth.requires_login() and request.env.http_referer and ('/client' in request.env.http_referer or '/client/get_approval' in request.env.http_referer))) def get_approval() -> Dict[str, SQLFORM]: """Get approval for deletion. :return: Dict with form. """ rec_id: str = request.args[0] rows_dic: Dict[int, str] = {**general.get_members(db, SUPERVISOR_ROLE), **general.get_members(db, MANAGER_ROLE)} form = SQLFORM.factory( Field('user_id', label=T('Supervisor/Manager'), requires=IS_IN_SET(rows_dic, zero=T('Choose one...'))), Field('password', 'password', label=T('Password'), requires=IS_NOT_EMPTY()), buttons=[BUTTON(T('Submit'), _type='submit', _class='btn btn-primary')], formstyle='table3cols', ) ... return dict(form=form) web2py shows a web page with the message invalid function (client/get_approval) If however I write it without the return type on the header from typing import Dict @auth.requires(lambda: (auth.requires_login() and request.env.http_referer and ('/client' in request.env.http_referer or '/client/get_approval' in request.env.http_referer))) def get_approval(): # type: () -> Dict[str, SQLFORM] """Get approval for deletion. :return: Dict with form. """ rec_id: str = request.args[0] rows_dic: Dict[int, str] = {**general.get_members(db, SUPERVISOR_ROLE), **general.get_members(db, MANAGER_ROLE)} form = SQLFORM.factory( Field('user_id', label=T('Supervisor/Manager'), requires=IS_IN_SET(rows_dic, zero=T('Choose one...'))), Field('password', 'password', label=T('Password'), requires=IS_NOT_EMPTY()), buttons=[BUTTON(T('Submit'), _type='submit', _class='btn btn-primary')], formstyle='table3cols', ) ... return dict(form=form) it all works. I even tried with just -> Dict to see if it was a problem with SQLFORM, but it returns the same message. Windows 7 Pro x64 SP1+all updates Firefox 65.0.2 x64 Python 3.7.1 x86 web2py 2.18.3 -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.