diff --git a/IPython/core/application.py b/IPython/core/application.py index 2399985..64656e4 100644 --- a/IPython/core/application.py +++ b/IPython/core/application.py @@ -104,11 +104,9 @@ class BaseIPythonApplication(Application): def _config_file_paths_default(self): return [os.getcwdu()] - profile = Unicode(u'', config=True, + profile = Unicode(u'default', config=True, help="""The IPython profile to use.""" ) - def _profile_default(self): - return "python3" if py3compat.PY3 else "default" def _profile_changed(self, name, old, new): self.builtin_profile_dir = os.path.join( @@ -230,7 +228,7 @@ class BaseIPythonApplication(Application): p = ProfileDir.find_profile_dir_by_name(self.ipython_dir, self.profile, self.config) except ProfileDirError: # not found, maybe create it (always create default profile) - if self.auto_create or self.profile==self._profile_default(): + if self.auto_create or self.profile=='default': try: p = ProfileDir.create_profile_dir_by_name(self.ipython_dir, self.profile, self.config) except ProfileDirError: diff --git a/IPython/core/magic.py b/IPython/core/magic.py index 8ab7022..67cd623 100644 --- a/IPython/core/magic.py +++ b/IPython/core/magic.py @@ -527,7 +527,11 @@ Currently the magic system has the following functions:\n""" def magic_profile(self, parameter_s=''): """Print your currently active IPython profile.""" - print self.shell.profile + from IPython.core.application import BaseIPythonApplication + if BaseIPythonApplication.initialized(): + print BaseIPythonApplication.instance().profile + else: + error("profile is an application-level value, but you don't appear to be in an IPython application") def magic_pinfo(self, parameter_s='', namespaces=None): """Provide detailed information about an object. diff --git a/IPython/core/tests/test_profile.py b/IPython/core/tests/test_profile.py index edba003..781c4c9 100644 --- a/IPython/core/tests/test_profile.py +++ b/IPython/core/tests/test_profile.py @@ -80,7 +80,7 @@ def test_startup_py(): # write simple test file, to check that the startup file was run fname = os.path.join(TMP_TEST_DIR, 'test.py') with open(fname, 'w') as f: - f.write('print zzz\n') + f.write(py3compat.doctest_refactor_print('print zzz\n')) # validate output tt.ipexec_validate(fname, '123', '', options=['--ipython-dir', IP_TEST_DIR, '--profile', 'test']) @@ -100,4 +100,4 @@ def test_startup_ipy(): tt.ipexec_validate(fname, 'test', '', options=['--ipython-dir', IP_TEST_DIR, '--profile', 'test']) - \ No newline at end of file + diff --git a/IPython/zmq/ipkernel.py b/IPython/zmq/ipkernel.py index cef40f1..cf154e4 100755 --- a/IPython/zmq/ipkernel.py +++ b/IPython/zmq/ipkernel.py @@ -64,6 +64,7 @@ class Kernel(Configurable): shell = Instance('IPython.core.interactiveshell.InteractiveShellABC') session = Instance(Session) + profile_dir = Instance('IPython.core.profiledir.ProfileDir') shell_socket = Instance('zmq.Socket') iopub_socket = Instance('zmq.Socket') stdin_socket = Instance('zmq.Socket') @@ -106,7 +107,9 @@ class Kernel(Configurable): atexit.register(self._at_shutdown) # Initialize the InteractiveShell subclass - self.shell = ZMQInteractiveShell.instance(config=self.config) + self.shell = ZMQInteractiveShell.instance(config=self.config, + profile_dir = self.profile_dir, + ) self.shell.displayhook.session = self.session self.shell.displayhook.pub_socket = self.iopub_socket self.shell.display_pub.session = self.session @@ -739,16 +742,16 @@ class IPKernelApp(KernelApp, InteractiveShellApp): self.init_code() def init_kernel(self): - kernel_factory = Kernel if self.pylab: gui, backend = pylabtools.find_gui_and_backend(self.pylab) - kernel = kernel_factory(config=self.config, session=self.session, + kernel = Kernel(config=self.config, session=self.session, shell_socket=self.shell_socket, iopub_socket=self.iopub_socket, stdin_socket=self.stdin_socket, log=self.log, + profile_dir=self.profile_dir, ) self.kernel = kernel kernel.record_ports(self.ports)