cuemsutils 0.0.4.post4__tar.gz → 0.0.6__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuemsutils
3
- Version: 0.0.4.post4
3
+ Version: 0.0.6
4
4
  Summary: Reusable classes and methods for CueMS system
5
5
  Project-URL: Documentation, https://github.com/stagesoft/cuems-utils#readme
6
6
  Project-URL: Issues, https://github.com/stagesoft/cuems-utils/issues
@@ -18,7 +18,9 @@ Classifier: Programming Language :: Python :: 3.12
18
18
  Classifier: Programming Language :: Python :: Implementation :: CPython
19
19
  Classifier: Programming Language :: Python :: Implementation :: PyPy
20
20
  Requires-Python: >=3.8
21
+ Requires-Dist: json-fix==1.0.0
21
22
  Requires-Dist: lxml==5.3.0
23
+ Requires-Dist: pynng==0.8.1
22
24
  Requires-Dist: timecode
23
25
  Requires-Dist: xmlschema==3.4.3
24
26
  Description-Content-Type: text/markdown
@@ -45,10 +47,21 @@ pip install cuemsutils
45
47
 
46
48
  ## Release notes
47
49
 
50
+ ### v0.0.6
51
+ - `CuemsScript` now includes `ui_properties` property to store UI related properties as a dictionary without restrictions.
52
+ - fixed misspelling at `Communicator` class
53
+ - internal method `to_cuemsdict` renamed to `as_cuemsdict` for clarity
54
+
48
55
  ### v0.0.5
49
- - All properties of objects are lowercase (i.e. `media` and `outputs` at `MediaCue`). Camelcase used for classes, `region` is the only exception and will become deprecated on following versions.
56
+ - All properties of objects are lowercase except the ones representing classes (e.g. `CueList` at `CuemsScript` and `Media` at `MediaCue`).
57
+ - Parameters renamed for clarity:
58
+ - `uuid` -> `id`
59
+ - `loaded` -> `autoload`
60
+ - `bott_*` -> `bottom_*`
50
61
  - User facing classes can be exported directly (e.g. `from cuemsutils.cues import AudioCue, VideoCue`)
51
62
  - `Cue` is not longer an accepted object for script validation
63
+ - `ui_properties` has become an `CuemsDict` object to facilitate modifications and requierements for UI development.
64
+ - `CuemsScript` object has method `to_json` to convert its contents to json format. Internally works via `json.dumps` and specific calls to methods `__json__` when available at class level.
52
65
 
53
66
  ### v0.0.4
54
67
  - `Logger` fixed to allow empty `extra` parameter
@@ -20,10 +20,21 @@ pip install cuemsutils
20
20
 
21
21
  ## Release notes
22
22
 
23
+ ### v0.0.6
24
+ - `CuemsScript` now includes `ui_properties` property to store UI related properties as a dictionary without restrictions.
25
+ - fixed misspelling at `Communicator` class
26
+ - internal method `to_cuemsdict` renamed to `as_cuemsdict` for clarity
27
+
23
28
  ### v0.0.5
24
- - All properties of objects are lowercase (i.e. `media` and `outputs` at `MediaCue`). Camelcase used for classes, `region` is the only exception and will become deprecated on following versions.
29
+ - All properties of objects are lowercase except the ones representing classes (e.g. `CueList` at `CuemsScript` and `Media` at `MediaCue`).
30
+ - Parameters renamed for clarity:
31
+ - `uuid` -> `id`
32
+ - `loaded` -> `autoload`
33
+ - `bott_*` -> `bottom_*`
25
34
  - User facing classes can be exported directly (e.g. `from cuemsutils.cues import AudioCue, VideoCue`)
26
35
  - `Cue` is not longer an accepted object for script validation
36
+ - `ui_properties` has become an `CuemsDict` object to facilitate modifications and requierements for UI development.
37
+ - `CuemsScript` object has method `to_json` to convert its contents to json format. Internally works via `json.dumps` and specific calls to methods `__json__` when available at class level.
27
38
 
28
39
  ### v0.0.4
29
40
  - `Logger` fixed to allow empty `extra` parameter
@@ -26,7 +26,9 @@ classifiers = [
26
26
  "Programming Language :: Python :: Implementation :: PyPy",
27
27
  ]
28
28
  dependencies = [
29
+ "json-fix==1.0.0",
29
30
  "timecode",
31
+ "pynng==0.8.1",
30
32
  "lxml==5.3.0",
31
33
  "xmlschema==3.4.3"
32
34
  ]
@@ -20,17 +20,19 @@
20
20
  <xs:complexType>
21
21
  <!-- Which is a sequence of one of each of these objects -->
22
22
  <xs:all>
23
- <!-- The uuid, TODO specify the uuid format in a type -->
24
- <xs:element name="uuid" type="cms:UuidType" />
23
+ <!-- The root cuelist of our project, mainly a cuelist at the root -->
24
+ <xs:element name="CueList" type="cms:CueListType" />
25
+ <!-- Long description of the script (0 - 255 chars) -->
26
+ <xs:element name="description" type="cms:DescriptionStringType" />
27
+ <!-- The id, TODO specify the uuid format in a type -->
28
+ <xs:element name="id" type="cms:UuidType" />
25
29
  <!-- The name, mainly a string, we can check lengths here too if desired -->
26
30
  <xs:element name="name" type="cms:NameStringType" /> <!-- 3 - 60 chars -->
27
- <!-- Long description of the script -->
28
- <xs:element name="description" type="cms:DescriptionStringType" /> <!-- 0 - 255 chars -->
29
31
  <!-- The date, Todo specify the date formant in a type-->
30
32
  <xs:element name="created" type="cms:DateType" />
31
33
  <xs:element name="modified" type="cms:DateType" />
32
- <!-- The root cuelist of our project, mainly a cuelist at the root -->
33
- <xs:element name="CueList" type="cms:CueListType" />
34
+ <!-- Dictionary of options for UI settings -->
35
+ <xs:element name="ui_properties" type="cms:UiPropertiesType" />
34
36
  </xs:all>
35
37
  <xs:assert test="modified &gt;= created" />
36
38
  </xs:complexType>
@@ -48,15 +50,16 @@
48
50
 
49
51
  <xs:complexType name="CommonPropertiesType">
50
52
  <xs:sequence>
53
+ <!-- A flag to indicate auto arming -->
54
+ <xs:element name="autoload" type="cms:BoolType" />
51
55
  <xs:element name="description" type="cms:DescriptionStringType" />
52
- <!-- A flag to disable to cue -->
56
+ <!-- A flag to enable|disable to cue -->
53
57
  <xs:element name="enabled" type="cms:BoolType" />
54
- <xs:element name="id" type="xs:string" />
55
- <!-- A flag to indicate auto arming -->
56
- <xs:element name="loaded" type="cms:BoolType" />
58
+ <!-- Its own id as uuid -->
59
+ <xs:element name="id" type="cms:UuidType" />
57
60
  <xs:element name="loop" type="cms:LoopType" /> <!-- -1/0/n -->
58
- <!-- Its time mark -->
59
61
  <xs:element name="name" type="cms:NameStringType" />
62
+ <!-- Its time mark -->
60
63
  <xs:element name="offset" type="cms:CTimecodeType" />
61
64
  <!-- Execution options -->
62
65
  <xs:element name="post_go" type="cms:PostGoType" /> <!-- Types: pause/go/go_at_end -->
@@ -65,10 +68,8 @@
65
68
  <xs:element name="target" type="cms:TargetType" /> <!-- target uuid or none -->
66
69
  <!-- Timecode behaviour flag -->
67
70
  <xs:element name="timecode" type="cms:BoolType" />
68
- <!-- Its own uuid -->
69
- <!-- <xs:element name="ui_properties" type="cms:UuidType" /> -->
70
- <xs:element name="uuid" type="cms:UuidType" />
71
- <!-- <xs:element name="ui_properties" type="cms:UiPropertiesType" /> -->
71
+ <!-- Dictionary of options for UI settings -->
72
+ <xs:element name="ui_properties" type="cms:UiPropertiesType" />
72
73
  </xs:sequence>
73
74
  </xs:complexType>
74
75
 
@@ -88,9 +89,7 @@
88
89
  <xs:choice minOccurs="0" maxOccurs="unbounded">
89
90
  <!-- Can have any other cuelists, recursively -->
90
91
  <xs:element name="CueList" type="cms:CueListType" />
91
- <!-- Can have any cues -->
92
- <!-- <xs:element name="Cue" type="cms:CueType" /> -->
93
- <!-- Can be also specific type cues -->
92
+ <!-- Can have any specific type cues -->
94
93
  <xs:element name="AudioCue" type="cms:AudioCueType" />
95
94
  <xs:element name="DmxCue" type="cms:DmxCueType" />
96
95
  <xs:element name="VideoCue" type="cms:VideoCueType" />
@@ -103,13 +102,100 @@
103
102
  <xs:complexContent>
104
103
  <xs:extension base="cms:CueType">
105
104
  <xs:sequence>
106
- <xs:element name="media" type="cms:MediaType" />
105
+ <xs:element name="Media" type="cms:MediaType" />
107
106
  <xs:element name="outputs" type="cms:OutputsType" />
108
107
  </xs:sequence>
109
108
  </xs:extension>
110
109
  </xs:complexContent>
111
110
  </xs:complexType>
112
111
 
112
+ <!-- COMPLEX DATA TYPES -->
113
+ <xs:complexType name="CTimecodeType">
114
+ <!-- Can be a timecode field or an empty NoneType field -->
115
+ <xs:choice minOccurs="0">
116
+ <xs:element name="CTimecode" type="cms:TimecodeType" />
117
+ </xs:choice>
118
+ </xs:complexType>
119
+
120
+ <xs:complexType name="Coordinates">
121
+ <xs:sequence>
122
+ <xs:element name="x" type="xs:integer" />
123
+ <xs:element name="y" type="xs:integer" />
124
+ </xs:sequence>
125
+ </xs:complexType>
126
+
127
+ <xs:complexType name="MediaType">
128
+ <xs:sequence minOccurs="0" maxOccurs="1">
129
+ <xs:element name="file_name" type="xs:string" />
130
+ <xs:element name="regions" type="cms:RegionsType" />
131
+ </xs:sequence>
132
+ </xs:complexType>
133
+
134
+ <xs:complexType name="OutputsType">
135
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
136
+ <xs:element name="AudioCueOutput" type="cms:AudioCueOutputsType" />
137
+ <xs:element name="VideoCueOutput" type="cms:VideoCueOutputsType" />
138
+ </xs:choice>
139
+ </xs:complexType>
140
+
141
+ <xs:complexType name="RegionsType">
142
+ <xs:sequence minOccurs="1" maxOccurs="unbounded">
143
+ <xs:element name="Region" type="cms:RegionType" />
144
+ </xs:sequence>
145
+ </xs:complexType>
146
+
147
+ <xs:complexType name="RegionType">
148
+ <xs:sequence minOccurs="1">
149
+ <xs:element name="id" type="xs:nonNegativeInteger" />
150
+ <xs:element name="loop" type="xs:nonNegativeInteger" />
151
+ <xs:element name="in_time" type="cms:CTimecodeType" />
152
+ <xs:element name="out_time" type="cms:CTimecodeType" />
153
+ </xs:sequence>
154
+ </xs:complexType>
155
+
156
+ <xs:complexType name="UiPropertiesType">
157
+ <xs:complexContent>
158
+ <xs:extension base="xs:anyType"></xs:extension>
159
+ </xs:complexContent>
160
+ <!-- <xs:all>
161
+ <xs:element name="id" type="xs:integer" minOccurs="0" />
162
+ <xs:element name="icon" type="xs:string" minOccurs="0" />
163
+ <xs:element name="color" type="xs:string" minOccurs="0" />
164
+ <xs:element name="timeline_position" type="cms:Coordinates" minOccurs="0" />
165
+ <xs:element name="warning" type="xs:integer" minOccurs="0" />
166
+ </xs:all> -->
167
+ </xs:complexType>
168
+
169
+ <!-- ACTION -->
170
+ <xs:complexType name="ActionCueType">
171
+ <xs:complexContent>
172
+ <xs:extension base="cms:CueType">
173
+ <xs:sequence>
174
+ <xs:element name="action_target" type="cms:TargetType" />
175
+ <xs:element name="action_type" type="cms:ActionType" minOccurs="0" />
176
+ </xs:sequence>
177
+ </xs:extension>
178
+ </xs:complexContent>
179
+ </xs:complexType>
180
+
181
+ <xs:simpleType name="ActionType">
182
+ <xs:restriction base="xs:string">
183
+ <xs:enumeration value="play" />
184
+ <xs:enumeration value="pause" />
185
+ <xs:enumeration value="stop" />
186
+ <xs:enumeration value="load" />
187
+ <xs:enumeration value="unload" />
188
+ <xs:enumeration value="enable" />
189
+ <xs:enumeration value="disable" />
190
+ <xs:enumeration value="fade_in" />
191
+ <xs:enumeration value="fade_out" />
192
+ <xs:enumeration value="wait" />
193
+ <xs:enumeration value="go_to" />
194
+ <xs:enumeration value="pause_project" />
195
+ <xs:enumeration value="resume_project" />
196
+ </xs:restriction>
197
+ </xs:simpleType>
198
+
113
199
  <!-- AUDIO -->
114
200
  <xs:complexType name="AudioCueType">
115
201
  <xs:complexContent>
@@ -174,8 +260,8 @@
174
260
  <xs:sequence>
175
261
  <xs:element name="top_left" type="cms:Coordinates" />
176
262
  <xs:element name="top_right" type="cms:Coordinates" />
177
- <xs:element name="bott_left" type="cms:Coordinates" />
178
- <xs:element name="bott_right" type="cms:Coordinates" />
263
+ <xs:element name="bottom_left" type="cms:Coordinates" />
264
+ <xs:element name="bottom_right" type="cms:Coordinates" />
179
265
  </xs:sequence>
180
266
  </xs:complexType>
181
267
 
@@ -241,87 +327,6 @@
241
327
  </xs:simpleContent>
242
328
  </xs:complexType>
243
329
 
244
- <!-- ACTION -->
245
- <xs:complexType name="ActionCueType">
246
- <xs:complexContent>
247
- <xs:extension base="cms:CueType">
248
- <xs:sequence>
249
- <xs:element name="action_type" type="cms:ActionType" minOccurs="0" />
250
- <xs:element name="action_target" type="cms:TargetType" />
251
- </xs:sequence>
252
- </xs:extension>
253
- </xs:complexContent>
254
- </xs:complexType>
255
-
256
- <xs:simpleType name="ActionType">
257
- <xs:restriction base="xs:string">
258
- <xs:enumeration value="play" />
259
- <xs:enumeration value="pause" />
260
- <xs:enumeration value="stop" />
261
- <xs:enumeration value="load" />
262
- <xs:enumeration value="unload" />
263
- <xs:enumeration value="enable" />
264
- <xs:enumeration value="disable" />
265
- <xs:enumeration value="fade_in" />
266
- <xs:enumeration value="fade_out" />
267
- <xs:enumeration value="wait" />
268
- <xs:enumeration value="go_to" />
269
- <xs:enumeration value="pause_project" />
270
- <xs:enumeration value="resume_project" />
271
- </xs:restriction>
272
- </xs:simpleType>
273
-
274
- <!-- COMPLEX DATA TYPES -->
275
- <xs:complexType name="CTimecodeType">
276
- <!-- Can be a timecode field or an empty NoneType field -->
277
- <xs:choice minOccurs="0">
278
- <xs:element name="CTimecode" type="cms:TimecodeType" />
279
- </xs:choice>
280
- </xs:complexType>
281
-
282
- <xs:complexType name="Coordinates">
283
- <xs:sequence>
284
- <xs:element name="x" type="xs:integer" />
285
- <xs:element name="y" type="xs:integer" />
286
- </xs:sequence>
287
- </xs:complexType>
288
-
289
- <xs:complexType name="MediaType">
290
- <xs:sequence minOccurs="0" maxOccurs="1">
291
- <xs:element name="file_name" type="xs:string" />
292
- <xs:element name="regions" type="cms:RegionsType" />
293
- </xs:sequence>
294
- </xs:complexType>
295
-
296
- <xs:complexType name="OutputsType">
297
- <xs:choice minOccurs="0" maxOccurs="unbounded">
298
- <xs:element name="AudioCueOutput" type="cms:AudioCueOutputsType" />
299
- <xs:element name="VideoCueOutput" type="cms:VideoCueOutputsType" />
300
- </xs:choice>
301
- </xs:complexType>
302
-
303
- <xs:complexType name="RegionsType">
304
- <xs:sequence minOccurs="1" maxOccurs="unbounded">
305
- <xs:element name="region" type="cms:RegionType" />
306
- </xs:sequence>
307
- </xs:complexType>
308
-
309
- <xs:complexType name="RegionType">
310
- <xs:sequence minOccurs="1">
311
- <xs:element name="id" type="xs:nonNegativeInteger" />
312
- <xs:element name="loop" type="xs:nonNegativeInteger" />
313
- <xs:element name="in_time" type="cms:CTimecodeType" />
314
- <xs:element name="out_time" type="cms:CTimecodeType" />
315
- </xs:sequence>
316
- </xs:complexType>
317
-
318
- <xs:complexType name="UiPropertiesType">
319
- <xs:all minOccurs="0">
320
- <xs:element name="timeline_position" type="cms:Coordinates" />
321
- <xs:element name="warning" type="xs:integer" />
322
- </xs:all>
323
- </xs:complexType>
324
-
325
330
  <!-- SIMPLE DATA TYPES -->
326
331
  <xs:simpleType name="BoolType">
327
332
  <xs:restriction base="xs:string">
File without changes
File without changes