##// END OF EJS Templates
Merge pull request #3450 from ipython/flatten...
Fernando Perez -
r11042:0c0c1a16 merge
parent child Browse files
Show More

The requested changes are too big and content was truncated. Show full diff

1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 160000
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: new file 100644
The requested commit or file is too big and content was truncated. Show full diff
@@ -1,16 +1,16 b''
1 1 MANIFEST
2 2 build
3 3 dist
4 4 _build
5 5 docs/man/*.gz
6 6 docs/source/api/generated
7 7 docs/gh-pages
8 IPython/frontend/html/notebook/static/mathjax
8 IPython/html/notebook/static/mathjax
9 9 *.py[co]
10 10 __pycache__
11 11 build
12 12 *.egg-info
13 13 *~
14 14 *.bak
15 15 .ipynb_checkpoints
16 16 .tox
@@ -1,3 +1,3 b''
1 1 [submodule "components"]
2 path = IPython/frontend/html/notebook/static/components
2 path = IPython/html/static/components
3 3 url = https://github.com/ipython/ipython-components.git
@@ -1,86 +1,86 b''
1 1 # encoding: utf-8
2 2 """
3 3 IPython: tools for interactive and parallel computing in Python.
4 4
5 5 http://ipython.org
6 6 """
7 7 #-----------------------------------------------------------------------------
8 8 # Copyright (c) 2008-2011, IPython Development Team.
9 9 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
10 10 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
11 11 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
12 12 #
13 13 # Distributed under the terms of the Modified BSD License.
14 14 #
15 15 # The full license is in the file COPYING.txt, distributed with this software.
16 16 #-----------------------------------------------------------------------------
17 17
18 18 #-----------------------------------------------------------------------------
19 19 # Imports
20 20 #-----------------------------------------------------------------------------
21 21 from __future__ import absolute_import
22 22
23 23 import os
24 24 import sys
25 25
26 26 #-----------------------------------------------------------------------------
27 27 # Setup everything
28 28 #-----------------------------------------------------------------------------
29 29
30 30 # Don't forget to also update setup.py when this changes!
31 31 if sys.version[0:3] < '2.6':
32 32 raise ImportError('Python Version 2.6 or above is required for IPython.')
33 33
34 34 # Make it easy to import extensions - they are always directly on pythonpath.
35 35 # Therefore, non-IPython modules can be added to extensions directory.
36 36 # This should probably be in ipapp.py.
37 37 sys.path.append(os.path.join(os.path.dirname(__file__), "extensions"))
38 38
39 39 #-----------------------------------------------------------------------------
40 40 # Setup the top level names
41 41 #-----------------------------------------------------------------------------
42 42
43 43 from .config.loader import Config
44 44 from .core.getipython import get_ipython
45 45 from .core import release
46 46 from .core.application import Application
47 from .frontend.terminal.embed import embed
47 from .terminal.embed import embed
48 48
49 49 from .core.error import TryNext
50 50 from .core.interactiveshell import InteractiveShell
51 51 from .testing import test
52 52 from .utils.sysinfo import sys_info
53 53 from .utils.frame import extract_module_locals
54 54
55 55 # Release data
56 56 __author__ = '%s <%s>' % (release.author, release.author_email)
57 57 __license__ = release.license
58 58 __version__ = release.version
59 59 version_info = release.version_info
60 60
61 61 def embed_kernel(module=None, local_ns=None, **kwargs):
62 62 """Embed and start an IPython kernel in a given scope.
63 63
64 64 Parameters
65 65 ----------
66 66 module : ModuleType, optional
67 67 The module to load into IPython globals (default: caller)
68 68 local_ns : dict, optional
69 69 The namespace to load into IPython user namespace (default: caller)
70 70
71 71 kwargs : various, optional
72 72 Further keyword args are relayed to the IPKernelApp constructor,
73 73 allowing configuration of the Kernel. Will only have an effect
74 74 on the first embed_kernel call for a given process.
75 75
76 76 """
77 77
78 78 (caller_module, caller_locals) = extract_module_locals(1)
79 79 if module is None:
80 80 module = caller_module
81 81 if local_ns is None:
82 82 local_ns = caller_locals
83 83
84 84 # Only import .zmq when we really need it
85 85 from IPython.kernel.zmq.embed import embed_kernel as real_embed_kernel
86 86 real_embed_kernel(module=module, local_ns=local_ns, **kwargs)
@@ -1,14 +1,14 b''
1 1 # encoding: utf-8
2 2 """Terminal-based IPython entry point.
3 3 """
4 4 #-----------------------------------------------------------------------------
5 5 # Copyright (c) 2012, IPython Development Team.
6 6 #
7 7 # Distributed under the terms of the Modified BSD License.
8 8 #
9 9 # The full license is in the file COPYING.txt, distributed with this software.
10 10 #-----------------------------------------------------------------------------
11 11
12 from IPython.frontend.terminal.ipapp import launch_new_instance
12 from IPython.terminal.ipapp import launch_new_instance
13 13
14 14 launch_new_instance()
@@ -1,391 +1,391 b''
1 1 """ A minimal application base mixin for all ZMQ based IPython frontends.
2 2
3 3 This is not a complete console app, as subprocess will not be able to receive
4 4 input, there is no real readline support, among other limitations. This is a
5 refactoring of what used to be the IPython/frontend/qt/console/qtconsoleapp.py
5 refactoring of what used to be the IPython/qt/console/qtconsoleapp.py
6 6
7 7 Authors:
8 8
9 9 * Evan Patterson
10 10 * Min RK
11 11 * Erik Tollerud
12 12 * Fernando Perez
13 13 * Bussonnier Matthias
14 14 * Thomas Kluyver
15 15 * Paul Ivanov
16 16
17 17 """
18 18
19 19 #-----------------------------------------------------------------------------
20 20 # Imports
21 21 #-----------------------------------------------------------------------------
22 22
23 23 # stdlib imports
24 24 import atexit
25 25 import json
26 26 import os
27 27 import shutil
28 28 import signal
29 29 import sys
30 30 import uuid
31 31
32 32
33 33 # Local imports
34 34 from IPython.config.application import boolean_flag
35 35 from IPython.config.configurable import Configurable
36 36 from IPython.core.profiledir import ProfileDir
37 37 from IPython.kernel.blocking import BlockingKernelClient
38 38 from IPython.kernel import KernelManager
39 39 from IPython.kernel import tunnel_to_kernel, find_connection_file, swallow_argv
40 40 from IPython.utils.path import filefind
41 41 from IPython.utils.py3compat import str_to_bytes
42 42 from IPython.utils.traitlets import (
43 43 Dict, List, Unicode, CUnicode, Int, CBool, Any, CaselessStrEnum
44 44 )
45 45 from IPython.kernel.zmq.kernelapp import (
46 46 kernel_flags,
47 47 kernel_aliases,
48 48 IPKernelApp
49 49 )
50 50 from IPython.kernel.zmq.session import Session, default_secure
51 51 from IPython.kernel.zmq.zmqshell import ZMQInteractiveShell
52 52
53 53 #-----------------------------------------------------------------------------
54 54 # Network Constants
55 55 #-----------------------------------------------------------------------------
56 56
57 57 from IPython.utils.localinterfaces import LOCALHOST, LOCAL_IPS
58 58
59 59 #-----------------------------------------------------------------------------
60 60 # Globals
61 61 #-----------------------------------------------------------------------------
62 62
63 63
64 64 #-----------------------------------------------------------------------------
65 65 # Aliases and Flags
66 66 #-----------------------------------------------------------------------------
67 67
68 68 flags = dict(kernel_flags)
69 69
70 70 # the flags that are specific to the frontend
71 71 # these must be scrubbed before being passed to the kernel,
72 72 # or it will raise an error on unrecognized flags
73 73 app_flags = {
74 74 'existing' : ({'IPythonConsoleApp' : {'existing' : 'kernel*.json'}},
75 75 "Connect to an existing kernel. If no argument specified, guess most recent"),
76 76 }
77 77 app_flags.update(boolean_flag(
78 78 'confirm-exit', 'IPythonConsoleApp.confirm_exit',
79 79 """Set to display confirmation dialog on exit. You can always use 'exit' or 'quit',
80 80 to force a direct exit without any confirmation.
81 81 """,
82 82 """Don't prompt the user when exiting. This will terminate the kernel
83 83 if it is owned by the frontend, and leave it alive if it is external.
84 84 """
85 85 ))
86 86 flags.update(app_flags)
87 87
88 88 aliases = dict(kernel_aliases)
89 89
90 90 # also scrub aliases from the frontend
91 91 app_aliases = dict(
92 92 ip = 'KernelManager.ip',
93 93 transport = 'KernelManager.transport',
94 94 hb = 'IPythonConsoleApp.hb_port',
95 95 shell = 'IPythonConsoleApp.shell_port',
96 96 iopub = 'IPythonConsoleApp.iopub_port',
97 97 stdin = 'IPythonConsoleApp.stdin_port',
98 98 existing = 'IPythonConsoleApp.existing',
99 99 f = 'IPythonConsoleApp.connection_file',
100 100
101 101
102 102 ssh = 'IPythonConsoleApp.sshserver',
103 103 )
104 104 aliases.update(app_aliases)
105 105
106 106 #-----------------------------------------------------------------------------
107 107 # Classes
108 108 #-----------------------------------------------------------------------------
109 109
110 110 #-----------------------------------------------------------------------------
111 111 # IPythonConsole
112 112 #-----------------------------------------------------------------------------
113 113
114 114 classes = [IPKernelApp, ZMQInteractiveShell, KernelManager, ProfileDir, Session]
115 115
116 116 try:
117 117 from IPython.kernel.zmq.pylab.backend_inline import InlineBackend
118 118 except ImportError:
119 119 pass
120 120 else:
121 121 classes.append(InlineBackend)
122 122
123 123 class IPythonConsoleApp(Configurable):
124 124 name = 'ipython-console-mixin'
125 125 default_config_file_name='ipython_config.py'
126 126
127 127 description = """
128 128 The IPython Mixin Console.
129 129
130 130 This class contains the common portions of console client (QtConsole,
131 131 ZMQ-based terminal console, etc). It is not a full console, in that
132 132 launched terminal subprocesses will not be able to accept input.
133 133
134 134 The Console using this mixing supports various extra features beyond
135 135 the single-process Terminal IPython shell, such as connecting to
136 136 existing kernel, via:
137 137
138 138 ipython <appname> --existing
139 139
140 140 as well as tunnel via SSH
141 141
142 142 """
143 143
144 144 classes = classes
145 145 flags = Dict(flags)
146 146 aliases = Dict(aliases)
147 147 kernel_manager_class = KernelManager
148 148 kernel_client_class = BlockingKernelClient
149 149
150 150 kernel_argv = List(Unicode)
151 151 # frontend flags&aliases to be stripped when building kernel_argv
152 152 frontend_flags = Any(app_flags)
153 153 frontend_aliases = Any(app_aliases)
154 154
155 155 # create requested profiles by default, if they don't exist:
156 156 auto_create = CBool(True)
157 157 # connection info:
158 158
159 159 sshserver = Unicode('', config=True,
160 160 help="""The SSH server to use to connect to the kernel.""")
161 161 sshkey = Unicode('', config=True,
162 162 help="""Path to the ssh key to use for logging in to the ssh server.""")
163 163
164 164 hb_port = Int(0, config=True,
165 165 help="set the heartbeat port [default: random]")
166 166 shell_port = Int(0, config=True,
167 167 help="set the shell (ROUTER) port [default: random]")
168 168 iopub_port = Int(0, config=True,
169 169 help="set the iopub (PUB) port [default: random]")
170 170 stdin_port = Int(0, config=True,
171 171 help="set the stdin (DEALER) port [default: random]")
172 172 connection_file = Unicode('', config=True,
173 173 help="""JSON file in which to store connection info [default: kernel-<pid>.json]
174 174
175 175 This file will contain the IP, ports, and authentication key needed to connect
176 176 clients to this kernel. By default, this file will be created in the security-dir
177 177 of the current profile, but can be specified by absolute path.
178 178 """)
179 179 def _connection_file_default(self):
180 180 return 'kernel-%i.json' % os.getpid()
181 181
182 182 existing = CUnicode('', config=True,
183 183 help="""Connect to an already running kernel""")
184 184
185 185 confirm_exit = CBool(True, config=True,
186 186 help="""
187 187 Set to display confirmation dialog on exit. You can always use 'exit' or 'quit',
188 188 to force a direct exit without any confirmation.""",
189 189 )
190 190
191 191
192 192 def build_kernel_argv(self, argv=None):
193 193 """build argv to be passed to kernel subprocess"""
194 194 if argv is None:
195 195 argv = sys.argv[1:]
196 196 self.kernel_argv = swallow_argv(argv, self.frontend_aliases, self.frontend_flags)
197 197 # kernel should inherit default config file from frontend
198 198 self.kernel_argv.append("--IPKernelApp.parent_appname='%s'" % self.name)
199 199
200 200 def init_connection_file(self):
201 201 """find the connection file, and load the info if found.
202 202
203 203 The current working directory and the current profile's security
204 204 directory will be searched for the file if it is not given by
205 205 absolute path.
206 206
207 207 When attempting to connect to an existing kernel and the `--existing`
208 208 argument does not match an existing file, it will be interpreted as a
209 209 fileglob, and the matching file in the current profile's security dir
210 210 with the latest access time will be used.
211 211
212 212 After this method is called, self.connection_file contains the *full path*
213 213 to the connection file, never just its name.
214 214 """
215 215 if self.existing:
216 216 try:
217 217 cf = find_connection_file(self.existing)
218 218 except Exception:
219 219 self.log.critical("Could not find existing kernel connection file %s", self.existing)
220 220 self.exit(1)
221 221 self.log.info("Connecting to existing kernel: %s" % cf)
222 222 self.connection_file = cf
223 223 else:
224 224 # not existing, check if we are going to write the file
225 225 # and ensure that self.connection_file is a full path, not just the shortname
226 226 try:
227 227 cf = find_connection_file(self.connection_file)
228 228 except Exception:
229 229 # file might not exist
230 230 if self.connection_file == os.path.basename(self.connection_file):
231 231 # just shortname, put it in security dir
232 232 cf = os.path.join(self.profile_dir.security_dir, self.connection_file)
233 233 else:
234 234 cf = self.connection_file
235 235 self.connection_file = cf
236 236
237 237 # should load_connection_file only be used for existing?
238 238 # as it is now, this allows reusing ports if an existing
239 239 # file is requested
240 240 try:
241 241 self.load_connection_file()
242 242 except Exception:
243 243 self.log.error("Failed to load connection file: %r", self.connection_file, exc_info=True)
244 244 self.exit(1)
245 245
246 246 def load_connection_file(self):
247 247 """load ip/port/hmac config from JSON connection file"""
248 248 # this is identical to IPKernelApp.load_connection_file
249 249 # perhaps it can be centralized somewhere?
250 250 try:
251 251 fname = filefind(self.connection_file, ['.', self.profile_dir.security_dir])
252 252 except IOError:
253 253 self.log.debug("Connection File not found: %s", self.connection_file)
254 254 return
255 255 self.log.debug(u"Loading connection file %s", fname)
256 256 with open(fname) as f:
257 257 cfg = json.load(f)
258 258
259 259 self.config.KernelManager.transport = cfg.get('transport', 'tcp')
260 260 self.config.KernelManager.ip = cfg.get('ip', LOCALHOST)
261 261
262 262 for channel in ('hb', 'shell', 'iopub', 'stdin'):
263 263 name = channel + '_port'
264 264 if getattr(self, name) == 0 and name in cfg:
265 265 # not overridden by config or cl_args
266 266 setattr(self, name, cfg[name])
267 267 if 'key' in cfg:
268 268 self.config.Session.key = str_to_bytes(cfg['key'])
269 269
270 270 def init_ssh(self):
271 271 """set up ssh tunnels, if needed."""
272 272 if not self.existing or (not self.sshserver and not self.sshkey):
273 273 return
274 274
275 275 self.load_connection_file()
276 276
277 277 transport = self.config.KernelManager.transport
278 278 ip = self.config.KernelManager.ip
279 279
280 280 if transport != 'tcp':
281 281 self.log.error("Can only use ssh tunnels with TCP sockets, not %s", transport)
282 282 sys.exit(-1)
283 283
284 284 if self.sshkey and not self.sshserver:
285 285 # specifying just the key implies that we are connecting directly
286 286 self.sshserver = ip
287 287 ip = LOCALHOST
288 288
289 289 # build connection dict for tunnels:
290 290 info = dict(ip=ip,
291 291 shell_port=self.shell_port,
292 292 iopub_port=self.iopub_port,
293 293 stdin_port=self.stdin_port,
294 294 hb_port=self.hb_port
295 295 )
296 296
297 297 self.log.info("Forwarding connections to %s via %s"%(ip, self.sshserver))
298 298
299 299 # tunnels return a new set of ports, which will be on localhost:
300 300 self.config.KernelManager.ip = LOCALHOST
301 301 try:
302 302 newports = tunnel_to_kernel(info, self.sshserver, self.sshkey)
303 303 except:
304 304 # even catch KeyboardInterrupt
305 305 self.log.error("Could not setup tunnels", exc_info=True)
306 306 self.exit(1)
307 307
308 308 self.shell_port, self.iopub_port, self.stdin_port, self.hb_port = newports
309 309
310 310 cf = self.connection_file
311 311 base,ext = os.path.splitext(cf)
312 312 base = os.path.basename(base)
313 313 self.connection_file = os.path.basename(base)+'-ssh'+ext
314 314 self.log.critical("To connect another client via this tunnel, use:")
315 315 self.log.critical("--existing %s" % self.connection_file)
316 316
317 317 def _new_connection_file(self):
318 318 cf = ''
319 319 while not cf:
320 320 # we don't need a 128b id to distinguish kernels, use more readable
321 321 # 48b node segment (12 hex chars). Users running more than 32k simultaneous
322 322 # kernels can subclass.
323 323 ident = str(uuid.uuid4()).split('-')[-1]
324 324 cf = os.path.join(self.profile_dir.security_dir, 'kernel-%s.json' % ident)
325 325 # only keep if it's actually new. Protect against unlikely collision
326 326 # in 48b random search space
327 327 cf = cf if not os.path.exists(cf) else ''
328 328 return cf
329 329
330 330 def init_kernel_manager(self):
331 331 # Don't let Qt or ZMQ swallow KeyboardInterupts.
332 332 if self.existing:
333 333 self.kernel_manager = None
334 334 return
335 335 signal.signal(signal.SIGINT, signal.SIG_DFL)
336 336
337 337 # Create a KernelManager and start a kernel.
338 338 self.kernel_manager = self.kernel_manager_class(
339 339 shell_port=self.shell_port,
340 340 iopub_port=self.iopub_port,
341 341 stdin_port=self.stdin_port,
342 342 hb_port=self.hb_port,
343 343 connection_file=self.connection_file,
344 344 config=self.config,
345 345 )
346 346 self.kernel_manager.client_factory = self.kernel_client_class
347 347 self.kernel_manager.start_kernel(extra_arguments=self.kernel_argv)
348 348 atexit.register(self.kernel_manager.cleanup_ipc_files)
349 349
350 350 if self.sshserver:
351 351 # ssh, write new connection file
352 352 self.kernel_manager.write_connection_file()
353 353
354 354 # in case KM defaults / ssh writing changes things:
355 355 km = self.kernel_manager
356 356 self.shell_port=km.shell_port
357 357 self.iopub_port=km.iopub_port
358 358 self.stdin_port=km.stdin_port
359 359 self.hb_port=km.hb_port
360 360 self.connection_file = km.connection_file
361 361
362 362 atexit.register(self.kernel_manager.cleanup_connection_file)
363 363
364 364 def init_kernel_client(self):
365 365 if self.kernel_manager is not None:
366 366 self.kernel_client = self.kernel_manager.client()
367 367 else:
368 368 self.kernel_client = self.kernel_client_class(
369 369 shell_port=self.shell_port,
370 370 iopub_port=self.iopub_port,
371 371 stdin_port=self.stdin_port,
372 372 hb_port=self.hb_port,
373 373 connection_file=self.connection_file,
374 374 config=self.config,
375 375 )
376 376
377 377 self.kernel_client.start_channels()
378 378
379 379
380 380
381 381 def initialize(self, argv=None):
382 382 """
383 383 Classes which mix this class in should call:
384 384 IPythonConsoleApp.initialize(self,argv)
385 385 """
386 386 self.init_connection_file()
387 387 default_secure(self.config)
388 388 self.init_ssh()
389 389 self.init_kernel_manager()
390 390 self.init_kernel_client()
391 391
@@ -1,306 +1,306 b''
1 1 # encoding: utf-8
2 2 """
3 3 An application for managing IPython profiles.
4 4
5 5 To be invoked as the `ipython profile` subcommand.
6 6
7 7 Authors:
8 8
9 9 * Min RK
10 10
11 11 """
12 12
13 13 #-----------------------------------------------------------------------------
14 14 # Copyright (C) 2008-2011 The IPython Development Team
15 15 #
16 16 # Distributed under the terms of the BSD License. The full license is in
17 17 # the file COPYING, distributed as part of this software.
18 18 #-----------------------------------------------------------------------------
19 19
20 20 #-----------------------------------------------------------------------------
21 21 # Imports
22 22 #-----------------------------------------------------------------------------
23 23
24 24 import os
25 25
26 26 from IPython.config.application import Application
27 27 from IPython.core.application import (
28 28 BaseIPythonApplication, base_flags
29 29 )
30 30 from IPython.core.profiledir import ProfileDir
31 31 from IPython.utils.path import get_ipython_dir, get_ipython_package_dir
32 32 from IPython.utils.traitlets import Unicode, Bool, Dict
33 33
34 34 #-----------------------------------------------------------------------------
35 35 # Constants
36 36 #-----------------------------------------------------------------------------
37 37
38 38 create_help = """Create an IPython profile by name
39 39
40 40 Create an ipython profile directory by its name or
41 41 profile directory path. Profile directories contain
42 42 configuration, log and security related files and are named
43 43 using the convention 'profile_<name>'. By default they are
44 44 located in your ipython directory. Once created, you will
45 45 can edit the configuration files in the profile
46 46 directory to configure IPython. Most users will create a
47 47 profile directory by name,
48 48 `ipython profile create myprofile`, which will put the directory
49 49 in `<ipython_dir>/profile_myprofile`.
50 50 """
51 51 list_help = """List available IPython profiles
52 52
53 53 List all available profiles, by profile location, that can
54 54 be found in the current working directly or in the ipython
55 55 directory. Profile directories are named using the convention
56 56 'profile_<profile>'.
57 57 """
58 58 profile_help = """Manage IPython profiles
59 59
60 60 Profile directories contain
61 61 configuration, log and security related files and are named
62 62 using the convention 'profile_<name>'. By default they are
63 63 located in your ipython directory. You can create profiles
64 64 with `ipython profile create <name>`, or see the profiles you
65 65 already have with `ipython profile list`
66 66
67 67 To get started configuring IPython, simply do:
68 68
69 69 $> ipython profile create
70 70
71 71 and IPython will create the default profile in <ipython_dir>/profile_default,
72 72 where you can edit ipython_config.py to start configuring IPython.
73 73
74 74 """
75 75
76 76 _list_examples = "ipython profile list # list all profiles"
77 77
78 78 _create_examples = """
79 79 ipython profile create foo # create profile foo w/ default config files
80 80 ipython profile create foo --reset # restage default config files over current
81 81 ipython profile create foo --parallel # also stage parallel config files
82 82 """
83 83
84 84 _main_examples = """
85 85 ipython profile create -h # show the help string for the create subcommand
86 86 ipython profile list -h # show the help string for the list subcommand
87 87
88 88 ipython locate profile foo # print the path to the directory for profile 'foo'
89 89 """
90 90
91 91 #-----------------------------------------------------------------------------
92 92 # Profile Application Class (for `ipython profile` subcommand)
93 93 #-----------------------------------------------------------------------------
94 94
95 95
96 96 def list_profiles_in(path):
97 97 """list profiles in a given root directory"""
98 98 files = os.listdir(path)
99 99 profiles = []
100 100 for f in files:
101 101 full_path = os.path.join(path, f)
102 102 if os.path.isdir(full_path) and f.startswith('profile_'):
103 103 profiles.append(f.split('_',1)[-1])
104 104 return profiles
105 105
106 106
107 107 def list_bundled_profiles():
108 108 """list profiles that are bundled with IPython."""
109 109 path = os.path.join(get_ipython_package_dir(), u'config', u'profile')
110 110 files = os.listdir(path)
111 111 profiles = []
112 112 for profile in files:
113 113 full_path = os.path.join(path, profile)
114 114 if os.path.isdir(full_path) and profile != "__pycache__":
115 115 profiles.append(profile)
116 116 return profiles
117 117
118 118
119 119 class ProfileLocate(BaseIPythonApplication):
120 120 description = """print the path an IPython profile dir"""
121 121
122 122 def parse_command_line(self, argv=None):
123 123 super(ProfileLocate, self).parse_command_line(argv)
124 124 if self.extra_args:
125 125 self.profile = self.extra_args[0]
126 126
127 127 def start(self):
128 128 print self.profile_dir.location
129 129
130 130
131 131 class ProfileList(Application):
132 132 name = u'ipython-profile'
133 133 description = list_help
134 134 examples = _list_examples
135 135
136 136 aliases = Dict({
137 137 'ipython-dir' : 'ProfileList.ipython_dir',
138 138 'log-level' : 'Application.log_level',
139 139 })
140 140 flags = Dict(dict(
141 141 debug = ({'Application' : {'log_level' : 0}},
142 142 "Set Application.log_level to 0, maximizing log output."
143 143 )
144 144 ))
145 145
146 146 ipython_dir = Unicode(get_ipython_dir(), config=True,
147 147 help="""
148 148 The name of the IPython directory. This directory is used for logging
149 149 configuration (through profiles), history storage, etc. The default
150 150 is usually $HOME/.ipython. This options can also be specified through
151 151 the environment variable IPYTHONDIR.
152 152 """
153 153 )
154 154
155 155
156 156 def _print_profiles(self, profiles):
157 157 """print list of profiles, indented."""
158 158 for profile in profiles:
159 159 print ' %s' % profile
160 160
161 161 def list_profile_dirs(self):
162 162 profiles = list_bundled_profiles()
163 163 if profiles:
164 164 print
165 165 print "Available profiles in IPython:"
166 166 self._print_profiles(profiles)
167 167 print
168 168 print " The first request for a bundled profile will copy it"
169 169 print " into your IPython directory (%s)," % self.ipython_dir
170 170 print " where you can customize it."
171 171
172 172 profiles = list_profiles_in(self.ipython_dir)
173 173 if profiles:
174 174 print
175 175 print "Available profiles in %s:" % self.ipython_dir
176 176 self._print_profiles(profiles)
177 177
178 178 profiles = list_profiles_in(os.getcwdu())
179 179 if profiles:
180 180 print
181 181 print "Available profiles in current directory (%s):" % os.getcwdu()
182 182 self._print_profiles(profiles)
183 183
184 184 print
185 185 print "To use any of the above profiles, start IPython with:"
186 186 print " ipython --profile=<name>"
187 187 print
188 188
189 189 def start(self):
190 190 self.list_profile_dirs()
191 191
192 192
193 193 create_flags = {}
194 194 create_flags.update(base_flags)
195 195 # don't include '--init' flag, which implies running profile create in other apps
196 196 create_flags.pop('init')
197 197 create_flags['reset'] = ({'ProfileCreate': {'overwrite' : True}},
198 198 "reset config files in this profile to the defaults.")
199 199 create_flags['parallel'] = ({'ProfileCreate': {'parallel' : True}},
200 200 "Include the config files for parallel "
201 201 "computing apps (ipengine, ipcontroller, etc.)")
202 202
203 203
204 204 class ProfileCreate(BaseIPythonApplication):
205 205 name = u'ipython-profile'
206 206 description = create_help
207 207 examples = _create_examples
208 208 auto_create = Bool(True, config=False)
209 209
210 210 def _copy_config_files_default(self):
211 211 return True
212 212
213 213 parallel = Bool(False, config=True,
214 214 help="whether to include parallel computing config files")
215 215 def _parallel_changed(self, name, old, new):
216 216 parallel_files = [ 'ipcontroller_config.py',
217 217 'ipengine_config.py',
218 218 'ipcluster_config.py'
219 219 ]
220 220 if new:
221 221 for cf in parallel_files:
222 222 self.config_files.append(cf)
223 223 else:
224 224 for cf in parallel_files:
225 225 if cf in self.config_files:
226 226 self.config_files.remove(cf)
227 227
228 228 def parse_command_line(self, argv):
229 229 super(ProfileCreate, self).parse_command_line(argv)
230 230 # accept positional arg as profile name
231 231 if self.extra_args:
232 232 self.profile = self.extra_args[0]
233 233
234 234 flags = Dict(create_flags)
235 235
236 236 classes = [ProfileDir]
237 237
238 238 def init_config_files(self):
239 239 super(ProfileCreate, self).init_config_files()
240 240 # use local imports, since these classes may import from here
241 from IPython.frontend.terminal.ipapp import TerminalIPythonApp
241 from IPython.terminal.ipapp import TerminalIPythonApp
242 242 apps = [TerminalIPythonApp]
243 243 try:
244 from IPython.frontend.qt.console.qtconsoleapp import IPythonQtConsoleApp
244 from IPython.qt.console.qtconsoleapp import IPythonQtConsoleApp
245 245 except Exception:
246 246 # this should be ImportError, but under weird circumstances
247 247 # this might be an AttributeError, or possibly others
248 248 # in any case, nothing should cause the profile creation to crash.
249 249 pass
250 250 else:
251 251 apps.append(IPythonQtConsoleApp)
252 252 try:
253 from IPython.frontend.html.notebook.notebookapp import NotebookApp
253 from IPython.html.notebookapp import NotebookApp
254 254 except ImportError:
255 255 pass
256 256 except Exception:
257 257 self.log.debug('Unexpected error when importing NotebookApp',
258 258 exc_info=True
259 259 )
260 260 else:
261 261 apps.append(NotebookApp)
262 262 if self.parallel:
263 263 from IPython.parallel.apps.ipcontrollerapp import IPControllerApp
264 264 from IPython.parallel.apps.ipengineapp import IPEngineApp
265 265 from IPython.parallel.apps.ipclusterapp import IPClusterStart
266 266 from IPython.parallel.apps.iploggerapp import IPLoggerApp
267 267 apps.extend([
268 268 IPControllerApp,
269 269 IPEngineApp,
270 270 IPClusterStart,
271 271 IPLoggerApp,
272 272 ])
273 273 for App in apps:
274 274 app = App()
275 275 app.config.update(self.config)
276 276 app.log = self.log
277 277 app.overwrite = self.overwrite
278 278 app.copy_config_files=True
279 279 app.profile = self.profile
280 280 app.init_profile_dir()
281 281 app.init_config_files()
282 282
283 283 def stage_default_config_file(self):
284 284 pass
285 285
286 286
287 287 class ProfileApp(Application):
288 288 name = u'ipython-profile'
289 289 description = profile_help
290 290 examples = _main_examples
291 291
292 292 subcommands = Dict(dict(
293 293 create = (ProfileCreate, ProfileCreate.description.splitlines()[0]),
294 294 list = (ProfileList, ProfileList.description.splitlines()[0]),
295 295 ))
296 296
297 297 def start(self):
298 298 if self.subapp is None:
299 299 print "No subcommand specified. Must specify one of: %s"%(self.subcommands.keys())
300 300 print
301 301 self.print_description()
302 302 self.print_subcommands()
303 303 self.exit(1)
304 304 else:
305 305 return self.subapp.start()
306 306
@@ -1,38 +1,38 b''
1 1 #-----------------------------------------------------------------------------
2 2 # Copyright (C) 2010-2011 The IPython Development Team.
3 3 #
4 4 # Distributed under the terms of the BSD License.
5 5 #
6 6 # The full license is in the file COPYING.txt, distributed with this software.
7 7 #-----------------------------------------------------------------------------
8 8 import os
9 9
10 10 import nose.tools as nt
11 11
12 12 from IPython.core import display
13 13 from IPython.utils import path as ipath
14 14
15 15 def test_image_size():
16 16 """Simple test for display.Image(args, width=x,height=y)"""
17 17 thisurl = 'http://www.google.fr/images/srpr/logo3w.png'
18 18 img = display.Image(url=thisurl, width=200, height=200)
19 19 nt.assert_equal(u'<img src="%s" width="200" height="200"/>' % (thisurl), img._repr_html_())
20 20 img = display.Image(url=thisurl, width=200)
21 21 nt.assert_equal(u'<img src="%s" width="200"/>' % (thisurl), img._repr_html_())
22 22 img = display.Image(url=thisurl)
23 23 nt.assert_equal(u'<img src="%s"/>' % (thisurl), img._repr_html_())
24 24
25 25 def test_image_filename_defaults():
26 26 '''test format constraint, and validity of jpeg and png'''
27 27 tpath = ipath.get_ipython_package_dir()
28 28 nt.assert_raises(ValueError, display.Image, filename=os.path.join(tpath, 'testing/tests/badformat.gif'),
29 29 embed=True)
30 30 nt.assert_raises(ValueError, display.Image)
31 31 nt.assert_raises(ValueError, display.Image, data='this is not an image', format='badformat', embed=True)
32 imgfile = os.path.join(tpath, 'frontend/html/notebook/static/base/images/ipynblogo.png')
32 imgfile = os.path.join(tpath, 'html/static/base/images/ipynblogo.png')
33 33 img = display.Image(filename=imgfile)
34 34 nt.assert_equal('png', img.format)
35 35 nt.assert_is_not_none(img._repr_png_())
36 36 img = display.Image(filename=os.path.join(tpath, 'testing/tests/logo.jpg'), embed=False)
37 37 nt.assert_equal('jpeg', img.format)
38 38 nt.assert_is_none(img._repr_jpeg_())
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/README.md to IPython/html/README.md
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/__init__.py to IPython/html/__init__.py
1 NO CONTENT: file renamed from IPython/deathrow/__init__.py to IPython/html/auth/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/auth/login.py to IPython/html/auth/login.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/auth/logout.py to IPython/html/auth/logout.py
1 NO CONTENT: file renamed from IPython/deathrow/gui/__init__.py to IPython/html/base/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/base/handlers.py to IPython/html/base/handlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/base/zmqhandlers.py to IPython/html/base/zmqhandlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/fabfile.py to IPython/html/fabfile.py
1 NO CONTENT: file renamed from IPython/deathrow/gui/wx/__init__.py to IPython/html/notebook/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/notebook/handlers.py to IPython/html/notebook/handlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/notebookapp.py to IPython/html/notebookapp.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/deathrow/oldfrontend/cocoa/__init__.py to IPython/html/services/__init__.py
1 NO CONTENT: file renamed from IPython/deathrow/oldfrontend/cocoa/tests/__init__.py to IPython/html/services/clusters/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/clusters/clustermanager.py to IPython/html/services/clusters/clustermanager.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/clusters/handlers.py to IPython/html/services/clusters/handlers.py
1 NO CONTENT: file renamed from IPython/deathrow/oldfrontend/tests/__init__.py to IPython/html/services/kernels/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/kernels/handlers.py to IPython/html/services/kernels/handlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/kernels/kernelmanager.py to IPython/html/services/kernels/kernelmanager.py
1 NO CONTENT: file renamed from IPython/deathrow/oldfrontend/wx/__init__.py to IPython/html/services/notebooks/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/azurenbmanager.py to IPython/html/services/notebooks/azurenbmanager.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/filenbmanager.py to IPython/html/services/notebooks/filenbmanager.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/handlers.py to IPython/html/services/notebooks/handlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/nbmanager.py to IPython/html/services/notebooks/nbmanager.py
1 NO CONTENT: file renamed from IPython/deathrow/tests/__init__.py to IPython/html/services/notebooks/tests/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/tests/test_nbmanager.py to IPython/html/services/notebooks/tests/test_nbmanager.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/css/override.css to IPython/html/static/auth/css/override.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/js/loginmain.js to IPython/html/static/auth/js/loginmain.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/js/loginwidget.js to IPython/html/static/auth/js/loginwidget.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/js/logoutmain.js to IPython/html/static/auth/js/logoutmain.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/less/login.less to IPython/html/static/auth/less/login.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/less/logout.less to IPython/html/static/auth/less/logout.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/auth/less/style.less to IPython/html/static/auth/less/style.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/css/boilerplate.css to IPython/html/static/base/css/boilerplate.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/images/favicon.ico to IPython/html/static/base/images/favicon.ico
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/images/ipynblogo.png to IPython/html/static/base/images/ipynblogo.png
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/images/ipynblogo.svg to IPython/html/static/base/images/ipynblogo.svg
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/dialog.js to IPython/html/static/base/js/dialog.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/events.js to IPython/html/static/base/js/events.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/namespace.js to IPython/html/static/base/js/namespace.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/page.js to IPython/html/static/base/js/page.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/pagemain.js to IPython/html/static/base/js/pagemain.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/js/utils.js to IPython/html/static/base/js/utils.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/less/flexbox.less to IPython/html/static/base/less/flexbox.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/less/mixins.less to IPython/html/static/base/less/mixins.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/less/page.less to IPython/html/static/base/less/page.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/less/style.less to IPython/html/static/base/less/style.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/base/less/variables.less to IPython/html/static/base/less/variables.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/custom/custom.css to IPython/html/static/custom/custom.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/custom/custom.js to IPython/html/static/custom/custom.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/dateformat/date.format.js to IPython/html/static/dateformat/date.format.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/css/override.css to IPython/html/static/notebook/css/override.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/cell.js to IPython/html/static/notebook/js/cell.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/celltoolbar.js to IPython/html/static/notebook/js/celltoolbar.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/celltoolbarpresets/default.js to IPython/html/static/notebook/js/celltoolbarpresets/default.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/celltoolbarpresets/example.js to IPython/html/static/notebook/js/celltoolbarpresets/example.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/celltoolbarpresets/slideshow.js to IPython/html/static/notebook/js/celltoolbarpresets/slideshow.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/codecell.js to IPython/html/static/notebook/js/codecell.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/codemirror-ipython.js to IPython/html/static/notebook/js/codemirror-ipython.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/completer.js to IPython/html/static/notebook/js/completer.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/config.js to IPython/html/static/notebook/js/config.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/contexthint.js to IPython/html/static/notebook/js/contexthint.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/layoutmanager.js to IPython/html/static/notebook/js/layoutmanager.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/main.js to IPython/html/static/notebook/js/main.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/maintoolbar.js to IPython/html/static/notebook/js/maintoolbar.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/mathjaxutils.js to IPython/html/static/notebook/js/mathjaxutils.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/menubar.js to IPython/html/static/notebook/js/menubar.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/notebook.js to IPython/html/static/notebook/js/notebook.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/notificationarea.js to IPython/html/static/notebook/js/notificationarea.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/notificationwidget.js to IPython/html/static/notebook/js/notificationwidget.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/outputarea.js to IPython/html/static/notebook/js/outputarea.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/pager.js to IPython/html/static/notebook/js/pager.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/quickhelp.js to IPython/html/static/notebook/js/quickhelp.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/savewidget.js to IPython/html/static/notebook/js/savewidget.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/textcell.js to IPython/html/static/notebook/js/textcell.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/toolbar.js to IPython/html/static/notebook/js/toolbar.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/js/tooltip.js to IPython/html/static/notebook/js/tooltip.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/ansicolors.less to IPython/html/static/notebook/less/ansicolors.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/cell.less to IPython/html/static/notebook/less/cell.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/celltoolbar.less to IPython/html/static/notebook/less/celltoolbar.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/codecell.less to IPython/html/static/notebook/less/codecell.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/codemirror.less to IPython/html/static/notebook/less/codemirror.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/completer.less to IPython/html/static/notebook/less/completer.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/highlight.less to IPython/html/static/notebook/less/highlight.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/menubar.less to IPython/html/static/notebook/less/menubar.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/notebook.less to IPython/html/static/notebook/less/notebook.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/notificationarea.less to IPython/html/static/notebook/less/notificationarea.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/notificationwidget.less to IPython/html/static/notebook/less/notificationwidget.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/outputarea.less to IPython/html/static/notebook/less/outputarea.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/pager.less to IPython/html/static/notebook/less/pager.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/quickhelp.less to IPython/html/static/notebook/less/quickhelp.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/renderedhtml.less to IPython/html/static/notebook/less/renderedhtml.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/savewidget.less to IPython/html/static/notebook/less/savewidget.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/style.less to IPython/html/static/notebook/less/style.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/textcell.less to IPython/html/static/notebook/less/textcell.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/toolbar.less to IPython/html/static/notebook/less/toolbar.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/tooltip.less to IPython/html/static/notebook/less/tooltip.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/notebook/less/variables.less to IPython/html/static/notebook/less/variables.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/services/kernels/js/kernel.js to IPython/html/static/services/kernels/js/kernel.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/style/style.less to IPython/html/static/style/style.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/style/style.min.css to IPython/html/static/style/style.min.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/css/override.css to IPython/html/static/tree/css/override.css
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/js/clusterlist.js to IPython/html/static/tree/js/clusterlist.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/js/main.js to IPython/html/static/tree/js/main.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/js/notebooklist.js to IPython/html/static/tree/js/notebooklist.js
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/less/altuploadform.less to IPython/html/static/tree/less/altuploadform.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/less/style.less to IPython/html/static/tree/less/style.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/static/tree/less/tree.less to IPython/html/static/tree/less/tree.less
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/templates/login.html to IPython/html/templates/login.html
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/templates/logout.html to IPython/html/templates/logout.html
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/templates/notebook.html to IPython/html/templates/notebook.html
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/templates/page.html to IPython/html/templates/page.html
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/templates/tree.html to IPython/html/templates/tree.html
1 NO CONTENT: file renamed from IPython/frontend/__init__.py to IPython/html/tests/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/tests/test_hist.sqlite to IPython/html/tests/test_hist.sqlite
1 NO CONTENT: file renamed from IPython/frontend/html/__init__.py to IPython/html/tree/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/tree/handlers.py to IPython/html/tree/handlers.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/utils.py to IPython/html/utils.py
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/auth/__init__.py to IPython/qt/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/qt/base_frontend_mixin.py to IPython/qt/base_frontend_mixin.py
1 NO CONTENT: file renamed from IPython/frontend/qt/client.py to IPython/qt/client.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/base/__init__.py to IPython/qt/console/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/ansi_code_processor.py to IPython/qt/console/ansi_code_processor.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/bracket_matcher.py to IPython/qt/console/bracket_matcher.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/call_tip_widget.py to IPython/qt/console/call_tip_widget.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/completion_html.py to IPython/qt/console/completion_html.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/completion_lexer.py to IPython/qt/console/completion_lexer.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/completion_plain.py to IPython/qt/console/completion_plain.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/completion_widget.py to IPython/qt/console/completion_widget.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/console_widget.py to IPython/qt/console/console_widget.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/frontend_widget.py to IPython/qt/console/frontend_widget.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/history_console_widget.py to IPython/qt/console/history_console_widget.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/ipython_widget.py to IPython/qt/console/ipython_widget.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/kill_ring.py to IPython/qt/console/kill_ring.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/mainwindow.py to IPython/qt/console/mainwindow.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/pygments_highlighter.py to IPython/qt/console/pygments_highlighter.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/qtconsoleapp.py to IPython/qt/console/qtconsoleapp.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/resources/icon/IPythonConsole.svg to IPython/qt/console/resources/icon/IPythonConsole.svg
1 NO CONTENT: file renamed from IPython/frontend/qt/console/rich_ipython_widget.py to IPython/qt/console/rich_ipython_widget.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/styles.py to IPython/qt/console/styles.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/notebook/__init__.py to IPython/qt/console/tests/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/qt/console/tests/test_ansi_code_processor.py to IPython/qt/console/tests/test_ansi_code_processor.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/tests/test_completion_lexer.py to IPython/qt/console/tests/test_completion_lexer.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/tests/test_console_widget.py to IPython/qt/console/tests/test_console_widget.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/console/tests/test_kill_ring.py to IPython/qt/console/tests/test_kill_ring.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/qt/inprocess.py to IPython/qt/inprocess.py
1 NO CONTENT: file renamed from IPython/frontend/qt/kernel_mixins.py to IPython/qt/kernel_mixins.py
1 NO CONTENT: file renamed from IPython/frontend/qt/manager.py to IPython/qt/manager.py
1 NO CONTENT: file renamed from IPython/frontend/qt/rich_text.py to IPython/qt/rich_text.py
1 NO CONTENT: file renamed from IPython/frontend/qt/svg.py to IPython/qt/svg.py
1 NO CONTENT: file renamed from IPython/frontend/qt/util.py to IPython/qt/util.py
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/__init__.py to IPython/terminal/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/clusters/__init__.py to IPython/terminal/console/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/app.py to IPython/terminal/console/app.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/completer.py to IPython/terminal/console/completer.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/interactiveshell.py to IPython/terminal/console/interactiveshell.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/kernels/__init__.py to IPython/terminal/console/tests/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/tests/test_console.py to IPython/terminal/console/tests/test_console.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/tests/test_image_handler.py to IPython/terminal/console/tests/test_image_handler.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/terminal/console/tests/writetofile.py to IPython/terminal/console/tests/writetofile.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/embed.py to IPython/terminal/embed.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/terminal/interactiveshell.py to IPython/terminal/interactiveshell.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/ipapp.py to IPython/terminal/ipapp.py
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file renamed from IPython/frontend/html/notebook/services/notebooks/__init__.py to IPython/terminal/tests/__init__.py
1 NO CONTENT: file renamed from IPython/frontend/terminal/tests/test_interactivshell.py to IPython/terminal/tests/test_interactivshell.py
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (665 lines changed) Show them Hide them
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (518 lines changed) Show them Hide them
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (510 lines changed) Show them Hide them
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (942 lines changed) Show them Hide them
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1767 lines changed) Show them Hide them
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (1126 lines changed) Show them Hide them
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (2328 lines changed) Show them Hide them
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (669 lines changed) Show them Hide them
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
1 NO CONTENT: file was removed
This diff has been collapsed as it changes many lines, (560 lines changed) Show them Hide them
1 NO CONTENT: file was removed, binary diff hidden
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: file was removed
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now