Ivan-r created this task.
Ivan-r added projects: Pywikibot-replace.py, Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.

TASK DESCRIPTION
  **Steps to replicate the issue** (include links if applicable):
  
  - I'm work on https://ru.minecraft.wiki/w/Справка:PyWikiBot
  - `py pwb.py replace -catr:Модификации -lang:ru -ns:0 -regex 
"[\n\s]+\|[^\=]+=\s?[Сс]м. \[\[\#[^\n]+" ""`
  
  **What happens?**:
  
    Script terminated by exception:
    
    ERROR: APISite instance has no attribute 'file_extensions' (AttributeError)
    Traceback (most recent call last):
      File "C:\Users\DragonMsi\Documents\pywikibot\pwb.py", line 58, in <module>
        sys.exit(main())
                 ~~~~^^
      File "C:\Users\DragonMsi\Documents\pywikibot\pwb.py", line 54, in main
        runpy.run_path(str(path), run_name='__main__')
        ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen runpy>", line 287, in run_path
      File "<frozen runpy>", line 98, in _run_module_code
      File "<frozen runpy>", line 88, in _run_code
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\scripts\wrapper.py", line 
558, in <module>
        main()
        ~~~~^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\scripts\wrapper.py", line 
542, in main
        if not execute():
               ~~~~~~~^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\scripts\wrapper.py", line 
529, in execute
        run_python_file(filename, script_args, module)
        ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\scripts\wrapper.py", line 
154, in run_python_file
        exec(compile(source, filename, 'exec', dont_inherit=True),
        ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
             main_mod.__dict__)
             ^^^^^^^^^^^^^^^^^^
      File "C:\Users\DragonMsi\Documents\pywikibot\scripts\replace.py", line 
1148, in <module>
        main()
        ~~~~^^
      File "C:\Users\DragonMsi\Documents\pywikibot\scripts\replace.py", line 
1144, in main
        bot.run()
        ~~~~~~~^^
      File "C:\Users\DragonMsi\Documents\pywikibot\pywikibot\bot.py", line 
1579, in run
        for item in self.generator:
                    ^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\pagegenerators\__init__.py", 
line 672, in PreloadingGenerator
        for page in generator:
                    ^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\pagegenerators\_filters.py", 
line 84, in <genexpr>
        return (page for page in generator if page.namespace() in namespaces)
                                 ^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\pagegenerators\_generators.py",
 line 358, in CategorizedPageGenerator
        yield from category.articles(
        ...<5 lines>...
        )
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_category.py", line 190, 
in articles
        for member in self.members(
                      ~~~~~~~~~~~~^
                member_type=member_type, recurse=recurse, **kwargs):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_category.py", line 259, 
in members
        for member in subcat.members(
                      ~~~~~~~~~~~~~~^
                recurse=recurse, total=total, **kwargs):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_category.py", line 259, 
in members
        for member in subcat.members(
                      ~~~~~~~~~~~~~~^
                recurse=recurse, total=total, **kwargs):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_category.py", line 259, 
in members
        for member in subcat.members(
                      ~~~~~~~~~~~~~~^
                recurse=recurse, total=total, **kwargs):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_category.py", line 245, 
in members
        for member in self.site.categorymembers(self, total=total, **kwargs):
                      ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "<frozen _collections_abc>", line 360, in __next__
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\tools\collections.py", line 
285, in send
        return next(self._started_gen)
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\data\api\_generators.py", 
line 723, in generator
        yield from self._extract_results(resultdata)
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\data\api\_generators.py", 
line 654, in _extract_results
        result = self.result(item)
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\data\api\_generators.py", 
line 838, in result
        p = pywikibot.FilePage(
            p, ignore_extension='imageinfo' in pagedata)
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\page\_filepage.py", line 73, 
in __init__
        if not sep or extension.lower() not in self.site.file_extensions:
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^
      File 
"C:\Users\DragonMsi\Documents\pywikibot\pywikibot\site\_basesite.py", line 218, 
in __getattr__
        raise AttributeError(f'{type(self).__name__} instance has no '
                             f'attribute {name!r}') from None
    AttributeError: APISite instance has no attribute 'file_extensions'. Did 
you mean: 'has_extension'?
    CRITICAL: Exiting due to uncaught exception AttributeError: APISite 
instance has no attribute 'file_extensions'
  
  ----
  
  I see that the drop occurs when trying to process a category containing a 
file. For example this one: 
https://ru.minecraft.wiki/w/Категория:Спрайтовые_изображения_Applied_Energistics
  But I don't see why this should cause problems if all the files are in a 
namespace that was excluded by the `-ns:0` key.

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

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

_______________________________________________
pywikibot-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to