Skip to content

Commit 0271752

Browse files
authored
Merge pull request ipython#42 from Carreau/pycon
Some extra updates for Pycon
2 parents 99f7b59 + 37daebe commit 0271752

30 files changed

+10916
-2828
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
.DS_Store
22
*.pyc
33
.ipynb_checkpoints
4+
*.c
5+
*.so
6+
*.o
7+
examples/IPython Kernel/test.txt
8+
examples/IPython Kernel/mod.py

Index - Basic.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"* [IPython - beyond plain python](examples/IPython Kernel/Beyond Plain Python.ipynb)\n",
2121
"* [Markdown Cells](examples/Notebook/Working With Markdown Cells.ipynb)\n",
2222
"* [Rich Display System](examples/IPython Kernel/Rich Output.ipynb)\n",
23-
"* [Introduction to Interactive Javascript Widgets](examples/Interactive Widgets/Using Interact.ipynb)\n",
23+
"* [Custom Display logic](examples/IPython%20Kernel/Custom%20Display%20Logic.ipynb)\n",
2424
"* [Customizing IPython - a condensed version](exercises/Customization/Condensed.ipynb)\n",
2525
"* [Running a Secure Public Notebook Server](examples/Notebook/Running%20the%20Notebook%20Server.ipynb#Securing-the-notebook-server)\n",
2626
"* [How Jupyter/IPython works](examples/Notebook/Multiple%20Languages%2C%20Frontends.ipynb) to run code in different languages."

examples/Embedding/Index.ipynb

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,25 @@
186186
]
187187
}
188188
],
189-
"metadata": {},
189+
"metadata": {
190+
"kernelspec": {
191+
"display_name": "Python 3",
192+
"language": "python",
193+
"name": "python3"
194+
},
195+
"language_info": {
196+
"codemirror_mode": {
197+
"name": "ipython",
198+
"version": 3
199+
},
200+
"file_extension": ".py",
201+
"mimetype": "text/x-python",
202+
"name": "python",
203+
"nbconvert_exporter": "python",
204+
"pygments_lexer": "ipython3",
205+
"version": "3.4.2"
206+
}
207+
},
190208
"nbformat": 4,
191209
"nbformat_minor": 0
192-
}
210+
}

examples/Embedding/embed_class_long.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
things work.
99
1010
The code in this file is deliberately extra-verbose, meant for learning."""
11-
from __future__ import print_function
1211

1312
# The basics to get you going:
1413

@@ -17,16 +16,34 @@
1716

1817
# Try running this code both at the command line and from inside IPython (with
1918
# %run example-embed.py)
20-
from IPython.config.loader import Config
19+
20+
from IPython.terminal.prompts import Prompts, Token
21+
22+
class CustomPrompt(Prompts):
23+
24+
def in_prompt_tokens(self, cli=None):
25+
26+
return [
27+
(Token.Prompt, 'In <'),
28+
(Token.PromptNum, str(self.shell.execution_count)),
29+
(Token.Prompt, '>: '),
30+
]
31+
32+
def out_prompt_tokens(self):
33+
return [
34+
(Token.OutPrompt, 'Out<'),
35+
(Token.OutPromptNum, str(self.shell.execution_count)),
36+
(Token.OutPrompt, '>: '),
37+
]
38+
39+
40+
from traitlets.config.loader import Config
2141
try:
2242
get_ipython
2343
except NameError:
2444
nested = 0
2545
cfg = Config()
26-
prompt_config = cfg.PromptManager
27-
prompt_config.in_template = 'In <\\#>: '
28-
prompt_config.in2_template = ' .\\D.: '
29-
prompt_config.out_template = 'Out<\\#>: '
46+
cfg.TerminalInteractiveShell.prompts_class=CustomPrompt
3047
else:
3148
print("Running nested copies of IPython.")
3249
print("The prompts for the nested copy have been modified")
@@ -45,13 +62,6 @@
4562
exit_msg = 'Leaving Interpreter, back to program.')
4663

4764
# Make a second instance, you can have as many as you want.
48-
cfg2 = cfg.copy()
49-
prompt_config = cfg2.PromptManager
50-
prompt_config.in_template = 'In2<\\#>: '
51-
if not nested:
52-
prompt_config.in_template = 'In2<\\#>: '
53-
prompt_config.in2_template = ' .\\D.: '
54-
prompt_config.out_template = 'Out<\\#>: '
5565
ipshell2 = InteractiveShellEmbed(config=cfg,
5666
banner1 = 'Second IPython instance.')
5767

@@ -95,7 +105,7 @@
95105

96106

97107
# This is how the global banner and exit_msg can be reset at any point
98-
ipshell.banner = 'Entering interpreter - New Banner'
108+
ipshell.banner2 = 'Entering interpreter - New Banner'
99109
ipshell.exit_msg = 'Leaving interpreter - New exit_msg'
100110

101111
def foo(m):

examples/IPython Kernel/Animations Using clear_output.ipynb

Lines changed: 1185 additions & 4 deletions
Large diffs are not rendered by default.

examples/IPython Kernel/Background Jobs.ipynb

Lines changed: 53 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
"def printfunc(interval=1, reps=5):\n",
3737
" for n in range(reps):\n",
3838
" time.sleep(interval)\n",
39-
" print 'In the background...', n\n",
39+
" print('In the background... %i' % n)\n",
4040
" sys.stdout.flush()\n",
41-
" print 'All done!'\n",
41+
" print('All done!')\n",
4242
" sys.stdout.flush()"
4343
]
4444
},
@@ -53,7 +53,7 @@
5353
},
5454
{
5555
"cell_type": "code",
56-
"execution_count": 10,
56+
"execution_count": 2,
5757
"metadata": {
5858
"collapsed": false
5959
},
@@ -73,7 +73,7 @@
7373
"<BackgroundJob #3: printfunc(1,3)>"
7474
]
7575
},
76-
"execution_count": 10,
76+
"execution_count": 2,
7777
"metadata": {},
7878
"output_type": "execute_result"
7979
},
@@ -106,7 +106,7 @@
106106
},
107107
{
108108
"cell_type": "code",
109-
"execution_count": 11,
109+
"execution_count": 3,
110110
"metadata": {
111111
"collapsed": false
112112
},
@@ -116,8 +116,8 @@
116116
"output_type": "stream",
117117
"text": [
118118
"Completed jobs:\n",
119-
"0 : <function sleepfunc at 0x314f848>\n",
120-
"2 : <function sleepfunc at 0x314f848>\n",
119+
"0 : <function sleepfunc at 0x10521f2f0>\n",
120+
"2 : <function sleepfunc at 0x10521f2f0>\n",
121121
"3 : printfunc(1,3)\n",
122122
"\n"
123123
]
@@ -136,7 +136,7 @@
136136
},
137137
{
138138
"cell_type": "code",
139-
"execution_count": 12,
139+
"execution_count": 4,
140140
"metadata": {
141141
"collapsed": false
142142
},
@@ -147,7 +147,7 @@
147147
"{'args': (), 'interval': 4, 'kwargs': {}}"
148148
]
149149
},
150-
"execution_count": 12,
150+
"execution_count": 4,
151151
"metadata": {},
152152
"output_type": "execute_result"
153153
}
@@ -172,7 +172,7 @@
172172
},
173173
{
174174
"cell_type": "code",
175-
"execution_count": 13,
175+
"execution_count": 5,
176176
"metadata": {
177177
"collapsed": false
178178
},
@@ -204,7 +204,7 @@
204204
},
205205
{
206206
"cell_type": "code",
207-
"execution_count": 14,
207+
"execution_count": 6,
208208
"metadata": {
209209
"collapsed": false
210210
},
@@ -216,12 +216,12 @@
216216
"Status of diejob1: Dead (Exception), call jobs.traceback() for details\n",
217217
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
218218
"\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
219-
"\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
220-
"\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
221-
"\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
222-
"\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
219+
"\u001b[1;32m/Users/minrk/dev/ip/mine/IPython/lib/backgroundjobs.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
220+
"\u001b[0;32m 489\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
221+
"\u001b[0;32m 490\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
222+
"\u001b[1;32m--> 491\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
223223
"\u001b[0m\n",
224-
"\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
224+
"\u001b[1;32m<ipython-input-1-169e49434ce0>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
225225
"\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
226226
"\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
227227
"\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
@@ -233,7 +233,7 @@
233233
}
234234
],
235235
"source": [
236-
"print \"Status of diejob1:\", diejob1.status\n",
236+
"print(\"Status of diejob1: %s\" % diejob1.status)\n",
237237
"diejob1.traceback() # jobs.traceback(4) would also work here, with the job number"
238238
]
239239
},
@@ -246,7 +246,7 @@
246246
},
247247
{
248248
"cell_type": "code",
249-
"execution_count": 15,
249+
"execution_count": 7,
250250
"metadata": {
251251
"collapsed": false
252252
},
@@ -255,15 +255,15 @@
255255
"name": "stdout",
256256
"output_type": "stream",
257257
"text": [
258-
"Traceback for: <BackgroundJob #4: <function diefunc at 0x314f668>>\n",
258+
"Traceback for: <BackgroundJob #4: <function diefunc at 0x10521f7b8>>\n",
259259
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
260260
"\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
261-
"\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
262-
"\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
263-
"\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
264-
"\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
261+
"\u001b[1;32m/Users/minrk/dev/ip/mine/IPython/lib/backgroundjobs.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
262+
"\u001b[0;32m 489\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
263+
"\u001b[0;32m 490\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
264+
"\u001b[1;32m--> 491\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
265265
"\u001b[0m\n",
266-
"\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
266+
"\u001b[1;32m<ipython-input-1-169e49434ce0>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
267267
"\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
268268
"\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
269269
"\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
@@ -272,15 +272,15 @@
272272
"\n",
273273
"\u001b[1;31mException\u001b[0m: Dead job with interval 1\n",
274274
"\n",
275-
"Traceback for: <BackgroundJob #5: <function diefunc at 0x314f668>>\n",
275+
"Traceback for: <BackgroundJob #5: <function diefunc at 0x10521f7b8>>\n",
276276
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n",
277277
"\u001b[1;31mException\u001b[0m Traceback (most recent call last)\n",
278-
"\u001b[1;32m/home/fperez/usr/opt/virtualenv/ipython-0.13.2/lib/python2.7/site-packages/IPython/lib/backgroundjobs.pyc\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
279-
"\u001b[0;32m 482\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
280-
"\u001b[0;32m 483\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
281-
"\u001b[1;32m--> 484\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
278+
"\u001b[1;32m/Users/minrk/dev/ip/mine/IPython/lib/backgroundjobs.py\u001b[0m in \u001b[0;36mcall\u001b[1;34m(self)\u001b[0m\n",
279+
"\u001b[0;32m 489\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
280+
"\u001b[0;32m 490\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
281+
"\u001b[1;32m--> 491\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
282282
"\u001b[0m\n",
283-
"\u001b[1;32m<ipython-input-1-fbbbd0d2a1c3>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
283+
"\u001b[1;32m<ipython-input-1-169e49434ce0>\u001b[0m in \u001b[0;36mdiefunc\u001b[1;34m(interval, *a, **kw)\u001b[0m\n",
284284
"\u001b[0;32m 13\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdiefunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
285285
"\u001b[0;32m 14\u001b[0m \u001b[0mtime\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msleep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
286286
"\u001b[1;32m---> 15\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Dead job with interval %s\"\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0minterval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
@@ -305,7 +305,7 @@
305305
},
306306
{
307307
"cell_type": "code",
308-
"execution_count": 16,
308+
"execution_count": 8,
309309
"metadata": {
310310
"collapsed": false
311311
},
@@ -332,7 +332,7 @@
332332
},
333333
{
334334
"cell_type": "code",
335-
"execution_count": 17,
335+
"execution_count": 9,
336336
"metadata": {
337337
"collapsed": true
338338
},
@@ -350,7 +350,7 @@
350350
},
351351
{
352352
"cell_type": "code",
353-
"execution_count": 18,
353+
"execution_count": 10,
354354
"metadata": {
355355
"collapsed": false
356356
},
@@ -380,7 +380,25 @@
380380
]
381381
}
382382
],
383-
"metadata": {},
383+
"metadata": {
384+
"kernelspec": {
385+
"display_name": "Python 3",
386+
"language": "python",
387+
"name": "python3"
388+
},
389+
"language_info": {
390+
"codemirror_mode": {
391+
"name": "ipython",
392+
"version": 3
393+
},
394+
"file_extension": ".py",
395+
"mimetype": "text/x-python",
396+
"name": "python",
397+
"nbconvert_exporter": "python",
398+
"pygments_lexer": "ipython3",
399+
"version": "3.4.2"
400+
}
401+
},
384402
"nbformat": 4,
385403
"nbformat_minor": 0
386-
}
404+
}

0 commit comments

Comments
 (0)