Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions scratchattach/cloud/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ def close(self) -> None:

import websocket

from ..site import session
from ..eventhandlers import cloud_recorder
from ..utils import exceptions
from ..eventhandlers.cloud_requests import CloudRequests
from ..eventhandlers.cloud_events import CloudEvents
from ..eventhandlers.cloud_storage import CloudStorage
from ..site import cloud_activity
from scratchattach.site import session
from scratchattach.eventhandlers import cloud_recorder
from scratchattach.utils import exceptions
from scratchattach.eventhandlers.cloud_requests import CloudRequests
from scratchattach.eventhandlers.cloud_events import CloudEvents
from scratchattach.eventhandlers.cloud_storage import CloudStorage
from scratchattach.site import cloud_activity

T = TypeVar("T")

Expand Down
8 changes: 4 additions & 4 deletions scratchattach/cloud/cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

from ._base import BaseCloud
from typing import Type
from ..utils.requests import requests
from ..utils import exceptions, commons
from ..site import cloud_activity
from scratchattach.utils.requests import requests
from scratchattach.utils import exceptions, commons
from scratchattach.site import cloud_activity


class ScratchCloud(BaseCloud):
Expand Down Expand Up @@ -88,7 +88,7 @@ def get_all_vars(self, *, use_logs=False):

def events(self, *, use_logs=False):
if self._session is None or use_logs:
from ..eventhandlers.cloud_events import CloudLogEvents
from scratchattach.eventhandlers.cloud_events import CloudLogEvents
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a way to make this into a top-level import? Imports within functions are not ideal

return CloudLogEvents(self)
else:
return super().events()
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/block.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing_extensions import Self

from . import base, sprite, mutation, field, inputs, commons, vlb, blockshape, prim, comment, build_defaulting
from ..utils import exceptions
from scratchattach.utils import exceptions


class Block(base.SpriteSubComponent):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/blockshape.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from typing import Final

from . import commons
from ..utils.enums import _EnumWrapper
from scratchattach.utils.enums import _EnumWrapper


class _MutationDependent(commons.Singleton):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/commons.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import string
from typing import Optional, Final, Any

from ..utils import exceptions
from scratchattach.utils import exceptions

DIGITS: Final[tuple[str]] = tuple("0123456789")

Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/extension.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from dataclasses import dataclass

from . import base
from ..utils import enums
from scratchattach.utils import enums


@dataclass
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/mutation.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from typing import Optional, TYPE_CHECKING, Iterable, Any

from . import base, commons
from ..utils import enums
from scratchattach.utils import enums

if TYPE_CHECKING:
from . import block
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/pallete.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from dataclasses import dataclass

from . import prim
from ..utils.enums import _EnumWrapper
from scratchattach.utils.enums import _EnumWrapper


@dataclass
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/prim.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from typing import Optional, Callable, Final

from . import base, sprite, vlb, commons, build_defaulting
from ..utils import enums, exceptions
from scratchattach.utils import enums, exceptions


@dataclass
Expand Down
6 changes: 3 additions & 3 deletions scratchattach/editor/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
from zipfile import ZipFile

from . import base, meta, extension, monitor, sprite, asset, vlb, twconfig, comment, commons
from ..site import session
from ..site.project import get_project
from ..utils import exceptions
from scratchattach.site import session
from scratchattach.site.project import get_project
from scratchattach.utils import exceptions


class Project(base.JSONExtractable):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/editor/vlb.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from typing import Optional, Literal

from . import base, sprite, build_defaulting
from ..utils import exceptions
from scratchattach.utils import exceptions


class Variable(base.NamedIDComponent):
Expand Down
4 changes: 2 additions & 2 deletions scratchattach/eventhandlers/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
from threading import Thread
from collections.abc import Callable
import traceback
from ..utils.requests import requests
from ..utils import exceptions
from scratchattach.utils.requests import requests
from scratchattach.utils import exceptions

class BaseEventHandler(ABC):
_events: defaultdict[str, list[Callable]]
Expand Down
4 changes: 2 additions & 2 deletions scratchattach/eventhandlers/cloud_events.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
"""CloudEvents class"""
from __future__ import annotations

from ..cloud import _base
from scratchattach.cloud import _base
from ._base import BaseEventHandler
from ..site import cloud_activity
from scratchattach.site import cloud_activity
import time
import json
from collections.abc import Iterator
Expand Down
6 changes: 3 additions & 3 deletions scratchattach/eventhandlers/cloud_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
from __future__ import annotations

from .cloud_events import CloudEvents
from ..site import project
from scratchattach.site import project
from threading import Thread, Event, current_thread
import time
import random
import traceback
from ..utils.encoder import Encoding
from ..utils import exceptions
from scratchattach.utils.encoder import Encoding
from scratchattach.utils import exceptions

class Request:

Expand Down
6 changes: 3 additions & 3 deletions scratchattach/eventhandlers/cloud_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

from SimpleWebSocketServer import SimpleWebSocketServer, WebSocket
from threading import Thread
from ..utils import exceptions
from scratchattach.utils import exceptions
import json
import time
from ..site import cloud_activity
from ..site.user import User
from scratchattach.site import cloud_activity
from scratchattach.site.user import User
from ._base import BaseEventHandler

class TwCloudSocket(WebSocket):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/eventhandlers/message_events.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""MessageEvents class"""
from __future__ import annotations

from ..site import user
from scratchattach.site import user
from ._base import BaseEventHandler
import time

Expand Down
8 changes: 4 additions & 4 deletions scratchattach/other/other_apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import json
from dataclasses import dataclass, field

from ..utils import commons
from ..utils.enums import Languages, Language, TTSVoices, TTSVoice
from ..utils.exceptions import BadRequest, InvalidLanguage, InvalidTTSGender
from ..utils.requests import requests
from scratchattach.utils import commons
from scratchattach.utils.enums import Languages, Language, TTSVoices, TTSVoice
from scratchattach.utils.exceptions import BadRequest, InvalidLanguage, InvalidTTSGender
from scratchattach.utils.requests import requests
from typing import Optional


Expand Down
6 changes: 3 additions & 3 deletions scratchattach/other/project_json_capabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
import string
import zipfile
from abc import ABC, abstractmethod
from ..utils import exceptions
from ..utils.commons import empty_project_json
from ..utils.requests import requests
from scratchattach.utils import exceptions
from scratchattach.utils.commons import empty_project_json
from scratchattach.utils.requests import requests
# noinspection PyPep8Naming
def load_components(json_data: list, ComponentClass: type, target_list: list):
for element in json_data:
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/site/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from typing import TypeVar, Optional

import requests
from scratchattach.utils import exceptions, commons
from . import session
from ..utils import exceptions, commons

C = TypeVar("C", bound="BaseSiteComponent")
class BaseSiteComponent(ABC):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/site/activity.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from . import user, project, studio
from ._base import BaseSiteComponent
from ..utils import exceptions
from scratchattach.utils import exceptions


class Activity(BaseSiteComponent):
Expand Down
2 changes: 1 addition & 1 deletion scratchattach/site/alert.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from typing_extensions import Self

from . import user, project, studio, comment, session
from ..utils import enums
from scratchattach.utils import enums

if TYPE_CHECKING:
...
Expand Down
4 changes: 2 additions & 2 deletions scratchattach/site/backpack_asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import logging

from ._base import BaseSiteComponent
from ..utils import exceptions
from ..utils.requests import requests
from scratchattach.utils import exceptions
from scratchattach.utils.requests import requests



Expand Down
8 changes: 4 additions & 4 deletions scratchattach/site/classroom.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
import bs4

if TYPE_CHECKING:
from ..site.session import Session
from scratchattach.site.session import Session

from ..utils.commons import requests
from scratchattach.utils.commons import requests
from . import user, activity
from ._base import BaseSiteComponent
from ..utils import exceptions, commons
from ..utils.commons import headers
from scratchattach.utils import exceptions, commons
from scratchattach.utils.commons import headers

from bs4 import BeautifulSoup

Expand Down
8 changes: 4 additions & 4 deletions scratchattach/site/cloud_activity.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ def actor(self):
"""
if self.username is None:
return None
from ..site import user
from ..utils import exceptions
from scratchattach.site import user
from scratchattach.utils import exceptions
return self._make_linked_object("username", self.username, user.User, exceptions.UserNotFound)

def project(self):
Expand All @@ -101,7 +101,7 @@ def project(self):
"""
if self.cloud is None:
return None
from ..site import project
from ..utils import exceptions
from scratchattach.site import project
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If possible, we should try to make these imports top-level

Copy link
Collaborator Author

@TheCommCraft TheCommCraft Jun 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?
edit: oh yeah

from scratchattach.utils import exceptions
return self._make_linked_object("id", self.cloud.project_id, project.Project, exceptions.ProjectNotFound)

2 changes: 1 addition & 1 deletion scratchattach/site/comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from . import user, project, studio
from ._base import BaseSiteComponent
from ..utils import exceptions
from scratchattach.utils import exceptions

class CommentSource(Enum):
PROJECT = auto()
Expand Down
6 changes: 3 additions & 3 deletions scratchattach/site/forum.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@

from . import user
from . import session as module_session
from ..utils.commons import headers
from ..utils import exceptions, commons
from scratchattach.utils.commons import headers
from scratchattach.utils import exceptions, commons
from ._base import BaseSiteComponent
from ..utils.requests import requests
from scratchattach.utils.requests import requests

@dataclass
class ForumTopic(BaseSiteComponent):
Expand Down
10 changes: 5 additions & 5 deletions scratchattach/site/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@

from typing import Any
from . import user, comment, studio
from ..utils import exceptions
from ..utils import commons
from ..utils.commons import empty_project_json, headers
from scratchattach.utils import exceptions
from scratchattach.utils import commons
from scratchattach.utils.commons import empty_project_json, headers
from ._base import BaseSiteComponent
from ..other.project_json_capabilities import ProjectBody
from ..utils.requests import requests
from scratchattach.other.project_json_capabilities import ProjectBody
from scratchattach.utils.requests import requests

CREATE_PROJECT_USES: list[float] = []

Expand Down
16 changes: 8 additions & 8 deletions scratchattach/site/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

if TYPE_CHECKING:
from _typeshed import FileDescriptorOrPath, SupportsRead
from ..cloud._base import BaseCloud
from scratchattach.cloud._base import BaseCloud
T = TypeVar("T", bound=BaseCloud)
else:
T = TypeVar("T")
Expand All @@ -31,13 +31,13 @@
from . import activity, classroom, forum, studio, user, project, backpack_asset, alert
# noinspection PyProtectedMember
from ._base import BaseSiteComponent
from ..cloud import cloud, _base
from ..eventhandlers import message_events, filterbot
from ..other import project_json_capabilities
from ..utils import commons
from ..utils import exceptions
from ..utils.commons import headers, empty_project_json, webscrape_count, get_class_sort_mode
from ..utils.requests import requests
from scratchattach.cloud import cloud, _base
from scratchattach.eventhandlers import message_events, filterbot
from scratchattach.other import project_json_capabilities
from scratchattach.utils import commons
from scratchattach.utils import exceptions
from scratchattach.utils.commons import headers, empty_project_json, webscrape_count, get_class_sort_mode
from scratchattach.utils.requests import requests
from .browser_cookies import Browser, ANY, cookies_from_browser

ratelimit_cache: dict[str, list[float]] = {}
Expand Down
6 changes: 3 additions & 3 deletions scratchattach/site/studio.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
import json
import random
from . import user, comment, project, activity
from ..utils import exceptions, commons
from ..utils.commons import api_iterative, headers
from scratchattach.utils import exceptions, commons
from scratchattach.utils.commons import api_iterative, headers
from ._base import BaseSiteComponent

from ..utils.requests import requests
from scratchattach.utils.requests import requests


class Studio(BaseSiteComponent):
Expand Down
Loading