From af5297cc69c0531cad61c034bdd3b35ad0fdb402 Mon Sep 17 00:00:00 2001 From: Boss_1s <95505913+Boss-1s@users.noreply.github.com> Date: Fri, 8 May 2026 21:59:04 -0500 Subject: [PATCH 1/3] feat: temporarily negate warnings in `Project.is_shared` method Signed-off-by: Boss_1s <95505913+Boss-1s@users.noreply.github.com> --- scratchattach/site/project.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scratchattach/site/project.py b/scratchattach/site/project.py index e7d5e4ed..98c00fb0 100644 --- a/scratchattach/site/project.py +++ b/scratchattach/site/project.py @@ -186,12 +186,14 @@ def is_shared(self): boolean: Returns whether the project is currently shared """ try: - p = get_project(self.id) - return isinstance(p, Project) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=exceptions.ProjectAuthenticationWarning) + p = get_project(self.id) + return isinstance(p, Project) except exceptions.ProjectNotFound: return False - def raw_json_or_empty(self) -> dict[str, Any]: + def raw_json_or_empty(self) -> dict[str, Any] return empty_project_json def create_remix(self, *, title=None, project_json=None) -> Project: # not working From 40c96a4b09a77795e8bbd3254b12f1b86c3543d8 Mon Sep 17 00:00:00 2001 From: Boss_1s <95505913+Boss-1s@users.noreply.github.com> Date: Sat, 9 May 2026 15:20:41 -0500 Subject: [PATCH 2/3] fix: missing colon Signed-off-by: Boss_1s <95505913+Boss-1s@users.noreply.github.com> --- scratchattach/site/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scratchattach/site/project.py b/scratchattach/site/project.py index 98c00fb0..dc27f229 100644 --- a/scratchattach/site/project.py +++ b/scratchattach/site/project.py @@ -193,7 +193,7 @@ def is_shared(self): except exceptions.ProjectNotFound: return False - def raw_json_or_empty(self) -> dict[str, Any] + def raw_json_or_empty(self) -> dict[str, Any]: return empty_project_json def create_remix(self, *, title=None, project_json=None) -> Project: # not working From 9fe2da0b9bb51e8543ac06f6703b4864497ff082 Mon Sep 17 00:00:00 2001 From: TheCommCraft <79996518+TheCommCraft@users.noreply.github.com> Date: Sun, 10 May 2026 14:57:56 +0200 Subject: [PATCH 3/3] use api endpoint directly --- scratchattach/site/project.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/scratchattach/site/project.py b/scratchattach/site/project.py index dc27f229..60f28232 100644 --- a/scratchattach/site/project.py +++ b/scratchattach/site/project.py @@ -9,7 +9,7 @@ import warnings import zipfile from io import BytesIO -from typing import Callable, Union +from typing import Callable, Union, cast from dataclasses import dataclass, field from typing import Any, Optional @@ -185,13 +185,11 @@ def is_shared(self): Returns: boolean: Returns whether the project is currently shared """ - try: - with warnings.catch_warnings(): - warnings.simplefilter("ignore", category=exceptions.ProjectAuthenticationWarning) - p = get_project(self.id) - return isinstance(p, Project) - except exceptions.ProjectNotFound: + response = requests.get(f"https://api.scratch.mit.edu/projects/{self.id}") + if response.status_code == 404: return False + response_json = cast(ProjectDict, response.json()) + return response_json["is_published"] def raw_json_or_empty(self) -> dict[str, Any]: return empty_project_json