scratchattach 2.1.14__tar.gz → 2.1.15b0__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 (86) hide show
  1. {scratchattach-2.1.14/scratchattach.egg-info → scratchattach-2.1.15b0}/PKG-INFO +1 -1
  2. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/blockshape.py +2 -2
  3. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/commons.py +1 -34
  4. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/project.py +5 -4
  5. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/session.py +1 -1
  6. {scratchattach-2.1.14 → scratchattach-2.1.15b0/scratchattach.egg-info}/PKG-INFO +1 -1
  7. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/setup.py +1 -1
  8. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/LICENSE +0 -0
  9. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/MANIFEST.in +0 -0
  10. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/README.md +0 -0
  11. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/requirements.txt +0 -0
  12. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/__init__.py +0 -0
  13. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/cloud/__init__.py +0 -0
  14. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/cloud/_base.py +0 -0
  15. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/cloud/cloud.py +0 -0
  16. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/__init__.py +0 -0
  17. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/asset.py +0 -0
  18. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/backpack_json.py +0 -0
  19. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/base.py +0 -0
  20. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/block.py +0 -0
  21. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/build_defaulting.py +0 -0
  22. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/code_translation/__init__.py +0 -0
  23. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/code_translation/parse.py +0 -0
  24. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/comment.py +0 -0
  25. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/extension.py +0 -0
  26. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/field.py +0 -0
  27. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/inputs.py +0 -0
  28. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/meta.py +0 -0
  29. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/monitor.py +0 -0
  30. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/mutation.py +0 -0
  31. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/pallete.py +0 -0
  32. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/prim.py +0 -0
  33. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/project.py +0 -0
  34. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/sprite.py +0 -0
  35. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/twconfig.py +0 -0
  36. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/editor/vlb.py +0 -0
  37. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/__init__.py +0 -0
  38. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/_base.py +0 -0
  39. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/cloud_events.py +0 -0
  40. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/cloud_recorder.py +0 -0
  41. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/cloud_requests.py +0 -0
  42. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/cloud_server.py +0 -0
  43. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/cloud_storage.py +0 -0
  44. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/combine.py +0 -0
  45. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/filterbot.py +0 -0
  46. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/eventhandlers/message_events.py +0 -0
  47. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/other/__init__.py +0 -0
  48. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/other/other_apis.py +0 -0
  49. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/other/project_json_capabilities.py +0 -0
  50. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/__init__.py +0 -0
  51. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/_base.py +0 -0
  52. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/activity.py +0 -0
  53. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/alert.py +0 -0
  54. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/backpack_asset.py +0 -0
  55. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/browser_cookie3_stub.py +0 -0
  56. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/browser_cookies.py +0 -0
  57. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/classroom.py +0 -0
  58. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/cloud_activity.py +0 -0
  59. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/comment.py +0 -0
  60. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/forum.py +0 -0
  61. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/studio.py +0 -0
  62. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/site/user.py +0 -0
  63. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/__init__.py +0 -0
  64. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/commons.py +0 -0
  65. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/encoder.py +0 -0
  66. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/enums.py +0 -0
  67. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/exceptions.py +0 -0
  68. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach/utils/requests.py +0 -0
  69. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach.egg-info/SOURCES.txt +0 -0
  70. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach.egg-info/dependency_links.txt +0 -0
  71. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach.egg-info/requires.txt +0 -0
  72. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/scratchattach.egg-info/top_level.txt +0 -0
  73. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/setup.cfg +0 -0
  74. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_activity.py +0 -0
  75. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_auth.py +0 -0
  76. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_comment.py +0 -0
  77. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_editor_integration.py +0 -0
  78. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_editor_obfuscation.py +0 -0
  79. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_editor_project.py +0 -0
  80. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_import.py +0 -0
  81. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_other_apis.py +0 -0
  82. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_project.py +0 -0
  83. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_search.py +0 -0
  84. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_studio.py +0 -0
  85. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_teacher_activity.py +0 -0
  86. {scratchattach-2.1.14 → scratchattach-2.1.15b0}/tests/test_user.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scratchattach
3
- Version: 2.1.14
3
+ Version: 2.1.15b0
4
4
  Summary: A Scratch API Wrapper
5
5
  Author: TimMcCool
6
6
  Author-email:
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
 
6
6
  # Perhaps this should be merged with pallete.py
7
7
  from dataclasses import dataclass
8
- from typing import Final
8
+ from typing import Final, Literal
9
9
 
10
10
  from . import commons
11
11
  from scratchattach.utils.enums import _EnumWrapper
@@ -20,7 +20,7 @@ class _MutationDependent(commons.Singleton):
20
20
  raise TypeError("Need mutation data to work out attribute value.")
21
21
 
22
22
 
23
- MUTATION_DEPENDENT: Final[_MutationDependent] = _MutationDependent()
23
+ MUTATION_DEPENDENT: Final[Literal[_MutationDependent]] = _MutationDependent.INSTANCE
24
24
  """Value used when mutation data is required to work out the attribute value"""
25
25
 
26
26
 
@@ -269,38 +269,5 @@ class SingletonMeta(EnumMeta):
269
269
  self.__bases__ = old_bases
270
270
  return result
271
271
 
272
+ Singleton = Enum
272
273
 
273
- if TYPE_CHECKING:
274
- Singleton = Enum
275
- else:
276
- class Singleton(metaclass=SingletonMeta):
277
-
278
- def __new__(cls, val=None):
279
- if cls is Singleton:
280
- raise TypeError("Singleton cannot be created directly.")
281
- if hasattr(cls, "INSTANCE"):
282
- return getattr(cls, "INSTANCE")
283
- if val == 0:
284
- return super().__new__(cls)
285
- raise TypeError("Has no instance.")
286
-
287
- def __init__(self, *args, **kwds):
288
- pass
289
-
290
- def __repr__(self):
291
- return self.__class__.__name__
292
-
293
- def __str__(self):
294
- return self.__class__.__name__
295
-
296
- def __format__(self, format_spec):
297
- return str.__format__(str(self), format_spec)
298
-
299
- def __hash__(self):
300
- return hash(self.__class__)
301
-
302
- def __reduce_ex__(self, proto):
303
- return self.__class__, ()
304
-
305
- def __deepcopy__(self, memo):
306
- return self
@@ -243,7 +243,7 @@ class Project(PartialProject):
243
243
  # Overrides the load_description method that exists for unshared projects
244
244
  self.update()
245
245
 
246
- def download(self, *, filename=None, dir=""):
246
+ def download(self, *, filename=None, dir="."):
247
247
  """
248
248
  Downloads the project json to the given directory.
249
249
 
@@ -255,14 +255,15 @@ class Project(PartialProject):
255
255
  if filename is None:
256
256
  filename = str(self.id)
257
257
  if not (dir.endswith("/") or dir.endswith("\\")):
258
- dir = dir+"/"
258
+ dir += "/"
259
259
  self.update()
260
260
  response = requests.get(
261
261
  f"https://projects.scratch.mit.edu/{self.id}?token={self.project_token}",
262
262
  timeout=10,
263
263
  )
264
- filename = filename.replace(".sb3", "")
265
- open(f"{dir}{filename}.sb3", "wb").write(response.content)
264
+ filename = filename.removesuffix(".sb3")
265
+ with open(f"{dir}{filename}.sb3", "wb") as f:
266
+ f.write(response.content)
266
267
  except Exception:
267
268
  raise (
268
269
  exceptions.FetchError(
@@ -46,7 +46,7 @@ def enforce_ratelimit(__type: str, name: str, amount: int = 5, duration: int = 6
46
46
  cache = ratelimit_cache
47
47
  cache.setdefault(__type, [])
48
48
  uses = cache[__type]
49
- while uses[-1] < time.time() - duration:
49
+ while uses and uses[-1] < time.time() - duration:
50
50
  uses.pop()
51
51
  if len(uses) < amount:
52
52
  uses.insert(0, time.time())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scratchattach
3
- Version: 2.1.14
3
+ Version: 2.1.15b0
4
4
  Summary: A Scratch API Wrapper
5
5
  Author: TimMcCool
6
6
  Author-email:
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
  import codecs
3
3
  import os
4
4
 
5
- VERSION = '2.1.14'
5
+ VERSION = '2.1.15b0'
6
6
  DESCRIPTION = 'A Scratch API Wrapper'
7
7
  with open('README.md', encoding='utf-8') as f:
8
8
  LONG_DESCRIPTION = f.read()
File without changes