Xqt created this task.
Xqt added a project: Pywikibot-tests.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.
Restricted Application added a project: Pywikibot.

TASK DESCRIPTION
  Some login tests fails due to TypeError: __init__() takes from 1 to 4 
positional arguments but 5 were given.
  
  The reason is that keyword arguments are invoked as positional aguments 
within tests.
  
    =================================== FAILURES 
===================================
    ______________________ TestOauthLoginManger.test_identity 
______________________
    
    self = <tests.oauth_tests.TestOauthLoginManger testMethod=test_identity>
    
        def test_identity(self):
            """Test identity."""
    >       login_manager = self._get_login_manager()
    
    tests/oauth_tests.py:77: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
    tests/oauth_tests.py:62: in _get_login_manager
        login_manager = OauthLoginManager(self.consumer_token[1], False,
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
    
    __args = (<pywikibot.login.OauthLoginManager object at 0x7fafde1fbbb0>, 
'fe39000d3d114bf801e3a92b584a181cf38942f9', False, APISite("test", 
"wikipedia"), 'e0ef943a1890b04d656409e64641c0ba')
    __kw = {}, name = 'pywikibot.login.OauthLoginManager.__init__', depth = 2
    old_arg = 'sysop', new_arg = None
    output_args = {'name': 'pywikibot.login.OauthLoginManager.__init__', 
'new_arg': None, 'old_arg': 'sysop'}
    
        def wrapper(*__args, **__kw):
            """Replacement function.
        
            @param __args: args passed to the decorated function
            @param __kw: kwargs passed to the decorated function
            @return: the value returned by the decorated function
            @rtype: any
            """
            name = obj.__full_name__
            depth = get_wrapper_depth(wrapper) + 1
            for old_arg, new_arg in arg_pairs.items():
                output_args = {
                    'name': name,
                    'old_arg': old_arg,
                    'new_arg': new_arg,
                }
                if old_arg in __kw:
                    if new_arg not in [True, False, None]:
                        if new_arg in __kw:
                            warn('%(new_arg)s argument of %(name)s '
                                 'replaces %(old_arg)s; cannot use both.'
                                 % output_args,
                                 RuntimeWarning, depth)
                        else:
                            # If the value is positionally given this will
                            # cause a TypeError, which is intentional
                            warn('%(old_arg)s argument of %(name)s '
                                 'is deprecated; use %(new_arg)s instead.'
                                 % output_args,
                                 DeprecationWarning, depth)
                            __kw[new_arg] = __kw[old_arg]
                    else:
                        if new_arg is False:
                            cls = PendingDeprecationWarning
                        else:
                            cls = DeprecationWarning
                        warn('%(old_arg)s argument of %(name)s is deprecated.'
                             % output_args,
                             cls, depth)
                    del __kw[old_arg]
    >       return obj(*__args, **__kw)
    E       TypeError: __init__() takes from 1 to 4 positional arguments but 5 
were given
    
    pywikibot/tools/__init__.py:1744: TypeError
    _______________________ TestOauthLoginManger.test_login 
________________________
    
    self = <tests.oauth_tests.TestOauthLoginManger testMethod=test_login>
    
        def test_login(self):
            """Test login."""
    >       login_manager = self._get_login_manager()
    
    tests/oauth_tests.py:70: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
    tests/oauth_tests.py:62: in _get_login_manager
        login_manager = OauthLoginManager(self.consumer_token[1], False,
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
    
    __args = (<pywikibot.login.OauthLoginManager object at 0x7fafde20aa30>, 
'fe39000d3d114bf801e3a92b584a181cf38942f9', False, APISite("test", 
"wikipedia"), 'e0ef943a1890b04d656409e64641c0ba')
    __kw = {}, name = 'pywikibot.login.OauthLoginManager.__init__', depth = 2
    old_arg = 'sysop', new_arg = None
    output_args = {'name': 'pywikibot.login.OauthLoginManager.__init__', 
'new_arg': None, 'old_arg': 'sysop'}
    
        def wrapper(*__args, **__kw):
            """Replacement function.
        
            @param __args: args passed to the decorated function
            @param __kw: kwargs passed to the decorated function
            @return: the value returned by the decorated function
            @rtype: any
            """
            name = obj.__full_name__
            depth = get_wrapper_depth(wrapper) + 1
            for old_arg, new_arg in arg_pairs.items():
                output_args = {
                    'name': name,
                    'old_arg': old_arg,
                    'new_arg': new_arg,
                }
                if old_arg in __kw:
                    if new_arg not in [True, False, None]:
                        if new_arg in __kw:
                            warn('%(new_arg)s argument of %(name)s '
                                 'replaces %(old_arg)s; cannot use both.'
                                 % output_args,
                                 RuntimeWarning, depth)
                        else:
                            # If the value is positionally given this will
                            # cause a TypeError, which is intentional
                            warn('%(old_arg)s argument of %(name)s '
                                 'is deprecated; use %(new_arg)s instead.'
                                 % output_args,
                                 DeprecationWarning, depth)
                            __kw[new_arg] = __kw[old_arg]
                    else:
                        if new_arg is False:
                            cls = PendingDeprecationWarning
                        else:
                            cls = DeprecationWarning
                        warn('%(old_arg)s argument of %(name)s is deprecated.'
                             % output_args,
                             cls, depth)
                    del __kw[old_arg]
    >       return obj(*__args, **__kw)
    E       TypeError: __init__() takes from 1 to 4 positional arguments but 5 
were given
    
    pywikibot/tools/__init__.py:1744: TypeError

TASK DETAIL
  https://phabricator.wikimedia.org/T237501

EMAIL PREFERENCES
  https://phabricator.wikimedia.org/settings/panel/emailpreferences/

To: Xqt
Cc: Huji, Aklapper, Xqt, pywikibot-bugs-list, Zkhalido, Viztor, DannyS712, 
Wenyi, Tbscho, MayS, Mdupont, JJMC89, Dvorapa, Altostratus, Avicennasis, 
mys_721tx, jayvdb, Dalba, Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
pywikibot-bugs@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs

Reply via email to