Exemplo n.º 1
0
    def test_load_kedro_objects(self, tmp_path, mocker):
        fake_metadata = ProjectMetadata(
            source_dir=tmp_path / "src",  # default
            config_file=tmp_path / "pyproject.toml",
            package_name="fake_package_name",
            project_name="fake_project_name",
            project_version="0.1",
            project_path=tmp_path,
        )
        mocker.patch("kedro.framework.session.session.configure_project")
        mocker.patch(
            "kedro.framework.startup.bootstrap_project",
            return_value=fake_metadata,
        )
        mock_line_magic = mocker.MagicMock()
        mock_line_magic.__name__ = "abc"
        mocker.patch("kedro.framework.cli.load_entry_points",
                     return_value=[mock_line_magic])
        mock_register_line_magic = mocker.patch(
            "kedro.extras.extensions.ipython.register_line_magic")
        mock_context = mocker.patch(
            "kedro.framework.session.KedroSession.load_context")
        mock_ipython = mocker.patch(
            "kedro.extras.extensions.ipython.get_ipython")

        load_kedro_objects(tmp_path)

        mock_ipython().push.assert_called_once_with(
            variables={
                "context": mock_context(),
                "catalog": mock_context().catalog,
                "session": mocker.ANY,
            })
        assert mock_register_line_magic.call_count == 1
Exemplo n.º 2
0
    def test_bootstrap_project(self, mocker, monkeypatch, tmp_path):
        monkeypatch.delenv("PYTHONPATH", raising=False)
        # assume settings.py is okay
        mocker.patch("kedro.framework.project._validate_module")
        pyproject_toml_payload = {
            "tool": {
                "kedro": {
                    "package_name": "fake_package_name",
                    "project_name": "fake_project_name",
                    "project_version": kedro_version,
                }
            }
        }
        pyproject_toml = tmp_path / "pyproject.toml"
        pyproject_toml.write_text(toml.dumps(pyproject_toml_payload))
        src_dir = tmp_path / "src"
        src_dir.mkdir(exist_ok=True)

        result = bootstrap_project(tmp_path)

        expected_metadata = {
            "config_file": pyproject_toml,
            "package_name": "fake_package_name",
            "project_name": "fake_project_name",
            "project_path": tmp_path,
            "project_version": kedro_version,
            "source_dir": src_dir,
        }
        assert result == ProjectMetadata(**expected_metadata)
        assert str(src_dir) in sys.path[0]
        assert os.environ["PYTHONPATH"] == str(src_dir)
Exemplo n.º 3
0
def fake_metadata(fake_root_dir):
    metadata = ProjectMetadata(
        fake_root_dir / REPO_NAME / "pyproject.toml",
        PACKAGE_NAME,
        "CLI Testing Project",
        fake_root_dir / REPO_NAME,
        kedro_version,
        fake_root_dir / REPO_NAME / "src",
    )
    return metadata
Exemplo n.º 4
0
def metadata(cli_runner):  # pylint: disable=unused-argument
    # cwd() depends on ^ the isolated filesystem, created by CliRunner()
    project_path = Path.cwd()
    return ProjectMetadata(
        project_path / "pyproject.toml",
        "hello_world",
        "Hello world !!!",
        project_path,
        kedro_version,
        project_path / "src",
    )
Exemplo n.º 5
0
    def test_load_kedro_objects(self, tmp_path, mocker):
        # pylint: disable=unused-argument
        def get_settings_mock(package_name, property_name, default):
            return default

        fake_metadata = ProjectMetadata(
            source_dir=tmp_path / "src",  # default
            config_file=tmp_path / "pyproject.toml",
            package_name="fake_package_name",
            project_name="fake_project_name",
            project_version="0.1",
            project_path=tmp_path,
        )
        mocker.patch(
            "kedro.framework.startup._get_project_metadata",
            return_value=fake_metadata,
        )
        mocker.patch("kedro.framework.cli.utils._add_src_to_path")
        mock_line_magic = mocker.MagicMock()
        mock_line_magic.__name__ = "abc"
        mocker.patch("kedro.framework.cli.load_entry_points",
                     return_value=[mock_line_magic])
        mock_register_line_magic = mocker.patch(
            "kedro.extras.extensions.ipython.register_line_magic")
        mock_context = mocker.patch(
            "kedro.framework.session.KedroSession.load_context")
        mock_get_settings = mocker.patch(
            "kedro.framework.session.session._get_project_settings",
            side_effect=get_settings_mock,
        )
        mock_ipython = mocker.patch(
            "kedro.extras.extensions.ipython.get_ipython")

        load_kedro_objects(tmp_path)

        mock_ipython().push.assert_called_once_with(
            variables={
                "context": mock_context(),
                "catalog": mock_context().catalog,
                "session": mocker.ANY,
            })
        assert mock_register_line_magic.call_count == 1

        expected_calls = [
            mocker.call(fake_metadata.package_name, "SESSION_STORE_CLASS",
                        BaseSessionStore),
            mocker.call(fake_metadata.package_name, "SESSION_STORE_ARGS", {}),
            mocker.call(fake_metadata.package_name, "HOOKS", ()),
            mocker.call(fake_metadata.package_name,
                        "DISABLE_HOOKS_FOR_PLUGINS", ()),
        ]
        assert mock_get_settings.mock_calls == expected_calls
Exemplo n.º 6
0
    def test_load_kedro_objects(self, tmp_path, mocker):
        fake_metadata = ProjectMetadata(
            source_dir=tmp_path / "src",  # default
            config_file=tmp_path / "pyproject.toml",
            package_name="fake_package_name",
            project_name="fake_project_name",
            project_version="0.1",
            project_path=tmp_path,
        )
        my_pipelines = {"ds": Pipeline([])}

        def my_register_pipeline():
            return my_pipelines

        mocker.patch(
            "kedro.framework.project._ProjectPipelines._get_pipelines_registry_callable",
            return_value=my_register_pipeline,
        )
        mocker.patch("kedro.framework.project.settings.configure")
        mocker.patch("kedro.framework.session.session.validate_settings")
        mocker.patch(
            "kedro.framework.startup.bootstrap_project",
            return_value=fake_metadata,
        )
        mock_line_magic = mocker.MagicMock()
        mock_line_magic.__name__ = "abc"
        mocker.patch("kedro.framework.cli.load_entry_points",
                     return_value=[mock_line_magic])
        mock_register_line_magic = mocker.patch(
            "kedro.extras.extensions.ipython.register_line_magic")
        mock_context = mocker.patch(
            "kedro.framework.session.KedroSession.load_context")
        mock_ipython = mocker.patch(
            "kedro.extras.extensions.ipython.get_ipython")

        reload_kedro(tmp_path)

        mock_ipython().push.assert_called_once_with(
            variables={
                "context": mock_context(),
                "catalog": mock_context().catalog,
                "session": mocker.ANY,
                "pipelines": my_pipelines,
            })
        mock_register_line_magic.assert_called_once()
Exemplo n.º 7
0
    def test_valid_toml_file(self, mocker):
        mocker.patch.object(Path, "is_file", return_value=True)
        pyproject_toml_payload = {
            "tool": {
                "kedro": {
                    "package_name": "fake_package_name",
                    "project_name": "fake_project_name",
                    "project_version": kedro_version,
                }
            }
        }
        mocker.patch("anyconfig.load", return_value=pyproject_toml_payload)

        actual = _get_project_metadata(self.project_path)

        expected = ProjectMetadata(
            source_dir=self.project_path / "src",  # default
            config_file=self.project_path / "pyproject.toml",
            package_name="fake_package_name",
            project_name="fake_project_name",
            project_version=kedro_version,
            project_path=self.project_path,
        )
        assert actual == expected