internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: kedro-org/kedro

Issue:
Add deprecation warnings to `ConfigLoader` and `TemplatedConfigLoader`
## Description
We plan to deprecate `ConfigLoader` and `TemplatedConfigLoader` and replace them with the `OmegaConfigLoader` from `0.19.0` onwards. 

## Implementation
Add a deprecation warning in the code and docs. 

## Follow-up
- [x] #2699


Discussion:
Do you think, rather than deprecating `ConfigLoader`, we could "swap" it and make it an alias to `OmegaConfigLoader` (say, in 0.20.x)?
> Do you think, rather than deprecating `ConfigLoader`, we could "swap" it and make it an alias to `OmegaConfigLoader` (say, in 0.20.x)?

I think that's something we should discuss as a team when this ticket gets groomed. If we want to essentially rename `OmegaConfigLoader` to `ConfigLoader` and make it the default, I personally would do that for `0.19.0`. Why wait until `0.20.0` which might be 1-2 years away?
Options
1. Rename `OmegaConfigLoader` -> `ConfigLoader` (Or keep the alias)
2. Remove `ConfigLoader` and `TemplatedConfigLoader` , keep only `OmegaConfigLoader`

We are opting for 2.
(Context: We noted that making users that had already adopted `OmegaConfigLoader` change the name back to `ConfigLoader` could frustrate them, and also make issues potentially more difficult to debug)

Resolving patch:
diff --git a/kedro/framework/session/session.py b/kedro/framework/session/session.py
--- a/kedro/framework/session/session.py
+++ b/kedro/framework/session/session.py
@@ -8,6 +8,7 @@
 import subprocess
 import sys
 import traceback
+import warnings
 from copy import deepcopy
 from pathlib import Path
 from typing import Any, Iterable
@@ -15,7 +16,7 @@
 import click
 
 from kedro import __version__ as kedro_version
-from kedro.config import ConfigLoader, MissingConfigException
+from kedro.config import ConfigLoader, MissingConfigException, TemplatedConfigLoader
 from kedro.framework.context import KedroContext
 from kedro.framework.context.context import _convert_paths_to_absolute_posix
 from kedro.framework.hooks import _create_hook_manager
@@ -261,7 +262,15 @@ def load_context(self) -> KedroContext:
         env = self.store.get("env")
         extra_params = self.store.get("extra_params")
         config_loader = self._get_config_loader()
-
+        if isinstance(config_loader, (ConfigLoader, TemplatedConfigLoader)):
+            warnings.warn(
+                f"{type(config_loader).__name__} will be deprecated in Kedro 0.19."
+                f" Please use the OmegaConfigLoader instead. To consult"
+                f" the documentation for OmegaConfigLoader, see here:"
+                f" https://docs.kedro.org/en/stable/configuration/"
+                f"advanced_configuration.html#omegaconfigloader",
+                FutureWarning,
+            )
         context_class = settings.CONTEXT_CLASS
         context = context_class(
             package_name=self._package_name,


Test patch:
Repository: kedro-org/kedro

Issue:
Kedro release 0.18.13 - official support for Python 3.11
We want to do a release by end of this Sprint (21 Aug)/early next sprint. 

### Done (feel free to add the related PR/issues)
- Kedro Python 3.11 support - (need to wait for kedro-datasets https://github.com/kedro-org/kedro-plugins/issues/154)
- The series of fix for starter , kedro pipeline create, kedro catalog create
- Custom resolver for OmegaConf

### Blockers:
- [x] https://github.com/kedro-org/kedro-plugins/issues/290
- [x] https://github.com/kedro-org/kedro-plugins/issues/298 (for Kedro-Viz)
- [x] https://github.com/kedro-org/kedro-plugins/pull/305
- [x] https://github.com/kedro-org/kedro-plugins/issues/306
### Other todo:
- [x] kedro catalog resolve - #2891
- [x] + docs for dataset factories commands - https://github.com/kedro-org/kedro/issues/2849
- [x] https://github.com/kedro-org/kedro-starters/pull/140
- [x] https://github.com/kedro-org/kedro/pull/2889
- [x] datasets 3.11 support https://github.com/kedro-org/kedro-plugins/issues/154
- [x] Viz python 3.11 support https://github.com/kedro-org/kedro-viz/issues/1446
- [x] #2918 
- [x] https://github.com/kedro-org/kedro/pull/2735
- [x] https://github.com/kedro-org/kedro/pull/2746
- [x] https://github.com/kedro-org/kedro/issues/2521
- [x] https://github.com/kedro-org/kedro/issues/2794
- [x] #2976
- [x] https://github.com/kedro-org/kedro-starters/pull/144

Nice to include:
- [x] #2977



Discussion:
+1
May I also add https://github.com/kedro-org/kedro/issues/2794, seems to be some demand for this feature on the #questions channel :)
Merged #2853 and kedro-org/kedro-starters#144, closed #2280. Can we include these in the release?
It would be nice to include [Stop OmegaConfigLoader from reading config from hidden directory like ipynb_checkpoints](https://github.com/kedro-org/kedro/pull/2977#top) if it's ready, but not mandatory for this release.
Also the migration guide #2904, and keeping an eye on https://github.com/kedro-org/kedro-viz/pull/1502

Resolving patch:
diff --git a/kedro/__init__.py b/kedro/__init__.py
--- a/kedro/__init__.py
+++ b/kedro/__init__.py
@@ -6,7 +6,7 @@
 import sys
 import warnings
 
-__version__ = "0.18.12"
+__version__ = "0.18.13"
 
 
 class KedroPythonVersionWarning(UserWarning):
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -97,7 +97,7 @@ def _collect_requirements(requires):
         "sphinxcontrib-mermaid~=0.7.1",
         "myst-parser~=1.0.0",
         "Jinja2<3.1.0",
-        "kedro-datasets[all]~=1.5.3",
+        "kedro-datasets[all]~=1.6.0",
     ],
     "geopandas": _collect_requirements(geopandas_require),
     "matplotlib": _collect_requirements(matplotlib_require),


Test patch:
Repository: kedro-org/kedro

Issue:
Document the LIFO order in which hooks are executed in `settings.py`
### Description

We mention that hook implementations registered in `settings.py` run in LIFO order and that auto discovered hooks run before hooks in `settings.py`. 

- [ ] We need to also document what the order is in which auto-discovered hooks run. Add this to: https://kedro.readthedocs.io/en/stable/hooks/introduction.html To verify the run order, create a project and install several plugins with hooks to test.
- [ ] Add a comment in the `settings.py` template file to explain the run order of hooks


Discussion:
For reference: https://github.com/pytest-dev/pytest/blob/196f01965ed264e1fd917db236c872f85403753d/doc/en/how-to/writing_plugins.rst#plugin-discovery-order-at-tool-startup
Also, while we are modifying hooks documentation, we need to take another look at the work involved with #978 
Potentially overlapping with https://github.com/kedro-org/kedro/issues/1718, or that one should be a parent issue of this one.
Agree with @astrojuanlu. #1718 is a larger task, we can keep the scope for this one small.

Simply document about the LIFO order. It's not the full picture of how hooks are executed yet. I have updated the description to reflect that.
OK, let's do this. @noklam do you want to pick up the first draft of this in the upcoming sprint w/c 4th September? If so, please let @merelcht know to assign it to you within the sprint. Otherwise will keep an eye out for this to come next sprint if you are already maxed out with upcoming hack days & values day.
That should be fine! I am fairly familiar with the hooks stuff so it shouldn't be too much work. 

Resolving patch:
diff --git a/kedro/templates/project/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py b/kedro/templates/project/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py
--- a/kedro/templates/project/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py	
+++ b/kedro/templates/project/{{ cookiecutter.repo_name }}/src/{{ cookiecutter.python_package }}/settings.py	
@@ -5,6 +5,7 @@
 # Instantiated project hooks.
 # For example, after creating a hooks.py and defining a ProjectHooks class there, do
 # from {{cookiecutter.python_package}}.hooks import ProjectHooks
+# Hooks are executed in a Last-In-First-Out (LIFO) order.
 # HOOKS = (ProjectHooks(),)
 
 # Installed plugins for which to disable hook auto-registration.


Test patch:
Repository: kedro-org/kedro

Issue:
Drop support for Python 3.7 end of year 2023
## Description

Python's end of life for version 3.7 ends in June 2023 so we should be prepared, since a lot of packages might stop supporting 3.7, which will make our support for 3.7 more difficult. Therefore I would suggest we drop official support for 3.7 before June, and possibly with the release of 0.19. As a benefit, we can start using some nice features, as listed [here](https://realpython.com/python38-new-features/). I am especially interested in the walrus operator, the improved support for typing, performance optimisations and last, but not least, `importlib.metadata` which can be super helpful for checking for installed versions of other Python packages (think of `kedro-viz`, `kedro-datasets` and other plugin compatibilities with `kedro`).

## Context

To make sure we move along in pace with the rest of the ecosystem in Python.

## Possible Implementation

Removing Python 3.7 support with Kedro 0.19.0.

## Possible Alternatives

Waiting for Kedro 0.20.0 to drop Python 3.7 support.



Discussion:
+1 to removing Python 3.7 support with Kedro 0.19.0. But I think we should communicate this in the 0.18.x releases.
> it looks like 3.7 is reaching end-of-life. Unless another security release happens in June, 3.7.17 will be the final release of Python 3.7.

https://mail.python.org/archives/list/python-announce-list@python.org/message/XEQ7I3YDDXJJA3JSARTHFDCBVXD6CPHT/



Resolving patch:
diff --git a/features/environment.py b/features/environment.py
--- a/features/environment.py
+++ b/features/environment.py
@@ -103,8 +103,6 @@ def _setup_minimal_env(context):
             "pip",
             "install",
             "-U",
-            # pip==23.2 breaks pip-tools<7.0, and pip-tools>=7.0 does not support Python 3.7
-            "pip>=21.2,<23.2; python_version < '3.8'",
             "pip>=21.2; python_version >= '3.8'",
         ],
         env=context.env,
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -133,7 +133,6 @@ def _collect_requirements(requires):
 
 extras_require["all"] = _collect_requirements(extras_require)
 extras_require["test"] = [
-    "adlfs>=2021.7.1, <=2022.2; python_version == '3.7'",
     "adlfs~=2023.1; python_version >= '3.8'",
     "bandit>=1.6.2, <2.0",
     "behave==1.2.6",
@@ -147,7 +146,6 @@ def _collect_requirements(requires):
     "delta-spark~=1.2.1; python_version < '3.11'",
     "dill~=0.3.1",
     "filelock>=3.4.0, <4.0",
-    "gcsfs>=2021.4, <=2023.1; python_version == '3.7'",
     "gcsfs>=2023.1, <2023.3; python_version >= '3.8'",
     "geopandas>=0.6.0, <1.0",
     "hdfs>=2.5.8, <3.0",


Test patch:
diff --git a/tests/framework/cli/test_cli_hooks.py b/tests/framework/cli/test_cli_hooks.py
--- a/tests/framework/cli/test_cli_hooks.py
+++ b/tests/framework/cli/test_cli_hooks.py
@@ -74,7 +74,7 @@ def fake_plugin_distribution(mocker):
         version="0.1",
     )
     mocker.patch(
-        "pluggy._manager.importlib_metadata.distributions",
+        "pluggy._manager.importlib.metadata.distributions",
         return_value=[fake_distribution],
     )
     return fake_distribution
Repository: kedro-org/kedro

Issue:
Add deprecation warning to `PartitionedDataSet` and `IncrementalDataSet`
### Description
Add deprecation warning to `PartitionedDataSet` and `IncrementalDataSet` that mentions those datasets are moving to `kedro-datasets`.

### Context

- [Remove PartitionedDataSet and IncrementalDataSet from kedro.io](https://github.com/kedro-org/kedro/issues/2713)
- [Migrate PartitionedDataSet and IncrementalDataSet to kedro-datasets](https://github.com/kedro-org/kedro-plugins/issues/249)



Discussion:

Resolving patch:
diff --git a/kedro/io/partitioned_dataset.py b/kedro/io/partitioned_dataset.py
--- a/kedro/io/partitioned_dataset.py
+++ b/kedro/io/partitioned_dataset.py
@@ -197,6 +197,11 @@ def __init__(  # noqa: too-many-arguments
 
         super().__init__()
 
+        warnings.warn(
+            "'PartitionedDataset' has been moved to `kedro-datasets` and will be removed in Kedro 0.19.0.",
+            KedroDeprecationWarning,
+        )
+
         self._path = path
         self._filename_suffix = filename_suffix
         self._overwrite = overwrite
@@ -457,6 +462,11 @@ def __init__(  # noqa: too-many-arguments
             fs_args=fs_args,
         )
 
+        warnings.warn(
+            "'IncrementalDataset' has been moved to `kedro-datasets` and will be removed in Kedro 0.19.0.",
+            KedroDeprecationWarning,
+        )
+
         self._checkpoint_config = self._parse_checkpoint_config(checkpoint)
         self._force_checkpoint = self._checkpoint_config.pop("force_checkpoint", None)
         self.metadata = metadata


Test patch:
Repository: kedro-org/kedro

Issue:
Add validation to node tags
## Description
Currently we do not validate or restrict the format of tags that can be added to nodes. This is inconsistent with other user-defined values. As part of #2014 it was agreed that tags should be subject to the same constraints as node names (see: https://github.com/kedro-org/kedro/blob/main/kedro/pipeline/node.py#L102)




Discussion:

Resolving patch:
diff --git a/kedro/pipeline/node.py b/kedro/pipeline/node.py
--- a/kedro/pipeline/node.py
+++ b/kedro/pipeline/node.py
@@ -109,6 +109,12 @@ def __init__(  # noqa: PLR0913
         self._name = name
         self._namespace = namespace
         self._tags = set(_to_list(tags))
+        for tag in self._tags:
+            if not re.match(r"[\w\.-]+$", tag):
+                raise ValueError(
+                    f"'{tag}' is not a valid node tag. It must contain only "
+                    f"letters, digits, hyphens, underscores and/or fullstops."
+                )
 
         self._validate_unique_outputs()
         self._validate_inputs_dif_than_outputs()


Test patch:
diff --git a/tests/pipeline/test_node.py b/tests/pipeline/test_node.py
--- a/tests/pipeline/test_node.py
+++ b/tests/pipeline/test_node.py
@@ -369,6 +369,15 @@ def test_tag_nodes_single_tag(self):
         assert "hello" in tagged_node.tags
         assert "world" in tagged_node.tags
 
+    @pytest.mark.parametrize("bad_tag", ["tag,with,comma", "tag with space"])
+    def test_invalid_tag(self, bad_tag):
+        pattern = (
+            f"'{bad_tag}' is not a valid node tag. It must contain only "
+            f"letters, digits, hyphens, underscores and/or fullstops."
+        )
+        with pytest.raises(ValueError, match=re.escape(pattern)):
+            node(identity, ["in"], ["out"], tags=bad_tag)
+
 
 class TestNames:
     def test_named(self):
Repository: kedro-org/kedro

Issue:
Improving shortname handling of --addons flag 
## Description

The shortnames we've allocated for the add ons fluctuate on whether they are plural or not. log vs logs, test vs tests. 

At the moment the short names are: `log,test,lint,data,docs,viz`. But many engineers instinctively think of `logs` rather than `log` and `tests` rather than `test`. However, `lints` doesn't work. etc 

Having discussed with @AhdraMeraliQB @noklam  we weren't able to find a consistent rule to apply across all the options. 

Proposal: 
either 
1. accept both options i.e. both `--addons=log` and `--addons=logs` will work to select the logging addon
2. implement smarter error messages i.e. if the user types `logs` but its meant to be `log` we error `Did you mean --addons=log` to help them realise their mistake. Same for `tests` and `test` 



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
@@ -110,8 +110,11 @@ class KedroStarterSpec:  # noqa: too-few-public-methods
 TOOLS_SHORTNAME_TO_NUMBER = {
     "lint": "1",
     "test": "2",
+    "tests": "2",
     "log": "3",
+    "logs": "3",
     "docs": "4",
+    "doc": "4",
     "data": "5",
     "pyspark": "6",
     "viz": "7",


Test patch:
diff --git a/tests/framework/cli/test_starters.py b/tests/framework/cli/test_starters.py
--- a/tests/framework/cli/test_starters.py
+++ b/tests/framework/cli/test_starters.py
@@ -1222,13 +1222,16 @@ class TestToolsAndExampleFromCLI:
         [
             "lint",
             "test",
+            "tests",
             "log",
+            "logs",
             "docs",
+            "doc",
             "data",
             "pyspark",
             "viz",
             "none",
-            "test,log,docs",
+            "tests,logs,doc",
             "test,data,lint",
             "log,docs,data,test,lint",
             "log, docs, data, test, lint",
Repository: kedro-org/kedro

Issue:
Make it possible to create project from config without providing `add_ons` or `example_pipeline`
## Description
Creating a project from config without providing `add_ons` or `example_pipeline` fails.

## Context
`config.yml`:

```yaml
project_name: My First Kedro Project
repo_name: testing-kedro
python_package: test_kedro
```
By itself, this doesn't work - throws the following error:
```
kedro.framework.cli.utils.KedroCliError: example_pipeline, add_ons not found in config file.
Run with --verbose to see the full exception
```
I would assume these would use the default values if not provided.

## Expected behaviour
The above config yaml is valid and so project creation should succeed.


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
@@ -708,10 +708,20 @@ def _validate_config_file_against_prompts(
     """
     if config is None:
         raise KedroCliError("Config file is empty.")
+    additional_keys = {"tools": "none", "example_pipeline": "no"}
     missing_keys = set(prompts) - set(config)
-    if missing_keys:
+    missing_mandatory_keys = missing_keys - set(additional_keys)
+    if missing_mandatory_keys:
         click.echo(yaml.dump(config, default_flow_style=False))
-        raise KedroCliError(f"{', '.join(missing_keys)} not found in config file.")
+        raise KedroCliError(
+            f"{', '.join(missing_mandatory_keys)} not found in config file."
+        )
+    for key, default_value in additional_keys.items():
+        if key in missing_keys:
+            click.secho(
+                f"The `{key}` key not found in the config file, default value '{default_value}' is being used.",
+                fg="yellow",
+            )
 
     if "output_dir" in config and not Path(config["output_dir"]).exists():
         raise KedroCliError(


Test patch:
diff --git a/tests/framework/cli/test_starters.py b/tests/framework/cli/test_starters.py
--- a/tests/framework/cli/test_starters.py
+++ b/tests/framework/cli/test_starters.py
@@ -630,6 +630,20 @@ def test_empty_prompts(self, fake_kedro_cli):
         _assert_template_ok(result, **config)
         _clean_up_project(Path("./my-project"))
 
+    def test_config_with_no_tools_example(self, fake_kedro_cli):
+        """Test project created from config."""
+        config = {
+            "project_name": "My Project",
+            "repo_name": "my-project",
+            "python_package": "my_project",
+        }
+        _write_yaml(Path("config.yml"), config)
+        result = CliRunner().invoke(
+            fake_kedro_cli, ["new", "-v", "--config", "config.yml"]
+        )
+        _assert_template_ok(result, **config)
+        _clean_up_project(Path("./my-project"))
+
 
 @pytest.mark.usefixtures("chdir_to_tmp")
 class TestNewFromConfigFileInvalid:
Repository: kedro-org/kedro

Issue:
Unpin `fsspec` in test requirements
## Description
In the migration of test requirements from `setup.py` to `pyproject.toml` (See #3078), the version of `fsspec` was pinned to `<2023.9` in the test requirements. (on the `develop` branch)

The latest versions of `fsspec` are causing the test "`test_no_versions_with_cloud_protocol`" in `tests/io/test_data_catalog.py` to fail. 

This is a follow up ticket to investigate the test failure and remove the `fsspec` pin from the test requirements. 



Discussion:

Resolving patch:
diff --git a/kedro/io/core.py b/kedro/io/core.py
--- a/kedro/io/core.py
+++ b/kedro/io/core.py
@@ -536,19 +536,19 @@ def _fetch_latest_load_version(self) -> str:
         # When load version is unpinned, fetch the most recent existing
         # version from the given path.
         pattern = str(self._get_versioned_path("*"))
-        version_paths = sorted(self._glob_function(pattern), reverse=True)
+        try:
+            version_paths = sorted(self._glob_function(pattern), reverse=True)
+        except Exception as exc:
+            message = (
+                f"Did not find any versions for {self}. This could be "
+                f"due to insufficient permission. Exception: {exc}"
+            )
+            raise VersionNotFoundError(message) from exc
         most_recent = next(
             (path for path in version_paths if self._exists_function(path)), None
         )
-        protocol = getattr(self, "_protocol", None)
         if not most_recent:
-            if protocol in CLOUD_PROTOCOLS:
-                message = (
-                    f"Did not find any versions for {self}. This could be "
-                    f"due to insufficient permission."
-                )
-            else:
-                message = f"Did not find any versions for {self}"
+            message = f"Did not find any versions for {self}"
             raise VersionNotFoundError(message)
         return PurePath(most_recent).parent.name
 


Test patch:
Repository: kedro-org/kedro

Issue:
Child task: Create documentation about Kedro vs (or with) MLFlow
## Description
Child of https://github.com/kedro-org/kedro/issues/3012

## Context
The context of this issue was to start to populate the Kedro docs with comparative content as it's an important part of a documentation set for users and for SEO. This is specifically for MLFlow.





Discussion:
[This was a useful find while I was researching what to include](https://kedro-mlflow.readthedocs.io/en/stable/source/01_introduction/01_introduction.html#a-brief-comparison-between-kedro-and-mlflow).

I've decided to put this back in the backlog. I spent some time on it in Notion and thinking about how to rearrange existing docs to include a section for comparative/collaborative content about other products, but I'll be moving onto other areas so won't have time to take it forward at present.
@noklam already compiled some internal notes and I will try to get to draft the document structure this sprint.

Resolving patch:
diff --git a/docs/source/conf.py b/docs/source/conf.py
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -72,6 +72,8 @@
     "kedro-datasets": ("https://docs.kedro.org/projects/kedro-datasets/en/kedro-datasets-2.0.0/", None),
     "cpython": ("https://docs.python.org/3.8/", None),
     "ipython": ("https://ipython.readthedocs.io/en/8.21.0/", None),
+    "mlflow": ("https://www.mlflow.org/docs/2.12.1/", None),
+    "kedro-mlflow": ("https://kedro-mlflow.readthedocs.io/en/0.12.2/", None),
 }
 
 # The suffix(es) of source filenames.
@@ -521,3 +523,4 @@ def setup(app):
 user_agent = "Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"
 
 myst_heading_anchors = 5
+myst_enable_extensions = ["colon_fence"]


Test patch: