Repository: kedro-org/kedro

Issue:
Add a deprecation notice to signal the archiving of starters + new project creation flow
## Description
In Kedro `0.19.0` we're removing some of the starters and introducing a completely new project creation flow. We should add warnings/info to our users ahead of this so they know this flow will change. 

## Context

- [Introducing Utility Modules to Kedro ](https://github.com/kedro-org/kedro/issues/2388)
- [Remove "non-unique" starters](https://github.com/kedro-org/kedro/issues/3113)

## Possible Implementation
- Add a temporary message in the `kedro new` flow that explains the changes that are coming. 
- Update`kedro starter list`  and add (deprecated/archived) to the starters that will be archived in #3113 




Discussion:

Resolving patch:
diff --git a/kedro/framework/cli/starters.py b/kedro/framework/cli/starters.py
--- a/kedro/framework/cli/starters.py
+++ b/kedro/framework/cli/starters.py
@@ -10,6 +10,7 @@
 import shutil
 import stat
 import tempfile
+import warnings
 from collections import OrderedDict
 from itertools import groupby
 from pathlib import Path
@@ -20,6 +21,7 @@
 from attrs import define, field
 
 import kedro
+from kedro import KedroDeprecationWarning
 from kedro import __version__ as version
 from kedro.framework.cli.utils import (
     CONTEXT_SETTINGS,
@@ -34,6 +36,13 @@
 TEMPLATE_PATH = KEDRO_PATH / "templates" / "project"
 _STARTERS_REPO = "git+https://github.com/kedro-org/kedro-starters.git"
 
+_DEPRECATED_STARTERS = [
+    "pandas-iris",
+    "pyspark-iris",
+    "pyspark",
+    "standalone-datacatalog",
+]
+
 
 @define(order=True)
 class KedroStarterSpec:  # noqa: too-few-public-methods
@@ -152,10 +161,14 @@ def _starter_spec_to_dict(
     """Convert a dictionary of starters spec to a nicely formatted dictionary"""
     format_dict: dict[str, dict[str, str]] = {}
     for alias, spec in starter_specs.items():
-        format_dict[alias] = {}  # Each dictionary represent 1 starter
-        format_dict[alias]["template_path"] = spec.template_path
+        if alias in _DEPRECATED_STARTERS:
+            key = alias + " (deprecated)"
+        else:
+            key = alias
+        format_dict[key] = {}  # Each dictionary represent 1 starter
+        format_dict[key]["template_path"] = spec.template_path
         if spec.directory:
-            format_dict[alias]["directory"] = spec.directory
+            format_dict[key]["directory"] = spec.directory
     return format_dict
 
 
@@ -178,6 +191,19 @@ def create_cli():  # pragma: no cover
 @click.option("--directory", help=DIRECTORY_ARG_HELP)
 def new(config_path, starter_alias, checkout, directory, **kwargs):
     """Create a new kedro project."""
+
+    if starter_alias in _DEPRECATED_STARTERS:
+        warnings.warn(
+            f"The starter '{starter_alias}' has been deprecated and will be archived from Kedro 0.19.0.",
+            KedroDeprecationWarning,
+        )
+    click.secho(
+        "From Kedro 0.19.0, the command `kedro new` will come with the option of interactively selecting add-ons "
+        "for your project such as linting, testing, custom logging, and more. The selected add-ons will add the "
+        "basic setup for the utilities selected to your projects.",
+        fg="green",
+    )
+
     if checkout and not starter_alias:
         raise KedroCliError("Cannot use the --checkout flag without a --starter value.")
 
@@ -257,6 +283,9 @@ def list_starters():
     sorted_starters_dict = dict(
         sorted(sorted_starters_dict.items(), key=lambda x: x == "kedro")
     )
+    warnings.warn(
+        f"The starters {_DEPRECATED_STARTERS} are deprecated and will be archived in Kedro 0.19.0."
+    )
 
     for origin, starters_spec in sorted_starters_dict.items():
         click.secho(f"\nStarters from {origin}\n", fg="yellow")


Test patch: