pywemo 1.4.0__py3-none-any.whl

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 (40) hide show
  1. pywemo/README.md +69 -0
  2. pywemo/__init__.py +33 -0
  3. pywemo/color.py +79 -0
  4. pywemo/discovery.py +194 -0
  5. pywemo/exceptions.py +94 -0
  6. pywemo/ouimeaux_device/LICENSE +12 -0
  7. pywemo/ouimeaux_device/__init__.py +679 -0
  8. pywemo/ouimeaux_device/api/__init__.py +1 -0
  9. pywemo/ouimeaux_device/api/attributes.py +131 -0
  10. pywemo/ouimeaux_device/api/db_orm.py +197 -0
  11. pywemo/ouimeaux_device/api/long_press.py +168 -0
  12. pywemo/ouimeaux_device/api/rules_db.py +467 -0
  13. pywemo/ouimeaux_device/api/service.py +363 -0
  14. pywemo/ouimeaux_device/api/wemo_services.py +25 -0
  15. pywemo/ouimeaux_device/api/wemo_services.pyi +241 -0
  16. pywemo/ouimeaux_device/api/xsd/__init__.py +1 -0
  17. pywemo/ouimeaux_device/api/xsd/device.py +3888 -0
  18. pywemo/ouimeaux_device/api/xsd/device.xsd +95 -0
  19. pywemo/ouimeaux_device/api/xsd/service.py +3872 -0
  20. pywemo/ouimeaux_device/api/xsd/service.xsd +93 -0
  21. pywemo/ouimeaux_device/api/xsd_types.py +222 -0
  22. pywemo/ouimeaux_device/bridge.py +506 -0
  23. pywemo/ouimeaux_device/coffeemaker.py +92 -0
  24. pywemo/ouimeaux_device/crockpot.py +157 -0
  25. pywemo/ouimeaux_device/dimmer.py +70 -0
  26. pywemo/ouimeaux_device/humidifier.py +223 -0
  27. pywemo/ouimeaux_device/insight.py +191 -0
  28. pywemo/ouimeaux_device/lightswitch.py +11 -0
  29. pywemo/ouimeaux_device/maker.py +54 -0
  30. pywemo/ouimeaux_device/motion.py +6 -0
  31. pywemo/ouimeaux_device/outdoor_plug.py +6 -0
  32. pywemo/ouimeaux_device/switch.py +32 -0
  33. pywemo/py.typed +0 -0
  34. pywemo/ssdp.py +372 -0
  35. pywemo/subscribe.py +782 -0
  36. pywemo/util.py +139 -0
  37. pywemo-1.4.0.dist-info/LICENSE +54 -0
  38. pywemo-1.4.0.dist-info/METADATA +192 -0
  39. pywemo-1.4.0.dist-info/RECORD +40 -0
  40. pywemo-1.4.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,3872 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # flake8: noqa
4
+ # isort: skip_file
5
+ # mypy: ignore-errors
6
+ # pylint: skip-file
7
+
8
+ #
9
+ # Generated by generateDS.py version 2.43.3.
10
+ # Python [sys.version]
11
+ #
12
+ # Command line options:
13
+ # ('-f', '')
14
+ # ('--no-dates', '')
15
+ # ('-o', 'service.py')
16
+ #
17
+ # Command line arguments:
18
+ # pywemo/ouimeaux_device/api/xsd/service.xsd
19
+ #
20
+ # Command line:
21
+ # generateDS.py -f --no-dates -o "service.py" pywemo/ouimeaux_device/api/xsd/service.xsd
22
+ #
23
+ # Current working directory (os.getcwd()):
24
+ # pywemo
25
+ #
26
+
27
+ import sys
28
+
29
+ try:
30
+ ModulenotfoundExp_ = ModuleNotFoundError
31
+ except NameError:
32
+ ModulenotfoundExp_ = ImportError
33
+ from itertools import zip_longest
34
+ import os
35
+ import re as re_
36
+ import base64
37
+ import datetime as datetime_
38
+ import decimal as decimal_
39
+ from lxml import etree as etree_
40
+
41
+
42
+ Validate_simpletypes_ = True
43
+ SaveElementTreeNode = True
44
+ TagNamePrefix = ""
45
+ if sys.version_info.major == 2:
46
+ BaseStrType_ = basestring
47
+ else:
48
+ BaseStrType_ = str
49
+
50
+
51
+ def parsexml_(infile, parser=None, **kwargs):
52
+ if parser is None:
53
+ # Use the lxml ElementTree compatible parser so that, e.g.,
54
+ # we ignore comments.
55
+ try:
56
+ parser = etree_.ETCompatXMLParser()
57
+ except AttributeError:
58
+ # fallback to xml.etree
59
+ parser = etree_.XMLParser()
60
+ try:
61
+ if isinstance(infile, os.PathLike):
62
+ infile = os.path.join(infile)
63
+ except AttributeError:
64
+ pass
65
+ doc = etree_.parse(infile, parser=parser, **kwargs)
66
+ return doc
67
+
68
+
69
+ def parsexmlstring_(instring, parser=None, **kwargs):
70
+ if parser is None:
71
+ # Use the lxml ElementTree compatible parser so that, e.g.,
72
+ # we ignore comments.
73
+ try:
74
+ parser = etree_.ETCompatXMLParser()
75
+ except AttributeError:
76
+ # fallback to xml.etree
77
+ parser = etree_.XMLParser()
78
+ element = etree_.fromstring(instring, parser=parser, **kwargs)
79
+ return element
80
+
81
+
82
+ #
83
+ # Namespace prefix definition table (and other attributes, too)
84
+ #
85
+ # The module generatedsnamespaces, if it is importable, must contain
86
+ # a dictionary named GeneratedsNamespaceDefs. This Python dictionary
87
+ # should map element type names (strings) to XML schema namespace prefix
88
+ # definitions. The export method for any class for which there is
89
+ # a namespace prefix definition, will export that definition in the
90
+ # XML representation of that element. See the export method of
91
+ # any generated element type class for an example of the use of this
92
+ # table.
93
+ # A sample table is:
94
+ #
95
+ # # File: generatedsnamespaces.py
96
+ #
97
+ # GenerateDSNamespaceDefs = {
98
+ # "ElementtypeA": "http://www.xxx.com/namespaceA",
99
+ # "ElementtypeB": "http://www.xxx.com/namespaceB",
100
+ # }
101
+ #
102
+ # Additionally, the generatedsnamespaces module can contain a python
103
+ # dictionary named GenerateDSNamespaceTypePrefixes that associates element
104
+ # types with the namespace prefixes that are to be added to the
105
+ # "xsi:type" attribute value. See the _exportAttributes method of
106
+ # any generated element type and the generation of "xsi:type" for an
107
+ # example of the use of this table.
108
+ # An example table:
109
+ #
110
+ # # File: generatedsnamespaces.py
111
+ #
112
+ # GenerateDSNamespaceTypePrefixes = {
113
+ # "ElementtypeC": "aaa:",
114
+ # "ElementtypeD": "bbb:",
115
+ # }
116
+ #
117
+
118
+ try:
119
+ from generatedsnamespaces import (
120
+ GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_,
121
+ )
122
+ except ModulenotfoundExp_:
123
+ GenerateDSNamespaceDefs_ = {}
124
+ try:
125
+ from generatedsnamespaces import (
126
+ GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_,
127
+ )
128
+ except ModulenotfoundExp_:
129
+ GenerateDSNamespaceTypePrefixes_ = {}
130
+
131
+ #
132
+ # You can replace the following class definition by defining an
133
+ # importable module named "generatedscollector" containing a class
134
+ # named "GdsCollector". See the default class definition below for
135
+ # clues about the possible content of that class.
136
+ #
137
+ try:
138
+ from generatedscollector import GdsCollector as GdsCollector_
139
+ except ModulenotfoundExp_:
140
+
141
+ class GdsCollector_(object):
142
+ def __init__(self, messages=None):
143
+ if messages is None:
144
+ self.messages = []
145
+ else:
146
+ self.messages = messages
147
+
148
+ def add_message(self, msg):
149
+ self.messages.append(msg)
150
+
151
+ def get_messages(self):
152
+ return self.messages
153
+
154
+ def clear_messages(self):
155
+ self.messages = []
156
+
157
+ def print_messages(self):
158
+ for msg in self.messages:
159
+ print("Warning: {}".format(msg))
160
+
161
+ def write_messages(self, outstream):
162
+ for msg in self.messages:
163
+ outstream.write("Warning: {}\n".format(msg))
164
+
165
+
166
+ #
167
+ # The super-class for enum types
168
+ #
169
+
170
+ try:
171
+ from enum import Enum
172
+ except ModulenotfoundExp_:
173
+ Enum = object
174
+
175
+ #
176
+ # The root super-class for element type classes
177
+ #
178
+ # Calls to the methods in these classes are generated by generateDS.py.
179
+ # You can replace these methods by re-implementing the following class
180
+ # in a module named generatedssuper.py.
181
+
182
+ try:
183
+ from generatedssuper import GeneratedsSuper
184
+ except ModulenotfoundExp_ as exp:
185
+ try:
186
+ from generatedssupersuper import GeneratedsSuperSuper
187
+ except ModulenotfoundExp_ as exp:
188
+
189
+ class GeneratedsSuperSuper(object):
190
+ pass
191
+
192
+ class GeneratedsSuper(GeneratedsSuperSuper):
193
+ __hash__ = object.__hash__
194
+ tzoff_pattern = re_.compile(r"(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$")
195
+
196
+ class _FixedOffsetTZ(datetime_.tzinfo):
197
+ def __init__(self, offset, name):
198
+ self.__offset = datetime_.timedelta(minutes=offset)
199
+ self.__name = name
200
+
201
+ def utcoffset(self, dt):
202
+ return self.__offset
203
+
204
+ def tzname(self, dt):
205
+ return self.__name
206
+
207
+ def dst(self, dt):
208
+ return None
209
+
210
+ def __str__(self):
211
+ settings = {
212
+ "str_pretty_print": True,
213
+ "str_indent_level": 0,
214
+ "str_namespaceprefix": "",
215
+ "str_name": self.__class__.__name__,
216
+ "str_namespacedefs": "",
217
+ }
218
+ for n in settings:
219
+ if hasattr(self, n):
220
+ settings[n] = getattr(self, n)
221
+ if sys.version_info.major == 2:
222
+ from StringIO import StringIO
223
+ else:
224
+ from io import StringIO
225
+ output = StringIO()
226
+ self.export(
227
+ output,
228
+ settings["str_indent_level"],
229
+ pretty_print=settings["str_pretty_print"],
230
+ namespaceprefix_=settings["str_namespaceprefix"],
231
+ name_=settings["str_name"],
232
+ namespacedef_=settings["str_namespacedefs"],
233
+ )
234
+ strval = output.getvalue()
235
+ output.close()
236
+ return strval
237
+
238
+ def gds_format_string(self, input_data, input_name=""):
239
+ return input_data
240
+
241
+ def gds_parse_string(self, input_data, node=None, input_name=""):
242
+ return input_data
243
+
244
+ def gds_validate_string(self, input_data, node=None, input_name=""):
245
+ if not input_data:
246
+ return ""
247
+ else:
248
+ return input_data
249
+
250
+ def gds_format_base64(self, input_data, input_name=""):
251
+ return base64.b64encode(input_data).decode("ascii")
252
+
253
+ def gds_validate_base64(self, input_data, node=None, input_name=""):
254
+ return input_data
255
+
256
+ def gds_format_integer(self, input_data, input_name=""):
257
+ return "%d" % int(input_data)
258
+
259
+ def gds_parse_integer(self, input_data, node=None, input_name=""):
260
+ try:
261
+ ival = int(input_data)
262
+ except (TypeError, ValueError) as exp:
263
+ raise_parse_error(node, "Requires integer value: %s" % exp)
264
+ return ival
265
+
266
+ def gds_validate_integer(self, input_data, node=None, input_name=""):
267
+ try:
268
+ value = int(input_data)
269
+ except (TypeError, ValueError):
270
+ raise_parse_error(node, "Requires integer value")
271
+ return value
272
+
273
+ def gds_format_integer_list(self, input_data, input_name=""):
274
+ if len(input_data) > 0 and not isinstance(
275
+ input_data[0], BaseStrType_
276
+ ):
277
+ input_data = [str(s) for s in input_data]
278
+ return "%s" % " ".join(input_data)
279
+
280
+ def gds_validate_integer_list(
281
+ self, input_data, node=None, input_name=""
282
+ ):
283
+ values = input_data.split()
284
+ for value in values:
285
+ try:
286
+ int(value)
287
+ except (TypeError, ValueError):
288
+ raise_parse_error(
289
+ node, "Requires sequence of integer values"
290
+ )
291
+ return values
292
+
293
+ def gds_format_float(self, input_data, input_name=""):
294
+ value = ("%.15f" % float(input_data)).rstrip("0")
295
+ if value.endswith("."):
296
+ value += "0"
297
+ return value
298
+
299
+ def gds_parse_float(self, input_data, node=None, input_name=""):
300
+ try:
301
+ fval_ = float(input_data)
302
+ except (TypeError, ValueError) as exp:
303
+ raise_parse_error(
304
+ node, "Requires float or double value: %s" % exp
305
+ )
306
+ return fval_
307
+
308
+ def gds_validate_float(self, input_data, node=None, input_name=""):
309
+ try:
310
+ value = float(input_data)
311
+ except (TypeError, ValueError):
312
+ raise_parse_error(node, "Requires float value")
313
+ return value
314
+
315
+ def gds_format_float_list(self, input_data, input_name=""):
316
+ if len(input_data) > 0 and not isinstance(
317
+ input_data[0], BaseStrType_
318
+ ):
319
+ input_data = [str(s) for s in input_data]
320
+ return "%s" % " ".join(input_data)
321
+
322
+ def gds_validate_float_list(
323
+ self, input_data, node=None, input_name=""
324
+ ):
325
+ values = input_data.split()
326
+ for value in values:
327
+ try:
328
+ float(value)
329
+ except (TypeError, ValueError):
330
+ raise_parse_error(
331
+ node, "Requires sequence of float values"
332
+ )
333
+ return values
334
+
335
+ def gds_format_decimal(self, input_data, input_name=""):
336
+ return_value = "%s" % input_data
337
+ if "." in return_value:
338
+ return_value = return_value.rstrip("0")
339
+ if return_value.endswith("."):
340
+ return_value = return_value.rstrip(".")
341
+ return return_value
342
+
343
+ def gds_parse_decimal(self, input_data, node=None, input_name=""):
344
+ try:
345
+ decimal_value = decimal_.Decimal(input_data)
346
+ except (TypeError, ValueError):
347
+ raise_parse_error(node, "Requires decimal value")
348
+ return decimal_value
349
+
350
+ def gds_validate_decimal(self, input_data, node=None, input_name=""):
351
+ try:
352
+ value = decimal_.Decimal(input_data)
353
+ except (TypeError, ValueError):
354
+ raise_parse_error(node, "Requires decimal value")
355
+ return value
356
+
357
+ def gds_format_decimal_list(self, input_data, input_name=""):
358
+ if len(input_data) > 0 and not isinstance(
359
+ input_data[0], BaseStrType_
360
+ ):
361
+ input_data = [str(s) for s in input_data]
362
+ return " ".join(
363
+ [self.gds_format_decimal(item) for item in input_data]
364
+ )
365
+
366
+ def gds_validate_decimal_list(
367
+ self, input_data, node=None, input_name=""
368
+ ):
369
+ values = input_data.split()
370
+ for value in values:
371
+ try:
372
+ decimal_.Decimal(value)
373
+ except (TypeError, ValueError):
374
+ raise_parse_error(
375
+ node, "Requires sequence of decimal values"
376
+ )
377
+ return values
378
+
379
+ def gds_format_double(self, input_data, input_name=""):
380
+ return "%s" % input_data
381
+
382
+ def gds_parse_double(self, input_data, node=None, input_name=""):
383
+ try:
384
+ fval_ = float(input_data)
385
+ except (TypeError, ValueError) as exp:
386
+ raise_parse_error(
387
+ node, "Requires double or float value: %s" % exp
388
+ )
389
+ return fval_
390
+
391
+ def gds_validate_double(self, input_data, node=None, input_name=""):
392
+ try:
393
+ value = float(input_data)
394
+ except (TypeError, ValueError):
395
+ raise_parse_error(node, "Requires double or float value")
396
+ return value
397
+
398
+ def gds_format_double_list(self, input_data, input_name=""):
399
+ if len(input_data) > 0 and not isinstance(
400
+ input_data[0], BaseStrType_
401
+ ):
402
+ input_data = [str(s) for s in input_data]
403
+ return "%s" % " ".join(input_data)
404
+
405
+ def gds_validate_double_list(
406
+ self, input_data, node=None, input_name=""
407
+ ):
408
+ values = input_data.split()
409
+ for value in values:
410
+ try:
411
+ float(value)
412
+ except (TypeError, ValueError):
413
+ raise_parse_error(
414
+ node, "Requires sequence of double or float values"
415
+ )
416
+ return values
417
+
418
+ def gds_format_boolean(self, input_data, input_name=""):
419
+ return ("%s" % input_data).lower()
420
+
421
+ def gds_parse_boolean(self, input_data, node=None, input_name=""):
422
+ input_data = input_data.strip()
423
+ if input_data in ("true", "1"):
424
+ bval = True
425
+ elif input_data in ("false", "0"):
426
+ bval = False
427
+ else:
428
+ raise_parse_error(node, "Requires boolean value")
429
+ return bval
430
+
431
+ def gds_validate_boolean(self, input_data, node=None, input_name=""):
432
+ if input_data not in (
433
+ True,
434
+ 1,
435
+ False,
436
+ 0,
437
+ ):
438
+ raise_parse_error(
439
+ node,
440
+ "Requires boolean value " "(one of True, 1, False, 0)",
441
+ )
442
+ return input_data
443
+
444
+ def gds_format_boolean_list(self, input_data, input_name=""):
445
+ if len(input_data) > 0 and not isinstance(
446
+ input_data[0], BaseStrType_
447
+ ):
448
+ input_data = [str(s) for s in input_data]
449
+ return "%s" % " ".join(input_data)
450
+
451
+ def gds_validate_boolean_list(
452
+ self, input_data, node=None, input_name=""
453
+ ):
454
+ values = input_data.split()
455
+ for value in values:
456
+ value = self.gds_parse_boolean(value, node, input_name)
457
+ if value not in (
458
+ True,
459
+ 1,
460
+ False,
461
+ 0,
462
+ ):
463
+ raise_parse_error(
464
+ node,
465
+ "Requires sequence of boolean values "
466
+ "(one of True, 1, False, 0)",
467
+ )
468
+ return values
469
+
470
+ def gds_validate_datetime(self, input_data, node=None, input_name=""):
471
+ return input_data
472
+
473
+ def gds_format_datetime(self, input_data, input_name=""):
474
+ if input_data.microsecond == 0:
475
+ _svalue = "%04d-%02d-%02dT%02d:%02d:%02d" % (
476
+ input_data.year,
477
+ input_data.month,
478
+ input_data.day,
479
+ input_data.hour,
480
+ input_data.minute,
481
+ input_data.second,
482
+ )
483
+ else:
484
+ _svalue = "%04d-%02d-%02dT%02d:%02d:%02d.%s" % (
485
+ input_data.year,
486
+ input_data.month,
487
+ input_data.day,
488
+ input_data.hour,
489
+ input_data.minute,
490
+ input_data.second,
491
+ ("%f" % (float(input_data.microsecond) / 1000000))[2:],
492
+ )
493
+ if input_data.tzinfo is not None:
494
+ tzoff = input_data.tzinfo.utcoffset(input_data)
495
+ if tzoff is not None:
496
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
497
+ if total_seconds == 0:
498
+ _svalue += "Z"
499
+ else:
500
+ if total_seconds < 0:
501
+ _svalue += "-"
502
+ total_seconds *= -1
503
+ else:
504
+ _svalue += "+"
505
+ hours = total_seconds // 3600
506
+ minutes = (total_seconds - (hours * 3600)) // 60
507
+ _svalue += "{0:02d}:{1:02d}".format(hours, minutes)
508
+ return _svalue
509
+
510
+ @classmethod
511
+ def gds_parse_datetime(cls, input_data):
512
+ tz = None
513
+ if input_data[-1] == "Z":
514
+ tz = GeneratedsSuper._FixedOffsetTZ(0, "UTC")
515
+ input_data = input_data[:-1]
516
+ else:
517
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
518
+ if results is not None:
519
+ tzoff_parts = results.group(2).split(":")
520
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
521
+ if results.group(1) == "-":
522
+ tzoff *= -1
523
+ tz = GeneratedsSuper._FixedOffsetTZ(
524
+ tzoff, results.group(0)
525
+ )
526
+ input_data = input_data[:-6]
527
+ time_parts = input_data.split(".")
528
+ if len(time_parts) > 1:
529
+ micro_seconds = int(float("0." + time_parts[1]) * 1000000)
530
+ input_data = "%s.%s" % (
531
+ time_parts[0],
532
+ "{}".format(micro_seconds).rjust(6, "0"),
533
+ )
534
+ dt = datetime_.datetime.strptime(
535
+ input_data, "%Y-%m-%dT%H:%M:%S.%f"
536
+ )
537
+ else:
538
+ dt = datetime_.datetime.strptime(
539
+ input_data, "%Y-%m-%dT%H:%M:%S"
540
+ )
541
+ dt = dt.replace(tzinfo=tz)
542
+ return dt
543
+
544
+ def gds_validate_date(self, input_data, node=None, input_name=""):
545
+ return input_data
546
+
547
+ def gds_format_date(self, input_data, input_name=""):
548
+ _svalue = "%04d-%02d-%02d" % (
549
+ input_data.year,
550
+ input_data.month,
551
+ input_data.day,
552
+ )
553
+ try:
554
+ if input_data.tzinfo is not None:
555
+ tzoff = input_data.tzinfo.utcoffset(input_data)
556
+ if tzoff is not None:
557
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
558
+ if total_seconds == 0:
559
+ _svalue += "Z"
560
+ else:
561
+ if total_seconds < 0:
562
+ _svalue += "-"
563
+ total_seconds *= -1
564
+ else:
565
+ _svalue += "+"
566
+ hours = total_seconds // 3600
567
+ minutes = (total_seconds - (hours * 3600)) // 60
568
+ _svalue += "{0:02d}:{1:02d}".format(hours, minutes)
569
+ except AttributeError:
570
+ pass
571
+ return _svalue
572
+
573
+ @classmethod
574
+ def gds_parse_date(cls, input_data):
575
+ tz = None
576
+ if input_data[-1] == "Z":
577
+ tz = GeneratedsSuper._FixedOffsetTZ(0, "UTC")
578
+ input_data = input_data[:-1]
579
+ else:
580
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
581
+ if results is not None:
582
+ tzoff_parts = results.group(2).split(":")
583
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
584
+ if results.group(1) == "-":
585
+ tzoff *= -1
586
+ tz = GeneratedsSuper._FixedOffsetTZ(
587
+ tzoff, results.group(0)
588
+ )
589
+ input_data = input_data[:-6]
590
+ dt = datetime_.datetime.strptime(input_data, "%Y-%m-%d")
591
+ dt = dt.replace(tzinfo=tz)
592
+ return dt.date()
593
+
594
+ def gds_validate_time(self, input_data, node=None, input_name=""):
595
+ return input_data
596
+
597
+ def gds_format_time(self, input_data, input_name=""):
598
+ if input_data.microsecond == 0:
599
+ _svalue = "%02d:%02d:%02d" % (
600
+ input_data.hour,
601
+ input_data.minute,
602
+ input_data.second,
603
+ )
604
+ else:
605
+ _svalue = "%02d:%02d:%02d.%s" % (
606
+ input_data.hour,
607
+ input_data.minute,
608
+ input_data.second,
609
+ ("%f" % (float(input_data.microsecond) / 1000000))[2:],
610
+ )
611
+ if input_data.tzinfo is not None:
612
+ tzoff = input_data.tzinfo.utcoffset(input_data)
613
+ if tzoff is not None:
614
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
615
+ if total_seconds == 0:
616
+ _svalue += "Z"
617
+ else:
618
+ if total_seconds < 0:
619
+ _svalue += "-"
620
+ total_seconds *= -1
621
+ else:
622
+ _svalue += "+"
623
+ hours = total_seconds // 3600
624
+ minutes = (total_seconds - (hours * 3600)) // 60
625
+ _svalue += "{0:02d}:{1:02d}".format(hours, minutes)
626
+ return _svalue
627
+
628
+ def gds_validate_simple_patterns(self, patterns, target):
629
+ # pat is a list of lists of strings/patterns.
630
+ # The target value must match at least one of the patterns
631
+ # in order for the test to succeed.
632
+ found1 = True
633
+ target = str(target)
634
+ for patterns1 in patterns:
635
+ found2 = False
636
+ for patterns2 in patterns1:
637
+ mo = re_.search(patterns2, target)
638
+ if mo is not None and len(mo.group(0)) == len(target):
639
+ found2 = True
640
+ break
641
+ if not found2:
642
+ found1 = False
643
+ break
644
+ return found1
645
+
646
+ @classmethod
647
+ def gds_parse_time(cls, input_data):
648
+ tz = None
649
+ if input_data[-1] == "Z":
650
+ tz = GeneratedsSuper._FixedOffsetTZ(0, "UTC")
651
+ input_data = input_data[:-1]
652
+ else:
653
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
654
+ if results is not None:
655
+ tzoff_parts = results.group(2).split(":")
656
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
657
+ if results.group(1) == "-":
658
+ tzoff *= -1
659
+ tz = GeneratedsSuper._FixedOffsetTZ(
660
+ tzoff, results.group(0)
661
+ )
662
+ input_data = input_data[:-6]
663
+ if len(input_data.split(".")) > 1:
664
+ dt = datetime_.datetime.strptime(input_data, "%H:%M:%S.%f")
665
+ else:
666
+ dt = datetime_.datetime.strptime(input_data, "%H:%M:%S")
667
+ dt = dt.replace(tzinfo=tz)
668
+ return dt.time()
669
+
670
+ def gds_check_cardinality_(
671
+ self, value, input_name, min_occurs=0, max_occurs=1, required=None
672
+ ):
673
+ if value is None:
674
+ length = 0
675
+ elif isinstance(value, list):
676
+ length = len(value)
677
+ else:
678
+ length = 1
679
+ if required is not None:
680
+ if required and length < 1:
681
+ self.gds_collector_.add_message(
682
+ "Required value {}{} is missing".format(
683
+ input_name, self.gds_get_node_lineno_()
684
+ )
685
+ )
686
+ if length < min_occurs:
687
+ self.gds_collector_.add_message(
688
+ "Number of values for {}{} is below "
689
+ "the minimum allowed, "
690
+ "expected at least {}, found {}".format(
691
+ input_name,
692
+ self.gds_get_node_lineno_(),
693
+ min_occurs,
694
+ length,
695
+ )
696
+ )
697
+ elif length > max_occurs:
698
+ self.gds_collector_.add_message(
699
+ "Number of values for {}{} is above "
700
+ "the maximum allowed, "
701
+ "expected at most {}, found {}".format(
702
+ input_name,
703
+ self.gds_get_node_lineno_(),
704
+ max_occurs,
705
+ length,
706
+ )
707
+ )
708
+
709
+ def gds_validate_builtin_ST_(
710
+ self,
711
+ validator,
712
+ value,
713
+ input_name,
714
+ min_occurs=None,
715
+ max_occurs=None,
716
+ required=None,
717
+ ):
718
+ if value is not None:
719
+ try:
720
+ validator(value, input_name=input_name)
721
+ except GDSParseError as parse_error:
722
+ self.gds_collector_.add_message(str(parse_error))
723
+
724
+ def gds_validate_defined_ST_(
725
+ self,
726
+ validator,
727
+ value,
728
+ input_name,
729
+ min_occurs=None,
730
+ max_occurs=None,
731
+ required=None,
732
+ ):
733
+ if value is not None:
734
+ try:
735
+ validator(value)
736
+ except GDSParseError as parse_error:
737
+ self.gds_collector_.add_message(str(parse_error))
738
+
739
+ def gds_str_lower(self, instring):
740
+ return instring.lower()
741
+
742
+ def get_path_(self, node):
743
+ path_list = []
744
+ self.get_path_list_(node, path_list)
745
+ path_list.reverse()
746
+ path = "/".join(path_list)
747
+ return path
748
+
749
+ Tag_strip_pattern_ = re_.compile(r"\{.*\}")
750
+
751
+ def get_path_list_(self, node, path_list):
752
+ if node is None:
753
+ return
754
+ tag = GeneratedsSuper.Tag_strip_pattern_.sub("", node.tag)
755
+ if tag:
756
+ path_list.append(tag)
757
+ self.get_path_list_(node.getparent(), path_list)
758
+
759
+ def get_class_obj_(self, node, default_class=None):
760
+ class_obj1 = default_class
761
+ if "xsi" in node.nsmap:
762
+ classname = node.get("{%s}type" % node.nsmap["xsi"])
763
+ if classname is not None:
764
+ names = classname.split(":")
765
+ if len(names) == 2:
766
+ classname = names[1]
767
+ class_obj2 = globals().get(classname)
768
+ if class_obj2 is not None:
769
+ class_obj1 = class_obj2
770
+ return class_obj1
771
+
772
+ def gds_build_any(self, node, type_name=None):
773
+ # provide default value in case option --disable-xml is used.
774
+ content = ""
775
+ content = etree_.tostring(node, encoding="unicode")
776
+ return content
777
+
778
+ @classmethod
779
+ def gds_reverse_node_mapping(cls, mapping):
780
+ return dict(((v, k) for k, v in mapping.items()))
781
+
782
+ @staticmethod
783
+ def gds_encode(instring):
784
+ if sys.version_info.major == 2:
785
+ if ExternalEncoding:
786
+ encoding = ExternalEncoding
787
+ else:
788
+ encoding = "utf-8"
789
+ return instring.encode(encoding)
790
+ else:
791
+ return instring
792
+
793
+ @staticmethod
794
+ def convert_unicode(instring):
795
+ if isinstance(instring, str):
796
+ result = quote_xml(instring)
797
+ elif sys.version_info.major == 2 and isinstance(instring, unicode):
798
+ result = quote_xml(instring).encode("utf8")
799
+ else:
800
+ result = GeneratedsSuper.gds_encode(str(instring))
801
+ return result
802
+
803
+ def __eq__(self, other):
804
+ def excl_select_objs_(obj):
805
+ return (
806
+ obj[0] != "parent_object_" and obj[0] != "gds_collector_"
807
+ )
808
+
809
+ if type(self) != type(other):
810
+ return False
811
+ return all(
812
+ x == y
813
+ for x, y in zip_longest(
814
+ filter(excl_select_objs_, self.__dict__.items()),
815
+ filter(excl_select_objs_, other.__dict__.items()),
816
+ )
817
+ )
818
+
819
+ def __ne__(self, other):
820
+ return not self.__eq__(other)
821
+
822
+ # Django ETL transform hooks.
823
+ def gds_djo_etl_transform(self):
824
+ pass
825
+
826
+ def gds_djo_etl_transform_db_obj(self, dbobj):
827
+ pass
828
+
829
+ # SQLAlchemy ETL transform hooks.
830
+ def gds_sqa_etl_transform(self):
831
+ return 0, None
832
+
833
+ def gds_sqa_etl_transform_db_obj(self, dbobj):
834
+ pass
835
+
836
+ def gds_get_node_lineno_(self):
837
+ if (
838
+ hasattr(self, "gds_elementtree_node_")
839
+ and self.gds_elementtree_node_ is not None
840
+ ):
841
+ return " near line {}".format(
842
+ self.gds_elementtree_node_.sourceline
843
+ )
844
+ else:
845
+ return ""
846
+
847
+ def getSubclassFromModule_(module, class_):
848
+ """Get the subclass of a class from a specific module."""
849
+ name = class_.__name__ + "Sub"
850
+ if hasattr(module, name):
851
+ return getattr(module, name)
852
+ else:
853
+ return None
854
+
855
+
856
+ #
857
+ # If you have installed IPython you can uncomment and use the following.
858
+ # IPython is available from http://ipython.scipy.org/.
859
+ #
860
+
861
+ ## from IPython.Shell import IPShellEmbed
862
+ ## args = ''
863
+ ## ipshell = IPShellEmbed(args,
864
+ ## banner = 'Dropping into IPython',
865
+ ## exit_msg = 'Leaving Interpreter, back to program.')
866
+
867
+ # Then use the following line where and when you want to drop into the
868
+ # IPython shell:
869
+ # ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit')
870
+
871
+ #
872
+ # Globals
873
+ #
874
+
875
+ ExternalEncoding = ""
876
+ # Set this to false in order to deactivate during export, the use of
877
+ # name space prefixes captured from the input document.
878
+ UseCapturedNS_ = True
879
+ CapturedNsmap_ = {}
880
+ Tag_pattern_ = re_.compile(r"({.*})?(.*)")
881
+ String_cleanup_pat_ = re_.compile(r"[\n\r\s]+")
882
+ Namespace_extract_pat_ = re_.compile(r"{(.*)}(.*)")
883
+ CDATA_pattern_ = re_.compile(r"<!\[CDATA\[.*?\]\]>", re_.DOTALL)
884
+
885
+ # Change this to redirect the generated superclass module to use a
886
+ # specific subclass module.
887
+ CurrentSubclassModule_ = None
888
+
889
+ #
890
+ # Support/utility functions.
891
+ #
892
+
893
+
894
+ def showIndent(outfile, level, pretty_print=True):
895
+ if pretty_print:
896
+ for idx in range(level):
897
+ outfile.write(" ")
898
+
899
+
900
+ def quote_xml(inStr):
901
+ "Escape markup chars, but do not modify CDATA sections."
902
+ if not inStr:
903
+ return ""
904
+ s1 = isinstance(inStr, BaseStrType_) and inStr or "%s" % inStr
905
+ s2 = ""
906
+ pos = 0
907
+ matchobjects = CDATA_pattern_.finditer(s1)
908
+ for mo in matchobjects:
909
+ s3 = s1[pos : mo.start()]
910
+ s2 += quote_xml_aux(s3)
911
+ s2 += s1[mo.start() : mo.end()]
912
+ pos = mo.end()
913
+ s3 = s1[pos:]
914
+ s2 += quote_xml_aux(s3)
915
+ return s2
916
+
917
+
918
+ def quote_xml_aux(inStr):
919
+ s1 = inStr.replace("&", "&amp;")
920
+ s1 = s1.replace("<", "&lt;")
921
+ s1 = s1.replace(">", "&gt;")
922
+ return s1
923
+
924
+
925
+ def quote_attrib(inStr):
926
+ s1 = isinstance(inStr, BaseStrType_) and inStr or "%s" % inStr
927
+ s1 = s1.replace("&", "&amp;")
928
+ s1 = s1.replace("<", "&lt;")
929
+ s1 = s1.replace(">", "&gt;")
930
+ s1 = s1.replace("\n", "&#10;")
931
+ if '"' in s1:
932
+ if "'" in s1:
933
+ s1 = '"%s"' % s1.replace('"', "&quot;")
934
+ else:
935
+ s1 = "'%s'" % s1
936
+ else:
937
+ s1 = '"%s"' % s1
938
+ return s1
939
+
940
+
941
+ def quote_python(inStr):
942
+ s1 = inStr
943
+ if s1.find("'") == -1:
944
+ if s1.find("\n") == -1:
945
+ return "'%s'" % s1
946
+ else:
947
+ return "'''%s'''" % s1
948
+ else:
949
+ if s1.find('"') != -1:
950
+ s1 = s1.replace('"', '\\"')
951
+ if s1.find("\n") == -1:
952
+ return '"%s"' % s1
953
+ else:
954
+ return '"""%s"""' % s1
955
+
956
+
957
+ def get_all_text_(node):
958
+ if node.text is not None:
959
+ text = node.text
960
+ else:
961
+ text = ""
962
+ for child in node:
963
+ if child.tail is not None:
964
+ text += child.tail
965
+ return text
966
+
967
+
968
+ def find_attr_value_(attr_name, node):
969
+ attrs = node.attrib
970
+ attr_parts = attr_name.split(":")
971
+ value = None
972
+ if len(attr_parts) == 1:
973
+ value = attrs.get(attr_name)
974
+ elif len(attr_parts) == 2:
975
+ prefix, name = attr_parts
976
+ if prefix == "xml":
977
+ namespace = "http://www.w3.org/XML/1998/namespace"
978
+ else:
979
+ namespace = node.nsmap.get(prefix)
980
+ if namespace is not None:
981
+ value = attrs.get(
982
+ "{%s}%s"
983
+ % (
984
+ namespace,
985
+ name,
986
+ )
987
+ )
988
+ return value
989
+
990
+
991
+ def encode_str_2_3(instr):
992
+ return instr
993
+
994
+
995
+ class GDSParseError(Exception):
996
+ pass
997
+
998
+
999
+ def raise_parse_error(node, msg):
1000
+ if node is not None:
1001
+ msg = "%s (element %s/line %d)" % (
1002
+ msg,
1003
+ node.tag,
1004
+ node.sourceline,
1005
+ )
1006
+ raise GDSParseError(msg)
1007
+
1008
+
1009
+ class MixedContainer:
1010
+ # Constants for category:
1011
+ CategoryNone = 0
1012
+ CategoryText = 1
1013
+ CategorySimple = 2
1014
+ CategoryComplex = 3
1015
+ # Constants for content_type:
1016
+ TypeNone = 0
1017
+ TypeText = 1
1018
+ TypeString = 2
1019
+ TypeInteger = 3
1020
+ TypeFloat = 4
1021
+ TypeDecimal = 5
1022
+ TypeDouble = 6
1023
+ TypeBoolean = 7
1024
+ TypeBase64 = 8
1025
+
1026
+ def __init__(self, category, content_type, name, value):
1027
+ self.category = category
1028
+ self.content_type = content_type
1029
+ self.name = name
1030
+ self.value = value
1031
+
1032
+ def getCategory(self):
1033
+ return self.category
1034
+
1035
+ def getContenttype(self, content_type):
1036
+ return self.content_type
1037
+
1038
+ def getValue(self):
1039
+ return self.value
1040
+
1041
+ def getName(self):
1042
+ return self.name
1043
+
1044
+ def export(self, outfile, level, name, namespace, pretty_print=True):
1045
+ if self.category == MixedContainer.CategoryText:
1046
+ # Prevent exporting empty content as empty lines.
1047
+ if self.value.strip():
1048
+ outfile.write(self.value)
1049
+ elif self.category == MixedContainer.CategorySimple:
1050
+ self.exportSimple(outfile, level, name)
1051
+ else: # category == MixedContainer.CategoryComplex
1052
+ self.value.export(
1053
+ outfile,
1054
+ level,
1055
+ namespace,
1056
+ name_=name,
1057
+ pretty_print=pretty_print,
1058
+ )
1059
+
1060
+ def exportSimple(self, outfile, level, name):
1061
+ if self.content_type == MixedContainer.TypeString:
1062
+ outfile.write("<%s>%s</%s>" % (self.name, self.value, self.name))
1063
+ elif (
1064
+ self.content_type == MixedContainer.TypeInteger
1065
+ or self.content_type == MixedContainer.TypeBoolean
1066
+ ):
1067
+ outfile.write("<%s>%d</%s>" % (self.name, self.value, self.name))
1068
+ elif (
1069
+ self.content_type == MixedContainer.TypeFloat
1070
+ or self.content_type == MixedContainer.TypeDecimal
1071
+ ):
1072
+ outfile.write("<%s>%f</%s>" % (self.name, self.value, self.name))
1073
+ elif self.content_type == MixedContainer.TypeDouble:
1074
+ outfile.write("<%s>%g</%s>" % (self.name, self.value, self.name))
1075
+ elif self.content_type == MixedContainer.TypeBase64:
1076
+ outfile.write(
1077
+ "<%s>%s</%s>"
1078
+ % (self.name, base64.b64encode(self.value), self.name)
1079
+ )
1080
+
1081
+ def to_etree(
1082
+ self, element, mapping_=None, reverse_mapping_=None, nsmap_=None
1083
+ ):
1084
+ if self.category == MixedContainer.CategoryText:
1085
+ # Prevent exporting empty content as empty lines.
1086
+ if self.value.strip():
1087
+ if len(element) > 0:
1088
+ if element[-1].tail is None:
1089
+ element[-1].tail = self.value
1090
+ else:
1091
+ element[-1].tail += self.value
1092
+ else:
1093
+ if element.text is None:
1094
+ element.text = self.value
1095
+ else:
1096
+ element.text += self.value
1097
+ elif self.category == MixedContainer.CategorySimple:
1098
+ subelement = etree_.SubElement(element, "%s" % self.name)
1099
+ subelement.text = self.to_etree_simple()
1100
+ else: # category == MixedContainer.CategoryComplex
1101
+ self.value.to_etree(element)
1102
+
1103
+ def to_etree_simple(
1104
+ self, mapping_=None, reverse_mapping_=None, nsmap_=None
1105
+ ):
1106
+ if self.content_type == MixedContainer.TypeString:
1107
+ text = self.value
1108
+ elif (
1109
+ self.content_type == MixedContainer.TypeInteger
1110
+ or self.content_type == MixedContainer.TypeBoolean
1111
+ ):
1112
+ text = "%d" % self.value
1113
+ elif (
1114
+ self.content_type == MixedContainer.TypeFloat
1115
+ or self.content_type == MixedContainer.TypeDecimal
1116
+ ):
1117
+ text = "%f" % self.value
1118
+ elif self.content_type == MixedContainer.TypeDouble:
1119
+ text = "%g" % self.value
1120
+ elif self.content_type == MixedContainer.TypeBase64:
1121
+ text = "%s" % base64.b64encode(self.value)
1122
+ return text
1123
+
1124
+ def exportLiteral(self, outfile, level, name):
1125
+ if self.category == MixedContainer.CategoryText:
1126
+ showIndent(outfile, level)
1127
+ outfile.write(
1128
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n'
1129
+ % (self.category, self.content_type, self.name, self.value)
1130
+ )
1131
+ elif self.category == MixedContainer.CategorySimple:
1132
+ showIndent(outfile, level)
1133
+ outfile.write(
1134
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n'
1135
+ % (self.category, self.content_type, self.name, self.value)
1136
+ )
1137
+ else: # category == MixedContainer.CategoryComplex
1138
+ showIndent(outfile, level)
1139
+ outfile.write(
1140
+ 'model_.MixedContainer(%d, %d, "%s",\n'
1141
+ % (
1142
+ self.category,
1143
+ self.content_type,
1144
+ self.name,
1145
+ )
1146
+ )
1147
+ self.value.exportLiteral(outfile, level + 1)
1148
+ showIndent(outfile, level)
1149
+ outfile.write(")\n")
1150
+
1151
+
1152
+ class MemberSpec_(object):
1153
+ def __init__(
1154
+ self,
1155
+ name="",
1156
+ data_type="",
1157
+ container=0,
1158
+ optional=0,
1159
+ child_attrs=None,
1160
+ choice=None,
1161
+ ):
1162
+ self.name = name
1163
+ self.data_type = data_type
1164
+ self.container = container
1165
+ self.child_attrs = child_attrs
1166
+ self.choice = choice
1167
+ self.optional = optional
1168
+
1169
+ def set_name(self, name):
1170
+ self.name = name
1171
+
1172
+ def get_name(self):
1173
+ return self.name
1174
+
1175
+ def set_data_type(self, data_type):
1176
+ self.data_type = data_type
1177
+
1178
+ def get_data_type_chain(self):
1179
+ return self.data_type
1180
+
1181
+ def get_data_type(self):
1182
+ if isinstance(self.data_type, list):
1183
+ if len(self.data_type) > 0:
1184
+ return self.data_type[-1]
1185
+ else:
1186
+ return "xs:string"
1187
+ else:
1188
+ return self.data_type
1189
+
1190
+ def set_container(self, container):
1191
+ self.container = container
1192
+
1193
+ def get_container(self):
1194
+ return self.container
1195
+
1196
+ def set_child_attrs(self, child_attrs):
1197
+ self.child_attrs = child_attrs
1198
+
1199
+ def get_child_attrs(self):
1200
+ return self.child_attrs
1201
+
1202
+ def set_choice(self, choice):
1203
+ self.choice = choice
1204
+
1205
+ def get_choice(self):
1206
+ return self.choice
1207
+
1208
+ def set_optional(self, optional):
1209
+ self.optional = optional
1210
+
1211
+ def get_optional(self):
1212
+ return self.optional
1213
+
1214
+
1215
+ def _cast(typ, value):
1216
+ if typ is None or value is None:
1217
+ return value
1218
+ return typ(value)
1219
+
1220
+
1221
+ #
1222
+ # Start enum classes
1223
+ #
1224
+ #
1225
+ # Start data representation classes
1226
+ #
1227
+ class scpd(GeneratedsSuper):
1228
+ __hash__ = GeneratedsSuper.__hash__
1229
+ subclass = None
1230
+ superclass = None
1231
+
1232
+ def __init__(
1233
+ self,
1234
+ specVersion=None,
1235
+ actionList=None,
1236
+ serviceStateTable=None,
1237
+ gds_collector_=None,
1238
+ **kwargs_
1239
+ ):
1240
+ self.gds_collector_ = gds_collector_
1241
+ self.gds_elementtree_node_ = None
1242
+ self.original_tagname_ = None
1243
+ self.parent_object_ = kwargs_.get("parent_object_")
1244
+ self.ns_prefix_ = None
1245
+ self.specVersion = specVersion
1246
+ self.specVersion_nsprefix_ = None
1247
+ self.actionList = actionList
1248
+ self.actionList_nsprefix_ = None
1249
+ self.serviceStateTable = serviceStateTable
1250
+ self.serviceStateTable_nsprefix_ = None
1251
+
1252
+ def factory(*args_, **kwargs_):
1253
+ if CurrentSubclassModule_ is not None:
1254
+ subclass = getSubclassFromModule_(CurrentSubclassModule_, scpd)
1255
+ if subclass is not None:
1256
+ return subclass(*args_, **kwargs_)
1257
+ if scpd.subclass:
1258
+ return scpd.subclass(*args_, **kwargs_)
1259
+ else:
1260
+ return scpd(*args_, **kwargs_)
1261
+
1262
+ factory = staticmethod(factory)
1263
+
1264
+ def get_ns_prefix_(self):
1265
+ return self.ns_prefix_
1266
+
1267
+ def set_ns_prefix_(self, ns_prefix):
1268
+ self.ns_prefix_ = ns_prefix
1269
+
1270
+ def get_specVersion(self):
1271
+ return self.specVersion
1272
+
1273
+ def set_specVersion(self, specVersion):
1274
+ self.specVersion = specVersion
1275
+
1276
+ def get_actionList(self):
1277
+ return self.actionList
1278
+
1279
+ def set_actionList(self, actionList):
1280
+ self.actionList = actionList
1281
+
1282
+ def get_serviceStateTable(self):
1283
+ return self.serviceStateTable
1284
+
1285
+ def set_serviceStateTable(self, serviceStateTable):
1286
+ self.serviceStateTable = serviceStateTable
1287
+
1288
+ def has__content(self):
1289
+ if (
1290
+ self.specVersion is not None
1291
+ or self.actionList is not None
1292
+ or self.serviceStateTable is not None
1293
+ ):
1294
+ return True
1295
+ else:
1296
+ return False
1297
+
1298
+ def export(
1299
+ self,
1300
+ outfile,
1301
+ level,
1302
+ namespaceprefix_="",
1303
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1304
+ name_="scpd",
1305
+ pretty_print=True,
1306
+ ):
1307
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("scpd")
1308
+ if imported_ns_def_ is not None:
1309
+ namespacedef_ = imported_ns_def_
1310
+ if pretty_print:
1311
+ eol_ = "\n"
1312
+ else:
1313
+ eol_ = ""
1314
+ if self.original_tagname_ is not None and name_ == "scpd":
1315
+ name_ = self.original_tagname_
1316
+ if UseCapturedNS_ and self.ns_prefix_:
1317
+ namespaceprefix_ = self.ns_prefix_ + ":"
1318
+ showIndent(outfile, level, pretty_print)
1319
+ outfile.write(
1320
+ "<%s%s%s"
1321
+ % (
1322
+ namespaceprefix_,
1323
+ name_,
1324
+ namespacedef_ and " " + namespacedef_ or "",
1325
+ )
1326
+ )
1327
+ already_processed = set()
1328
+ self._exportAttributes(
1329
+ outfile, level, already_processed, namespaceprefix_, name_="scpd"
1330
+ )
1331
+ if self.has__content():
1332
+ outfile.write(">%s" % (eol_,))
1333
+ self._exportChildren(
1334
+ outfile,
1335
+ level + 1,
1336
+ namespaceprefix_,
1337
+ namespacedef_,
1338
+ name_="scpd",
1339
+ pretty_print=pretty_print,
1340
+ )
1341
+ showIndent(outfile, level, pretty_print)
1342
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
1343
+ else:
1344
+ outfile.write("/>%s" % (eol_,))
1345
+
1346
+ def _exportAttributes(
1347
+ self,
1348
+ outfile,
1349
+ level,
1350
+ already_processed,
1351
+ namespaceprefix_="",
1352
+ name_="scpd",
1353
+ ):
1354
+ pass
1355
+
1356
+ def _exportChildren(
1357
+ self,
1358
+ outfile,
1359
+ level,
1360
+ namespaceprefix_="",
1361
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1362
+ name_="scpd",
1363
+ fromsubclass_=False,
1364
+ pretty_print=True,
1365
+ ):
1366
+ if pretty_print:
1367
+ eol_ = "\n"
1368
+ else:
1369
+ eol_ = ""
1370
+ if self.specVersion is not None:
1371
+ namespaceprefix_ = (
1372
+ self.specVersion_nsprefix_ + ":"
1373
+ if (UseCapturedNS_ and self.specVersion_nsprefix_)
1374
+ else ""
1375
+ )
1376
+ self.specVersion.export(
1377
+ outfile,
1378
+ level,
1379
+ namespaceprefix_,
1380
+ namespacedef_="",
1381
+ name_="specVersion",
1382
+ pretty_print=pretty_print,
1383
+ )
1384
+ if self.actionList is not None:
1385
+ namespaceprefix_ = (
1386
+ self.actionList_nsprefix_ + ":"
1387
+ if (UseCapturedNS_ and self.actionList_nsprefix_)
1388
+ else ""
1389
+ )
1390
+ self.actionList.export(
1391
+ outfile,
1392
+ level,
1393
+ namespaceprefix_,
1394
+ namespacedef_="",
1395
+ name_="actionList",
1396
+ pretty_print=pretty_print,
1397
+ )
1398
+ if self.serviceStateTable is not None:
1399
+ namespaceprefix_ = (
1400
+ self.serviceStateTable_nsprefix_ + ":"
1401
+ if (UseCapturedNS_ and self.serviceStateTable_nsprefix_)
1402
+ else ""
1403
+ )
1404
+ self.serviceStateTable.export(
1405
+ outfile,
1406
+ level,
1407
+ namespaceprefix_,
1408
+ namespacedef_="",
1409
+ name_="serviceStateTable",
1410
+ pretty_print=pretty_print,
1411
+ )
1412
+
1413
+ def build(self, node, gds_collector_=None):
1414
+ self.gds_collector_ = gds_collector_
1415
+ if SaveElementTreeNode:
1416
+ self.gds_elementtree_node_ = node
1417
+ already_processed = set()
1418
+ self.ns_prefix_ = node.prefix
1419
+ self._buildAttributes(node, node.attrib, already_processed)
1420
+ for child in node:
1421
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1422
+ self._buildChildren(
1423
+ child, node, nodeName_, gds_collector_=gds_collector_
1424
+ )
1425
+ return self
1426
+
1427
+ def _buildAttributes(self, node, attrs, already_processed):
1428
+ pass
1429
+
1430
+ def _buildChildren(
1431
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
1432
+ ):
1433
+ if nodeName_ == "specVersion":
1434
+ obj_ = SpecVersionType.factory(parent_object_=self)
1435
+ obj_.build(child_, gds_collector_=gds_collector_)
1436
+ self.specVersion = obj_
1437
+ obj_.original_tagname_ = "specVersion"
1438
+ elif nodeName_ == "actionList":
1439
+ obj_ = ActionListType.factory(parent_object_=self)
1440
+ obj_.build(child_, gds_collector_=gds_collector_)
1441
+ self.actionList = obj_
1442
+ obj_.original_tagname_ = "actionList"
1443
+ elif nodeName_ == "serviceStateTable":
1444
+ obj_ = ServiceStateTableType.factory(parent_object_=self)
1445
+ obj_.build(child_, gds_collector_=gds_collector_)
1446
+ self.serviceStateTable = obj_
1447
+ obj_.original_tagname_ = "serviceStateTable"
1448
+
1449
+
1450
+ # end class scpd
1451
+
1452
+
1453
+ class SpecVersionType(GeneratedsSuper):
1454
+ __hash__ = GeneratedsSuper.__hash__
1455
+ subclass = None
1456
+ superclass = None
1457
+
1458
+ def __init__(self, major=None, minor=None, gds_collector_=None, **kwargs_):
1459
+ self.gds_collector_ = gds_collector_
1460
+ self.gds_elementtree_node_ = None
1461
+ self.original_tagname_ = None
1462
+ self.parent_object_ = kwargs_.get("parent_object_")
1463
+ self.ns_prefix_ = None
1464
+ self.major = major
1465
+ self.major_nsprefix_ = None
1466
+ self.minor = minor
1467
+ self.minor_nsprefix_ = None
1468
+
1469
+ def factory(*args_, **kwargs_):
1470
+ if CurrentSubclassModule_ is not None:
1471
+ subclass = getSubclassFromModule_(
1472
+ CurrentSubclassModule_, SpecVersionType
1473
+ )
1474
+ if subclass is not None:
1475
+ return subclass(*args_, **kwargs_)
1476
+ if SpecVersionType.subclass:
1477
+ return SpecVersionType.subclass(*args_, **kwargs_)
1478
+ else:
1479
+ return SpecVersionType(*args_, **kwargs_)
1480
+
1481
+ factory = staticmethod(factory)
1482
+
1483
+ def get_ns_prefix_(self):
1484
+ return self.ns_prefix_
1485
+
1486
+ def set_ns_prefix_(self, ns_prefix):
1487
+ self.ns_prefix_ = ns_prefix
1488
+
1489
+ def get_major(self):
1490
+ return self.major
1491
+
1492
+ def set_major(self, major):
1493
+ self.major = major
1494
+
1495
+ def get_minor(self):
1496
+ return self.minor
1497
+
1498
+ def set_minor(self, minor):
1499
+ self.minor = minor
1500
+
1501
+ def has__content(self):
1502
+ if self.major is not None or self.minor is not None:
1503
+ return True
1504
+ else:
1505
+ return False
1506
+
1507
+ def export(
1508
+ self,
1509
+ outfile,
1510
+ level,
1511
+ namespaceprefix_="",
1512
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1513
+ name_="SpecVersionType",
1514
+ pretty_print=True,
1515
+ ):
1516
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("SpecVersionType")
1517
+ if imported_ns_def_ is not None:
1518
+ namespacedef_ = imported_ns_def_
1519
+ if pretty_print:
1520
+ eol_ = "\n"
1521
+ else:
1522
+ eol_ = ""
1523
+ if self.original_tagname_ is not None and name_ == "SpecVersionType":
1524
+ name_ = self.original_tagname_
1525
+ if UseCapturedNS_ and self.ns_prefix_:
1526
+ namespaceprefix_ = self.ns_prefix_ + ":"
1527
+ showIndent(outfile, level, pretty_print)
1528
+ outfile.write(
1529
+ "<%s%s%s"
1530
+ % (
1531
+ namespaceprefix_,
1532
+ name_,
1533
+ namespacedef_ and " " + namespacedef_ or "",
1534
+ )
1535
+ )
1536
+ already_processed = set()
1537
+ self._exportAttributes(
1538
+ outfile,
1539
+ level,
1540
+ already_processed,
1541
+ namespaceprefix_,
1542
+ name_="SpecVersionType",
1543
+ )
1544
+ if self.has__content():
1545
+ outfile.write(">%s" % (eol_,))
1546
+ self._exportChildren(
1547
+ outfile,
1548
+ level + 1,
1549
+ namespaceprefix_,
1550
+ namespacedef_,
1551
+ name_="SpecVersionType",
1552
+ pretty_print=pretty_print,
1553
+ )
1554
+ showIndent(outfile, level, pretty_print)
1555
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
1556
+ else:
1557
+ outfile.write("/>%s" % (eol_,))
1558
+
1559
+ def _exportAttributes(
1560
+ self,
1561
+ outfile,
1562
+ level,
1563
+ already_processed,
1564
+ namespaceprefix_="",
1565
+ name_="SpecVersionType",
1566
+ ):
1567
+ pass
1568
+
1569
+ def _exportChildren(
1570
+ self,
1571
+ outfile,
1572
+ level,
1573
+ namespaceprefix_="",
1574
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1575
+ name_="SpecVersionType",
1576
+ fromsubclass_=False,
1577
+ pretty_print=True,
1578
+ ):
1579
+ if pretty_print:
1580
+ eol_ = "\n"
1581
+ else:
1582
+ eol_ = ""
1583
+ if self.major is not None:
1584
+ namespaceprefix_ = (
1585
+ self.major_nsprefix_ + ":"
1586
+ if (UseCapturedNS_ and self.major_nsprefix_)
1587
+ else ""
1588
+ )
1589
+ showIndent(outfile, level, pretty_print)
1590
+ outfile.write(
1591
+ "<%smajor>%s</%smajor>%s"
1592
+ % (
1593
+ namespaceprefix_,
1594
+ self.gds_format_integer(self.major, input_name="major"),
1595
+ namespaceprefix_,
1596
+ eol_,
1597
+ )
1598
+ )
1599
+ if self.minor is not None:
1600
+ namespaceprefix_ = (
1601
+ self.minor_nsprefix_ + ":"
1602
+ if (UseCapturedNS_ and self.minor_nsprefix_)
1603
+ else ""
1604
+ )
1605
+ showIndent(outfile, level, pretty_print)
1606
+ outfile.write(
1607
+ "<%sminor>%s</%sminor>%s"
1608
+ % (
1609
+ namespaceprefix_,
1610
+ self.gds_format_integer(self.minor, input_name="minor"),
1611
+ namespaceprefix_,
1612
+ eol_,
1613
+ )
1614
+ )
1615
+
1616
+ def build(self, node, gds_collector_=None):
1617
+ self.gds_collector_ = gds_collector_
1618
+ if SaveElementTreeNode:
1619
+ self.gds_elementtree_node_ = node
1620
+ already_processed = set()
1621
+ self.ns_prefix_ = node.prefix
1622
+ self._buildAttributes(node, node.attrib, already_processed)
1623
+ for child in node:
1624
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1625
+ self._buildChildren(
1626
+ child, node, nodeName_, gds_collector_=gds_collector_
1627
+ )
1628
+ return self
1629
+
1630
+ def _buildAttributes(self, node, attrs, already_processed):
1631
+ pass
1632
+
1633
+ def _buildChildren(
1634
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
1635
+ ):
1636
+ if nodeName_ == "major" and child_.text:
1637
+ sval_ = child_.text
1638
+ ival_ = self.gds_parse_integer(sval_, node, "major")
1639
+ ival_ = self.gds_validate_integer(ival_, node, "major")
1640
+ self.major = ival_
1641
+ self.major_nsprefix_ = child_.prefix
1642
+ elif nodeName_ == "minor" and child_.text:
1643
+ sval_ = child_.text
1644
+ ival_ = self.gds_parse_integer(sval_, node, "minor")
1645
+ ival_ = self.gds_validate_integer(ival_, node, "minor")
1646
+ self.minor = ival_
1647
+ self.minor_nsprefix_ = child_.prefix
1648
+
1649
+
1650
+ # end class SpecVersionType
1651
+
1652
+
1653
+ class ActionListType(GeneratedsSuper):
1654
+ __hash__ = GeneratedsSuper.__hash__
1655
+ subclass = None
1656
+ superclass = None
1657
+
1658
+ def __init__(self, action=None, gds_collector_=None, **kwargs_):
1659
+ self.gds_collector_ = gds_collector_
1660
+ self.gds_elementtree_node_ = None
1661
+ self.original_tagname_ = None
1662
+ self.parent_object_ = kwargs_.get("parent_object_")
1663
+ self.ns_prefix_ = None
1664
+ if action is None:
1665
+ self.action = []
1666
+ else:
1667
+ self.action = action
1668
+ self.action_nsprefix_ = None
1669
+
1670
+ def factory(*args_, **kwargs_):
1671
+ if CurrentSubclassModule_ is not None:
1672
+ subclass = getSubclassFromModule_(
1673
+ CurrentSubclassModule_, ActionListType
1674
+ )
1675
+ if subclass is not None:
1676
+ return subclass(*args_, **kwargs_)
1677
+ if ActionListType.subclass:
1678
+ return ActionListType.subclass(*args_, **kwargs_)
1679
+ else:
1680
+ return ActionListType(*args_, **kwargs_)
1681
+
1682
+ factory = staticmethod(factory)
1683
+
1684
+ def get_ns_prefix_(self):
1685
+ return self.ns_prefix_
1686
+
1687
+ def set_ns_prefix_(self, ns_prefix):
1688
+ self.ns_prefix_ = ns_prefix
1689
+
1690
+ def get_action(self):
1691
+ return self.action
1692
+
1693
+ def set_action(self, action):
1694
+ self.action = action
1695
+
1696
+ def add_action(self, value):
1697
+ self.action.append(value)
1698
+
1699
+ def insert_action_at(self, index, value):
1700
+ self.action.insert(index, value)
1701
+
1702
+ def replace_action_at(self, index, value):
1703
+ self.action[index] = value
1704
+
1705
+ def has__content(self):
1706
+ if self.action:
1707
+ return True
1708
+ else:
1709
+ return False
1710
+
1711
+ def export(
1712
+ self,
1713
+ outfile,
1714
+ level,
1715
+ namespaceprefix_="",
1716
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1717
+ name_="ActionListType",
1718
+ pretty_print=True,
1719
+ ):
1720
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("ActionListType")
1721
+ if imported_ns_def_ is not None:
1722
+ namespacedef_ = imported_ns_def_
1723
+ if pretty_print:
1724
+ eol_ = "\n"
1725
+ else:
1726
+ eol_ = ""
1727
+ if self.original_tagname_ is not None and name_ == "ActionListType":
1728
+ name_ = self.original_tagname_
1729
+ if UseCapturedNS_ and self.ns_prefix_:
1730
+ namespaceprefix_ = self.ns_prefix_ + ":"
1731
+ showIndent(outfile, level, pretty_print)
1732
+ outfile.write(
1733
+ "<%s%s%s"
1734
+ % (
1735
+ namespaceprefix_,
1736
+ name_,
1737
+ namespacedef_ and " " + namespacedef_ or "",
1738
+ )
1739
+ )
1740
+ already_processed = set()
1741
+ self._exportAttributes(
1742
+ outfile,
1743
+ level,
1744
+ already_processed,
1745
+ namespaceprefix_,
1746
+ name_="ActionListType",
1747
+ )
1748
+ if self.has__content():
1749
+ outfile.write(">%s" % (eol_,))
1750
+ self._exportChildren(
1751
+ outfile,
1752
+ level + 1,
1753
+ namespaceprefix_,
1754
+ namespacedef_,
1755
+ name_="ActionListType",
1756
+ pretty_print=pretty_print,
1757
+ )
1758
+ showIndent(outfile, level, pretty_print)
1759
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
1760
+ else:
1761
+ outfile.write("/>%s" % (eol_,))
1762
+
1763
+ def _exportAttributes(
1764
+ self,
1765
+ outfile,
1766
+ level,
1767
+ already_processed,
1768
+ namespaceprefix_="",
1769
+ name_="ActionListType",
1770
+ ):
1771
+ pass
1772
+
1773
+ def _exportChildren(
1774
+ self,
1775
+ outfile,
1776
+ level,
1777
+ namespaceprefix_="",
1778
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1779
+ name_="ActionListType",
1780
+ fromsubclass_=False,
1781
+ pretty_print=True,
1782
+ ):
1783
+ if pretty_print:
1784
+ eol_ = "\n"
1785
+ else:
1786
+ eol_ = ""
1787
+ for action_ in self.action:
1788
+ namespaceprefix_ = (
1789
+ self.action_nsprefix_ + ":"
1790
+ if (UseCapturedNS_ and self.action_nsprefix_)
1791
+ else ""
1792
+ )
1793
+ action_.export(
1794
+ outfile,
1795
+ level,
1796
+ namespaceprefix_,
1797
+ namespacedef_="",
1798
+ name_="action",
1799
+ pretty_print=pretty_print,
1800
+ )
1801
+
1802
+ def build(self, node, gds_collector_=None):
1803
+ self.gds_collector_ = gds_collector_
1804
+ if SaveElementTreeNode:
1805
+ self.gds_elementtree_node_ = node
1806
+ already_processed = set()
1807
+ self.ns_prefix_ = node.prefix
1808
+ self._buildAttributes(node, node.attrib, already_processed)
1809
+ for child in node:
1810
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1811
+ self._buildChildren(
1812
+ child, node, nodeName_, gds_collector_=gds_collector_
1813
+ )
1814
+ return self
1815
+
1816
+ def _buildAttributes(self, node, attrs, already_processed):
1817
+ pass
1818
+
1819
+ def _buildChildren(
1820
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
1821
+ ):
1822
+ if nodeName_ == "action":
1823
+ obj_ = ActionType.factory(parent_object_=self)
1824
+ obj_.build(child_, gds_collector_=gds_collector_)
1825
+ self.action.append(obj_)
1826
+ obj_.original_tagname_ = "action"
1827
+
1828
+
1829
+ # end class ActionListType
1830
+
1831
+
1832
+ class ActionType(GeneratedsSuper):
1833
+ __hash__ = GeneratedsSuper.__hash__
1834
+ subclass = None
1835
+ superclass = None
1836
+
1837
+ def __init__(
1838
+ self, name=None, argumentList=None, gds_collector_=None, **kwargs_
1839
+ ):
1840
+ self.gds_collector_ = gds_collector_
1841
+ self.gds_elementtree_node_ = None
1842
+ self.original_tagname_ = None
1843
+ self.parent_object_ = kwargs_.get("parent_object_")
1844
+ self.ns_prefix_ = None
1845
+ self.name = name
1846
+ self.name_nsprefix_ = None
1847
+ self.argumentList = argumentList
1848
+ self.argumentList_nsprefix_ = None
1849
+
1850
+ def factory(*args_, **kwargs_):
1851
+ if CurrentSubclassModule_ is not None:
1852
+ subclass = getSubclassFromModule_(
1853
+ CurrentSubclassModule_, ActionType
1854
+ )
1855
+ if subclass is not None:
1856
+ return subclass(*args_, **kwargs_)
1857
+ if ActionType.subclass:
1858
+ return ActionType.subclass(*args_, **kwargs_)
1859
+ else:
1860
+ return ActionType(*args_, **kwargs_)
1861
+
1862
+ factory = staticmethod(factory)
1863
+
1864
+ def get_ns_prefix_(self):
1865
+ return self.ns_prefix_
1866
+
1867
+ def set_ns_prefix_(self, ns_prefix):
1868
+ self.ns_prefix_ = ns_prefix
1869
+
1870
+ def get_name(self):
1871
+ return self.name
1872
+
1873
+ def set_name(self, name):
1874
+ self.name = name
1875
+
1876
+ def get_argumentList(self):
1877
+ return self.argumentList
1878
+
1879
+ def set_argumentList(self, argumentList):
1880
+ self.argumentList = argumentList
1881
+
1882
+ def has__content(self):
1883
+ if self.name is not None or self.argumentList is not None:
1884
+ return True
1885
+ else:
1886
+ return False
1887
+
1888
+ def export(
1889
+ self,
1890
+ outfile,
1891
+ level,
1892
+ namespaceprefix_="",
1893
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1894
+ name_="ActionType",
1895
+ pretty_print=True,
1896
+ ):
1897
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("ActionType")
1898
+ if imported_ns_def_ is not None:
1899
+ namespacedef_ = imported_ns_def_
1900
+ if pretty_print:
1901
+ eol_ = "\n"
1902
+ else:
1903
+ eol_ = ""
1904
+ if self.original_tagname_ is not None and name_ == "ActionType":
1905
+ name_ = self.original_tagname_
1906
+ if UseCapturedNS_ and self.ns_prefix_:
1907
+ namespaceprefix_ = self.ns_prefix_ + ":"
1908
+ showIndent(outfile, level, pretty_print)
1909
+ outfile.write(
1910
+ "<%s%s%s"
1911
+ % (
1912
+ namespaceprefix_,
1913
+ name_,
1914
+ namespacedef_ and " " + namespacedef_ or "",
1915
+ )
1916
+ )
1917
+ already_processed = set()
1918
+ self._exportAttributes(
1919
+ outfile,
1920
+ level,
1921
+ already_processed,
1922
+ namespaceprefix_,
1923
+ name_="ActionType",
1924
+ )
1925
+ if self.has__content():
1926
+ outfile.write(">%s" % (eol_,))
1927
+ self._exportChildren(
1928
+ outfile,
1929
+ level + 1,
1930
+ namespaceprefix_,
1931
+ namespacedef_,
1932
+ name_="ActionType",
1933
+ pretty_print=pretty_print,
1934
+ )
1935
+ showIndent(outfile, level, pretty_print)
1936
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
1937
+ else:
1938
+ outfile.write("/>%s" % (eol_,))
1939
+
1940
+ def _exportAttributes(
1941
+ self,
1942
+ outfile,
1943
+ level,
1944
+ already_processed,
1945
+ namespaceprefix_="",
1946
+ name_="ActionType",
1947
+ ):
1948
+ pass
1949
+
1950
+ def _exportChildren(
1951
+ self,
1952
+ outfile,
1953
+ level,
1954
+ namespaceprefix_="",
1955
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
1956
+ name_="ActionType",
1957
+ fromsubclass_=False,
1958
+ pretty_print=True,
1959
+ ):
1960
+ if pretty_print:
1961
+ eol_ = "\n"
1962
+ else:
1963
+ eol_ = ""
1964
+ if self.name is not None:
1965
+ namespaceprefix_ = (
1966
+ self.name_nsprefix_ + ":"
1967
+ if (UseCapturedNS_ and self.name_nsprefix_)
1968
+ else ""
1969
+ )
1970
+ showIndent(outfile, level, pretty_print)
1971
+ outfile.write(
1972
+ "<%sname>%s</%sname>%s"
1973
+ % (
1974
+ namespaceprefix_,
1975
+ self.gds_encode(
1976
+ self.gds_format_string(
1977
+ quote_xml(self.name), input_name="name"
1978
+ )
1979
+ ),
1980
+ namespaceprefix_,
1981
+ eol_,
1982
+ )
1983
+ )
1984
+ if self.argumentList is not None:
1985
+ namespaceprefix_ = (
1986
+ self.argumentList_nsprefix_ + ":"
1987
+ if (UseCapturedNS_ and self.argumentList_nsprefix_)
1988
+ else ""
1989
+ )
1990
+ self.argumentList.export(
1991
+ outfile,
1992
+ level,
1993
+ namespaceprefix_,
1994
+ namespacedef_="",
1995
+ name_="argumentList",
1996
+ pretty_print=pretty_print,
1997
+ )
1998
+
1999
+ def build(self, node, gds_collector_=None):
2000
+ self.gds_collector_ = gds_collector_
2001
+ if SaveElementTreeNode:
2002
+ self.gds_elementtree_node_ = node
2003
+ already_processed = set()
2004
+ self.ns_prefix_ = node.prefix
2005
+ self._buildAttributes(node, node.attrib, already_processed)
2006
+ for child in node:
2007
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2008
+ self._buildChildren(
2009
+ child, node, nodeName_, gds_collector_=gds_collector_
2010
+ )
2011
+ return self
2012
+
2013
+ def _buildAttributes(self, node, attrs, already_processed):
2014
+ pass
2015
+
2016
+ def _buildChildren(
2017
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
2018
+ ):
2019
+ if nodeName_ == "name":
2020
+ value_ = child_.text
2021
+ value_ = self.gds_parse_string(value_, node, "name")
2022
+ value_ = self.gds_validate_string(value_, node, "name")
2023
+ self.name = value_
2024
+ self.name_nsprefix_ = child_.prefix
2025
+ elif nodeName_ == "argumentList":
2026
+ obj_ = ArgumentListType.factory(parent_object_=self)
2027
+ obj_.build(child_, gds_collector_=gds_collector_)
2028
+ self.argumentList = obj_
2029
+ obj_.original_tagname_ = "argumentList"
2030
+
2031
+
2032
+ # end class ActionType
2033
+
2034
+
2035
+ class ArgumentListType(GeneratedsSuper):
2036
+ __hash__ = GeneratedsSuper.__hash__
2037
+ subclass = None
2038
+ superclass = None
2039
+
2040
+ def __init__(self, argument=None, gds_collector_=None, **kwargs_):
2041
+ self.gds_collector_ = gds_collector_
2042
+ self.gds_elementtree_node_ = None
2043
+ self.original_tagname_ = None
2044
+ self.parent_object_ = kwargs_.get("parent_object_")
2045
+ self.ns_prefix_ = None
2046
+ if argument is None:
2047
+ self.argument = []
2048
+ else:
2049
+ self.argument = argument
2050
+ self.argument_nsprefix_ = None
2051
+
2052
+ def factory(*args_, **kwargs_):
2053
+ if CurrentSubclassModule_ is not None:
2054
+ subclass = getSubclassFromModule_(
2055
+ CurrentSubclassModule_, ArgumentListType
2056
+ )
2057
+ if subclass is not None:
2058
+ return subclass(*args_, **kwargs_)
2059
+ if ArgumentListType.subclass:
2060
+ return ArgumentListType.subclass(*args_, **kwargs_)
2061
+ else:
2062
+ return ArgumentListType(*args_, **kwargs_)
2063
+
2064
+ factory = staticmethod(factory)
2065
+
2066
+ def get_ns_prefix_(self):
2067
+ return self.ns_prefix_
2068
+
2069
+ def set_ns_prefix_(self, ns_prefix):
2070
+ self.ns_prefix_ = ns_prefix
2071
+
2072
+ def get_argument(self):
2073
+ return self.argument
2074
+
2075
+ def set_argument(self, argument):
2076
+ self.argument = argument
2077
+
2078
+ def add_argument(self, value):
2079
+ self.argument.append(value)
2080
+
2081
+ def insert_argument_at(self, index, value):
2082
+ self.argument.insert(index, value)
2083
+
2084
+ def replace_argument_at(self, index, value):
2085
+ self.argument[index] = value
2086
+
2087
+ def has__content(self):
2088
+ if self.argument:
2089
+ return True
2090
+ else:
2091
+ return False
2092
+
2093
+ def export(
2094
+ self,
2095
+ outfile,
2096
+ level,
2097
+ namespaceprefix_="",
2098
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2099
+ name_="ArgumentListType",
2100
+ pretty_print=True,
2101
+ ):
2102
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("ArgumentListType")
2103
+ if imported_ns_def_ is not None:
2104
+ namespacedef_ = imported_ns_def_
2105
+ if pretty_print:
2106
+ eol_ = "\n"
2107
+ else:
2108
+ eol_ = ""
2109
+ if self.original_tagname_ is not None and name_ == "ArgumentListType":
2110
+ name_ = self.original_tagname_
2111
+ if UseCapturedNS_ and self.ns_prefix_:
2112
+ namespaceprefix_ = self.ns_prefix_ + ":"
2113
+ showIndent(outfile, level, pretty_print)
2114
+ outfile.write(
2115
+ "<%s%s%s"
2116
+ % (
2117
+ namespaceprefix_,
2118
+ name_,
2119
+ namespacedef_ and " " + namespacedef_ or "",
2120
+ )
2121
+ )
2122
+ already_processed = set()
2123
+ self._exportAttributes(
2124
+ outfile,
2125
+ level,
2126
+ already_processed,
2127
+ namespaceprefix_,
2128
+ name_="ArgumentListType",
2129
+ )
2130
+ if self.has__content():
2131
+ outfile.write(">%s" % (eol_,))
2132
+ self._exportChildren(
2133
+ outfile,
2134
+ level + 1,
2135
+ namespaceprefix_,
2136
+ namespacedef_,
2137
+ name_="ArgumentListType",
2138
+ pretty_print=pretty_print,
2139
+ )
2140
+ showIndent(outfile, level, pretty_print)
2141
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
2142
+ else:
2143
+ outfile.write("/>%s" % (eol_,))
2144
+
2145
+ def _exportAttributes(
2146
+ self,
2147
+ outfile,
2148
+ level,
2149
+ already_processed,
2150
+ namespaceprefix_="",
2151
+ name_="ArgumentListType",
2152
+ ):
2153
+ pass
2154
+
2155
+ def _exportChildren(
2156
+ self,
2157
+ outfile,
2158
+ level,
2159
+ namespaceprefix_="",
2160
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2161
+ name_="ArgumentListType",
2162
+ fromsubclass_=False,
2163
+ pretty_print=True,
2164
+ ):
2165
+ if pretty_print:
2166
+ eol_ = "\n"
2167
+ else:
2168
+ eol_ = ""
2169
+ for argument_ in self.argument:
2170
+ namespaceprefix_ = (
2171
+ self.argument_nsprefix_ + ":"
2172
+ if (UseCapturedNS_ and self.argument_nsprefix_)
2173
+ else ""
2174
+ )
2175
+ argument_.export(
2176
+ outfile,
2177
+ level,
2178
+ namespaceprefix_,
2179
+ namespacedef_="",
2180
+ name_="argument",
2181
+ pretty_print=pretty_print,
2182
+ )
2183
+
2184
+ def build(self, node, gds_collector_=None):
2185
+ self.gds_collector_ = gds_collector_
2186
+ if SaveElementTreeNode:
2187
+ self.gds_elementtree_node_ = node
2188
+ already_processed = set()
2189
+ self.ns_prefix_ = node.prefix
2190
+ self._buildAttributes(node, node.attrib, already_processed)
2191
+ for child in node:
2192
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2193
+ self._buildChildren(
2194
+ child, node, nodeName_, gds_collector_=gds_collector_
2195
+ )
2196
+ return self
2197
+
2198
+ def _buildAttributes(self, node, attrs, already_processed):
2199
+ pass
2200
+
2201
+ def _buildChildren(
2202
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
2203
+ ):
2204
+ if nodeName_ == "argument":
2205
+ obj_ = ArgumentType.factory(parent_object_=self)
2206
+ obj_.build(child_, gds_collector_=gds_collector_)
2207
+ self.argument.append(obj_)
2208
+ obj_.original_tagname_ = "argument"
2209
+
2210
+
2211
+ # end class ArgumentListType
2212
+
2213
+
2214
+ class ArgumentType(GeneratedsSuper):
2215
+ __hash__ = GeneratedsSuper.__hash__
2216
+ subclass = None
2217
+ superclass = None
2218
+
2219
+ def __init__(
2220
+ self,
2221
+ name=None,
2222
+ direction=None,
2223
+ relatedStateVariable=None,
2224
+ retval=None,
2225
+ gds_collector_=None,
2226
+ **kwargs_
2227
+ ):
2228
+ self.gds_collector_ = gds_collector_
2229
+ self.gds_elementtree_node_ = None
2230
+ self.original_tagname_ = None
2231
+ self.parent_object_ = kwargs_.get("parent_object_")
2232
+ self.ns_prefix_ = None
2233
+ self.name = name
2234
+ self.name_nsprefix_ = None
2235
+ self.direction = direction
2236
+ self.direction_nsprefix_ = None
2237
+ self.relatedStateVariable = relatedStateVariable
2238
+ self.relatedStateVariable_nsprefix_ = None
2239
+ self.retval = retval
2240
+ self.retval_nsprefix_ = None
2241
+
2242
+ def factory(*args_, **kwargs_):
2243
+ if CurrentSubclassModule_ is not None:
2244
+ subclass = getSubclassFromModule_(
2245
+ CurrentSubclassModule_, ArgumentType
2246
+ )
2247
+ if subclass is not None:
2248
+ return subclass(*args_, **kwargs_)
2249
+ if ArgumentType.subclass:
2250
+ return ArgumentType.subclass(*args_, **kwargs_)
2251
+ else:
2252
+ return ArgumentType(*args_, **kwargs_)
2253
+
2254
+ factory = staticmethod(factory)
2255
+
2256
+ def get_ns_prefix_(self):
2257
+ return self.ns_prefix_
2258
+
2259
+ def set_ns_prefix_(self, ns_prefix):
2260
+ self.ns_prefix_ = ns_prefix
2261
+
2262
+ def get_name(self):
2263
+ return self.name
2264
+
2265
+ def set_name(self, name):
2266
+ self.name = name
2267
+
2268
+ def get_direction(self):
2269
+ return self.direction
2270
+
2271
+ def set_direction(self, direction):
2272
+ self.direction = direction
2273
+
2274
+ def get_relatedStateVariable(self):
2275
+ return self.relatedStateVariable
2276
+
2277
+ def set_relatedStateVariable(self, relatedStateVariable):
2278
+ self.relatedStateVariable = relatedStateVariable
2279
+
2280
+ def get_retval(self):
2281
+ return self.retval
2282
+
2283
+ def set_retval(self, retval):
2284
+ self.retval = retval
2285
+
2286
+ def has__content(self):
2287
+ if (
2288
+ self.name is not None
2289
+ or self.direction is not None
2290
+ or self.relatedStateVariable is not None
2291
+ or self.retval is not None
2292
+ ):
2293
+ return True
2294
+ else:
2295
+ return False
2296
+
2297
+ def export(
2298
+ self,
2299
+ outfile,
2300
+ level,
2301
+ namespaceprefix_="",
2302
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2303
+ name_="ArgumentType",
2304
+ pretty_print=True,
2305
+ ):
2306
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("ArgumentType")
2307
+ if imported_ns_def_ is not None:
2308
+ namespacedef_ = imported_ns_def_
2309
+ if pretty_print:
2310
+ eol_ = "\n"
2311
+ else:
2312
+ eol_ = ""
2313
+ if self.original_tagname_ is not None and name_ == "ArgumentType":
2314
+ name_ = self.original_tagname_
2315
+ if UseCapturedNS_ and self.ns_prefix_:
2316
+ namespaceprefix_ = self.ns_prefix_ + ":"
2317
+ showIndent(outfile, level, pretty_print)
2318
+ outfile.write(
2319
+ "<%s%s%s"
2320
+ % (
2321
+ namespaceprefix_,
2322
+ name_,
2323
+ namespacedef_ and " " + namespacedef_ or "",
2324
+ )
2325
+ )
2326
+ already_processed = set()
2327
+ self._exportAttributes(
2328
+ outfile,
2329
+ level,
2330
+ already_processed,
2331
+ namespaceprefix_,
2332
+ name_="ArgumentType",
2333
+ )
2334
+ if self.has__content():
2335
+ outfile.write(">%s" % (eol_,))
2336
+ self._exportChildren(
2337
+ outfile,
2338
+ level + 1,
2339
+ namespaceprefix_,
2340
+ namespacedef_,
2341
+ name_="ArgumentType",
2342
+ pretty_print=pretty_print,
2343
+ )
2344
+ showIndent(outfile, level, pretty_print)
2345
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
2346
+ else:
2347
+ outfile.write("/>%s" % (eol_,))
2348
+
2349
+ def _exportAttributes(
2350
+ self,
2351
+ outfile,
2352
+ level,
2353
+ already_processed,
2354
+ namespaceprefix_="",
2355
+ name_="ArgumentType",
2356
+ ):
2357
+ pass
2358
+
2359
+ def _exportChildren(
2360
+ self,
2361
+ outfile,
2362
+ level,
2363
+ namespaceprefix_="",
2364
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2365
+ name_="ArgumentType",
2366
+ fromsubclass_=False,
2367
+ pretty_print=True,
2368
+ ):
2369
+ if pretty_print:
2370
+ eol_ = "\n"
2371
+ else:
2372
+ eol_ = ""
2373
+ if self.name is not None:
2374
+ namespaceprefix_ = (
2375
+ self.name_nsprefix_ + ":"
2376
+ if (UseCapturedNS_ and self.name_nsprefix_)
2377
+ else ""
2378
+ )
2379
+ showIndent(outfile, level, pretty_print)
2380
+ outfile.write(
2381
+ "<%sname>%s</%sname>%s"
2382
+ % (
2383
+ namespaceprefix_,
2384
+ self.gds_encode(
2385
+ self.gds_format_string(
2386
+ quote_xml(self.name), input_name="name"
2387
+ )
2388
+ ),
2389
+ namespaceprefix_,
2390
+ eol_,
2391
+ )
2392
+ )
2393
+ if self.direction is not None:
2394
+ namespaceprefix_ = (
2395
+ self.direction_nsprefix_ + ":"
2396
+ if (UseCapturedNS_ and self.direction_nsprefix_)
2397
+ else ""
2398
+ )
2399
+ showIndent(outfile, level, pretty_print)
2400
+ outfile.write(
2401
+ "<%sdirection>%s</%sdirection>%s"
2402
+ % (
2403
+ namespaceprefix_,
2404
+ self.gds_encode(
2405
+ self.gds_format_string(
2406
+ quote_xml(self.direction), input_name="direction"
2407
+ )
2408
+ ),
2409
+ namespaceprefix_,
2410
+ eol_,
2411
+ )
2412
+ )
2413
+ if self.relatedStateVariable is not None:
2414
+ namespaceprefix_ = (
2415
+ self.relatedStateVariable_nsprefix_ + ":"
2416
+ if (UseCapturedNS_ and self.relatedStateVariable_nsprefix_)
2417
+ else ""
2418
+ )
2419
+ showIndent(outfile, level, pretty_print)
2420
+ outfile.write(
2421
+ "<%srelatedStateVariable>%s</%srelatedStateVariable>%s"
2422
+ % (
2423
+ namespaceprefix_,
2424
+ self.gds_encode(
2425
+ self.gds_format_string(
2426
+ quote_xml(self.relatedStateVariable),
2427
+ input_name="relatedStateVariable",
2428
+ )
2429
+ ),
2430
+ namespaceprefix_,
2431
+ eol_,
2432
+ )
2433
+ )
2434
+ if self.retval is not None:
2435
+ namespaceprefix_ = (
2436
+ self.retval_nsprefix_ + ":"
2437
+ if (UseCapturedNS_ and self.retval_nsprefix_)
2438
+ else ""
2439
+ )
2440
+ self.retval.export(
2441
+ outfile,
2442
+ level,
2443
+ namespaceprefix_,
2444
+ namespacedef_="",
2445
+ name_="retval",
2446
+ pretty_print=pretty_print,
2447
+ )
2448
+
2449
+ def build(self, node, gds_collector_=None):
2450
+ self.gds_collector_ = gds_collector_
2451
+ if SaveElementTreeNode:
2452
+ self.gds_elementtree_node_ = node
2453
+ already_processed = set()
2454
+ self.ns_prefix_ = node.prefix
2455
+ self._buildAttributes(node, node.attrib, already_processed)
2456
+ for child in node:
2457
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2458
+ self._buildChildren(
2459
+ child, node, nodeName_, gds_collector_=gds_collector_
2460
+ )
2461
+ return self
2462
+
2463
+ def _buildAttributes(self, node, attrs, already_processed):
2464
+ pass
2465
+
2466
+ def _buildChildren(
2467
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
2468
+ ):
2469
+ if nodeName_ == "name":
2470
+ value_ = child_.text
2471
+ value_ = self.gds_parse_string(value_, node, "name")
2472
+ value_ = self.gds_validate_string(value_, node, "name")
2473
+ self.name = value_
2474
+ self.name_nsprefix_ = child_.prefix
2475
+ elif nodeName_ == "direction":
2476
+ value_ = child_.text
2477
+ value_ = self.gds_parse_string(value_, node, "direction")
2478
+ value_ = self.gds_validate_string(value_, node, "direction")
2479
+ self.direction = value_
2480
+ self.direction_nsprefix_ = child_.prefix
2481
+ elif nodeName_ == "relatedStateVariable":
2482
+ value_ = child_.text
2483
+ value_ = self.gds_parse_string(
2484
+ value_, node, "relatedStateVariable"
2485
+ )
2486
+ value_ = self.gds_validate_string(
2487
+ value_, node, "relatedStateVariable"
2488
+ )
2489
+ self.relatedStateVariable = value_
2490
+ self.relatedStateVariable_nsprefix_ = child_.prefix
2491
+ elif nodeName_ == "retval":
2492
+ obj_ = retvalType.factory(parent_object_=self)
2493
+ obj_.build(child_, gds_collector_=gds_collector_)
2494
+ self.retval = obj_
2495
+ obj_.original_tagname_ = "retval"
2496
+
2497
+
2498
+ # end class ArgumentType
2499
+
2500
+
2501
+ class ServiceStateTableType(GeneratedsSuper):
2502
+ __hash__ = GeneratedsSuper.__hash__
2503
+ subclass = None
2504
+ superclass = None
2505
+
2506
+ def __init__(self, stateVariable=None, gds_collector_=None, **kwargs_):
2507
+ self.gds_collector_ = gds_collector_
2508
+ self.gds_elementtree_node_ = None
2509
+ self.original_tagname_ = None
2510
+ self.parent_object_ = kwargs_.get("parent_object_")
2511
+ self.ns_prefix_ = None
2512
+ if stateVariable is None:
2513
+ self.stateVariable = []
2514
+ else:
2515
+ self.stateVariable = stateVariable
2516
+ self.stateVariable_nsprefix_ = None
2517
+
2518
+ def factory(*args_, **kwargs_):
2519
+ if CurrentSubclassModule_ is not None:
2520
+ subclass = getSubclassFromModule_(
2521
+ CurrentSubclassModule_, ServiceStateTableType
2522
+ )
2523
+ if subclass is not None:
2524
+ return subclass(*args_, **kwargs_)
2525
+ if ServiceStateTableType.subclass:
2526
+ return ServiceStateTableType.subclass(*args_, **kwargs_)
2527
+ else:
2528
+ return ServiceStateTableType(*args_, **kwargs_)
2529
+
2530
+ factory = staticmethod(factory)
2531
+
2532
+ def get_ns_prefix_(self):
2533
+ return self.ns_prefix_
2534
+
2535
+ def set_ns_prefix_(self, ns_prefix):
2536
+ self.ns_prefix_ = ns_prefix
2537
+
2538
+ def get_stateVariable(self):
2539
+ return self.stateVariable
2540
+
2541
+ def set_stateVariable(self, stateVariable):
2542
+ self.stateVariable = stateVariable
2543
+
2544
+ def add_stateVariable(self, value):
2545
+ self.stateVariable.append(value)
2546
+
2547
+ def insert_stateVariable_at(self, index, value):
2548
+ self.stateVariable.insert(index, value)
2549
+
2550
+ def replace_stateVariable_at(self, index, value):
2551
+ self.stateVariable[index] = value
2552
+
2553
+ def has__content(self):
2554
+ if self.stateVariable:
2555
+ return True
2556
+ else:
2557
+ return False
2558
+
2559
+ def export(
2560
+ self,
2561
+ outfile,
2562
+ level,
2563
+ namespaceprefix_="",
2564
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2565
+ name_="ServiceStateTableType",
2566
+ pretty_print=True,
2567
+ ):
2568
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get(
2569
+ "ServiceStateTableType"
2570
+ )
2571
+ if imported_ns_def_ is not None:
2572
+ namespacedef_ = imported_ns_def_
2573
+ if pretty_print:
2574
+ eol_ = "\n"
2575
+ else:
2576
+ eol_ = ""
2577
+ if (
2578
+ self.original_tagname_ is not None
2579
+ and name_ == "ServiceStateTableType"
2580
+ ):
2581
+ name_ = self.original_tagname_
2582
+ if UseCapturedNS_ and self.ns_prefix_:
2583
+ namespaceprefix_ = self.ns_prefix_ + ":"
2584
+ showIndent(outfile, level, pretty_print)
2585
+ outfile.write(
2586
+ "<%s%s%s"
2587
+ % (
2588
+ namespaceprefix_,
2589
+ name_,
2590
+ namespacedef_ and " " + namespacedef_ or "",
2591
+ )
2592
+ )
2593
+ already_processed = set()
2594
+ self._exportAttributes(
2595
+ outfile,
2596
+ level,
2597
+ already_processed,
2598
+ namespaceprefix_,
2599
+ name_="ServiceStateTableType",
2600
+ )
2601
+ if self.has__content():
2602
+ outfile.write(">%s" % (eol_,))
2603
+ self._exportChildren(
2604
+ outfile,
2605
+ level + 1,
2606
+ namespaceprefix_,
2607
+ namespacedef_,
2608
+ name_="ServiceStateTableType",
2609
+ pretty_print=pretty_print,
2610
+ )
2611
+ showIndent(outfile, level, pretty_print)
2612
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
2613
+ else:
2614
+ outfile.write("/>%s" % (eol_,))
2615
+
2616
+ def _exportAttributes(
2617
+ self,
2618
+ outfile,
2619
+ level,
2620
+ already_processed,
2621
+ namespaceprefix_="",
2622
+ name_="ServiceStateTableType",
2623
+ ):
2624
+ pass
2625
+
2626
+ def _exportChildren(
2627
+ self,
2628
+ outfile,
2629
+ level,
2630
+ namespaceprefix_="",
2631
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2632
+ name_="ServiceStateTableType",
2633
+ fromsubclass_=False,
2634
+ pretty_print=True,
2635
+ ):
2636
+ if pretty_print:
2637
+ eol_ = "\n"
2638
+ else:
2639
+ eol_ = ""
2640
+ for stateVariable_ in self.stateVariable:
2641
+ namespaceprefix_ = (
2642
+ self.stateVariable_nsprefix_ + ":"
2643
+ if (UseCapturedNS_ and self.stateVariable_nsprefix_)
2644
+ else ""
2645
+ )
2646
+ stateVariable_.export(
2647
+ outfile,
2648
+ level,
2649
+ namespaceprefix_,
2650
+ namespacedef_="",
2651
+ name_="stateVariable",
2652
+ pretty_print=pretty_print,
2653
+ )
2654
+
2655
+ def build(self, node, gds_collector_=None):
2656
+ self.gds_collector_ = gds_collector_
2657
+ if SaveElementTreeNode:
2658
+ self.gds_elementtree_node_ = node
2659
+ already_processed = set()
2660
+ self.ns_prefix_ = node.prefix
2661
+ self._buildAttributes(node, node.attrib, already_processed)
2662
+ for child in node:
2663
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2664
+ self._buildChildren(
2665
+ child, node, nodeName_, gds_collector_=gds_collector_
2666
+ )
2667
+ return self
2668
+
2669
+ def _buildAttributes(self, node, attrs, already_processed):
2670
+ pass
2671
+
2672
+ def _buildChildren(
2673
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
2674
+ ):
2675
+ if nodeName_ == "stateVariable":
2676
+ obj_ = StateVariableType.factory(parent_object_=self)
2677
+ obj_.build(child_, gds_collector_=gds_collector_)
2678
+ self.stateVariable.append(obj_)
2679
+ obj_.original_tagname_ = "stateVariable"
2680
+
2681
+
2682
+ # end class ServiceStateTableType
2683
+
2684
+
2685
+ class StateVariableType(GeneratedsSuper):
2686
+ __hash__ = GeneratedsSuper.__hash__
2687
+ subclass = None
2688
+ superclass = None
2689
+
2690
+ def __init__(
2691
+ self,
2692
+ sendEvents="yes",
2693
+ name=None,
2694
+ dataType=None,
2695
+ defaultValue=None,
2696
+ allowedValueList=None,
2697
+ allowedValueRange=None,
2698
+ gds_collector_=None,
2699
+ **kwargs_
2700
+ ):
2701
+ self.gds_collector_ = gds_collector_
2702
+ self.gds_elementtree_node_ = None
2703
+ self.original_tagname_ = None
2704
+ self.parent_object_ = kwargs_.get("parent_object_")
2705
+ self.ns_prefix_ = None
2706
+ self.sendEvents = _cast(None, sendEvents)
2707
+ self.sendEvents_nsprefix_ = None
2708
+ self.name = name
2709
+ self.name_nsprefix_ = None
2710
+ self.dataType = dataType
2711
+ self.dataType_nsprefix_ = None
2712
+ self.defaultValue = defaultValue
2713
+ self.defaultValue_nsprefix_ = None
2714
+ self.allowedValueList = allowedValueList
2715
+ self.allowedValueList_nsprefix_ = None
2716
+ self.allowedValueRange = allowedValueRange
2717
+ self.allowedValueRange_nsprefix_ = None
2718
+
2719
+ def factory(*args_, **kwargs_):
2720
+ if CurrentSubclassModule_ is not None:
2721
+ subclass = getSubclassFromModule_(
2722
+ CurrentSubclassModule_, StateVariableType
2723
+ )
2724
+ if subclass is not None:
2725
+ return subclass(*args_, **kwargs_)
2726
+ if StateVariableType.subclass:
2727
+ return StateVariableType.subclass(*args_, **kwargs_)
2728
+ else:
2729
+ return StateVariableType(*args_, **kwargs_)
2730
+
2731
+ factory = staticmethod(factory)
2732
+
2733
+ def get_ns_prefix_(self):
2734
+ return self.ns_prefix_
2735
+
2736
+ def set_ns_prefix_(self, ns_prefix):
2737
+ self.ns_prefix_ = ns_prefix
2738
+
2739
+ def get_name(self):
2740
+ return self.name
2741
+
2742
+ def set_name(self, name):
2743
+ self.name = name
2744
+
2745
+ def get_dataType(self):
2746
+ return self.dataType
2747
+
2748
+ def set_dataType(self, dataType):
2749
+ self.dataType = dataType
2750
+
2751
+ def get_defaultValue(self):
2752
+ return self.defaultValue
2753
+
2754
+ def set_defaultValue(self, defaultValue):
2755
+ self.defaultValue = defaultValue
2756
+
2757
+ def get_allowedValueList(self):
2758
+ return self.allowedValueList
2759
+
2760
+ def set_allowedValueList(self, allowedValueList):
2761
+ self.allowedValueList = allowedValueList
2762
+
2763
+ def get_allowedValueRange(self):
2764
+ return self.allowedValueRange
2765
+
2766
+ def set_allowedValueRange(self, allowedValueRange):
2767
+ self.allowedValueRange = allowedValueRange
2768
+
2769
+ def get_sendEvents(self):
2770
+ return self.sendEvents
2771
+
2772
+ def set_sendEvents(self, sendEvents):
2773
+ self.sendEvents = sendEvents
2774
+
2775
+ def has__content(self):
2776
+ if (
2777
+ self.name is not None
2778
+ or self.dataType is not None
2779
+ or self.defaultValue is not None
2780
+ or self.allowedValueList is not None
2781
+ or self.allowedValueRange is not None
2782
+ ):
2783
+ return True
2784
+ else:
2785
+ return False
2786
+
2787
+ def export(
2788
+ self,
2789
+ outfile,
2790
+ level,
2791
+ namespaceprefix_="",
2792
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2793
+ name_="StateVariableType",
2794
+ pretty_print=True,
2795
+ ):
2796
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("StateVariableType")
2797
+ if imported_ns_def_ is not None:
2798
+ namespacedef_ = imported_ns_def_
2799
+ if pretty_print:
2800
+ eol_ = "\n"
2801
+ else:
2802
+ eol_ = ""
2803
+ if self.original_tagname_ is not None and name_ == "StateVariableType":
2804
+ name_ = self.original_tagname_
2805
+ if UseCapturedNS_ and self.ns_prefix_:
2806
+ namespaceprefix_ = self.ns_prefix_ + ":"
2807
+ showIndent(outfile, level, pretty_print)
2808
+ outfile.write(
2809
+ "<%s%s%s"
2810
+ % (
2811
+ namespaceprefix_,
2812
+ name_,
2813
+ namespacedef_ and " " + namespacedef_ or "",
2814
+ )
2815
+ )
2816
+ already_processed = set()
2817
+ self._exportAttributes(
2818
+ outfile,
2819
+ level,
2820
+ already_processed,
2821
+ namespaceprefix_,
2822
+ name_="StateVariableType",
2823
+ )
2824
+ if self.has__content():
2825
+ outfile.write(">%s" % (eol_,))
2826
+ self._exportChildren(
2827
+ outfile,
2828
+ level + 1,
2829
+ namespaceprefix_,
2830
+ namespacedef_,
2831
+ name_="StateVariableType",
2832
+ pretty_print=pretty_print,
2833
+ )
2834
+ showIndent(outfile, level, pretty_print)
2835
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
2836
+ else:
2837
+ outfile.write("/>%s" % (eol_,))
2838
+
2839
+ def _exportAttributes(
2840
+ self,
2841
+ outfile,
2842
+ level,
2843
+ already_processed,
2844
+ namespaceprefix_="",
2845
+ name_="StateVariableType",
2846
+ ):
2847
+ if self.sendEvents != "yes" and "sendEvents" not in already_processed:
2848
+ already_processed.add("sendEvents")
2849
+ outfile.write(
2850
+ " sendEvents=%s"
2851
+ % (
2852
+ self.gds_encode(
2853
+ self.gds_format_string(
2854
+ quote_attrib(self.sendEvents),
2855
+ input_name="sendEvents",
2856
+ )
2857
+ ),
2858
+ )
2859
+ )
2860
+
2861
+ def _exportChildren(
2862
+ self,
2863
+ outfile,
2864
+ level,
2865
+ namespaceprefix_="",
2866
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
2867
+ name_="StateVariableType",
2868
+ fromsubclass_=False,
2869
+ pretty_print=True,
2870
+ ):
2871
+ if pretty_print:
2872
+ eol_ = "\n"
2873
+ else:
2874
+ eol_ = ""
2875
+ if self.name is not None:
2876
+ namespaceprefix_ = (
2877
+ self.name_nsprefix_ + ":"
2878
+ if (UseCapturedNS_ and self.name_nsprefix_)
2879
+ else ""
2880
+ )
2881
+ showIndent(outfile, level, pretty_print)
2882
+ outfile.write(
2883
+ "<%sname>%s</%sname>%s"
2884
+ % (
2885
+ namespaceprefix_,
2886
+ self.gds_encode(
2887
+ self.gds_format_string(
2888
+ quote_xml(self.name), input_name="name"
2889
+ )
2890
+ ),
2891
+ namespaceprefix_,
2892
+ eol_,
2893
+ )
2894
+ )
2895
+ if self.dataType is not None:
2896
+ namespaceprefix_ = (
2897
+ self.dataType_nsprefix_ + ":"
2898
+ if (UseCapturedNS_ and self.dataType_nsprefix_)
2899
+ else ""
2900
+ )
2901
+ showIndent(outfile, level, pretty_print)
2902
+ outfile.write(
2903
+ "<%sdataType>%s</%sdataType>%s"
2904
+ % (
2905
+ namespaceprefix_,
2906
+ self.gds_encode(
2907
+ self.gds_format_string(
2908
+ quote_xml(self.dataType), input_name="dataType"
2909
+ )
2910
+ ),
2911
+ namespaceprefix_,
2912
+ eol_,
2913
+ )
2914
+ )
2915
+ if self.defaultValue is not None:
2916
+ namespaceprefix_ = (
2917
+ self.defaultValue_nsprefix_ + ":"
2918
+ if (UseCapturedNS_ and self.defaultValue_nsprefix_)
2919
+ else ""
2920
+ )
2921
+ showIndent(outfile, level, pretty_print)
2922
+ outfile.write(
2923
+ "<%sdefaultValue>%s</%sdefaultValue>%s"
2924
+ % (
2925
+ namespaceprefix_,
2926
+ self.gds_encode(
2927
+ self.gds_format_string(
2928
+ quote_xml(self.defaultValue),
2929
+ input_name="defaultValue",
2930
+ )
2931
+ ),
2932
+ namespaceprefix_,
2933
+ eol_,
2934
+ )
2935
+ )
2936
+ if self.allowedValueList is not None:
2937
+ namespaceprefix_ = (
2938
+ self.allowedValueList_nsprefix_ + ":"
2939
+ if (UseCapturedNS_ and self.allowedValueList_nsprefix_)
2940
+ else ""
2941
+ )
2942
+ self.allowedValueList.export(
2943
+ outfile,
2944
+ level,
2945
+ namespaceprefix_,
2946
+ namespacedef_="",
2947
+ name_="allowedValueList",
2948
+ pretty_print=pretty_print,
2949
+ )
2950
+ if self.allowedValueRange is not None:
2951
+ namespaceprefix_ = (
2952
+ self.allowedValueRange_nsprefix_ + ":"
2953
+ if (UseCapturedNS_ and self.allowedValueRange_nsprefix_)
2954
+ else ""
2955
+ )
2956
+ self.allowedValueRange.export(
2957
+ outfile,
2958
+ level,
2959
+ namespaceprefix_,
2960
+ namespacedef_="",
2961
+ name_="allowedValueRange",
2962
+ pretty_print=pretty_print,
2963
+ )
2964
+
2965
+ def build(self, node, gds_collector_=None):
2966
+ self.gds_collector_ = gds_collector_
2967
+ if SaveElementTreeNode:
2968
+ self.gds_elementtree_node_ = node
2969
+ already_processed = set()
2970
+ self.ns_prefix_ = node.prefix
2971
+ self._buildAttributes(node, node.attrib, already_processed)
2972
+ for child in node:
2973
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2974
+ self._buildChildren(
2975
+ child, node, nodeName_, gds_collector_=gds_collector_
2976
+ )
2977
+ return self
2978
+
2979
+ def _buildAttributes(self, node, attrs, already_processed):
2980
+ value = find_attr_value_("sendEvents", node)
2981
+ if value is not None and "sendEvents" not in already_processed:
2982
+ already_processed.add("sendEvents")
2983
+ self.sendEvents = value
2984
+
2985
+ def _buildChildren(
2986
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
2987
+ ):
2988
+ if nodeName_ == "name":
2989
+ value_ = child_.text
2990
+ value_ = self.gds_parse_string(value_, node, "name")
2991
+ value_ = self.gds_validate_string(value_, node, "name")
2992
+ self.name = value_
2993
+ self.name_nsprefix_ = child_.prefix
2994
+ elif nodeName_ == "dataType":
2995
+ value_ = child_.text
2996
+ value_ = self.gds_parse_string(value_, node, "dataType")
2997
+ value_ = self.gds_validate_string(value_, node, "dataType")
2998
+ self.dataType = value_
2999
+ self.dataType_nsprefix_ = child_.prefix
3000
+ elif nodeName_ == "defaultValue":
3001
+ value_ = child_.text
3002
+ value_ = self.gds_parse_string(value_, node, "defaultValue")
3003
+ value_ = self.gds_validate_string(value_, node, "defaultValue")
3004
+ self.defaultValue = value_
3005
+ self.defaultValue_nsprefix_ = child_.prefix
3006
+ elif nodeName_ == "allowedValueList":
3007
+ obj_ = AllowedValueListType.factory(parent_object_=self)
3008
+ obj_.build(child_, gds_collector_=gds_collector_)
3009
+ self.allowedValueList = obj_
3010
+ obj_.original_tagname_ = "allowedValueList"
3011
+ elif nodeName_ == "allowedValueRange":
3012
+ obj_ = AllowedValueRangeType.factory(parent_object_=self)
3013
+ obj_.build(child_, gds_collector_=gds_collector_)
3014
+ self.allowedValueRange = obj_
3015
+ obj_.original_tagname_ = "allowedValueRange"
3016
+
3017
+
3018
+ # end class StateVariableType
3019
+
3020
+
3021
+ class AllowedValueListType(GeneratedsSuper):
3022
+ __hash__ = GeneratedsSuper.__hash__
3023
+ subclass = None
3024
+ superclass = None
3025
+
3026
+ def __init__(self, allowedValue=None, gds_collector_=None, **kwargs_):
3027
+ self.gds_collector_ = gds_collector_
3028
+ self.gds_elementtree_node_ = None
3029
+ self.original_tagname_ = None
3030
+ self.parent_object_ = kwargs_.get("parent_object_")
3031
+ self.ns_prefix_ = None
3032
+ if allowedValue is None:
3033
+ self.allowedValue = []
3034
+ else:
3035
+ self.allowedValue = allowedValue
3036
+ self.allowedValue_nsprefix_ = None
3037
+
3038
+ def factory(*args_, **kwargs_):
3039
+ if CurrentSubclassModule_ is not None:
3040
+ subclass = getSubclassFromModule_(
3041
+ CurrentSubclassModule_, AllowedValueListType
3042
+ )
3043
+ if subclass is not None:
3044
+ return subclass(*args_, **kwargs_)
3045
+ if AllowedValueListType.subclass:
3046
+ return AllowedValueListType.subclass(*args_, **kwargs_)
3047
+ else:
3048
+ return AllowedValueListType(*args_, **kwargs_)
3049
+
3050
+ factory = staticmethod(factory)
3051
+
3052
+ def get_ns_prefix_(self):
3053
+ return self.ns_prefix_
3054
+
3055
+ def set_ns_prefix_(self, ns_prefix):
3056
+ self.ns_prefix_ = ns_prefix
3057
+
3058
+ def get_allowedValue(self):
3059
+ return self.allowedValue
3060
+
3061
+ def set_allowedValue(self, allowedValue):
3062
+ self.allowedValue = allowedValue
3063
+
3064
+ def add_allowedValue(self, value):
3065
+ self.allowedValue.append(value)
3066
+
3067
+ def insert_allowedValue_at(self, index, value):
3068
+ self.allowedValue.insert(index, value)
3069
+
3070
+ def replace_allowedValue_at(self, index, value):
3071
+ self.allowedValue[index] = value
3072
+
3073
+ def has__content(self):
3074
+ if self.allowedValue:
3075
+ return True
3076
+ else:
3077
+ return False
3078
+
3079
+ def export(
3080
+ self,
3081
+ outfile,
3082
+ level,
3083
+ namespaceprefix_="",
3084
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
3085
+ name_="AllowedValueListType",
3086
+ pretty_print=True,
3087
+ ):
3088
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("AllowedValueListType")
3089
+ if imported_ns_def_ is not None:
3090
+ namespacedef_ = imported_ns_def_
3091
+ if pretty_print:
3092
+ eol_ = "\n"
3093
+ else:
3094
+ eol_ = ""
3095
+ if (
3096
+ self.original_tagname_ is not None
3097
+ and name_ == "AllowedValueListType"
3098
+ ):
3099
+ name_ = self.original_tagname_
3100
+ if UseCapturedNS_ and self.ns_prefix_:
3101
+ namespaceprefix_ = self.ns_prefix_ + ":"
3102
+ showIndent(outfile, level, pretty_print)
3103
+ outfile.write(
3104
+ "<%s%s%s"
3105
+ % (
3106
+ namespaceprefix_,
3107
+ name_,
3108
+ namespacedef_ and " " + namespacedef_ or "",
3109
+ )
3110
+ )
3111
+ already_processed = set()
3112
+ self._exportAttributes(
3113
+ outfile,
3114
+ level,
3115
+ already_processed,
3116
+ namespaceprefix_,
3117
+ name_="AllowedValueListType",
3118
+ )
3119
+ if self.has__content():
3120
+ outfile.write(">%s" % (eol_,))
3121
+ self._exportChildren(
3122
+ outfile,
3123
+ level + 1,
3124
+ namespaceprefix_,
3125
+ namespacedef_,
3126
+ name_="AllowedValueListType",
3127
+ pretty_print=pretty_print,
3128
+ )
3129
+ showIndent(outfile, level, pretty_print)
3130
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
3131
+ else:
3132
+ outfile.write("/>%s" % (eol_,))
3133
+
3134
+ def _exportAttributes(
3135
+ self,
3136
+ outfile,
3137
+ level,
3138
+ already_processed,
3139
+ namespaceprefix_="",
3140
+ name_="AllowedValueListType",
3141
+ ):
3142
+ pass
3143
+
3144
+ def _exportChildren(
3145
+ self,
3146
+ outfile,
3147
+ level,
3148
+ namespaceprefix_="",
3149
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
3150
+ name_="AllowedValueListType",
3151
+ fromsubclass_=False,
3152
+ pretty_print=True,
3153
+ ):
3154
+ if pretty_print:
3155
+ eol_ = "\n"
3156
+ else:
3157
+ eol_ = ""
3158
+ for allowedValue_ in self.allowedValue:
3159
+ namespaceprefix_ = (
3160
+ self.allowedValue_nsprefix_ + ":"
3161
+ if (UseCapturedNS_ and self.allowedValue_nsprefix_)
3162
+ else ""
3163
+ )
3164
+ showIndent(outfile, level, pretty_print)
3165
+ outfile.write(
3166
+ "<%sallowedValue>%s</%sallowedValue>%s"
3167
+ % (
3168
+ namespaceprefix_,
3169
+ self.gds_encode(
3170
+ self.gds_format_string(
3171
+ quote_xml(allowedValue_), input_name="allowedValue"
3172
+ )
3173
+ ),
3174
+ namespaceprefix_,
3175
+ eol_,
3176
+ )
3177
+ )
3178
+
3179
+ def build(self, node, gds_collector_=None):
3180
+ self.gds_collector_ = gds_collector_
3181
+ if SaveElementTreeNode:
3182
+ self.gds_elementtree_node_ = node
3183
+ already_processed = set()
3184
+ self.ns_prefix_ = node.prefix
3185
+ self._buildAttributes(node, node.attrib, already_processed)
3186
+ for child in node:
3187
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
3188
+ self._buildChildren(
3189
+ child, node, nodeName_, gds_collector_=gds_collector_
3190
+ )
3191
+ return self
3192
+
3193
+ def _buildAttributes(self, node, attrs, already_processed):
3194
+ pass
3195
+
3196
+ def _buildChildren(
3197
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
3198
+ ):
3199
+ if nodeName_ == "allowedValue":
3200
+ value_ = child_.text
3201
+ value_ = self.gds_parse_string(value_, node, "allowedValue")
3202
+ value_ = self.gds_validate_string(value_, node, "allowedValue")
3203
+ self.allowedValue.append(value_)
3204
+ self.allowedValue_nsprefix_ = child_.prefix
3205
+
3206
+
3207
+ # end class AllowedValueListType
3208
+
3209
+
3210
+ class AllowedValueRangeType(GeneratedsSuper):
3211
+ __hash__ = GeneratedsSuper.__hash__
3212
+ subclass = None
3213
+ superclass = None
3214
+
3215
+ def __init__(
3216
+ self,
3217
+ minimum=None,
3218
+ maximum=None,
3219
+ step=None,
3220
+ gds_collector_=None,
3221
+ **kwargs_
3222
+ ):
3223
+ self.gds_collector_ = gds_collector_
3224
+ self.gds_elementtree_node_ = None
3225
+ self.original_tagname_ = None
3226
+ self.parent_object_ = kwargs_.get("parent_object_")
3227
+ self.ns_prefix_ = None
3228
+ self.minimum = minimum
3229
+ self.minimum_nsprefix_ = None
3230
+ self.maximum = maximum
3231
+ self.maximum_nsprefix_ = None
3232
+ self.step = step
3233
+ self.step_nsprefix_ = None
3234
+
3235
+ def factory(*args_, **kwargs_):
3236
+ if CurrentSubclassModule_ is not None:
3237
+ subclass = getSubclassFromModule_(
3238
+ CurrentSubclassModule_, AllowedValueRangeType
3239
+ )
3240
+ if subclass is not None:
3241
+ return subclass(*args_, **kwargs_)
3242
+ if AllowedValueRangeType.subclass:
3243
+ return AllowedValueRangeType.subclass(*args_, **kwargs_)
3244
+ else:
3245
+ return AllowedValueRangeType(*args_, **kwargs_)
3246
+
3247
+ factory = staticmethod(factory)
3248
+
3249
+ def get_ns_prefix_(self):
3250
+ return self.ns_prefix_
3251
+
3252
+ def set_ns_prefix_(self, ns_prefix):
3253
+ self.ns_prefix_ = ns_prefix
3254
+
3255
+ def get_minimum(self):
3256
+ return self.minimum
3257
+
3258
+ def set_minimum(self, minimum):
3259
+ self.minimum = minimum
3260
+
3261
+ def get_maximum(self):
3262
+ return self.maximum
3263
+
3264
+ def set_maximum(self, maximum):
3265
+ self.maximum = maximum
3266
+
3267
+ def get_step(self):
3268
+ return self.step
3269
+
3270
+ def set_step(self, step):
3271
+ self.step = step
3272
+
3273
+ def has__content(self):
3274
+ if (
3275
+ self.minimum is not None
3276
+ or self.maximum is not None
3277
+ or self.step is not None
3278
+ ):
3279
+ return True
3280
+ else:
3281
+ return False
3282
+
3283
+ def export(
3284
+ self,
3285
+ outfile,
3286
+ level,
3287
+ namespaceprefix_="",
3288
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
3289
+ name_="AllowedValueRangeType",
3290
+ pretty_print=True,
3291
+ ):
3292
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get(
3293
+ "AllowedValueRangeType"
3294
+ )
3295
+ if imported_ns_def_ is not None:
3296
+ namespacedef_ = imported_ns_def_
3297
+ if pretty_print:
3298
+ eol_ = "\n"
3299
+ else:
3300
+ eol_ = ""
3301
+ if (
3302
+ self.original_tagname_ is not None
3303
+ and name_ == "AllowedValueRangeType"
3304
+ ):
3305
+ name_ = self.original_tagname_
3306
+ if UseCapturedNS_ and self.ns_prefix_:
3307
+ namespaceprefix_ = self.ns_prefix_ + ":"
3308
+ showIndent(outfile, level, pretty_print)
3309
+ outfile.write(
3310
+ "<%s%s%s"
3311
+ % (
3312
+ namespaceprefix_,
3313
+ name_,
3314
+ namespacedef_ and " " + namespacedef_ or "",
3315
+ )
3316
+ )
3317
+ already_processed = set()
3318
+ self._exportAttributes(
3319
+ outfile,
3320
+ level,
3321
+ already_processed,
3322
+ namespaceprefix_,
3323
+ name_="AllowedValueRangeType",
3324
+ )
3325
+ if self.has__content():
3326
+ outfile.write(">%s" % (eol_,))
3327
+ self._exportChildren(
3328
+ outfile,
3329
+ level + 1,
3330
+ namespaceprefix_,
3331
+ namespacedef_,
3332
+ name_="AllowedValueRangeType",
3333
+ pretty_print=pretty_print,
3334
+ )
3335
+ showIndent(outfile, level, pretty_print)
3336
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
3337
+ else:
3338
+ outfile.write("/>%s" % (eol_,))
3339
+
3340
+ def _exportAttributes(
3341
+ self,
3342
+ outfile,
3343
+ level,
3344
+ already_processed,
3345
+ namespaceprefix_="",
3346
+ name_="AllowedValueRangeType",
3347
+ ):
3348
+ pass
3349
+
3350
+ def _exportChildren(
3351
+ self,
3352
+ outfile,
3353
+ level,
3354
+ namespaceprefix_="",
3355
+ namespacedef_=' xmlns:None="urn:schemas-upnp-org:service-1-0" ',
3356
+ name_="AllowedValueRangeType",
3357
+ fromsubclass_=False,
3358
+ pretty_print=True,
3359
+ ):
3360
+ if pretty_print:
3361
+ eol_ = "\n"
3362
+ else:
3363
+ eol_ = ""
3364
+ if self.minimum is not None:
3365
+ namespaceprefix_ = (
3366
+ self.minimum_nsprefix_ + ":"
3367
+ if (UseCapturedNS_ and self.minimum_nsprefix_)
3368
+ else ""
3369
+ )
3370
+ showIndent(outfile, level, pretty_print)
3371
+ outfile.write(
3372
+ "<%sminimum>%s</%sminimum>%s"
3373
+ % (
3374
+ namespaceprefix_,
3375
+ self.gds_format_decimal(
3376
+ self.minimum, input_name="minimum"
3377
+ ),
3378
+ namespaceprefix_,
3379
+ eol_,
3380
+ )
3381
+ )
3382
+ if self.maximum is not None:
3383
+ namespaceprefix_ = (
3384
+ self.maximum_nsprefix_ + ":"
3385
+ if (UseCapturedNS_ and self.maximum_nsprefix_)
3386
+ else ""
3387
+ )
3388
+ showIndent(outfile, level, pretty_print)
3389
+ outfile.write(
3390
+ "<%smaximum>%s</%smaximum>%s"
3391
+ % (
3392
+ namespaceprefix_,
3393
+ self.gds_format_decimal(
3394
+ self.maximum, input_name="maximum"
3395
+ ),
3396
+ namespaceprefix_,
3397
+ eol_,
3398
+ )
3399
+ )
3400
+ if self.step is not None:
3401
+ namespaceprefix_ = (
3402
+ self.step_nsprefix_ + ":"
3403
+ if (UseCapturedNS_ and self.step_nsprefix_)
3404
+ else ""
3405
+ )
3406
+ showIndent(outfile, level, pretty_print)
3407
+ outfile.write(
3408
+ "<%sstep>%s</%sstep>%s"
3409
+ % (
3410
+ namespaceprefix_,
3411
+ self.gds_format_decimal(self.step, input_name="step"),
3412
+ namespaceprefix_,
3413
+ eol_,
3414
+ )
3415
+ )
3416
+
3417
+ def build(self, node, gds_collector_=None):
3418
+ self.gds_collector_ = gds_collector_
3419
+ if SaveElementTreeNode:
3420
+ self.gds_elementtree_node_ = node
3421
+ already_processed = set()
3422
+ self.ns_prefix_ = node.prefix
3423
+ self._buildAttributes(node, node.attrib, already_processed)
3424
+ for child in node:
3425
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
3426
+ self._buildChildren(
3427
+ child, node, nodeName_, gds_collector_=gds_collector_
3428
+ )
3429
+ return self
3430
+
3431
+ def _buildAttributes(self, node, attrs, already_processed):
3432
+ pass
3433
+
3434
+ def _buildChildren(
3435
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
3436
+ ):
3437
+ if nodeName_ == "minimum" and child_.text:
3438
+ sval_ = child_.text
3439
+ fval_ = self.gds_parse_decimal(sval_, node, "minimum")
3440
+ fval_ = self.gds_validate_decimal(fval_, node, "minimum")
3441
+ self.minimum = fval_
3442
+ self.minimum_nsprefix_ = child_.prefix
3443
+ elif nodeName_ == "maximum" and child_.text:
3444
+ sval_ = child_.text
3445
+ fval_ = self.gds_parse_decimal(sval_, node, "maximum")
3446
+ fval_ = self.gds_validate_decimal(fval_, node, "maximum")
3447
+ self.maximum = fval_
3448
+ self.maximum_nsprefix_ = child_.prefix
3449
+ elif nodeName_ == "step" and child_.text:
3450
+ sval_ = child_.text
3451
+ fval_ = self.gds_parse_decimal(sval_, node, "step")
3452
+ fval_ = self.gds_validate_decimal(fval_, node, "step")
3453
+ self.step = fval_
3454
+ self.step_nsprefix_ = child_.prefix
3455
+
3456
+
3457
+ # end class AllowedValueRangeType
3458
+
3459
+
3460
+ class retvalType(GeneratedsSuper):
3461
+ __hash__ = GeneratedsSuper.__hash__
3462
+ subclass = None
3463
+ superclass = None
3464
+
3465
+ def __init__(self, gds_collector_=None, **kwargs_):
3466
+ self.gds_collector_ = gds_collector_
3467
+ self.gds_elementtree_node_ = None
3468
+ self.original_tagname_ = None
3469
+ self.parent_object_ = kwargs_.get("parent_object_")
3470
+ self.ns_prefix_ = None
3471
+
3472
+ def factory(*args_, **kwargs_):
3473
+ if CurrentSubclassModule_ is not None:
3474
+ subclass = getSubclassFromModule_(
3475
+ CurrentSubclassModule_, retvalType
3476
+ )
3477
+ if subclass is not None:
3478
+ return subclass(*args_, **kwargs_)
3479
+ if retvalType.subclass:
3480
+ return retvalType.subclass(*args_, **kwargs_)
3481
+ else:
3482
+ return retvalType(*args_, **kwargs_)
3483
+
3484
+ factory = staticmethod(factory)
3485
+
3486
+ def get_ns_prefix_(self):
3487
+ return self.ns_prefix_
3488
+
3489
+ def set_ns_prefix_(self, ns_prefix):
3490
+ self.ns_prefix_ = ns_prefix
3491
+
3492
+ def has__content(self):
3493
+ if ():
3494
+ return True
3495
+ else:
3496
+ return False
3497
+
3498
+ def export(
3499
+ self,
3500
+ outfile,
3501
+ level,
3502
+ namespaceprefix_="",
3503
+ namespacedef_="",
3504
+ name_="retvalType",
3505
+ pretty_print=True,
3506
+ ):
3507
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get("retvalType")
3508
+ if imported_ns_def_ is not None:
3509
+ namespacedef_ = imported_ns_def_
3510
+ if pretty_print:
3511
+ eol_ = "\n"
3512
+ else:
3513
+ eol_ = ""
3514
+ if self.original_tagname_ is not None and name_ == "retvalType":
3515
+ name_ = self.original_tagname_
3516
+ if UseCapturedNS_ and self.ns_prefix_:
3517
+ namespaceprefix_ = self.ns_prefix_ + ":"
3518
+ showIndent(outfile, level, pretty_print)
3519
+ outfile.write(
3520
+ "<%s%s%s"
3521
+ % (
3522
+ namespaceprefix_,
3523
+ name_,
3524
+ namespacedef_ and " " + namespacedef_ or "",
3525
+ )
3526
+ )
3527
+ already_processed = set()
3528
+ self._exportAttributes(
3529
+ outfile,
3530
+ level,
3531
+ already_processed,
3532
+ namespaceprefix_,
3533
+ name_="retvalType",
3534
+ )
3535
+ if self.has__content():
3536
+ outfile.write(">%s" % (eol_,))
3537
+ self._exportChildren(
3538
+ outfile,
3539
+ level + 1,
3540
+ namespaceprefix_,
3541
+ namespacedef_,
3542
+ name_="retvalType",
3543
+ pretty_print=pretty_print,
3544
+ )
3545
+ outfile.write("</%s%s>%s" % (namespaceprefix_, name_, eol_))
3546
+ else:
3547
+ outfile.write("/>%s" % (eol_,))
3548
+
3549
+ def _exportAttributes(
3550
+ self,
3551
+ outfile,
3552
+ level,
3553
+ already_processed,
3554
+ namespaceprefix_="",
3555
+ name_="retvalType",
3556
+ ):
3557
+ pass
3558
+
3559
+ def _exportChildren(
3560
+ self,
3561
+ outfile,
3562
+ level,
3563
+ namespaceprefix_="",
3564
+ namespacedef_="",
3565
+ name_="retvalType",
3566
+ fromsubclass_=False,
3567
+ pretty_print=True,
3568
+ ):
3569
+ pass
3570
+
3571
+ def build(self, node, gds_collector_=None):
3572
+ self.gds_collector_ = gds_collector_
3573
+ if SaveElementTreeNode:
3574
+ self.gds_elementtree_node_ = node
3575
+ already_processed = set()
3576
+ self.ns_prefix_ = node.prefix
3577
+ self._buildAttributes(node, node.attrib, already_processed)
3578
+ for child in node:
3579
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
3580
+ self._buildChildren(
3581
+ child, node, nodeName_, gds_collector_=gds_collector_
3582
+ )
3583
+ return self
3584
+
3585
+ def _buildAttributes(self, node, attrs, already_processed):
3586
+ pass
3587
+
3588
+ def _buildChildren(
3589
+ self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None
3590
+ ):
3591
+ pass
3592
+
3593
+
3594
+ # end class retvalType
3595
+
3596
+
3597
+ #
3598
+ # End data representation classes.
3599
+ #
3600
+
3601
+
3602
+ GDSClassesMapping = {}
3603
+
3604
+
3605
+ USAGE_TEXT = """
3606
+ Usage: python <Parser>.py [ -s ] <in_xml_file>
3607
+ """
3608
+
3609
+
3610
+ def usage():
3611
+ print(USAGE_TEXT)
3612
+ sys.exit(1)
3613
+
3614
+
3615
+ def get_root_tag(node):
3616
+ tag = Tag_pattern_.match(node.tag).groups()[-1]
3617
+ prefix_tag = TagNamePrefix + tag
3618
+ rootClass = GDSClassesMapping.get(prefix_tag)
3619
+ if rootClass is None:
3620
+ rootClass = globals().get(prefix_tag)
3621
+ return tag, rootClass
3622
+
3623
+
3624
+ def get_required_ns_prefix_defs(rootNode):
3625
+ """Get all name space prefix definitions required in this XML doc.
3626
+ Return a dictionary of definitions and a char string of definitions.
3627
+ """
3628
+ nsmap = {
3629
+ prefix: uri
3630
+ for node in rootNode.iter()
3631
+ for (prefix, uri) in node.nsmap.items()
3632
+ if prefix is not None
3633
+ }
3634
+ namespacedefs = " ".join(
3635
+ ['xmlns:{}="{}"'.format(prefix, uri) for prefix, uri in nsmap.items()]
3636
+ )
3637
+ return nsmap, namespacedefs
3638
+
3639
+
3640
+ def parse(inFileName, silence=False, print_warnings=True):
3641
+ global CapturedNsmap_
3642
+ gds_collector = GdsCollector_()
3643
+ parser = None
3644
+ doc = parsexml_(inFileName, parser)
3645
+ rootNode = doc.getroot()
3646
+ rootTag, rootClass = get_root_tag(rootNode)
3647
+ if rootClass is None:
3648
+ rootTag = "scpd"
3649
+ rootClass = scpd
3650
+ rootObj = rootClass.factory()
3651
+ rootObj.build(rootNode, gds_collector_=gds_collector)
3652
+ CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
3653
+ if not SaveElementTreeNode:
3654
+ doc = None
3655
+ rootNode = None
3656
+ if not silence:
3657
+ sys.stdout.write('<?xml version="1.0" ?>\n')
3658
+ rootObj.export(
3659
+ sys.stdout,
3660
+ 0,
3661
+ name_=rootTag,
3662
+ namespacedef_=namespacedefs,
3663
+ pretty_print=True,
3664
+ )
3665
+ if print_warnings and len(gds_collector.get_messages()) > 0:
3666
+ separator = ("-" * 50) + "\n"
3667
+ sys.stderr.write(separator)
3668
+ sys.stderr.write(
3669
+ "----- Warnings -- count: {} -----\n".format(
3670
+ len(gds_collector.get_messages()),
3671
+ )
3672
+ )
3673
+ gds_collector.write_messages(sys.stderr)
3674
+ sys.stderr.write(separator)
3675
+ return rootObj
3676
+
3677
+
3678
+ def parseEtree(
3679
+ inFileName,
3680
+ silence=False,
3681
+ print_warnings=True,
3682
+ mapping=None,
3683
+ reverse_mapping=None,
3684
+ nsmap=None,
3685
+ ):
3686
+ parser = None
3687
+ doc = parsexml_(inFileName, parser)
3688
+ gds_collector = GdsCollector_()
3689
+ rootNode = doc.getroot()
3690
+ rootTag, rootClass = get_root_tag(rootNode)
3691
+ if rootClass is None:
3692
+ rootTag = "scpd"
3693
+ rootClass = scpd
3694
+ rootObj = rootClass.factory()
3695
+ rootObj.build(rootNode, gds_collector_=gds_collector)
3696
+ if mapping is None:
3697
+ mapping = {}
3698
+ if reverse_mapping is None:
3699
+ reverse_mapping = {}
3700
+ rootElement = rootObj.to_etree(
3701
+ None,
3702
+ name_=rootTag,
3703
+ mapping_=mapping,
3704
+ reverse_mapping_=reverse_mapping,
3705
+ nsmap_=nsmap,
3706
+ )
3707
+ reverse_node_mapping = rootObj.gds_reverse_node_mapping(mapping)
3708
+ # Enable Python to collect the space used by the DOM.
3709
+ if not SaveElementTreeNode:
3710
+ doc = None
3711
+ rootNode = None
3712
+ if not silence:
3713
+ content = etree_.tostring(
3714
+ rootElement,
3715
+ pretty_print=True,
3716
+ xml_declaration=True,
3717
+ encoding="utf-8",
3718
+ )
3719
+ sys.stdout.write(str(content))
3720
+ sys.stdout.write("\n")
3721
+ if print_warnings and len(gds_collector.get_messages()) > 0:
3722
+ separator = ("-" * 50) + "\n"
3723
+ sys.stderr.write(separator)
3724
+ sys.stderr.write(
3725
+ "----- Warnings -- count: {} -----\n".format(
3726
+ len(gds_collector.get_messages()),
3727
+ )
3728
+ )
3729
+ gds_collector.write_messages(sys.stderr)
3730
+ sys.stderr.write(separator)
3731
+ return rootObj, rootElement, mapping, reverse_node_mapping
3732
+
3733
+
3734
+ def parseString(inString, silence=False, print_warnings=True):
3735
+ """Parse a string, create the object tree, and export it.
3736
+
3737
+ Arguments:
3738
+ - inString -- A string. This XML fragment should not start
3739
+ with an XML declaration containing an encoding.
3740
+ - silence -- A boolean. If False, export the object.
3741
+ Returns -- The root object in the tree.
3742
+ """
3743
+ parser = None
3744
+ rootNode = parsexmlstring_(inString, parser)
3745
+ gds_collector = GdsCollector_()
3746
+ rootTag, rootClass = get_root_tag(rootNode)
3747
+ if rootClass is None:
3748
+ rootTag = "scpd"
3749
+ rootClass = scpd
3750
+ rootObj = rootClass.factory()
3751
+ rootObj.build(rootNode, gds_collector_=gds_collector)
3752
+ if not SaveElementTreeNode:
3753
+ rootNode = None
3754
+ if not silence:
3755
+ sys.stdout.write('<?xml version="1.0" ?>\n')
3756
+ rootObj.export(sys.stdout, 0, name_=rootTag, namespacedef_="")
3757
+ if print_warnings and len(gds_collector.get_messages()) > 0:
3758
+ separator = ("-" * 50) + "\n"
3759
+ sys.stderr.write(separator)
3760
+ sys.stderr.write(
3761
+ "----- Warnings -- count: {} -----\n".format(
3762
+ len(gds_collector.get_messages()),
3763
+ )
3764
+ )
3765
+ gds_collector.write_messages(sys.stderr)
3766
+ sys.stderr.write(separator)
3767
+ return rootObj
3768
+
3769
+
3770
+ def parseLiteral(inFileName, silence=False, print_warnings=True):
3771
+ parser = None
3772
+ doc = parsexml_(inFileName, parser)
3773
+ gds_collector = GdsCollector_()
3774
+ rootNode = doc.getroot()
3775
+ rootTag, rootClass = get_root_tag(rootNode)
3776
+ if rootClass is None:
3777
+ rootTag = "scpd"
3778
+ rootClass = scpd
3779
+ rootObj = rootClass.factory()
3780
+ rootObj.build(rootNode, gds_collector_=gds_collector)
3781
+ # Enable Python to collect the space used by the DOM.
3782
+ if not SaveElementTreeNode:
3783
+ doc = None
3784
+ rootNode = None
3785
+ if not silence:
3786
+ sys.stdout.write("#from service import *\n\n")
3787
+ sys.stdout.write("import service as model_\n\n")
3788
+ sys.stdout.write("rootObj = model_.rootClass(\n")
3789
+ rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
3790
+ sys.stdout.write(")\n")
3791
+ if print_warnings and len(gds_collector.get_messages()) > 0:
3792
+ separator = ("-" * 50) + "\n"
3793
+ sys.stderr.write(separator)
3794
+ sys.stderr.write(
3795
+ "----- Warnings -- count: {} -----\n".format(
3796
+ len(gds_collector.get_messages()),
3797
+ )
3798
+ )
3799
+ gds_collector.write_messages(sys.stderr)
3800
+ sys.stderr.write(separator)
3801
+ return rootObj
3802
+
3803
+
3804
+ def main():
3805
+ args = sys.argv[1:]
3806
+ if len(args) == 1:
3807
+ parse(args[0])
3808
+ else:
3809
+ usage()
3810
+
3811
+
3812
+ if __name__ == "__main__":
3813
+ # import pdb; pdb.set_trace()
3814
+ main()
3815
+
3816
+ RenameMappings_ = {}
3817
+
3818
+ #
3819
+ # Mapping of namespaces to types defined in them
3820
+ # and the file in which each is defined.
3821
+ # simpleTypes are marked "ST" and complexTypes "CT".
3822
+ NamespaceToDefMappings_ = {
3823
+ "urn:schemas-upnp-org:service-1-0": [
3824
+ (
3825
+ "SpecVersionType",
3826
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3827
+ "CT",
3828
+ ),
3829
+ ("ActionListType", "pywemo/ouimeaux_device/api/xsd/service.xsd", "CT"),
3830
+ ("ActionType", "pywemo/ouimeaux_device/api/xsd/service.xsd", "CT"),
3831
+ (
3832
+ "ArgumentListType",
3833
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3834
+ "CT",
3835
+ ),
3836
+ ("ArgumentType", "pywemo/ouimeaux_device/api/xsd/service.xsd", "CT"),
3837
+ (
3838
+ "ServiceStateTableType",
3839
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3840
+ "CT",
3841
+ ),
3842
+ (
3843
+ "StateVariableType",
3844
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3845
+ "CT",
3846
+ ),
3847
+ (
3848
+ "AllowedValueListType",
3849
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3850
+ "CT",
3851
+ ),
3852
+ (
3853
+ "AllowedValueRangeType",
3854
+ "pywemo/ouimeaux_device/api/xsd/service.xsd",
3855
+ "CT",
3856
+ ),
3857
+ ]
3858
+ }
3859
+
3860
+ __all__ = [
3861
+ "ActionListType",
3862
+ "ActionType",
3863
+ "AllowedValueListType",
3864
+ "AllowedValueRangeType",
3865
+ "ArgumentListType",
3866
+ "ArgumentType",
3867
+ "ServiceStateTableType",
3868
+ "SpecVersionType",
3869
+ "StateVariableType",
3870
+ "retvalType",
3871
+ "scpd",
3872
+ ]