Show More
@@ -97,11 +97,11 b' class Application(object):' | |||||
97 | usage = None |
|
97 | usage = None | |
98 | #: The command line config loader. Subclass of ArgParseConfigLoader. |
|
98 | #: The command line config loader. Subclass of ArgParseConfigLoader. | |
99 | command_line_loader = BaseAppConfigLoader |
|
99 | command_line_loader = BaseAppConfigLoader | |
100 |
#: The name of the config file to load |
|
100 | #: The name of the config file to load, determined at runtime | |
101 |
config_file_name = |
|
101 | config_file_name = None | |
102 | #: The name of the default config file. Track separately from the actual |
|
102 | #: The name of the default config file. Track separately from the actual | |
103 | #: name because some logic happens only if we aren't using the default. |
|
103 | #: name because some logic happens only if we aren't using the default. | |
104 |
default_config_file_name = config |
|
104 | default_config_file_name = u'ipython_config.py' | |
105 | default_log_level = logging.WARN |
|
105 | default_log_level = logging.WARN | |
106 | #: Set by --profile option |
|
106 | #: Set by --profile option | |
107 | profile_name = None |
|
107 | profile_name = None | |
@@ -315,18 +315,22 b' class Application(object):' | |||||
315 |
|
315 | |||
316 | If a profile has been set at the command line, this will resolve it. |
|
316 | If a profile has been set at the command line, this will resolve it. | |
317 | """ |
|
317 | """ | |
318 |
|
||||
319 | try: |
|
318 | try: | |
320 | self.config_file_name = self.command_line_config.Global.config_file |
|
319 | self.config_file_name = self.command_line_config.Global.config_file | |
321 | except AttributeError: |
|
320 | except AttributeError: | |
322 | pass |
|
321 | pass | |
|
322 | else: | |||
|
323 | return | |||
323 |
|
324 | |||
324 | try: |
|
325 | try: | |
325 | self.profile_name = self.command_line_config.Global.profile |
|
326 | self.profile_name = self.command_line_config.Global.profile | |
326 | except AttributeError: |
|
327 | except AttributeError: | |
327 | pass |
|
328 | # Just use the default as there is no profile | |
|
329 | self.config_file_name = self.default_config_file_name | |||
328 | else: |
|
330 | else: | |
329 | name_parts = self.config_file_name.split('.') |
|
331 | # Use the default config file name and profile name if set | |
|
332 | # to determine the used config file name. | |||
|
333 | name_parts = self.default_config_file_name.split('.') | |||
330 | name_parts.insert(1, u'_' + self.profile_name + u'.') |
|
334 | name_parts.insert(1, u'_' + self.profile_name + u'.') | |
331 | self.config_file_name = ''.join(name_parts) |
|
335 | self.config_file_name = ''.join(name_parts) | |
332 |
|
336 |
@@ -252,7 +252,7 b' class IPAppConfigLoader(BaseAppConfigLoader):' | |||||
252 | type=str, dest='InteractiveShell.separate_out2', |
|
252 | type=str, dest='InteractiveShell.separate_out2', | |
253 | help="Separator after output prompts. Default 0 (nonight).", |
|
253 | help="Separator after output prompts. Default 0 (nonight).", | |
254 | metavar='InteractiveShell.separate_out2') |
|
254 | metavar='InteractiveShell.separate_out2') | |
255 | paa('-no-sep', |
|
255 | paa('--no-sep', | |
256 | action='store_true', dest='Global.nosep', |
|
256 | action='store_true', dest='Global.nosep', | |
257 | help="Eliminate all spacing between prompts.") |
|
257 | help="Eliminate all spacing between prompts.") | |
258 | paa('--term-title', |
|
258 | paa('--term-title', | |
@@ -389,7 +389,7 b' class IPythonApp(Application):' | |||||
389 | description = None |
|
389 | description = None | |
390 | usage = usage.cl_usage |
|
390 | usage = usage.cl_usage | |
391 | command_line_loader = IPAppConfigLoader |
|
391 | command_line_loader = IPAppConfigLoader | |
392 | config_file_name = default_config_file_name |
|
392 | default_config_file_name = default_config_file_name | |
393 | crash_handler_class = IPAppCrashHandler |
|
393 | crash_handler_class = IPAppCrashHandler | |
394 |
|
394 | |||
395 | def create_default_config(self): |
|
395 | def create_default_config(self): | |
@@ -486,7 +486,6 b' class IPythonApp(Application):' | |||||
486 | # based app, because we call shell.show_banner() by hand below |
|
486 | # based app, because we call shell.show_banner() by hand below | |
487 | # so the banner shows *before* all extension loading stuff. |
|
487 | # so the banner shows *before* all extension loading stuff. | |
488 | self.shell.display_banner = False |
|
488 | self.shell.display_banner = False | |
489 |
|
||||
490 | if config.Global.display_banner and \ |
|
489 | if config.Global.display_banner and \ | |
491 | config.Global.interact: |
|
490 | config.Global.interact: | |
492 | self.shell.show_banner() |
|
491 | self.shell.show_banner() |
@@ -441,8 +441,10 b' class ApplicationWithClusterDir(Application):' | |||||
441 | def find_config_file_name(self): |
|
441 | def find_config_file_name(self): | |
442 | """Find the config file name for this application.""" |
|
442 | """Find the config file name for this application.""" | |
443 | # For this type of Application it should be set as a class attribute. |
|
443 | # For this type of Application it should be set as a class attribute. | |
444 | if not hasattr(self, 'config_file_name'): |
|
444 | if not hasattr(self, 'default_config_file_name'): | |
445 | self.log.critical("No config filename found") |
|
445 | self.log.critical("No config filename found") | |
|
446 | else: | |||
|
447 | self.config_file_name = self.default_config_file_name | |||
446 |
|
448 | |||
447 | def find_config_file_paths(self): |
|
449 | def find_config_file_paths(self): | |
448 | # Set the search path to to the cluster directory. We should NOT |
|
450 | # Set the search path to to the cluster directory. We should NOT |
@@ -265,9 +265,13 b' class FCServiceFactory(AdaptedConfiguredObjectFactory):' | |||||
265 | """Register the reference with the FURL file. |
|
265 | """Register the reference with the FURL file. | |
266 |
|
266 | |||
267 | The FURL file is created and then moved to make sure that when the |
|
267 | The FURL file is created and then moved to make sure that when the | |
268 | file appears, the buffer has been flushed and the file closed. |
|
268 | file appears, the buffer has been flushed and the file closed. This | |
|
269 | is not done if we are re-using FURLS however. | |||
269 | """ |
|
270 | """ | |
270 | temp_furl_file = get_temp_furlfile(furl_file) |
|
271 | if self.reuse_furls: | |
271 |
self.tub.registerReference(ref, furlFile= |
|
272 | self.tub.registerReference(ref, furlFile=furl_file) | |
272 | os.rename(temp_furl_file, furl_file) |
|
273 | else: | |
|
274 | temp_furl_file = get_temp_furlfile(furl_file) | |||
|
275 | self.tub.registerReference(ref, furlFile=temp_furl_file) | |||
|
276 | os.rename(temp_furl_file, furl_file) | |||
273 |
|
277 |
@@ -218,7 +218,7 b' class IPClusterApp(ApplicationWithClusterDir):' | |||||
218 | description = _description |
|
218 | description = _description | |
219 | usage = None |
|
219 | usage = None | |
220 | command_line_loader = IPClusterAppConfigLoader |
|
220 | command_line_loader = IPClusterAppConfigLoader | |
221 | config_file_name = default_config_file_name |
|
221 | default_config_file_name = default_config_file_name | |
222 | default_log_level = logging.INFO |
|
222 | default_log_level = logging.INFO | |
223 | auto_create_cluster_dir = False |
|
223 | auto_create_cluster_dir = False | |
224 |
|
224 |
@@ -30,7 +30,7 b' from IPython.kernel.clusterdir import (' | |||||
30 | ApplicationWithClusterDir, |
|
30 | ApplicationWithClusterDir, | |
31 | ClusterDirConfigLoader |
|
31 | ClusterDirConfigLoader | |
32 | ) |
|
32 | ) | |
33 | from IPython.kernel.fcutil import FCServiceFactory |
|
33 | from IPython.kernel.fcutil import FCServiceFactory, FURLError | |
34 | from IPython.utils.traitlets import Instance, Unicode |
|
34 | from IPython.utils.traitlets import Instance, Unicode | |
35 |
|
35 | |||
36 |
|
36 | |||
@@ -186,19 +186,22 b' class IPControllerApp(ApplicationWithClusterDir):' | |||||
186 | name = u'ipcontroller' |
|
186 | name = u'ipcontroller' | |
187 | description = _description |
|
187 | description = _description | |
188 | command_line_loader = IPControllerAppConfigLoader |
|
188 | command_line_loader = IPControllerAppConfigLoader | |
189 | config_file_name = default_config_file_name |
|
189 | default_config_file_name = default_config_file_name | |
190 | auto_create_cluster_dir = True |
|
190 | auto_create_cluster_dir = True | |
191 |
|
191 | |||
192 | def create_default_config(self): |
|
192 | def create_default_config(self): | |
193 | super(IPControllerApp, self).create_default_config() |
|
193 | super(IPControllerApp, self).create_default_config() | |
194 |
|
|
194 | # Don't set defaults for Global.secure or Global.reuse_furls | |
195 | self.default_config.Global.secure = True |
|
195 | # as those are set in a component. | |
196 | self.default_config.Global.import_statements = [] |
|
196 | self.default_config.Global.import_statements = [] | |
197 | self.default_config.Global.clean_logs = True |
|
197 | self.default_config.Global.clean_logs = True | |
198 |
|
198 | |||
199 | def post_load_command_line_config(self): |
|
199 | def pre_construct(self): | |
200 | # Now setup reuse_furls |
|
200 | super(IPControllerApp, self).pre_construct() | |
201 |
c = self. |
|
201 | c = self.master_config | |
|
202 | # The defaults for these are set in FCClientServiceFactory and | |||
|
203 | # FCEngineServiceFactory, so we only set them here if the global | |||
|
204 | # options have be set to override the class level defaults. | |||
202 | if hasattr(c.Global, 'reuse_furls'): |
|
205 | if hasattr(c.Global, 'reuse_furls'): | |
203 | c.FCClientServiceFactory.reuse_furls = c.Global.reuse_furls |
|
206 | c.FCClientServiceFactory.reuse_furls = c.Global.reuse_furls | |
204 | c.FCEngineServiceFactory.reuse_furls = c.Global.reuse_furls |
|
207 | c.FCEngineServiceFactory.reuse_furls = c.Global.reuse_furls | |
@@ -221,11 +224,19 b' class IPControllerApp(ApplicationWithClusterDir):' | |||||
221 | controller_service = controllerservice.ControllerService() |
|
224 | controller_service = controllerservice.ControllerService() | |
222 | controller_service.setServiceParent(self.main_service) |
|
225 | controller_service.setServiceParent(self.main_service) | |
223 | # The client tub and all its refereceables |
|
226 | # The client tub and all its refereceables | |
224 | csfactory = FCClientServiceFactory(self.master_config, controller_service) |
|
227 | try: | |
|
228 | csfactory = FCClientServiceFactory(self.master_config, controller_service) | |||
|
229 | except FURLError, e: | |||
|
230 | log.err(e) | |||
|
231 | self.exit(0) | |||
225 | client_service = csfactory.create() |
|
232 | client_service = csfactory.create() | |
226 | client_service.setServiceParent(self.main_service) |
|
233 | client_service.setServiceParent(self.main_service) | |
227 | # The engine tub |
|
234 | # The engine tub | |
228 | esfactory = FCEngineServiceFactory(self.master_config, controller_service) |
|
235 | try: | |
|
236 | esfactory = FCEngineServiceFactory(self.master_config, controller_service) | |||
|
237 | except FURLError, e: | |||
|
238 | log.err(e) | |||
|
239 | self.exit(0) | |||
229 | engine_service = esfactory.create() |
|
240 | engine_service = esfactory.create() | |
230 | engine_service.setServiceParent(self.main_service) |
|
241 | engine_service.setServiceParent(self.main_service) | |
231 |
|
242 |
@@ -103,7 +103,7 b' class IPEngineApp(ApplicationWithClusterDir):' | |||||
103 | name = u'ipengine' |
|
103 | name = u'ipengine' | |
104 | description = _description |
|
104 | description = _description | |
105 | command_line_loader = IPEngineAppConfigLoader |
|
105 | command_line_loader = IPEngineAppConfigLoader | |
106 | config_file_name = default_config_file_name |
|
106 | default_config_file_name = default_config_file_name | |
107 | auto_create_cluster_dir = True |
|
107 | auto_create_cluster_dir = True | |
108 |
|
108 | |||
109 | def create_default_config(self): |
|
109 | def create_default_config(self): |
General Comments 0
You need to be logged in to leave comments.
Login now