sys.stdin.read() blocks waiting for EOF in shell.py which will
likely never come if the user provides input on stdin via the
keyboard before the shell starts. Added check for a tty to
skip reading stdin if it's not present.
This still allows piping of code into the shell (which should
have no TTY and should have an EOF) but also doesn't cause it
to hang if multi-line input is provided.
This is the result of Christopher Medrela's 2013 Summer of Code project.
Thanks also to Preston Holmes, Tim Graham, Anssi Kääriäinen, Florian
Apolloner, and Alex Gaynor for review notes along the way.
Also: Fixes#8579, fixes#3055, fixes#19844.
Since the original ones in django.db.models.loading were kept only for
backwards compatibility, there's no need to recreate them. However, many
internals of Django still relied on them.
They were also imported in django.db.models. They never appear in the
documentation, except a quick mention of get_models and get_app in the
1.2 release notes to document an edge case in GIS. I don't think that
makes them a public API.
This commit doesn't change the overall amount of global state but
clarifies that it's tied to the app_cache object instead of hiding it
behind half a dozen functions.
IPython 1.0 introduces an actual stable public API function
for starting a normal (non-embedded) IPython session.
This is an official public API, which is promised to survive implementation changes.
Also:
* Added a ``--no-startup`` option to disable this behavior. Previous
logic to try to execute the code in charge of this funcionality was
flawed (it only tried to do so if the user asked for ipython/bpython
and they weren't found)
* Expand ``~`` in PYTHONSTARTUP value.
Thanks hekevintran at gmail dot com for the report and initial patch.
Refs #3381.
This allows for a behavior more in line with what is expected by Ipython
users, e.g. the user namespace is initialized from config files, startup
files.
Thanks Benjamin Ragan-Kelley from the IPython dev team for the patch.
Specify python interpreter interface ipython or bpython with the -i,
--interface options
argument.
ex// python manage.py shell -i bpython
ex// python manage.py shell --interface bpython
Like all other options, defaults to default python interpreter when your
selected choice isn't available.
updated documentation where appropriate