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

TASK DESCRIPTION
  Hello, I've just updated my Pywikibot version (jump from 3.0.20180922 to 
3.0.20200111) and one of my script is broken.
  
  In a nutshell, I'm checking pages with the extended confirmed protection to 
add or remove a specific template. And sometimes, this template is used on 
protected pages.
  
  Results with the out-of-date version:
  
    tools.lebot@tools-sgebastion-07:~$ python3 pywikibotold/core/pwb.py 
pywikibot/core/scripts/userscripts/semiprotectionextended.py
    ERROR: Seuls les administrateurs peuvent modifer la page : Doc Gynéco
    ERROR: Seuls les administrateurs peuvent modifer la page : Falun Gong
    ERROR: Seuls les administrateurs peuvent modifer la page : La Cocarde 
étudiante
  
  Three articles can't be edited by the bot because the bot is not an 
administrator: everything is okay. I'm checking this case with the method 
`canBeEdited()` and skip the page if `False`.
  
  Results with the lastest version and the same script:
  
    tools.lebot@tools-sgebastion-07:~$ python3 pywikibot/core/pwb.py -v 
pywikibot/core/scripts/userscripts/semiprotectionextended.py
    Python 3.5.3 (default, Sep 27 2018, 17:25:39)
    [GCC 6.3.0 20170516]
    Found 1 wikipedia:fr processes running, including this one.
    WARNING: 
/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py:3155:
 DeprecationWarning: sysop argument of pywikibot.login.LoginManager.__init__ is 
deprecated.
      api.LoginManager(site=self, sysop=sysop_protected)
    
    Logging in to wikipedia:fr as Tictacbot@Tictacbot
    Should be logged in now
    Sleeping for 8.2 seconds, 2020-02-07 20:33:59
    WARNING: API error protectedpage: This page has been protected to prevent 
editing or other actions.
    API Error: query=
    [...]
    
    response=
    {'error': {'info': 'This page has been protected to prevent editing or 
other actions.', 'code': 'protectedpage', 'help': 'See 
https://fr.wikipedia.org/w/api.php for API usage. Subscribe to the 
mediawiki-api-announce mailing list at 
<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for 
notice of API deprecations and breaking changes.'}, 'servedby': 'mw1342'}
    Error saving page [[Doc Gynéco]] (Page [[fr:Doc Gynéco]] is locked.)
    
    Traceback (most recent call last):
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 5352, in editpage
        result = req.submit()
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/data/api.py",
 line 2080, in submit
        raise APIError(**result['error'])
    pywikibot.data.api.APIError: protectedpage: This page has been protected to 
prevent editing or other actions. [help:See https://fr.wikipedia.org/w/api.php 
for API usage. Subscribe to the mediawiki-api-announce mailing list at 
<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for 
notice of API deprecations and breaking changes.]
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 112, in handle
        func(self, *args, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 1304, in _save
        watch=watch, bot=botflag, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 1319, in callee
        return fn(self, *args, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 5371, in editpage
        raise self._ep_errors[err.code](page)
    pywikibot.exceptions.LockedPage: Page [[fr:Doc Gynéco]] is locked.Traceback 
(most recent call last):
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 5352, in editpage
        result = req.submit()
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/data/api.py",
 line 2080, in submit
        raise APIError(**result['error'])
    pywikibot.data.api.APIError: protectedpage: This page has been protected to 
prevent editing or other actions. [help:See https://fr.wikipedia.org/w/api.php 
for API usage. Subscribe to the mediawiki-api-announce mailing list at 
<https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for 
notice of API deprecations and breaking changes.]
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "pywikibot/core/pwb.py", line 325, in <module>
        if not main():
      File "pywikibot/core/pwb.py", line 320, in main
        run_python_file(filename, [filename] + args, argvu, file_package)
      File "pywikibot/core/pwb.py", line 101, in run_python_file
        main_mod.__dict__)
      File "pywikibot/core/scripts/userscripts/semiprotectionextended.py", line 
58, in <module>
        retraitModele()
      File "pywikibot/core/scripts/userscripts/semiprotectionextended.py", line 
53, in retraitModele
        page.save(summary="[[wp:bot|Robot]] : retrait de l'icône de 
semi-protection étendue", minor=True)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/tools/__init__.py",
 line 1744, in wrapper
        return obj(*__args, **__kw)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/tools/__init__.py",
 line 1744, in wrapper
        return obj(*__args, **__kw)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 1293, in save
        cc=apply_cosmetic_changes, quiet=quiet, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 133, in wrapper
        handle(func, self, *args, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 124, in handle
        raise err
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 112, in handle
        func(self, *args, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/page.py",
 line 1304, in _save
        watch=watch, bot=botflag, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 1319, in callee
        return fn(self, *args, **kwargs)
      File 
"/mnt/nfs/labstore-secondary-tools-project/lebot/pywikibot/core/pywikibot/site.py",
 line 5371, in editpage
        raise self._ep_errors[err.code](page)
    pywikibot.exceptions.LockedPage: Page [[fr:Doc Gynéco]] is locked.
    Dropped throttle(s).
    Closing network session.
    CRITICAL: Exiting due to uncaught exception <class 
'pywikibot.exceptions.LockedPage'>
    Network session closed.
  
  It seems that the method `canBeEdited()` no longer performs the check 
correctly, or at least that its behaviour is no longer identical. I believe the 
problem comes from this change 
<https://github.com/wikimedia/pywikibot/commit/2579cad05cfa0eb9f17822455e23a5390d832dcd#diff-a3321f4bef784d01b941458f33dce023>,
 but I'm not sure and I don't know Pywikibot source code enough to do some deep 
digging. Maybe I'm the one who missed a breaking change.

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

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

To: Lofhi
Cc: Aklapper, pywikibot-bugs-list, Lofhi, Zkhalido, Viztor, Wenyi, Tbscho, 
MayS, Mdupont, JJMC89, Dvorapa, Altostratus, Avicennasis, mys_721tx, jayvdb, 
Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs

Reply via email to