Page MenuHomePhabricator

Appveyor tests fails with Python 3.6.0
Closed, ResolvedPublicBUG REPORT

Description

What happens?:

c:\python360-x64\lib\site-packages\pydot.py:20: UserWarning: `pydot` could not import `dot_parser`, so `pydot` will be unable to parse DOT files. The error was:  'version_info' object has no attribute '__version__'
  "The error was:  {e}".format(e=e))

Steps to replicate the issue:
I was able to reproduce this issue. Install Python 3.6.0 and pip install pydot.

py -3.6
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pydot
C:\Python36\lib\site-packages\pydot.py:20: UserWarning: `pydot` could not import `dot_parser`, so `pydot` will be unable to parse DOT files. The error was:  'version_info' object has no attribute '__version__'
  "The error was:  {e}".format(e=e))
>>> import dot_parser
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python36\lib\site-packages\dot_parser.py", line 14, in <module>
    from pyparsing import (
  File "C:\Python36\lib\site-packages\pyparsing\__init__.py", line 130, in <module>
    __version__ = __version_info__.__version__
AttributeError: 'version_info' object has no attribute '__version__'
>>> import pyparsing
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python36\lib\site-packages\pyparsing\__init__.py", line 130, in <module>
    __version__ = __version_info__.__version__
AttributeError: 'version_info' object has no attribute '__version__'
>>> from pyparsing import version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python36\lib\site-packages\pyparsing\__init__.py", line 130, in <module>
    __version__ = __version_info__.__version__
AttributeError: 'version_info' object has no attribute '__version__'

The reason for this regression is that pyparsing.version_info inherits from typing.NamedTuple but all methods defined for version_info are ignored:

>>> version_info.__dict__.keys()
dict_keys(['__module__', '__doc__', '__slots__', '_fields', '__new__', '_make', '_replace', '__repr__', '_asdict', '__getnewargs__', 'major', 'minor', 'micro', 'releaselevel', 'serial', '_source', '_field_types'])

but it works with Python 3.6.1:

D:\pwb\GIT\core>py -3.6
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyparsing import version_info
>>> version_info.__dict__.keys()
dict_keys(['__module__', '__doc__', '__slots__', '_fields', '__new__', '_make', '_replace', '__repr__', '_asdict', '__getnewargs__', 'major', 'minor', 'micro', 'releaselevel', 'serial', '_source', '__annotations__', '_field_types', '_field_defaults', '__version__', '__str__'])
>>>

I propose to drop Python 3.6.0 support with Pywikibot 8 and start with Python 3.6.1+ as already suggested in T301908. Looking at T312794 nobody uses 3.6.0.

Event Timeline

Xqt triaged this task as High priority.

Change 836737 had a related patch set uploaded (by Xqt; author: Xqt):

[pywikibot/core@master] [8.0] Require Python 3.6.1+ with Pywikibot and drop support for Python 3.6.0

https://gerrit.wikimedia.org/r/836737

Change 836737 merged by Xqt:

[pywikibot/core@master] [8.0] Require Python 3.6.1+ with Pywikibot and drop support for Python 3.6.0

https://gerrit.wikimedia.org/r/836737