Почему typing.py отличается в python3.7 между образом докера и исходным кодом cpython? - PullRequest
0 голосов
/ 04 января 2019

Я обнаружил странное поведение между двумя версиями python-3.7.2. Первый, который я скомпилировал из source на моей хост-машине (Ubuntu 17.10), другой - это изображение Python Docker docker pull python:3.7

import abc
import typing


class Meta(metaclass=abc.ABCMeta):
    pass


class Base(Meta):
    pass


class Type(Base):
    pass


T = typing.TypeVar('T', bound=Type)

class Variable(typing.Generic[T], Base):
    """
        Variable docstring...
    """

class Member(Variable[T]):
    __doc__ = Variable[T].__doc__


m = Member()

assert 'Variable docstring' in m.__class__.__doc__

Это утверждение отличается между моим хостом и докером. В докере строка документов наследуется от _GenericAlias от typing.py. На самом деле на моем хост-компьютере, где Python был установлен из источников, typing.py не содержит class _GenericAlias, но python из образа докера находится под /usr/local/lib/python3.7/typing.py:591:class _GenericAlias(_Final, _root=True)

Почему такое поведение существует? И как их предотвратить в будущем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...