From 7ccd312c2c84c3538f9d1142c1af25b32ca017f6 Mon Sep 17 00:00:00 2001 From: Daulet Amirkhanov Date: Thu, 18 Sep 2025 18:21:42 +0100 Subject: [PATCH 1/3] create starter notebook on get all notebooks request - if not created --- .../notebooks/methods/create_notebook.py | 4 ++- .../notebooks/methods/get_notebooks.py | 28 ++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/cognee/modules/notebooks/methods/create_notebook.py b/cognee/modules/notebooks/methods/create_notebook.py index 22ed047f1..98cc557c6 100644 --- a/cognee/modules/notebooks/methods/create_notebook.py +++ b/cognee/modules/notebooks/methods/create_notebook.py @@ -6,6 +6,8 @@ from cognee.infrastructure.databases.relational import with_async_session from ..models.Notebook import Notebook, NotebookCell +TUTORIAL_NOTEBOOK_NAME = "Python Development with Cognee Tutorial 🧠" + async def _create_tutorial_notebook( user_id: UUID, session: AsyncSession, force_refresh: bool = False @@ -24,7 +26,7 @@ async def _create_tutorial_notebook( zip_url=TUTORIAL_ZIP_URL, owner_id=user_id, notebook_filename="tutorial.ipynb", - name="Python Development with Cognee Tutorial 🧠", + name=TUTORIAL_NOTEBOOK_NAME, deletable=False, force=force_refresh, ) diff --git a/cognee/modules/notebooks/methods/get_notebooks.py b/cognee/modules/notebooks/methods/get_notebooks.py index aeb4f7704..0ff2f3985 100644 --- a/cognee/modules/notebooks/methods/get_notebooks.py +++ b/cognee/modules/notebooks/methods/get_notebooks.py @@ -1,11 +1,16 @@ from uuid import UUID from typing import List -from sqlalchemy import select +from sqlalchemy import select, and_ from sqlalchemy.ext.asyncio import AsyncSession from cognee.infrastructure.databases.relational import with_async_session from ..models.Notebook import Notebook +from .create_notebook import _create_tutorial_notebook, TUTORIAL_NOTEBOOK_NAME + +from cognee.shared.logging_utils import get_logger + +logger = get_logger() @with_async_session @@ -13,6 +18,27 @@ async def get_notebooks( user_id: UUID, session: AsyncSession, ) -> List[Notebook]: + # Check if tutorial notebook already exists for this user + tutorial_query = select(Notebook).where( + and_( + Notebook.owner_id == user_id, + Notebook.name == TUTORIAL_NOTEBOOK_NAME, + ~Notebook.deletable, + ) + ) + tutorial_result = await session.execute(tutorial_query) + tutorial_notebook = tutorial_result.scalar_one_or_none() + + # If tutorial notebook doesn't exist, create it + if tutorial_notebook is None: + logger.info(f"Tutorial notebook not found for user {user_id}, creating it") + try: + await _create_tutorial_notebook(user_id, session, force_refresh=False) + except Exception as e: + # Log the error but continue to return existing notebooks + logger.error(f"Failed to create tutorial notebook for user {user_id}: {e}") + + # Get all notebooks for the user result = await session.execute(select(Notebook).where(Notebook.owner_id == user_id)) return list(result.scalars().all()) From 45ed5df1f3a879fc39ef9695b18f32dd06f21d03 Mon Sep 17 00:00:00 2001 From: Daulet Amirkhanov Date: Thu, 18 Sep 2025 18:22:02 +0100 Subject: [PATCH 2/3] remove starter notebook creation from create_user --- cognee/modules/users/methods/create_user.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cognee/modules/users/methods/create_user.py b/cognee/modules/users/methods/create_user.py index e3f24ccad..1b303bd36 100644 --- a/cognee/modules/users/methods/create_user.py +++ b/cognee/modules/users/methods/create_user.py @@ -61,8 +61,6 @@ async def create_user( if auto_login: await session.refresh(user) - await _create_tutorial_notebook(user.id, session) - return user except UserAlreadyExists as error: print(f"User {email} already exists") From 1a4061a0092c3125f4b15174e20f228be0329cfd Mon Sep 17 00:00:00 2001 From: Boris Arzentar Date: Thu, 18 Sep 2025 20:00:05 +0200 Subject: [PATCH 3/3] version: v0.3.4.dev4 --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0ffea217d..540e9cbbc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "cognee" -version = "0.3.4.dev3" +version = "0.3.4.dev4" description = "Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning." authors = [ { name = "Vasilije Markovic" }, diff --git a/uv.lock b/uv.lock index e5125ed2b..91e4680f2 100644 --- a/uv.lock +++ b/uv.lock @@ -811,7 +811,7 @@ wheels = [ [[package]] name = "cognee" -version = "0.3.4.dev3" +version = "0.3.4.dev4" source = { editable = "." } dependencies = [ { name = "aiofiles" },