scratchattach 2.1.10a2__tar.gz → 2.1.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/PKG-INFO +1 -1
  2. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/cloud_requests.py +6 -4
  3. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/_base.py +3 -2
  4. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/project.py +0 -2
  5. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/user.py +13 -14
  6. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach.egg-info/PKG-INFO +1 -1
  7. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/setup.py +1 -1
  8. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/LICENSE +0 -0
  9. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/README.md +0 -0
  10. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/__init__.py +0 -0
  11. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/cloud/__init__.py +0 -0
  12. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/cloud/_base.py +0 -0
  13. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/cloud/cloud.py +0 -0
  14. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/__init__.py +0 -0
  15. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/asset.py +0 -0
  16. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/backpack_json.py +0 -0
  17. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/base.py +0 -0
  18. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/block.py +0 -0
  19. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/blockshape.py +0 -0
  20. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/build_defaulting.py +0 -0
  21. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/comment.py +0 -0
  22. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/commons.py +0 -0
  23. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/extension.py +0 -0
  24. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/field.py +0 -0
  25. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/inputs.py +0 -0
  26. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/meta.py +0 -0
  27. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/monitor.py +0 -0
  28. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/mutation.py +0 -0
  29. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/pallete.py +0 -0
  30. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/prim.py +0 -0
  31. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/project.py +0 -0
  32. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/sbuild.py +0 -0
  33. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/sprite.py +0 -0
  34. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/twconfig.py +0 -0
  35. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/editor/vlb.py +0 -0
  36. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/__init__.py +0 -0
  37. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/_base.py +0 -0
  38. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/cloud_events.py +0 -0
  39. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/cloud_recorder.py +0 -0
  40. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/cloud_server.py +0 -0
  41. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/cloud_storage.py +0 -0
  42. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/combine.py +0 -0
  43. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/filterbot.py +0 -0
  44. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/eventhandlers/message_events.py +0 -0
  45. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/other/__init__.py +0 -0
  46. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/other/other_apis.py +0 -0
  47. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/other/project_json_capabilities.py +0 -0
  48. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/__init__.py +0 -0
  49. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/activity.py +0 -0
  50. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/backpack_asset.py +0 -0
  51. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/browser_cookies.py +0 -0
  52. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/classroom.py +0 -0
  53. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/cloud_activity.py +0 -0
  54. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/comment.py +0 -0
  55. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/forum.py +0 -0
  56. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/session.py +0 -0
  57. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/site/studio.py +0 -0
  58. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/__init__.py +0 -0
  59. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/commons.py +0 -0
  60. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/encoder.py +0 -0
  61. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/enums.py +0 -0
  62. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/exceptions.py +0 -0
  63. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach/utils/requests.py +0 -0
  64. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach.egg-info/SOURCES.txt +0 -0
  65. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach.egg-info/dependency_links.txt +0 -0
  66. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach.egg-info/requires.txt +0 -0
  67. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/scratchattach.egg-info/top_level.txt +0 -0
  68. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/setup.cfg +0 -0
  69. {scratchattach-2.1.10a2 → scratchattach-2.1.11}/tests/test_import.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scratchattach
3
- Version: 2.1.10a2
3
+ Version: 2.1.11
4
4
  Summary: A Scratch API Wrapper
5
5
  Home-page: https://scratchattach.tim1de.net
6
6
  Author: TimMcCool
@@ -23,7 +23,7 @@ class Request:
23
23
  self.enabled = enabled
24
24
  self.response_priority = response_priority
25
25
  self.cloud_requests = cloud_requests # the corresponding CloudRequests object
26
- self.debug = debug
26
+ self.debug = debug or self.cloud_requests.debug
27
27
 
28
28
  def __call__(self, received_request):
29
29
  if not self.enabled:
@@ -63,7 +63,7 @@ class CloudRequests(CloudEvents):
63
63
 
64
64
  # The CloudRequests class is built upon CloudEvents, similar to how Filterbot is built upon MessageEvents
65
65
 
66
- def __init__(self, cloud, used_cloud_vars=["1", "2", "3", "4", "5", "6", "7", "8", "9"], no_packet_loss=False, respond_order="receive"):
66
+ def __init__(self, cloud, used_cloud_vars=["1", "2", "3", "4", "5", "6", "7", "8", "9"], no_packet_loss=False, respond_order="receive", debug=False):
67
67
  super().__init__(cloud)
68
68
  # Setup
69
69
  self._requests = {}
@@ -73,6 +73,7 @@ class CloudRequests(CloudEvents):
73
73
  self.no_packet_loss = no_packet_loss # When enabled, query the clouddata log regularly for missed requests and reconnect after every single request (reduces packet loss a lot, but is spammy and can make response duration longer)
74
74
  self.used_cloud_vars = used_cloud_vars
75
75
  self.respond_order = respond_order
76
+ self.debug = debug
76
77
 
77
78
  # Lists and dicts for saving request-related stuff
78
79
  self.request_parts = {} # Dict (key: request_id) for saving the parts of the requests not fully received yet
@@ -99,7 +100,7 @@ class CloudRequests(CloudEvents):
99
100
 
100
101
  # -- Adding and removing requests --
101
102
 
102
- def request(self, function=None, *, enabled=True, name=None, thread=True, response_priority=0):
103
+ def request(self, function=None, *, enabled=True, name=None, thread=True, response_priority=0, debug=False):
103
104
  """
104
105
  Decorator function. Adds a request to the request handler.
105
106
  """
@@ -113,7 +114,8 @@ class CloudRequests(CloudEvents):
113
114
  thread=thread,
114
115
  response_priority=response_priority,
115
116
  on_call=function,
116
- cloud_requests=self
117
+ cloud_requests=self,
118
+ debug=debug
117
119
  )
118
120
 
119
121
  if function is None:
@@ -4,9 +4,10 @@ from abc import ABC, abstractmethod
4
4
 
5
5
  import requests
6
6
  from ..utils import exceptions, commons
7
+ from typing import TypeVar
7
8
  from types import FunctionType
8
9
 
9
-
10
+ C = TypeVar("C", bound="BaseSiteComponent")
10
11
  class BaseSiteComponent(ABC):
11
12
  @abstractmethod
12
13
  def __init__(self):
@@ -51,7 +52,7 @@ class BaseSiteComponent(ABC):
51
52
  raise exceptions.Unauthenticated(
52
53
  "You need to use session.connect_xyz (NOT get_xyz) in order to perform this operation.")
53
54
 
54
- def _make_linked_object(self, identificator_id, identificator, Class, NotFoundException) -> BaseSiteComponent:
55
+ def _make_linked_object(self, identificator_id, identificator, Class: type[C], NotFoundException) -> C:
55
56
  """
56
57
  Internal function for making a linked object (authentication kept) based on an identificator (like a project id or username)
57
58
  Class must inherit from BaseSiteComponent
@@ -136,8 +136,6 @@ class PartialProject(BaseSiteComponent):
136
136
  """
137
137
  self._assert_auth()
138
138
 
139
- global CREATE_PROJECT_USES
140
-
141
139
  if title is None:
142
140
  if "title" in self.__dict__:
143
141
  title = self.title+" remix"
@@ -19,6 +19,17 @@ from . import activity
19
19
 
20
20
  from ..utils.requests import Requests as requests
21
21
 
22
+ class Verificator:
23
+
24
+ def __init__(self, user: User, project_id: int):
25
+ self.project = user._make_linked_object("id", project_id, project.Project, exceptions.ProjectNotFound)
26
+ self.projecturl = self.project.url
27
+ self.code = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
28
+ self.username = user.username
29
+
30
+ def check(self) -> bool:
31
+ return bool(list(filter(lambda x : x.author_name == self.username and (x.content == self.code or x.content.startswith(self.code) or x.content.endswith(self.code)), self.project.comments())))
32
+
22
33
  class User(BaseSiteComponent):
23
34
 
24
35
  '''
@@ -799,20 +810,8 @@ class User(BaseSiteComponent):
799
810
  It will return True if the user commented the code.
800
811
  """
801
812
 
802
- class Verificator:
803
-
804
- def __init__(self, user):
805
- self.project = user._make_linked_object("id", verification_project_id, project.Project, exceptions.ProjectNotFound)
806
- self.projecturl = self.project.url
807
- self.code = ''.join(random.choices(string.ascii_letters + string.digits, k=130))
808
- self.username = user.username
809
-
810
- def check(self):
811
- return list(filter(lambda x : x.author_name == self.username, self.project.comments())) != []
812
-
813
- v = Verificator(self)
814
- print(f"{self.username} has to go to {v.projecturl} and comment {v.code} to verify their identity")
815
- return Verificator(self)
813
+ v = Verificator(self, verification_project_id)
814
+ return v
816
815
 
817
816
  # ------ #
818
817
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scratchattach
3
- Version: 2.1.10a2
3
+ Version: 2.1.11
4
4
  Summary: A Scratch API Wrapper
5
5
  Home-page: https://scratchattach.tim1de.net
6
6
  Author: TimMcCool
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '2.1.10a2'
5
+ VERSION = '2.1.11'
6
6
  DESCRIPTION = 'A Scratch API Wrapper'
7
7
  LONG_DESCRIPTION = DESCRIPTION
8
8
 
File without changes