IPython: Difference between revisions

Content deleted Content added
Adding other early developers of IPython.
m Parallel computing: only linked later
 
(35 intermediate revisions by 22 users not shown)
Line 11:
| screenshot = IPython-6.x-screenshot-osx.png<!-- Image name is enough -->
| screenshot size = 220px
| screenshot alt = Screenshot of IPython 6.x on Mac OS, showing the computation of a fourrierfourier transform using numpy.
| caption = IPython Shell
| collapsible =
| author = [[Fernando Pérez (software developer)|Fernando Perez]]<ref name=history>{{cite web|url=http://blog.fperez.org/2012/01/ipython-notebook-historical.html|title=The IPython notebook: a historical retrospective|date=8 January 2012|publisher=Fernando Perez Blog}}</ref>
| developer = Brian E. Granger, Min Ragan-Kelley, Paul Ivanov, Thomas Kluyver, Matthias Bussonnier
| released = {{Start date and age|2001|df=yes}}<ref name=history />
| discontinued =
| latest_release_version = {{wikidata|property|reference|edit|Q2659957|P348}}
| latest release version = 7.14.0
| latest_release_date = {{start date and age|{{wikidata|qualifier|Q2659957|P348|P577}}}}
| latest release date = {{Start date and age|2020|5|2|df=yes}}<ref>{{cite web|url=https://pypi.org/project/ipython/#history|title=ipython release history|publisher=[[Python Package Index]]|accessdate=3 May 2020}}</ref>
| latest preview version =
| latest preview date =
| status =
| programming language = [[Python (programming language)|Python]], [[JavaScript]], [[Cascading Style Sheets|CSS]], [[HTML]]
| operating system = [[Cross-platform]]
Line 38 ⟶ 37:
'''IPython''' (Interactive Python) is a [[Shell (computing)|command shell]] for interactive computing in multiple programming languages, originally developed for the [[Python (programming language)|Python programming language]], that offers [[Introspection (computer science)|introspection]], [[rich media]], shell syntax, [[tab completion]], and history. IPython provides the following features:
 
* Interactive shells (terminal and [[Qt (frameworksoftware)|Qt]]-based).
* A browser-based [[notebook interface]] with support for code, text, mathematical expressions, inline plots and other media.
* Support for interactive data visualization and use of GUI toolkits.
* Flexible, embeddable interpreters to load into one's own projects.
* Tools for [[parallel computing]].
 
IPython is a [[NumFOCUS]] fiscally sponsored project.<ref>{{cite web|title=NumFOCUS Sponsored Projects|url=https://numfocus.org/sponsored-projects|publisher=NumFOCUS|access-date=2021-10-25}}</ref>
 
== Parallel computing ==
[[File:IpythonArchitecture.png|thumbnail|Architectural View of IPython's parallel machinery]]
IPython is based on an architecture that provides parallel and distributed computing. IPython enables parallel applications to be developed, executed, debugged and monitored interactively, hence the I (Interactive) in IPython<!-- The 'I' in IPython refers to an 'interactive' command window that helps users to run code, access variables, call up data analysis packages and view plots, while the Python refers to the popular programming language that the notebook is based on. see, http://www.nature.com/news/interactive-notebooks-sharing-the-code-1.16261 -->.<ref>{{cite journal|last1=Helen|first1=Shen|title=Interactive notebooks: Sharing the code|journal=Nature|date=2014|volume=515|issue=7525|pages=151–152|doi=10.1038/515151a|pmid=25373681|bibcode=2014Natur.515..151S|doi-access=free}}</ref> This architecture abstracts out parallelism, enabling IPython to support many different styles of parallelism<ref>{{cite web|title=Using IPython for Parallel computing - IPython docs|url=https://ipython.org/ipython-doc/stable/parallel/parallel_intro.html}}</ref> including:
 
* Single program, multiple data ([[SPMD]]) parallelism
Line 56 ⟶ 57:
* Custom user defined approaches
 
With the release of IPython 4.0, the parallel computing capabilities were made optional and released under the [https://pypi.org/project/ipyparallel/ ipyparallel] python package. And most of the capabilities of ipyparallel are now covered by more mature libraries like [[Dask (software)|Dask]].
 
IPython frequently draws from SciPy stack<ref name="scipystack">{{cite web|url=http://www.scipy.org/install.html|title=SciPy Stack}}</ref> libraries like [[NumPy]] and [[SciPy]], often installed alongside one of many Scientific Python distributions.<ref name="scipystack" /> IPython provides integration with some libraries of the [[SciPy]] stack, notably [[matplotlib]], producing inline graphs when in used with the [[Jupyter]] notebook. Python libraries can implement IPython specific hooks to customize rich object display. [[SymPy]] for example implements rendering of mathematical expressions as rendered [[LaTeX]] when used within IPython context, and [[Pandas (software)|Pandas]] dataframe use an HTML representation.<ref>{{Cite web|url=http://docs.sympy.org/1.1/tutorial/printing.html#setting-up-pretty-printing|title=Printing — SymPy 1.1 documentation|website=docs.sympy.org|access-date=2018-04-11}}</ref>
 
== Other features ==
IPython allows non-blocking interaction with [[Tkinter]], [[PyGTK]], [[PyQt]]/[[PySide]] and [[wxPython]] (the standard Python shell only allows interaction with Tkinter). IPython can interactively manage parallel [[Computer cluster|computing clusters]] using asynchronous status callbacks and/or [[Message Passing Interface|MPI]]. IPython can also be used as a system shell replacement.<ref name="McKinney">{{cite book|chapter-url=http://shop.oreilly.com/product/0636920023784.do|last=McKinney|first=Wes|title=Python for Data Analysis|chapter=Chapter 3|year=2012|isbn=978-1-449-31979-3}}</ref> Its default behavior is largely similar to [[Unix shell]]s, but it allows customization and the flexibility of executing code in a live Python environment. Using IPython as a shell replacement is less common and it is now recommended to use Xonsh which provide most of the IPython feature with better shell integrations.
 
== End of Python 2 support ==
IPython 5.x (Long Time Support) series will beis the last version of IPython to support Python 2. The IPython project pledged to not support Python 2 beyond 2020<ref>{{Cite news|url=https://blog.jupyter.org/release-of-ipython-5-0-8ce60b8d2e8e|title=Release of IPython 5.0 – Jupyter Blog|date=2016-07-08|work=Jupyter Blog|access-date=2018-04-11}}</ref> by being one of the first projects to join the [http://python3statement.org/ Python 3 Statement], the 6.x series is only compatible with Python 3 and above. It is still possible though to run an IPython kernel and a Jupyter Notebook server on different Python versions allowing userusers to still access Python 2 on newer version of Jupyter.
 
== Project Jupyter ==
{{Main|Project Jupyter}}
{{Third-party|section|date=October 2016}}
[[File:IPython-notebook.png|thumb|Old IPython Notebook interface]]
 
In 2014, IPython creator [[Fernando Pérez (software developer)|Fernando Pérez]] announced a spin-off project from IPython called [[Project Jupyter]].<ref>{{cite web|url=https://speakerdeck.com/fperez/project-jupyter|title=Project Jupyter // Speaker Deck}}</ref> IPython continued to exist as a Python shell and kernel for Jupyter, but the [[Notebook interface|notebook]] interface and other language-agnostic parts of IPython were moved under the Jupyter name.<ref>{{cite web|url=https://github.com/ipython/ipython|title=The Notebook, Qt console and a number of other pieces are now parts of Jupyter|website=[[GitHub]] |date=17 October 2021}}</ref><ref>{{cite web|url=https://blog.jupyter.org/the-big-split-9d7b88a031a7|title=The Big Split™|date=28 August 2017}}</ref> Jupyter is language agnostic and its name is a reference to core programming languages supported by Jupyter, which are [[Julia (programming language)|Julia]], [[Python (programming language)|Python]], and [[R (programming language)|R]].<ref>{{Cite web|url=https://github.com/jupyter/design/wiki/Jupyter-Logo|title=Jupyter Logo · jupyter/Design Wiki|website=[[GitHub]] }}</ref>
 
Jupyter [[Notebook interface|Notebook]] (formerly IPython NotebooksNotebook) is a [[Rich Internet applicationApplication|web-based interactive]] computational environment for creating, executing, and visualizing Jupyter notebooks. It is similar to the notebook interface of other programs such as [[Maple (software)|Maple]], [[Wolfram Mathematica|Mathematica]], and [[SageMath]], a computational interface style that originated with Mathematica in the 1980s.<ref name="Somers2018">{{Cite news|url=https://www.theatlantic.com/science/archive/2018/04/the-scientific-paper-is-obsolete/556676/|title=The Scientific Paper Is Obsolete|last=Somers|first=James|work=The Atlantic|access-date=2018-04-10|language=en-US}}</ref> It supports execution environments (aka kernels) in dozens of languages. By default Jupyter Notebook ships with the IPython kernel, but there are over 100 Jupyter kernels as of May 2018.
 
== In the media ==
IPython has been mentioned in the popular computing press and other popular media,<ref name="press2">{{cite web|title=Introducing IPython|date=12 September 2005|last=Koziol|first=Conrad|publisher=NewsForge|url=http://archive09.linux.com/feature/47635|access-date=14 June 2012|archive-date=7 June 2012|archive-url=https://web.archive.org/web/20120607065802/http://archive09.linux.com/feature/47635|url-status=dead}}</ref><ref name=Somers2018/> and it has a presence at scientific conferences.<ref name="press1">{{cite web|url=https://ipython.org/presentation.html|title=IPython Presentations}}</ref> For scientific and engineering work, it is often presented as a companion tool to [[matplotlib]].<ref name="cise">{{cite journal |last1=Pérez |first1=Fernando |last2=Granger |first2=Brian E. |title=IPython: A System for Interactive Scientific Computing |journal=Computing in Science & Engineering |volume=9 |pages=21–29 |number=3 |year=2007 |url=http://fperez.org/papers/ipython07_pe-gr_cise.pdf |url-status=dead |archive-url= https://web.archive.org/web/20100602042637/http://fperez.org/papers/ipython07_pe-gr_cise.pdf |archive-date= 2 June 2010 |access-date= 30 July 2015|doi=10.1109/MCSE.2007.53 |bibcode=2007CSE.....9c..21P |s2cid=16637923 }}</ref>
 
== Grants and awards ==
Beginning 1 January 2013, the [[Alfred P. Sloan Foundation]] announced that it would support IPython development for two years.<ref>{{cite web|url=http://mail.scipy.org/pipermail/ipython-dev/2012-December/010799.html|title=Announcement in scipy mailing list|access-date=12 December 2012|archive-date=5 March 2016|archive-url=https://web.archive.org/web/20160305020306/https://mail.scipy.org/pipermail/ipython-dev/2012-December/010799.html|url-status=dead}}</ref>
 
On 23 March 2013, [[Fernando Pérez (software developer)|Fernando Perez]] was awarded the Free Software Foundation [[Free Software Award for Projects of Social Benefit#Advancement of Free Software award|Advancement of Free Software award]] for IPython.
Line 85 ⟶ 86:
In August 2013, [[Microsoft]] made a donation of $100,000 to sponsor IPython's continued development.<ref>{{cite web|url=https://ipython.org/microsoft-donation-2013.html|title=IPython Announcement}}</ref>
 
In January 2014, it won the [[Jolt Awards|Jolt Productivity Award]]<ref>{{cite web|url=http://www.drdobbs.com/joltawards/jolt-awards-coding-tools/240165725?pgno=5|title=Jolt Productivity Award write-up in Dr. Dobb's}}</ref> from [[Dr. Dobb's]] in the category of coding tools. In July 2015, the project won a funding of $6 million from Gordon and Betty Moore Foundation, Alfred P. Sloan Foundation and Leona M. and Harry B. Helmsley Charitable Trust.<ref>{{Cite news|url = https://www.moore.org/newsroom/press-releases/2015/07/07/$6m-for-uc-berkeley-and-cal-poly-to-expand-and-enhance-open-source-software-for-scientific-computing-and-data-science|title = $6M for UC Berkeley and Cal Poly to expand and enhance open-source software for scientific computing and data science|last = |first = |date = |work = |access-date = 13 August 2015|via = }}</ref>
 
In May 2018, it was awarded the 2017 ACM Software System Award.<ref>{{cite web|url=https://awards.acm.org/software-system|title=Recent Software System Award News}}</ref> It is the largest team to have won the award.<ref>{{cite news|url = https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2|title=Jupyter receives the ACM Software System Award}}</ref>
Line 97 ⟶ 98:
 
== References ==
{{Reflist|20em}}
 
== External links ==
Line 105 ⟶ 106:
 
[[Category:Command shells]]
[[Category:Computational notebook]]
[[Category:Free mathematics software]]
[[Category:Free software programmed in Python]]
[[Category:PythonNotebook development toolsinterface]]
[[Category:Python (programming language) development tools]]
[[Category:Software using the BSD license]]