From 06381305fd325b710a92f70bc18d452914a0726e Mon Sep 17 00:00:00 2001 From: addisonwurtz Date: Wed, 18 Dec 2024 17:14:30 -0800 Subject: [PATCH 1/5] Added root_dir and preferred_dir to PostgresContentsMangager class --- pgcontents/pgmanager.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pgcontents/pgmanager.py b/pgcontents/pgmanager.py index f887f72..d55d95f 100644 --- a/pgcontents/pgmanager.py +++ b/pgcontents/pgmanager.py @@ -18,7 +18,7 @@ from __future__ import unicode_literals from itertools import chain from tornado import web -from traitlets import default +from traitlets import default, Unicode from .api_utils import ( base_directory_model, @@ -65,6 +65,12 @@ class PostgresContentsManager(PostgresManagerMixin, ContentsManager): ContentsManager that persists to a postgres database rather than to the local filesystem. """ + + # Added to prevent jupyter lab failure + root_dir = Unicode("/", config=True) + + preferred_dir = Unicode("", config=True) + create_directory_on_startup = Bool( config=True, help="Create a root directory automatically?", From 6ebfadb26989185368616720de1d7a04a3806a23 Mon Sep 17 00:00:00 2001 From: addisonwurtz Date: Thu, 19 Dec 2024 11:52:16 -0800 Subject: [PATCH 2/5] Update deprecated notebook imports to jupyter_server imports --- pgcontents/utils/ipycompat.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pgcontents/utils/ipycompat.py b/pgcontents/utils/ipycompat.py index 5f84939..aba004d 100644 --- a/pgcontents/utils/ipycompat.py +++ b/pgcontents/utils/ipycompat.py @@ -2,6 +2,18 @@ Utilities for managing compat between notebook versions. """ from traitlets.config import Config + +from jupyter_server.services.contents.checkpoints import ( + Checkpoints, + GenericCheckpointsMixin, +) +from jupyter_server.services.contents.filemanager import FileContentsManager +from jupyter_server.services.contents.filecheckpoints import ( + GenericFileCheckpoints +) +from jupyter_server.services.contents.manager import ContentsManager +from jupyter_server.utils import to_os_path +""" from notebook.services.contents.checkpoints import ( Checkpoints, GenericCheckpointsMixin, @@ -12,6 +24,7 @@ ) from notebook.services.contents.manager import ContentsManager from notebook.utils import to_os_path +""" from nbformat import from_dict, reads, writes from nbformat.v4.nbbase import ( new_code_cell, From d1b0d9ce8ba8db371437e690c6fe489c84d45e82 Mon Sep 17 00:00:00 2001 From: addisonwurtz Date: Fri, 3 Jan 2025 12:05:18 -0800 Subject: [PATCH 3/5] Remove preferred_dir from pgmanager (setting preferred_dir creates bug where Jupyter looks for directory in vm file system even though the app is using postgres for persistent storage). --- pgcontents/pgmanager.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pgcontents/pgmanager.py b/pgcontents/pgmanager.py index d55d95f..86b3b63 100644 --- a/pgcontents/pgmanager.py +++ b/pgcontents/pgmanager.py @@ -66,15 +66,16 @@ class PostgresContentsManager(PostgresManagerMixin, ContentsManager): local filesystem. """ - # Added to prevent jupyter lab failure - root_dir = Unicode("/", config=True) - - preferred_dir = Unicode("", config=True) create_directory_on_startup = Bool( config=True, help="Create a root directory automatically?", ) + + # Added to prevent jupyter lab failure + #root_dir = Unicode("/notebooks", config=True) + #preferred_dir = Unicode("/notebooks", config=True) + root_dir = None @default('checkpoints_class') def _default_checkpoints_class(self): From 55773ada56bcbd1cff306179974e3755c9ed4e21 Mon Sep 17 00:00:00 2001 From: addisonwurtz Date: Fri, 3 Jan 2025 14:31:39 -0800 Subject: [PATCH 4/5] Set root_dir to '/' and update ensure_root_directory to use self.root_dir --- pgcontents/pgmanager.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/pgcontents/pgmanager.py b/pgcontents/pgmanager.py index 86b3b63..dfb28f1 100644 --- a/pgcontents/pgmanager.py +++ b/pgcontents/pgmanager.py @@ -18,7 +18,12 @@ from __future__ import unicode_literals from itertools import chain from tornado import web -from traitlets import default, Unicode +from traitlets import ( + Unicode, + default, +) + +from jupyter_server.transutils import _i18n from .api_utils import ( base_directory_model, @@ -72,10 +77,15 @@ class PostgresContentsManager(PostgresManagerMixin, ContentsManager): help="Create a root directory automatically?", ) - # Added to prevent jupyter lab failure - #root_dir = Unicode("/notebooks", config=True) - #preferred_dir = Unicode("/notebooks", config=True) - root_dir = None + root_dir = Unicode("/", config=True) + + preferred_dir = Unicode( + "", + config=True, + help=_i18n( + "Preferred starting directory to use for notebooks. This is an API path (`/` separated, relative to root dir)" + ), + ) @default('checkpoints_class') def _default_checkpoints_class(self): @@ -109,7 +119,7 @@ def __init__(self, *args, **kwargs): def ensure_root_directory(self): with self.engine.begin() as db: - ensure_directory(db, self.user_id, '') + ensure_directory(db, self.user_id, self.root_dir) def purge_db(self): """ From e7c3f3f3c878845428885ba24df9bae17c9bc184 Mon Sep 17 00:00:00 2001 From: addisonwurtz Date: Tue, 7 Jan 2025 16:05:01 -0800 Subject: [PATCH 5/5] deleted commented out code --- pgcontents/utils/ipycompat.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pgcontents/utils/ipycompat.py b/pgcontents/utils/ipycompat.py index aba004d..0c98146 100644 --- a/pgcontents/utils/ipycompat.py +++ b/pgcontents/utils/ipycompat.py @@ -13,18 +13,6 @@ ) from jupyter_server.services.contents.manager import ContentsManager from jupyter_server.utils import to_os_path -""" -from notebook.services.contents.checkpoints import ( - Checkpoints, - GenericCheckpointsMixin, -) -from notebook.services.contents.filemanager import FileContentsManager -from notebook.services.contents.filecheckpoints import ( - GenericFileCheckpoints -) -from notebook.services.contents.manager import ContentsManager -from notebook.utils import to_os_path -""" from nbformat import from_dict, reads, writes from nbformat.v4.nbbase import ( new_code_cell,