I am looking at the code in this repo https://github.com/datacenter/cobra and I am seeing imports from builtins as follows in a few 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 gained by doing this? There is no place in the module where these objects are re-defined.
On a side note, this breaks the 2.7 compatibility I was expecting from this module as specified in the docs.
The builtins module is automatically loaded every time Python interpreter starts, either as a top level execution environment or as interactive session. The Object class, which happens to be the base class for all Python objects, is defined in this module.
This module provides direct access to all 'built-in' identifiers of Python; for example, builtins. open is the full name for the built-in function open() . See Built-in Functions and Built-in Constants for documentation.
Check with the built-in function dir() You can get a list of names of built-in objects, such as built-in functions and constants, by passing the builtins module or __builtins__ to dir() . To make the output easier to read, use pprint.
I don't know why its done in cobra specifically, but its a trick for writing code that works in python 2 and 3. See compatible_idioms. It shouldn't break 2.7 but you have to write "3x-ish" code.
update
For 2.x, the builtins
module needs to be installed from pypi
. Its not the native builtin functions, but 3.x compatible updates.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With