MCPcopy Create free account
hub / github.com/TimMcCool/scratchattach / Project

Class Project

scratchattach/editor/project.py:17–387  ·  view source on GitHub ↗

A Project (body). Represents the editor contents of a scratch project

Source from the content-addressed store, hash-verified

15
16
17class Project(base.JSONExtractable):
18 """
19 A Project (body). Represents the editor contents of a scratch project
20 """
21
22 def __init__(
23 self,
24 _name: Optional[str] = None,
25 _meta: Optional[meta.Meta] = None,
26 _extensions: Iterable[extension.Extension] = (),
27 _monitors: Iterable[monitor.Monitor] = (),
28 _sprites: Iterable[sprite.Sprite] = (),
29 *,
30 _asset_data: Optional[list[asset.AssetFile]] = None,
31 _session: Optional[session.Session] = None,
32 ):
33 # Defaulting for list parameters
34 if _meta is None:
35 _meta = meta.Meta()
36 if _asset_data is None:
37 _asset_data = []
38
39 self._session = _session
40
41 self.name = _name
42
43 self.meta = _meta
44 self.extensions: list[extension.Extension] = list(_extensions)
45 self.monitors = list(_monitors)
46 self.sprites = list(_sprites)
47
48 self.asset_data = _asset_data
49
50 self._tw_config_comment = None
51
52 # Link subcomponents
53 for iterable in (self.monitors, self.sprites):
54 for _subcomponent in iterable:
55 _subcomponent.project = self
56
57 # Link sprites
58 _stage_count = 0
59
60 for _sprite in self.sprites:
61 if _sprite.is_stage:
62 _stage_count += 1
63
64 _sprite.link_subcomponents()
65
66 # Link monitors
67 for _monitor in self.monitors:
68 _monitor.link_using_project()
69
70 if _stage_count != 1:
71 raise exceptions.InvalidStageCount(f"Project {self}")
72
73 def __repr__(self):
74 _ret = "Project<"

Callers 1

from_jsonMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected