Repository: ipython/ipython

Issue:
Config option `auto_create` not recognized by `TerminalIPythonApp`.
This warning appears when using the `--init` option:
```
$ ipython --init --profile=test
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
[TerminalIPythonApp] WARNING | Generating default config file: PosixPath('/home/user/.ipython/profile_test/ipython_config.py')
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
Python 3.11.7 (main, Dec  8 2023, 18:56:58) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

IPython profile: test

In [1]: 

```
Config option `auto_create` not recognized by `TerminalIPythonApp`.
This warning appears when using the `--init` option:
```
$ ipython --init --profile=test
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
[TerminalIPythonApp] WARNING | Generating default config file: PosixPath('/home/user/.ipython/profile_test/ipython_config.py')
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
[TerminalIPythonApp] WARNING | Config option `auto_create` not recognized by `TerminalIPythonApp`.
Python 3.11.7 (main, Dec  8 2023, 18:56:58) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

IPython profile: test

In [1]: 

```


Discussion:
Interesting it is because the subclass overwrite the parameter to be True by default, but do not set `.tag(config=True)`.

I don't think it has much importance as it still does the right things, but I can try to clean things up. 
Interesting it is because the subclass overwrite the parameter to be True by default, but do not set `.tag(config=True)`.

I don't think it has much importance as it still does the right things, but I can try to clean things up. 

Resolving patch:
diff --git a/IPython/core/application.py b/IPython/core/application.py
--- a/IPython/core/application.py
+++ b/IPython/core/application.py
@@ -213,7 +213,9 @@ def _ipython_dir_default(self):
         return d
     
     _in_init_profile_dir = False
+
     profile_dir = Instance(ProfileDir, allow_none=True)
+
     @default('profile_dir')
     def _profile_dir_default(self):
         # avoid recursion
@@ -226,11 +228,13 @@ def _profile_dir_default(self):
     overwrite = Bool(False,
         help="""Whether to overwrite existing config files when copying"""
     ).tag(config=True)
+
     auto_create = Bool(False,
         help="""Whether to create profile dir if it doesn't exist"""
     ).tag(config=True)
 
     config_files = List(Unicode())
+
     @default('config_files')
     def _config_files_default(self):
         return [self.config_file_name]
diff --git a/IPython/core/profileapp.py b/IPython/core/profileapp.py
--- a/IPython/core/profileapp.py
+++ b/IPython/core/profileapp.py
@@ -209,7 +209,7 @@ class ProfileCreate(BaseIPythonApplication):
     name = u'ipython-profile'
     description = create_help
     examples = _create_examples
-    auto_create = Bool(True)
+    auto_create = Bool(True).tag(config=True)
     def _log_format_default(self):
         return "[%(name)s] %(message)s"
 
diff --git a/IPython/terminal/ipapp.py b/IPython/terminal/ipapp.py
--- a/IPython/terminal/ipapp.py
+++ b/IPython/terminal/ipapp.py
@@ -177,7 +177,7 @@ def start(self):
 
 
 class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):
-    name = u'ipython'
+    name = "ipython"
     description = usage.cl_usage
     crash_handler_class = IPAppCrashHandler  # typing: ignore[assignment]
     examples = _examples
@@ -196,7 +196,7 @@ class TerminalIPythonApp(BaseIPythonApplication, InteractiveShellApp):
     def _classes_default(self):
         """This has to be in a method, for TerminalIPythonApp to be available."""
         return [
-            InteractiveShellApp, # ShellApp comes before TerminalApp, because
+            InteractiveShellApp,  # ShellApp comes before TerminalApp, because
             self.__class__,      # it will also affect subclasses (e.g. QtConsole)
             TerminalInteractiveShell,
             HistoryManager,
@@ -224,9 +224,9 @@ def _classes_default(self):
         ),
     )
 
-
     # *do* autocreate requested profile, but don't create the config file.
-    auto_create=Bool(True)
+    auto_create = Bool(True).tag(config=True)
+
     # configurables
     quick = Bool(False,
         help="""Start IPython quickly by skipping the loading of config files."""


Test patch: