Why import inline functions if you never override any inline functions?

I look at the code in this repo https://github.com/datacenter/cobra , and I see the import from the built-in components as follows in several files:

cobra/internal/codec/jsoncodec.py:15:from builtins import str cobra/internal/codec/xmlcodec.py:15:from builtins import str cobra/internal/base/moimpl.py:16:from builtins import next cobra/internal/base/moimpl.py:17:from builtins import str cobra/internal/base/moimpl.py:18:from builtins import object cobra/internal/rest/accessimpl.py:15:from builtins import object cobra/internal/rest/accessimpl.py:16:from builtins import str cobra/mit/session.py:15:from builtins import str cobra/mit/session.py:16:from builtins import object cobra/mit/meta.py:16:from builtins import str cobra/mit/meta.py:17:from builtins import next cobra/mit/meta.py:18:from builtins import object cobra/mit/access.py:21:from builtins import object cobra/mit/naming.py:15:from builtins import next cobra/mit/naming.py:16:from builtins import str cobra/mit/naming.py:17:from builtins import object cobra/mit/request.py:15:from builtins import str cobra/mit/request.py:16:from builtins import object 

What is the logic / what is achieved by this? There is no place in the module where these objects are redefined.

On the other hand, this violates the 2.7 compatibility that I expected from this module, as indicated in the docs.

+5
source share
1 answer

I don’t know why this was done in cobra specially, but this is a trick for writing code that works in python 2 and 3. See compatible_idioms . It should not interrupt 2.7, but you need to write the code "3x-ish".

Update

For 2.x, the builtins module must be installed from pypi . These are not built-in built-in functions, but 3.x compatible updates.

+8
source

Source: https://habr.com/ru/post/1216305/


All Articles