karrio-canadapost 2025.5rc1__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 (41) hide show
  1. karrio/mappers/canadapost/__init__.py +3 -0
  2. karrio/mappers/canadapost/mapper.py +88 -0
  3. karrio/mappers/canadapost/proxy.py +373 -0
  4. karrio/mappers/canadapost/settings.py +23 -0
  5. karrio/plugins/canadapost/__init__.py +23 -0
  6. karrio/providers/canadapost/__init__.py +25 -0
  7. karrio/providers/canadapost/error.py +42 -0
  8. karrio/providers/canadapost/manifest.py +127 -0
  9. karrio/providers/canadapost/pickup/__init__.py +3 -0
  10. karrio/providers/canadapost/pickup/cancel.py +33 -0
  11. karrio/providers/canadapost/pickup/create.py +217 -0
  12. karrio/providers/canadapost/pickup/update.py +55 -0
  13. karrio/providers/canadapost/rate.py +192 -0
  14. karrio/providers/canadapost/shipment/__init__.py +8 -0
  15. karrio/providers/canadapost/shipment/cancel.py +53 -0
  16. karrio/providers/canadapost/shipment/create.py +308 -0
  17. karrio/providers/canadapost/tracking.py +75 -0
  18. karrio/providers/canadapost/units.py +285 -0
  19. karrio/providers/canadapost/utils.py +92 -0
  20. karrio/schemas/canadapost/__init__.py +0 -0
  21. karrio/schemas/canadapost/authreturn.py +3389 -0
  22. karrio/schemas/canadapost/common.py +2037 -0
  23. karrio/schemas/canadapost/customerinfo.py +2307 -0
  24. karrio/schemas/canadapost/discovery.py +3016 -0
  25. karrio/schemas/canadapost/manifest.py +3704 -0
  26. karrio/schemas/canadapost/merchantregistration.py +1498 -0
  27. karrio/schemas/canadapost/messages.py +1431 -0
  28. karrio/schemas/canadapost/ncshipment.py +7231 -0
  29. karrio/schemas/canadapost/openreturn.py +2438 -0
  30. karrio/schemas/canadapost/pickup.py +1407 -0
  31. karrio/schemas/canadapost/pickuprequest.py +6794 -0
  32. karrio/schemas/canadapost/postoffice.py +2240 -0
  33. karrio/schemas/canadapost/rating.py +5308 -0
  34. karrio/schemas/canadapost/serviceinfo.py +1505 -0
  35. karrio/schemas/canadapost/shipment.py +9982 -0
  36. karrio/schemas/canadapost/track.py +3100 -0
  37. karrio_canadapost-2025.5rc1.dist-info/METADATA +44 -0
  38. karrio_canadapost-2025.5rc1.dist-info/RECORD +41 -0
  39. karrio_canadapost-2025.5rc1.dist-info/WHEEL +5 -0
  40. karrio_canadapost-2025.5rc1.dist-info/entry_points.txt +2 -0
  41. karrio_canadapost-2025.5rc1.dist-info/top_level.txt +3 -0
@@ -0,0 +1,3016 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+
4
+ #
5
+ # Generated Sat Mar 16 02:19:29 2024 by generateDS.py version 2.43.3.
6
+ # Python 3.12.2 (main, Feb 28 2024, 21:12:07) [GCC 11.4.0]
7
+ #
8
+ # Command line options:
9
+ # ('--no-namespace-defs', '')
10
+ # ('-o', './karrio/schemas/canadapost/discovery.py')
11
+ #
12
+ # Command line arguments:
13
+ # ./schemas/discovery.xsd
14
+ #
15
+ # Command line:
16
+ # /home/kserver/Workspace/karrio/.venv/karrio/bin/generateDS --no-namespace-defs -o "./karrio/schemas/canadapost/discovery.py" ./schemas/discovery.xsd
17
+ #
18
+ # Current working directory (os.getcwd()):
19
+ # canadapost
20
+ #
21
+
22
+ import sys
23
+ try:
24
+ ModulenotfoundExp_ = ModuleNotFoundError
25
+ except NameError:
26
+ ModulenotfoundExp_ = ImportError
27
+ from six.moves import zip_longest
28
+ import os
29
+ import re as re_
30
+ import base64
31
+ import datetime as datetime_
32
+ import decimal as decimal_
33
+ from lxml import etree as etree_
34
+
35
+
36
+ Validate_simpletypes_ = True
37
+ SaveElementTreeNode = True
38
+ TagNamePrefix = ""
39
+ if sys.version_info.major == 2:
40
+ BaseStrType_ = basestring
41
+ else:
42
+ BaseStrType_ = str
43
+
44
+
45
+ def parsexml_(infile, parser=None, **kwargs):
46
+ if parser is None:
47
+ # Use the lxml ElementTree compatible parser so that, e.g.,
48
+ # we ignore comments.
49
+ try:
50
+ parser = etree_.ETCompatXMLParser()
51
+ except AttributeError:
52
+ # fallback to xml.etree
53
+ parser = etree_.XMLParser()
54
+ try:
55
+ if isinstance(infile, os.PathLike):
56
+ infile = os.path.join(infile)
57
+ except AttributeError:
58
+ pass
59
+ doc = etree_.parse(infile, parser=parser, **kwargs)
60
+ return doc
61
+
62
+ def parsexmlstring_(instring, parser=None, **kwargs):
63
+ if parser is None:
64
+ # Use the lxml ElementTree compatible parser so that, e.g.,
65
+ # we ignore comments.
66
+ try:
67
+ parser = etree_.ETCompatXMLParser()
68
+ except AttributeError:
69
+ # fallback to xml.etree
70
+ parser = etree_.XMLParser()
71
+ element = etree_.fromstring(instring, parser=parser, **kwargs)
72
+ return element
73
+
74
+ #
75
+ # Namespace prefix definition table (and other attributes, too)
76
+ #
77
+ # The module generatedsnamespaces, if it is importable, must contain
78
+ # a dictionary named GeneratedsNamespaceDefs. This Python dictionary
79
+ # should map element type names (strings) to XML schema namespace prefix
80
+ # definitions. The export method for any class for which there is
81
+ # a namespace prefix definition, will export that definition in the
82
+ # XML representation of that element. See the export method of
83
+ # any generated element type class for an example of the use of this
84
+ # table.
85
+ # A sample table is:
86
+ #
87
+ # # File: generatedsnamespaces.py
88
+ #
89
+ # GenerateDSNamespaceDefs = {
90
+ # "ElementtypeA": "http://www.xxx.com/namespaceA",
91
+ # "ElementtypeB": "http://www.xxx.com/namespaceB",
92
+ # }
93
+ #
94
+ # Additionally, the generatedsnamespaces module can contain a python
95
+ # dictionary named GenerateDSNamespaceTypePrefixes that associates element
96
+ # types with the namespace prefixes that are to be added to the
97
+ # "xsi:type" attribute value. See the _exportAttributes method of
98
+ # any generated element type and the generation of "xsi:type" for an
99
+ # example of the use of this table.
100
+ # An example table:
101
+ #
102
+ # # File: generatedsnamespaces.py
103
+ #
104
+ # GenerateDSNamespaceTypePrefixes = {
105
+ # "ElementtypeC": "aaa:",
106
+ # "ElementtypeD": "bbb:",
107
+ # }
108
+ #
109
+
110
+ try:
111
+ from generatedsnamespaces import GenerateDSNamespaceDefs as GenerateDSNamespaceDefs_
112
+ except ModulenotfoundExp_ :
113
+ GenerateDSNamespaceDefs_ = {}
114
+ try:
115
+ from generatedsnamespaces import GenerateDSNamespaceTypePrefixes as GenerateDSNamespaceTypePrefixes_
116
+ except ModulenotfoundExp_ :
117
+ GenerateDSNamespaceTypePrefixes_ = {}
118
+
119
+ #
120
+ # You can replace the following class definition by defining an
121
+ # importable module named "generatedscollector" containing a class
122
+ # named "GdsCollector". See the default class definition below for
123
+ # clues about the possible content of that class.
124
+ #
125
+ try:
126
+ from generatedscollector import GdsCollector as GdsCollector_
127
+ except ModulenotfoundExp_ :
128
+
129
+ class GdsCollector_(object):
130
+
131
+ def __init__(self, messages=None):
132
+ if messages is None:
133
+ self.messages = []
134
+ else:
135
+ self.messages = messages
136
+
137
+ def add_message(self, msg):
138
+ self.messages.append(msg)
139
+
140
+ def get_messages(self):
141
+ return self.messages
142
+
143
+ def clear_messages(self):
144
+ self.messages = []
145
+
146
+ def print_messages(self):
147
+ for msg in self.messages:
148
+ print("Warning: {}".format(msg))
149
+
150
+ def write_messages(self, outstream):
151
+ for msg in self.messages:
152
+ outstream.write("Warning: {}\n".format(msg))
153
+
154
+
155
+ #
156
+ # The super-class for enum types
157
+ #
158
+
159
+ try:
160
+ from enum import Enum
161
+ except ModulenotfoundExp_ :
162
+ Enum = object
163
+
164
+ #
165
+ # The root super-class for element type classes
166
+ #
167
+ # Calls to the methods in these classes are generated by generateDS.py.
168
+ # You can replace these methods by re-implementing the following class
169
+ # in a module named generatedssuper.py.
170
+
171
+ try:
172
+ from generatedssuper import GeneratedsSuper
173
+ except ModulenotfoundExp_ as exp:
174
+ try:
175
+ from generatedssupersuper import GeneratedsSuperSuper
176
+ except ModulenotfoundExp_ as exp:
177
+ class GeneratedsSuperSuper(object):
178
+ pass
179
+
180
+ class GeneratedsSuper(GeneratedsSuperSuper):
181
+ __hash__ = object.__hash__
182
+ tzoff_pattern = re_.compile(r'(\+|-)((0\d|1[0-3]):[0-5]\d|14:00)$')
183
+ class _FixedOffsetTZ(datetime_.tzinfo):
184
+ def __init__(self, offset, name):
185
+ self.__offset = datetime_.timedelta(minutes=offset)
186
+ self.__name = name
187
+ def utcoffset(self, dt):
188
+ return self.__offset
189
+ def tzname(self, dt):
190
+ return self.__name
191
+ def dst(self, dt):
192
+ return None
193
+ def __str__(self):
194
+ settings = {
195
+ 'str_pretty_print': True,
196
+ 'str_indent_level': 0,
197
+ 'str_namespaceprefix': '',
198
+ 'str_name': self.__class__.__name__,
199
+ 'str_namespacedefs': '',
200
+ }
201
+ for n in settings:
202
+ if hasattr(self, n):
203
+ settings[n] = getattr(self, n)
204
+ if sys.version_info.major == 2:
205
+ from StringIO import StringIO
206
+ else:
207
+ from io import StringIO
208
+ output = StringIO()
209
+ self.export(
210
+ output,
211
+ settings['str_indent_level'],
212
+ pretty_print=settings['str_pretty_print'],
213
+ namespaceprefix_=settings['str_namespaceprefix'],
214
+ name_=settings['str_name'],
215
+ namespacedef_=settings['str_namespacedefs']
216
+ )
217
+ strval = output.getvalue()
218
+ output.close()
219
+ return strval
220
+ def gds_format_string(self, input_data, input_name=''):
221
+ return input_data
222
+ def gds_parse_string(self, input_data, node=None, input_name=''):
223
+ return input_data
224
+ def gds_validate_string(self, input_data, node=None, input_name=''):
225
+ if not input_data:
226
+ return ''
227
+ else:
228
+ return input_data
229
+ def gds_format_base64(self, input_data, input_name=''):
230
+ return base64.b64encode(input_data).decode('ascii')
231
+ def gds_validate_base64(self, input_data, node=None, input_name=''):
232
+ return input_data
233
+ def gds_format_integer(self, input_data, input_name=''):
234
+ return '%d' % int(input_data)
235
+ def gds_parse_integer(self, input_data, node=None, input_name=''):
236
+ try:
237
+ ival = int(input_data)
238
+ except (TypeError, ValueError) as exp:
239
+ raise_parse_error(node, 'Requires integer value: %s' % exp)
240
+ return ival
241
+ def gds_validate_integer(self, input_data, node=None, input_name=''):
242
+ try:
243
+ value = int(input_data)
244
+ except (TypeError, ValueError):
245
+ raise_parse_error(node, 'Requires integer value')
246
+ return value
247
+ def gds_format_integer_list(self, input_data, input_name=''):
248
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
249
+ input_data = [str(s) for s in input_data]
250
+ return '%s' % ' '.join(input_data)
251
+ def gds_validate_integer_list(
252
+ self, input_data, node=None, input_name=''):
253
+ values = input_data.split()
254
+ for value in values:
255
+ try:
256
+ int(value)
257
+ except (TypeError, ValueError):
258
+ raise_parse_error(node, 'Requires sequence of integer values')
259
+ return values
260
+ def gds_format_float(self, input_data, input_name=''):
261
+ value = ('%.15f' % float(input_data)).rstrip('0')
262
+ if value.endswith('.'):
263
+ value += '0'
264
+ return value
265
+
266
+ def gds_parse_float(self, input_data, node=None, input_name=''):
267
+ try:
268
+ fval_ = float(input_data)
269
+ except (TypeError, ValueError) as exp:
270
+ raise_parse_error(node, 'Requires float or double value: %s' % exp)
271
+ return fval_
272
+ def gds_validate_float(self, input_data, node=None, input_name=''):
273
+ try:
274
+ value = float(input_data)
275
+ except (TypeError, ValueError):
276
+ raise_parse_error(node, 'Requires float value')
277
+ return value
278
+ def gds_format_float_list(self, input_data, input_name=''):
279
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
280
+ input_data = [str(s) for s in input_data]
281
+ return '%s' % ' '.join(input_data)
282
+ def gds_validate_float_list(
283
+ self, input_data, node=None, input_name=''):
284
+ values = input_data.split()
285
+ for value in values:
286
+ try:
287
+ float(value)
288
+ except (TypeError, ValueError):
289
+ raise_parse_error(node, 'Requires sequence of float values')
290
+ return values
291
+ def gds_format_decimal(self, input_data, input_name=''):
292
+ return_value = '%s' % input_data
293
+ if '.' in return_value:
294
+ return_value = return_value.rstrip('0')
295
+ if return_value.endswith('.'):
296
+ return_value = return_value.rstrip('.')
297
+ return return_value
298
+ def gds_parse_decimal(self, input_data, node=None, input_name=''):
299
+ try:
300
+ decimal_value = decimal_.Decimal(input_data)
301
+ except (TypeError, ValueError):
302
+ raise_parse_error(node, 'Requires decimal value')
303
+ return decimal_value
304
+ def gds_validate_decimal(self, input_data, node=None, input_name=''):
305
+ try:
306
+ value = decimal_.Decimal(input_data)
307
+ except (TypeError, ValueError):
308
+ raise_parse_error(node, 'Requires decimal value')
309
+ return value
310
+ def gds_format_decimal_list(self, input_data, input_name=''):
311
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
312
+ input_data = [str(s) for s in input_data]
313
+ return ' '.join([self.gds_format_decimal(item) for item in input_data])
314
+ def gds_validate_decimal_list(
315
+ self, input_data, node=None, input_name=''):
316
+ values = input_data.split()
317
+ for value in values:
318
+ try:
319
+ decimal_.Decimal(value)
320
+ except (TypeError, ValueError):
321
+ raise_parse_error(node, 'Requires sequence of decimal values')
322
+ return values
323
+ def gds_format_double(self, input_data, input_name=''):
324
+ return '%s' % input_data
325
+ def gds_parse_double(self, input_data, node=None, input_name=''):
326
+ try:
327
+ fval_ = float(input_data)
328
+ except (TypeError, ValueError) as exp:
329
+ raise_parse_error(node, 'Requires double or float value: %s' % exp)
330
+ return fval_
331
+ def gds_validate_double(self, input_data, node=None, input_name=''):
332
+ try:
333
+ value = float(input_data)
334
+ except (TypeError, ValueError):
335
+ raise_parse_error(node, 'Requires double or float value')
336
+ return value
337
+ def gds_format_double_list(self, input_data, input_name=''):
338
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
339
+ input_data = [str(s) for s in input_data]
340
+ return '%s' % ' '.join(input_data)
341
+ def gds_validate_double_list(
342
+ self, input_data, node=None, input_name=''):
343
+ values = input_data.split()
344
+ for value in values:
345
+ try:
346
+ float(value)
347
+ except (TypeError, ValueError):
348
+ raise_parse_error(
349
+ node, 'Requires sequence of double or float values')
350
+ return values
351
+ def gds_format_boolean(self, input_data, input_name=''):
352
+ return ('%s' % input_data).lower()
353
+ def gds_parse_boolean(self, input_data, node=None, input_name=''):
354
+ input_data = input_data.strip()
355
+ if input_data in ('true', '1'):
356
+ bval = True
357
+ elif input_data in ('false', '0'):
358
+ bval = False
359
+ else:
360
+ raise_parse_error(node, 'Requires boolean value')
361
+ return bval
362
+ def gds_validate_boolean(self, input_data, node=None, input_name=''):
363
+ if input_data not in (True, 1, False, 0, ):
364
+ raise_parse_error(
365
+ node,
366
+ 'Requires boolean value '
367
+ '(one of True, 1, False, 0)')
368
+ return input_data
369
+ def gds_format_boolean_list(self, input_data, input_name=''):
370
+ if len(input_data) > 0 and not isinstance(input_data[0], BaseStrType_):
371
+ input_data = [str(s) for s in input_data]
372
+ return '%s' % ' '.join(input_data)
373
+ def gds_validate_boolean_list(
374
+ self, input_data, node=None, input_name=''):
375
+ values = input_data.split()
376
+ for value in values:
377
+ value = self.gds_parse_boolean(value, node, input_name)
378
+ if value not in (True, 1, False, 0, ):
379
+ raise_parse_error(
380
+ node,
381
+ 'Requires sequence of boolean values '
382
+ '(one of True, 1, False, 0)')
383
+ return values
384
+ def gds_validate_datetime(self, input_data, node=None, input_name=''):
385
+ return input_data
386
+ def gds_format_datetime(self, input_data, input_name=''):
387
+ if input_data.microsecond == 0:
388
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d' % (
389
+ input_data.year,
390
+ input_data.month,
391
+ input_data.day,
392
+ input_data.hour,
393
+ input_data.minute,
394
+ input_data.second,
395
+ )
396
+ else:
397
+ _svalue = '%04d-%02d-%02dT%02d:%02d:%02d.%s' % (
398
+ input_data.year,
399
+ input_data.month,
400
+ input_data.day,
401
+ input_data.hour,
402
+ input_data.minute,
403
+ input_data.second,
404
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
405
+ )
406
+ if input_data.tzinfo is not None:
407
+ tzoff = input_data.tzinfo.utcoffset(input_data)
408
+ if tzoff is not None:
409
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
410
+ if total_seconds == 0:
411
+ _svalue += 'Z'
412
+ else:
413
+ if total_seconds < 0:
414
+ _svalue += '-'
415
+ total_seconds *= -1
416
+ else:
417
+ _svalue += '+'
418
+ hours = total_seconds // 3600
419
+ minutes = (total_seconds - (hours * 3600)) // 60
420
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
421
+ return _svalue
422
+ @classmethod
423
+ def gds_parse_datetime(cls, input_data):
424
+ tz = None
425
+ if input_data[-1] == 'Z':
426
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
427
+ input_data = input_data[:-1]
428
+ else:
429
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
430
+ if results is not None:
431
+ tzoff_parts = results.group(2).split(':')
432
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
433
+ if results.group(1) == '-':
434
+ tzoff *= -1
435
+ tz = GeneratedsSuper._FixedOffsetTZ(
436
+ tzoff, results.group(0))
437
+ input_data = input_data[:-6]
438
+ time_parts = input_data.split('.')
439
+ if len(time_parts) > 1:
440
+ micro_seconds = int(float('0.' + time_parts[1]) * 1000000)
441
+ input_data = '%s.%s' % (
442
+ time_parts[0], "{}".format(micro_seconds).rjust(6, "0"), )
443
+ dt = datetime_.datetime.strptime(
444
+ input_data, '%Y-%m-%dT%H:%M:%S.%f')
445
+ else:
446
+ dt = datetime_.datetime.strptime(
447
+ input_data, '%Y-%m-%dT%H:%M:%S')
448
+ dt = dt.replace(tzinfo=tz)
449
+ return dt
450
+ def gds_validate_date(self, input_data, node=None, input_name=''):
451
+ return input_data
452
+ def gds_format_date(self, input_data, input_name=''):
453
+ _svalue = '%04d-%02d-%02d' % (
454
+ input_data.year,
455
+ input_data.month,
456
+ input_data.day,
457
+ )
458
+ try:
459
+ if input_data.tzinfo is not None:
460
+ tzoff = input_data.tzinfo.utcoffset(input_data)
461
+ if tzoff is not None:
462
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
463
+ if total_seconds == 0:
464
+ _svalue += 'Z'
465
+ else:
466
+ if total_seconds < 0:
467
+ _svalue += '-'
468
+ total_seconds *= -1
469
+ else:
470
+ _svalue += '+'
471
+ hours = total_seconds // 3600
472
+ minutes = (total_seconds - (hours * 3600)) // 60
473
+ _svalue += '{0:02d}:{1:02d}'.format(
474
+ hours, minutes)
475
+ except AttributeError:
476
+ pass
477
+ return _svalue
478
+ @classmethod
479
+ def gds_parse_date(cls, input_data):
480
+ tz = None
481
+ if input_data[-1] == 'Z':
482
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
483
+ input_data = input_data[:-1]
484
+ else:
485
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
486
+ if results is not None:
487
+ tzoff_parts = results.group(2).split(':')
488
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
489
+ if results.group(1) == '-':
490
+ tzoff *= -1
491
+ tz = GeneratedsSuper._FixedOffsetTZ(
492
+ tzoff, results.group(0))
493
+ input_data = input_data[:-6]
494
+ dt = datetime_.datetime.strptime(input_data, '%Y-%m-%d')
495
+ dt = dt.replace(tzinfo=tz)
496
+ return dt.date()
497
+ def gds_validate_time(self, input_data, node=None, input_name=''):
498
+ return input_data
499
+ def gds_format_time(self, input_data, input_name=''):
500
+ if input_data.microsecond == 0:
501
+ _svalue = '%02d:%02d:%02d' % (
502
+ input_data.hour,
503
+ input_data.minute,
504
+ input_data.second,
505
+ )
506
+ else:
507
+ _svalue = '%02d:%02d:%02d.%s' % (
508
+ input_data.hour,
509
+ input_data.minute,
510
+ input_data.second,
511
+ ('%f' % (float(input_data.microsecond) / 1000000))[2:],
512
+ )
513
+ if input_data.tzinfo is not None:
514
+ tzoff = input_data.tzinfo.utcoffset(input_data)
515
+ if tzoff is not None:
516
+ total_seconds = tzoff.seconds + (86400 * tzoff.days)
517
+ if total_seconds == 0:
518
+ _svalue += 'Z'
519
+ else:
520
+ if total_seconds < 0:
521
+ _svalue += '-'
522
+ total_seconds *= -1
523
+ else:
524
+ _svalue += '+'
525
+ hours = total_seconds // 3600
526
+ minutes = (total_seconds - (hours * 3600)) // 60
527
+ _svalue += '{0:02d}:{1:02d}'.format(hours, minutes)
528
+ return _svalue
529
+ def gds_validate_simple_patterns(self, patterns, target):
530
+ # pat is a list of lists of strings/patterns.
531
+ # The target value must match at least one of the patterns
532
+ # in order for the test to succeed.
533
+ found1 = True
534
+ target = str(target)
535
+ for patterns1 in patterns:
536
+ found2 = False
537
+ for patterns2 in patterns1:
538
+ mo = re_.search(patterns2, target)
539
+ if mo is not None and len(mo.group(0)) == len(target):
540
+ found2 = True
541
+ break
542
+ if not found2:
543
+ found1 = False
544
+ break
545
+ return found1
546
+ @classmethod
547
+ def gds_parse_time(cls, input_data):
548
+ tz = None
549
+ if input_data[-1] == 'Z':
550
+ tz = GeneratedsSuper._FixedOffsetTZ(0, 'UTC')
551
+ input_data = input_data[:-1]
552
+ else:
553
+ results = GeneratedsSuper.tzoff_pattern.search(input_data)
554
+ if results is not None:
555
+ tzoff_parts = results.group(2).split(':')
556
+ tzoff = int(tzoff_parts[0]) * 60 + int(tzoff_parts[1])
557
+ if results.group(1) == '-':
558
+ tzoff *= -1
559
+ tz = GeneratedsSuper._FixedOffsetTZ(
560
+ tzoff, results.group(0))
561
+ input_data = input_data[:-6]
562
+ if len(input_data.split('.')) > 1:
563
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S.%f')
564
+ else:
565
+ dt = datetime_.datetime.strptime(input_data, '%H:%M:%S')
566
+ dt = dt.replace(tzinfo=tz)
567
+ return dt.time()
568
+ def gds_check_cardinality_(
569
+ self, value, input_name,
570
+ min_occurs=0, max_occurs=1, required=None):
571
+ if value is None:
572
+ length = 0
573
+ elif isinstance(value, list):
574
+ length = len(value)
575
+ else:
576
+ length = 1
577
+ if required is not None :
578
+ if required and length < 1:
579
+ self.gds_collector_.add_message(
580
+ "Required value {}{} is missing".format(
581
+ input_name, self.gds_get_node_lineno_()))
582
+ if length < min_occurs:
583
+ self.gds_collector_.add_message(
584
+ "Number of values for {}{} is below "
585
+ "the minimum allowed, "
586
+ "expected at least {}, found {}".format(
587
+ input_name, self.gds_get_node_lineno_(),
588
+ min_occurs, length))
589
+ elif length > max_occurs:
590
+ self.gds_collector_.add_message(
591
+ "Number of values for {}{} is above "
592
+ "the maximum allowed, "
593
+ "expected at most {}, found {}".format(
594
+ input_name, self.gds_get_node_lineno_(),
595
+ max_occurs, length))
596
+ def gds_validate_builtin_ST_(
597
+ self, validator, value, input_name,
598
+ min_occurs=None, max_occurs=None, required=None):
599
+ if value is not None:
600
+ try:
601
+ validator(value, input_name=input_name)
602
+ except GDSParseError as parse_error:
603
+ self.gds_collector_.add_message(str(parse_error))
604
+ def gds_validate_defined_ST_(
605
+ self, validator, value, input_name,
606
+ min_occurs=None, max_occurs=None, required=None):
607
+ if value is not None:
608
+ try:
609
+ validator(value)
610
+ except GDSParseError as parse_error:
611
+ self.gds_collector_.add_message(str(parse_error))
612
+ def gds_str_lower(self, instring):
613
+ return instring.lower()
614
+ def get_path_(self, node):
615
+ path_list = []
616
+ self.get_path_list_(node, path_list)
617
+ path_list.reverse()
618
+ path = '/'.join(path_list)
619
+ return path
620
+ Tag_strip_pattern_ = re_.compile(r'\{.*\}')
621
+ def get_path_list_(self, node, path_list):
622
+ if node is None:
623
+ return
624
+ tag = GeneratedsSuper.Tag_strip_pattern_.sub('', node.tag)
625
+ if tag:
626
+ path_list.append(tag)
627
+ self.get_path_list_(node.getparent(), path_list)
628
+ def get_class_obj_(self, node, default_class=None):
629
+ class_obj1 = default_class
630
+ if 'xsi' in node.nsmap:
631
+ classname = node.get('{%s}type' % node.nsmap['xsi'])
632
+ if classname is not None:
633
+ names = classname.split(':')
634
+ if len(names) == 2:
635
+ classname = names[1]
636
+ class_obj2 = globals().get(classname)
637
+ if class_obj2 is not None:
638
+ class_obj1 = class_obj2
639
+ return class_obj1
640
+ def gds_build_any(self, node, type_name=None):
641
+ # provide default value in case option --disable-xml is used.
642
+ content = ""
643
+ content = etree_.tostring(node, encoding="unicode")
644
+ return content
645
+ @classmethod
646
+ def gds_reverse_node_mapping(cls, mapping):
647
+ return dict(((v, k) for k, v in mapping.items()))
648
+ @staticmethod
649
+ def gds_encode(instring):
650
+ if sys.version_info.major == 2:
651
+ if ExternalEncoding:
652
+ encoding = ExternalEncoding
653
+ else:
654
+ encoding = 'utf-8'
655
+ return instring.encode(encoding)
656
+ else:
657
+ return instring
658
+ @staticmethod
659
+ def convert_unicode(instring):
660
+ if isinstance(instring, str):
661
+ result = quote_xml(instring)
662
+ elif sys.version_info.major == 2 and isinstance(instring, unicode):
663
+ result = quote_xml(instring).encode('utf8')
664
+ else:
665
+ result = GeneratedsSuper.gds_encode(str(instring))
666
+ return result
667
+ def __eq__(self, other):
668
+ def excl_select_objs_(obj):
669
+ return (obj[0] != 'parent_object_' and
670
+ obj[0] != 'gds_collector_')
671
+ if type(self) != type(other):
672
+ return False
673
+ return all(x == y for x, y in zip_longest(
674
+ filter(excl_select_objs_, self.__dict__.items()),
675
+ filter(excl_select_objs_, other.__dict__.items())))
676
+ def __ne__(self, other):
677
+ return not self.__eq__(other)
678
+ # Django ETL transform hooks.
679
+ def gds_djo_etl_transform(self):
680
+ pass
681
+ def gds_djo_etl_transform_db_obj(self, dbobj):
682
+ pass
683
+ # SQLAlchemy ETL transform hooks.
684
+ def gds_sqa_etl_transform(self):
685
+ return 0, None
686
+ def gds_sqa_etl_transform_db_obj(self, dbobj):
687
+ pass
688
+ def gds_get_node_lineno_(self):
689
+ if (hasattr(self, "gds_elementtree_node_") and
690
+ self.gds_elementtree_node_ is not None):
691
+ return ' near line {}'.format(
692
+ self.gds_elementtree_node_.sourceline)
693
+ else:
694
+ return ""
695
+
696
+
697
+ def getSubclassFromModule_(module, class_):
698
+ '''Get the subclass of a class from a specific module.'''
699
+ name = class_.__name__ + 'Sub'
700
+ if hasattr(module, name):
701
+ return getattr(module, name)
702
+ else:
703
+ return None
704
+
705
+
706
+ #
707
+ # If you have installed IPython you can uncomment and use the following.
708
+ # IPython is available from http://ipython.scipy.org/.
709
+ #
710
+
711
+ ## from IPython.Shell import IPShellEmbed
712
+ ## args = ''
713
+ ## ipshell = IPShellEmbed(args,
714
+ ## banner = 'Dropping into IPython',
715
+ ## exit_msg = 'Leaving Interpreter, back to program.')
716
+
717
+ # Then use the following line where and when you want to drop into the
718
+ # IPython shell:
719
+ # ipshell('<some message> -- Entering ipshell.\nHit Ctrl-D to exit')
720
+
721
+ #
722
+ # Globals
723
+ #
724
+
725
+ ExternalEncoding = ''
726
+ # Set this to false in order to deactivate during export, the use of
727
+ # name space prefixes captured from the input document.
728
+ UseCapturedNS_ = True
729
+ CapturedNsmap_ = {}
730
+ Tag_pattern_ = re_.compile(r'({.*})?(.*)')
731
+ String_cleanup_pat_ = re_.compile(r"[\n\r\s]+")
732
+ Namespace_extract_pat_ = re_.compile(r'{(.*)}(.*)')
733
+ CDATA_pattern_ = re_.compile(r"<!\[CDATA\[.*?\]\]>", re_.DOTALL)
734
+
735
+ # Change this to redirect the generated superclass module to use a
736
+ # specific subclass module.
737
+ CurrentSubclassModule_ = None
738
+
739
+ #
740
+ # Support/utility functions.
741
+ #
742
+
743
+
744
+ def showIndent(outfile, level, pretty_print=True):
745
+ if pretty_print:
746
+ for idx in range(level):
747
+ outfile.write(' ')
748
+
749
+
750
+ def quote_xml(inStr):
751
+ "Escape markup chars, but do not modify CDATA sections."
752
+ if not inStr:
753
+ return ''
754
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
755
+ s2 = ''
756
+ pos = 0
757
+ matchobjects = CDATA_pattern_.finditer(s1)
758
+ for mo in matchobjects:
759
+ s3 = s1[pos:mo.start()]
760
+ s2 += quote_xml_aux(s3)
761
+ s2 += s1[mo.start():mo.end()]
762
+ pos = mo.end()
763
+ s3 = s1[pos:]
764
+ s2 += quote_xml_aux(s3)
765
+ return s2
766
+
767
+
768
+ def quote_xml_aux(inStr):
769
+ s1 = inStr.replace('&', '&amp;')
770
+ s1 = s1.replace('<', '&lt;')
771
+ s1 = s1.replace('>', '&gt;')
772
+ return s1
773
+
774
+
775
+ def quote_attrib(inStr):
776
+ s1 = (isinstance(inStr, BaseStrType_) and inStr or '%s' % inStr)
777
+ s1 = s1.replace('&', '&amp;')
778
+ s1 = s1.replace('<', '&lt;')
779
+ s1 = s1.replace('>', '&gt;')
780
+ s1 = s1.replace('\n', '&#10;')
781
+ if '"' in s1:
782
+ if "'" in s1:
783
+ s1 = '"%s"' % s1.replace('"', "&quot;")
784
+ else:
785
+ s1 = "'%s'" % s1
786
+ else:
787
+ s1 = '"%s"' % s1
788
+ return s1
789
+
790
+
791
+ def quote_python(inStr):
792
+ s1 = inStr
793
+ if s1.find("'") == -1:
794
+ if s1.find('\n') == -1:
795
+ return "'%s'" % s1
796
+ else:
797
+ return "'''%s'''" % s1
798
+ else:
799
+ if s1.find('"') != -1:
800
+ s1 = s1.replace('"', '\\"')
801
+ if s1.find('\n') == -1:
802
+ return '"%s"' % s1
803
+ else:
804
+ return '"""%s"""' % s1
805
+
806
+
807
+ def get_all_text_(node):
808
+ if node.text is not None:
809
+ text = node.text
810
+ else:
811
+ text = ''
812
+ for child in node:
813
+ if child.tail is not None:
814
+ text += child.tail
815
+ return text
816
+
817
+
818
+ def find_attr_value_(attr_name, node):
819
+ attrs = node.attrib
820
+ attr_parts = attr_name.split(':')
821
+ value = None
822
+ if len(attr_parts) == 1:
823
+ value = attrs.get(attr_name)
824
+ elif len(attr_parts) == 2:
825
+ prefix, name = attr_parts
826
+ if prefix == 'xml':
827
+ namespace = 'http://www.w3.org/XML/1998/namespace'
828
+ else:
829
+ namespace = node.nsmap.get(prefix)
830
+ if namespace is not None:
831
+ value = attrs.get('{%s}%s' % (namespace, name, ))
832
+ return value
833
+
834
+
835
+ def encode_str_2_3(instr):
836
+ return instr
837
+
838
+
839
+ class GDSParseError(Exception):
840
+ pass
841
+
842
+
843
+ def raise_parse_error(node, msg):
844
+ if node is not None:
845
+ msg = '%s (element %s/line %d)' % (msg, node.tag, node.sourceline, )
846
+ raise GDSParseError(msg)
847
+
848
+
849
+ class MixedContainer:
850
+ # Constants for category:
851
+ CategoryNone = 0
852
+ CategoryText = 1
853
+ CategorySimple = 2
854
+ CategoryComplex = 3
855
+ # Constants for content_type:
856
+ TypeNone = 0
857
+ TypeText = 1
858
+ TypeString = 2
859
+ TypeInteger = 3
860
+ TypeFloat = 4
861
+ TypeDecimal = 5
862
+ TypeDouble = 6
863
+ TypeBoolean = 7
864
+ TypeBase64 = 8
865
+ def __init__(self, category, content_type, name, value):
866
+ self.category = category
867
+ self.content_type = content_type
868
+ self.name = name
869
+ self.value = value
870
+ def getCategory(self):
871
+ return self.category
872
+ def getContenttype(self, content_type):
873
+ return self.content_type
874
+ def getValue(self):
875
+ return self.value
876
+ def getName(self):
877
+ return self.name
878
+ def export(self, outfile, level, name, namespace,
879
+ pretty_print=True):
880
+ if self.category == MixedContainer.CategoryText:
881
+ # Prevent exporting empty content as empty lines.
882
+ if self.value.strip():
883
+ outfile.write(self.value)
884
+ elif self.category == MixedContainer.CategorySimple:
885
+ self.exportSimple(outfile, level, name)
886
+ else: # category == MixedContainer.CategoryComplex
887
+ self.value.export(
888
+ outfile, level, namespace, name_=name,
889
+ pretty_print=pretty_print)
890
+ def exportSimple(self, outfile, level, name):
891
+ if self.content_type == MixedContainer.TypeString:
892
+ outfile.write('<%s>%s</%s>' % (
893
+ self.name, self.value, self.name))
894
+ elif self.content_type == MixedContainer.TypeInteger or \
895
+ self.content_type == MixedContainer.TypeBoolean:
896
+ outfile.write('<%s>%d</%s>' % (
897
+ self.name, self.value, self.name))
898
+ elif self.content_type == MixedContainer.TypeFloat or \
899
+ self.content_type == MixedContainer.TypeDecimal:
900
+ outfile.write('<%s>%f</%s>' % (
901
+ self.name, self.value, self.name))
902
+ elif self.content_type == MixedContainer.TypeDouble:
903
+ outfile.write('<%s>%g</%s>' % (
904
+ self.name, self.value, self.name))
905
+ elif self.content_type == MixedContainer.TypeBase64:
906
+ outfile.write('<%s>%s</%s>' % (
907
+ self.name,
908
+ base64.b64encode(self.value),
909
+ self.name))
910
+ def to_etree(self, element, mapping_=None, reverse_mapping_=None, nsmap_=None):
911
+ if self.category == MixedContainer.CategoryText:
912
+ # Prevent exporting empty content as empty lines.
913
+ if self.value.strip():
914
+ if len(element) > 0:
915
+ if element[-1].tail is None:
916
+ element[-1].tail = self.value
917
+ else:
918
+ element[-1].tail += self.value
919
+ else:
920
+ if element.text is None:
921
+ element.text = self.value
922
+ else:
923
+ element.text += self.value
924
+ elif self.category == MixedContainer.CategorySimple:
925
+ subelement = etree_.SubElement(
926
+ element, '%s' % self.name)
927
+ subelement.text = self.to_etree_simple()
928
+ else: # category == MixedContainer.CategoryComplex
929
+ self.value.to_etree(element)
930
+ def to_etree_simple(self, mapping_=None, reverse_mapping_=None, nsmap_=None):
931
+ if self.content_type == MixedContainer.TypeString:
932
+ text = self.value
933
+ elif (self.content_type == MixedContainer.TypeInteger or
934
+ self.content_type == MixedContainer.TypeBoolean):
935
+ text = '%d' % self.value
936
+ elif (self.content_type == MixedContainer.TypeFloat or
937
+ self.content_type == MixedContainer.TypeDecimal):
938
+ text = '%f' % self.value
939
+ elif self.content_type == MixedContainer.TypeDouble:
940
+ text = '%g' % self.value
941
+ elif self.content_type == MixedContainer.TypeBase64:
942
+ text = '%s' % base64.b64encode(self.value)
943
+ return text
944
+ def exportLiteral(self, outfile, level, name):
945
+ if self.category == MixedContainer.CategoryText:
946
+ showIndent(outfile, level)
947
+ outfile.write(
948
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
949
+ self.category, self.content_type,
950
+ self.name, self.value))
951
+ elif self.category == MixedContainer.CategorySimple:
952
+ showIndent(outfile, level)
953
+ outfile.write(
954
+ 'model_.MixedContainer(%d, %d, "%s", "%s"),\n' % (
955
+ self.category, self.content_type,
956
+ self.name, self.value))
957
+ else: # category == MixedContainer.CategoryComplex
958
+ showIndent(outfile, level)
959
+ outfile.write(
960
+ 'model_.MixedContainer(%d, %d, "%s",\n' % (
961
+ self.category, self.content_type, self.name,))
962
+ self.value.exportLiteral(outfile, level + 1)
963
+ showIndent(outfile, level)
964
+ outfile.write(')\n')
965
+
966
+
967
+ class MemberSpec_(object):
968
+ def __init__(self, name='', data_type='', container=0,
969
+ optional=0, child_attrs=None, choice=None):
970
+ self.name = name
971
+ self.data_type = data_type
972
+ self.container = container
973
+ self.child_attrs = child_attrs
974
+ self.choice = choice
975
+ self.optional = optional
976
+ def set_name(self, name): self.name = name
977
+ def get_name(self): return self.name
978
+ def set_data_type(self, data_type): self.data_type = data_type
979
+ def get_data_type_chain(self): return self.data_type
980
+ def get_data_type(self):
981
+ if isinstance(self.data_type, list):
982
+ if len(self.data_type) > 0:
983
+ return self.data_type[-1]
984
+ else:
985
+ return 'xs:string'
986
+ else:
987
+ return self.data_type
988
+ def set_container(self, container): self.container = container
989
+ def get_container(self): return self.container
990
+ def set_child_attrs(self, child_attrs): self.child_attrs = child_attrs
991
+ def get_child_attrs(self): return self.child_attrs
992
+ def set_choice(self, choice): self.choice = choice
993
+ def get_choice(self): return self.choice
994
+ def set_optional(self, optional): self.optional = optional
995
+ def get_optional(self): return self.optional
996
+
997
+
998
+ def _cast(typ, value):
999
+ if typ is None or value is None:
1000
+ return value
1001
+ return typ(value)
1002
+
1003
+
1004
+ #
1005
+ # Start enum classes
1006
+ #
1007
+ class RelType(str, Enum):
1008
+ SERVICE='service'
1009
+ OPTION='option'
1010
+
1011
+
1012
+ #
1013
+ # Start data representation classes
1014
+ #
1015
+ class services(GeneratedsSuper):
1016
+ __hash__ = GeneratedsSuper.__hash__
1017
+ subclass = None
1018
+ superclass = None
1019
+ def __init__(self, service=None, gds_collector_=None, **kwargs_):
1020
+ self.gds_collector_ = gds_collector_
1021
+ self.gds_elementtree_node_ = None
1022
+ self.original_tagname_ = None
1023
+ self.parent_object_ = kwargs_.get('parent_object_')
1024
+ self.ns_prefix_ = None
1025
+ if service is None:
1026
+ self.service = []
1027
+ else:
1028
+ self.service = service
1029
+ self.service_nsprefix_ = None
1030
+ def factory(*args_, **kwargs_):
1031
+ if CurrentSubclassModule_ is not None:
1032
+ subclass = getSubclassFromModule_(
1033
+ CurrentSubclassModule_, services)
1034
+ if subclass is not None:
1035
+ return subclass(*args_, **kwargs_)
1036
+ if services.subclass:
1037
+ return services.subclass(*args_, **kwargs_)
1038
+ else:
1039
+ return services(*args_, **kwargs_)
1040
+ factory = staticmethod(factory)
1041
+ def get_ns_prefix_(self):
1042
+ return self.ns_prefix_
1043
+ def set_ns_prefix_(self, ns_prefix):
1044
+ self.ns_prefix_ = ns_prefix
1045
+ def get_service(self):
1046
+ return self.service
1047
+ def set_service(self, service):
1048
+ self.service = service
1049
+ def add_service(self, value):
1050
+ self.service.append(value)
1051
+ def insert_service_at(self, index, value):
1052
+ self.service.insert(index, value)
1053
+ def replace_service_at(self, index, value):
1054
+ self.service[index] = value
1055
+ def has__content(self):
1056
+ if (
1057
+ self.service
1058
+ ):
1059
+ return True
1060
+ else:
1061
+ return False
1062
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='services', pretty_print=True):
1063
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('services')
1064
+ if imported_ns_def_ is not None:
1065
+ namespacedef_ = imported_ns_def_
1066
+ if pretty_print:
1067
+ eol_ = '\n'
1068
+ else:
1069
+ eol_ = ''
1070
+ if self.original_tagname_ is not None and name_ == 'services':
1071
+ name_ = self.original_tagname_
1072
+ if UseCapturedNS_ and self.ns_prefix_:
1073
+ namespaceprefix_ = self.ns_prefix_ + ':'
1074
+ showIndent(outfile, level, pretty_print)
1075
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1076
+ already_processed = set()
1077
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='services')
1078
+ if self.has__content():
1079
+ outfile.write('>%s' % (eol_, ))
1080
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='services', pretty_print=pretty_print)
1081
+ showIndent(outfile, level, pretty_print)
1082
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1083
+ else:
1084
+ outfile.write('/>%s' % (eol_, ))
1085
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='services'):
1086
+ pass
1087
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='services', fromsubclass_=False, pretty_print=True):
1088
+ if pretty_print:
1089
+ eol_ = '\n'
1090
+ else:
1091
+ eol_ = ''
1092
+ for service_ in self.service:
1093
+ namespaceprefix_ = self.service_nsprefix_ + ':' if (UseCapturedNS_ and self.service_nsprefix_) else ''
1094
+ service_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='service', pretty_print=pretty_print)
1095
+ def build(self, node, gds_collector_=None):
1096
+ self.gds_collector_ = gds_collector_
1097
+ if SaveElementTreeNode:
1098
+ self.gds_elementtree_node_ = node
1099
+ already_processed = set()
1100
+ self.ns_prefix_ = node.prefix
1101
+ self._buildAttributes(node, node.attrib, already_processed)
1102
+ for child in node:
1103
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1104
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1105
+ return self
1106
+ def _buildAttributes(self, node, attrs, already_processed):
1107
+ pass
1108
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1109
+ if nodeName_ == 'service':
1110
+ obj_ = serviceType.factory(parent_object_=self)
1111
+ obj_.build(child_, gds_collector_=gds_collector_)
1112
+ self.service.append(obj_)
1113
+ obj_.original_tagname_ = 'service'
1114
+ # end class services
1115
+
1116
+
1117
+ class option(GeneratedsSuper):
1118
+ __hash__ = GeneratedsSuper.__hash__
1119
+ subclass = None
1120
+ superclass = None
1121
+ def __init__(self, option_code=None, option_name=None, option_class=None, prints_on_label=None, qualifier_required=None, conflicting_options=None, prerequisite_options=None, gds_collector_=None, **kwargs_):
1122
+ self.gds_collector_ = gds_collector_
1123
+ self.gds_elementtree_node_ = None
1124
+ self.original_tagname_ = None
1125
+ self.parent_object_ = kwargs_.get('parent_object_')
1126
+ self.ns_prefix_ = None
1127
+ self.option_code = option_code
1128
+ self.option_code_nsprefix_ = None
1129
+ self.option_name = option_name
1130
+ self.option_name_nsprefix_ = None
1131
+ self.option_class = option_class
1132
+ self.option_class_nsprefix_ = None
1133
+ self.prints_on_label = prints_on_label
1134
+ self.prints_on_label_nsprefix_ = None
1135
+ self.qualifier_required = qualifier_required
1136
+ self.qualifier_required_nsprefix_ = None
1137
+ self.conflicting_options = conflicting_options
1138
+ self.conflicting_options_nsprefix_ = None
1139
+ self.prerequisite_options = prerequisite_options
1140
+ self.prerequisite_options_nsprefix_ = None
1141
+ def factory(*args_, **kwargs_):
1142
+ if CurrentSubclassModule_ is not None:
1143
+ subclass = getSubclassFromModule_(
1144
+ CurrentSubclassModule_, option)
1145
+ if subclass is not None:
1146
+ return subclass(*args_, **kwargs_)
1147
+ if option.subclass:
1148
+ return option.subclass(*args_, **kwargs_)
1149
+ else:
1150
+ return option(*args_, **kwargs_)
1151
+ factory = staticmethod(factory)
1152
+ def get_ns_prefix_(self):
1153
+ return self.ns_prefix_
1154
+ def set_ns_prefix_(self, ns_prefix):
1155
+ self.ns_prefix_ = ns_prefix
1156
+ def get_option_code(self):
1157
+ return self.option_code
1158
+ def set_option_code(self, option_code):
1159
+ self.option_code = option_code
1160
+ def get_option_name(self):
1161
+ return self.option_name
1162
+ def set_option_name(self, option_name):
1163
+ self.option_name = option_name
1164
+ def get_option_class(self):
1165
+ return self.option_class
1166
+ def set_option_class(self, option_class):
1167
+ self.option_class = option_class
1168
+ def get_prints_on_label(self):
1169
+ return self.prints_on_label
1170
+ def set_prints_on_label(self, prints_on_label):
1171
+ self.prints_on_label = prints_on_label
1172
+ def get_qualifier_required(self):
1173
+ return self.qualifier_required
1174
+ def set_qualifier_required(self, qualifier_required):
1175
+ self.qualifier_required = qualifier_required
1176
+ def get_conflicting_options(self):
1177
+ return self.conflicting_options
1178
+ def set_conflicting_options(self, conflicting_options):
1179
+ self.conflicting_options = conflicting_options
1180
+ def get_prerequisite_options(self):
1181
+ return self.prerequisite_options
1182
+ def set_prerequisite_options(self, prerequisite_options):
1183
+ self.prerequisite_options = prerequisite_options
1184
+ def has__content(self):
1185
+ if (
1186
+ self.option_code is not None or
1187
+ self.option_name is not None or
1188
+ self.option_class is not None or
1189
+ self.prints_on_label is not None or
1190
+ self.qualifier_required is not None or
1191
+ self.conflicting_options is not None or
1192
+ self.prerequisite_options is not None
1193
+ ):
1194
+ return True
1195
+ else:
1196
+ return False
1197
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='option', pretty_print=True):
1198
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('option')
1199
+ if imported_ns_def_ is not None:
1200
+ namespacedef_ = imported_ns_def_
1201
+ if pretty_print:
1202
+ eol_ = '\n'
1203
+ else:
1204
+ eol_ = ''
1205
+ if self.original_tagname_ is not None and name_ == 'option':
1206
+ name_ = self.original_tagname_
1207
+ if UseCapturedNS_ and self.ns_prefix_:
1208
+ namespaceprefix_ = self.ns_prefix_ + ':'
1209
+ showIndent(outfile, level, pretty_print)
1210
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1211
+ already_processed = set()
1212
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='option')
1213
+ if self.has__content():
1214
+ outfile.write('>%s' % (eol_, ))
1215
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='option', pretty_print=pretty_print)
1216
+ showIndent(outfile, level, pretty_print)
1217
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1218
+ else:
1219
+ outfile.write('/>%s' % (eol_, ))
1220
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='option'):
1221
+ pass
1222
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='option', fromsubclass_=False, pretty_print=True):
1223
+ if pretty_print:
1224
+ eol_ = '\n'
1225
+ else:
1226
+ eol_ = ''
1227
+ if self.option_code is not None:
1228
+ namespaceprefix_ = self.option_code_nsprefix_ + ':' if (UseCapturedNS_ and self.option_code_nsprefix_) else ''
1229
+ showIndent(outfile, level, pretty_print)
1230
+ outfile.write('<%soption-code>%s</%soption-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_code), input_name='option-code')), namespaceprefix_ , eol_))
1231
+ if self.option_name is not None:
1232
+ namespaceprefix_ = self.option_name_nsprefix_ + ':' if (UseCapturedNS_ and self.option_name_nsprefix_) else ''
1233
+ showIndent(outfile, level, pretty_print)
1234
+ outfile.write('<%soption-name>%s</%soption-name>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_name), input_name='option-name')), namespaceprefix_ , eol_))
1235
+ if self.option_class is not None:
1236
+ namespaceprefix_ = self.option_class_nsprefix_ + ':' if (UseCapturedNS_ and self.option_class_nsprefix_) else ''
1237
+ showIndent(outfile, level, pretty_print)
1238
+ outfile.write('<%soption-class>%s</%soption-class>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_class), input_name='option-class')), namespaceprefix_ , eol_))
1239
+ if self.prints_on_label is not None:
1240
+ namespaceprefix_ = self.prints_on_label_nsprefix_ + ':' if (UseCapturedNS_ and self.prints_on_label_nsprefix_) else ''
1241
+ showIndent(outfile, level, pretty_print)
1242
+ outfile.write('<%sprints-on-label>%s</%sprints-on-label>%s' % (namespaceprefix_ , self.gds_format_boolean(self.prints_on_label, input_name='prints-on-label'), namespaceprefix_ , eol_))
1243
+ if self.qualifier_required is not None:
1244
+ namespaceprefix_ = self.qualifier_required_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_required_nsprefix_) else ''
1245
+ showIndent(outfile, level, pretty_print)
1246
+ outfile.write('<%squalifier-required>%s</%squalifier-required>%s' % (namespaceprefix_ , self.gds_format_boolean(self.qualifier_required, input_name='qualifier-required'), namespaceprefix_ , eol_))
1247
+ if self.conflicting_options is not None:
1248
+ namespaceprefix_ = self.conflicting_options_nsprefix_ + ':' if (UseCapturedNS_ and self.conflicting_options_nsprefix_) else ''
1249
+ self.conflicting_options.export(outfile, level, namespaceprefix_, namespacedef_='', name_='conflicting-options', pretty_print=pretty_print)
1250
+ if self.prerequisite_options is not None:
1251
+ namespaceprefix_ = self.prerequisite_options_nsprefix_ + ':' if (UseCapturedNS_ and self.prerequisite_options_nsprefix_) else ''
1252
+ self.prerequisite_options.export(outfile, level, namespaceprefix_, namespacedef_='', name_='prerequisite-options', pretty_print=pretty_print)
1253
+ def build(self, node, gds_collector_=None):
1254
+ self.gds_collector_ = gds_collector_
1255
+ if SaveElementTreeNode:
1256
+ self.gds_elementtree_node_ = node
1257
+ already_processed = set()
1258
+ self.ns_prefix_ = node.prefix
1259
+ self._buildAttributes(node, node.attrib, already_processed)
1260
+ for child in node:
1261
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1262
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1263
+ return self
1264
+ def _buildAttributes(self, node, attrs, already_processed):
1265
+ pass
1266
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1267
+ if nodeName_ == 'option-code':
1268
+ value_ = child_.text
1269
+ value_ = self.gds_parse_string(value_, node, 'option_code')
1270
+ value_ = self.gds_validate_string(value_, node, 'option_code')
1271
+ self.option_code = value_
1272
+ self.option_code_nsprefix_ = child_.prefix
1273
+ elif nodeName_ == 'option-name':
1274
+ value_ = child_.text
1275
+ value_ = self.gds_parse_string(value_, node, 'option_name')
1276
+ value_ = self.gds_validate_string(value_, node, 'option_name')
1277
+ self.option_name = value_
1278
+ self.option_name_nsprefix_ = child_.prefix
1279
+ elif nodeName_ == 'option-class':
1280
+ value_ = child_.text
1281
+ value_ = self.gds_parse_string(value_, node, 'option_class')
1282
+ value_ = self.gds_validate_string(value_, node, 'option_class')
1283
+ self.option_class = value_
1284
+ self.option_class_nsprefix_ = child_.prefix
1285
+ elif nodeName_ == 'prints-on-label':
1286
+ sval_ = child_.text
1287
+ ival_ = self.gds_parse_boolean(sval_, node, 'prints_on_label')
1288
+ ival_ = self.gds_validate_boolean(ival_, node, 'prints_on_label')
1289
+ self.prints_on_label = ival_
1290
+ self.prints_on_label_nsprefix_ = child_.prefix
1291
+ elif nodeName_ == 'qualifier-required':
1292
+ sval_ = child_.text
1293
+ ival_ = self.gds_parse_boolean(sval_, node, 'qualifier_required')
1294
+ ival_ = self.gds_validate_boolean(ival_, node, 'qualifier_required')
1295
+ self.qualifier_required = ival_
1296
+ self.qualifier_required_nsprefix_ = child_.prefix
1297
+ elif nodeName_ == 'conflicting-options':
1298
+ obj_ = conflicting_optionsType.factory(parent_object_=self)
1299
+ obj_.build(child_, gds_collector_=gds_collector_)
1300
+ self.conflicting_options = obj_
1301
+ obj_.original_tagname_ = 'conflicting-options'
1302
+ elif nodeName_ == 'prerequisite-options':
1303
+ obj_ = prerequisite_optionsType.factory(parent_object_=self)
1304
+ obj_.build(child_, gds_collector_=gds_collector_)
1305
+ self.prerequisite_options = obj_
1306
+ obj_.original_tagname_ = 'prerequisite-options'
1307
+ # end class option
1308
+
1309
+
1310
+ class service(GeneratedsSuper):
1311
+ __hash__ = GeneratedsSuper.__hash__
1312
+ subclass = None
1313
+ superclass = None
1314
+ def __init__(self, service_code=None, service_name=None, comment=None, options=None, restrictions=None, gds_collector_=None, **kwargs_):
1315
+ self.gds_collector_ = gds_collector_
1316
+ self.gds_elementtree_node_ = None
1317
+ self.original_tagname_ = None
1318
+ self.parent_object_ = kwargs_.get('parent_object_')
1319
+ self.ns_prefix_ = None
1320
+ self.service_code = service_code
1321
+ self.service_code_nsprefix_ = None
1322
+ self.service_name = service_name
1323
+ self.service_name_nsprefix_ = None
1324
+ self.comment = comment
1325
+ self.comment_nsprefix_ = None
1326
+ self.options = options
1327
+ self.options_nsprefix_ = None
1328
+ self.restrictions = restrictions
1329
+ self.restrictions_nsprefix_ = None
1330
+ def factory(*args_, **kwargs_):
1331
+ if CurrentSubclassModule_ is not None:
1332
+ subclass = getSubclassFromModule_(
1333
+ CurrentSubclassModule_, service)
1334
+ if subclass is not None:
1335
+ return subclass(*args_, **kwargs_)
1336
+ if service.subclass:
1337
+ return service.subclass(*args_, **kwargs_)
1338
+ else:
1339
+ return service(*args_, **kwargs_)
1340
+ factory = staticmethod(factory)
1341
+ def get_ns_prefix_(self):
1342
+ return self.ns_prefix_
1343
+ def set_ns_prefix_(self, ns_prefix):
1344
+ self.ns_prefix_ = ns_prefix
1345
+ def get_service_code(self):
1346
+ return self.service_code
1347
+ def set_service_code(self, service_code):
1348
+ self.service_code = service_code
1349
+ def get_service_name(self):
1350
+ return self.service_name
1351
+ def set_service_name(self, service_name):
1352
+ self.service_name = service_name
1353
+ def get_comment(self):
1354
+ return self.comment
1355
+ def set_comment(self, comment):
1356
+ self.comment = comment
1357
+ def get_options(self):
1358
+ return self.options
1359
+ def set_options(self, options):
1360
+ self.options = options
1361
+ def get_restrictions(self):
1362
+ return self.restrictions
1363
+ def set_restrictions(self, restrictions):
1364
+ self.restrictions = restrictions
1365
+ def has__content(self):
1366
+ if (
1367
+ self.service_code is not None or
1368
+ self.service_name is not None or
1369
+ self.comment is not None or
1370
+ self.options is not None or
1371
+ self.restrictions is not None
1372
+ ):
1373
+ return True
1374
+ else:
1375
+ return False
1376
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='service', pretty_print=True):
1377
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('service')
1378
+ if imported_ns_def_ is not None:
1379
+ namespacedef_ = imported_ns_def_
1380
+ if pretty_print:
1381
+ eol_ = '\n'
1382
+ else:
1383
+ eol_ = ''
1384
+ if self.original_tagname_ is not None and name_ == 'service':
1385
+ name_ = self.original_tagname_
1386
+ if UseCapturedNS_ and self.ns_prefix_:
1387
+ namespaceprefix_ = self.ns_prefix_ + ':'
1388
+ showIndent(outfile, level, pretty_print)
1389
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1390
+ already_processed = set()
1391
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='service')
1392
+ if self.has__content():
1393
+ outfile.write('>%s' % (eol_, ))
1394
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='service', pretty_print=pretty_print)
1395
+ showIndent(outfile, level, pretty_print)
1396
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1397
+ else:
1398
+ outfile.write('/>%s' % (eol_, ))
1399
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='service'):
1400
+ pass
1401
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='service', fromsubclass_=False, pretty_print=True):
1402
+ if pretty_print:
1403
+ eol_ = '\n'
1404
+ else:
1405
+ eol_ = ''
1406
+ if self.service_code is not None:
1407
+ namespaceprefix_ = self.service_code_nsprefix_ + ':' if (UseCapturedNS_ and self.service_code_nsprefix_) else ''
1408
+ showIndent(outfile, level, pretty_print)
1409
+ outfile.write('<%sservice-code>%s</%sservice-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.service_code), input_name='service-code')), namespaceprefix_ , eol_))
1410
+ if self.service_name is not None:
1411
+ namespaceprefix_ = self.service_name_nsprefix_ + ':' if (UseCapturedNS_ and self.service_name_nsprefix_) else ''
1412
+ showIndent(outfile, level, pretty_print)
1413
+ outfile.write('<%sservice-name>%s</%sservice-name>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.service_name), input_name='service-name')), namespaceprefix_ , eol_))
1414
+ if self.comment is not None:
1415
+ namespaceprefix_ = self.comment_nsprefix_ + ':' if (UseCapturedNS_ and self.comment_nsprefix_) else ''
1416
+ showIndent(outfile, level, pretty_print)
1417
+ outfile.write('<%scomment>%s</%scomment>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.comment), input_name='comment')), namespaceprefix_ , eol_))
1418
+ if self.options is not None:
1419
+ namespaceprefix_ = self.options_nsprefix_ + ':' if (UseCapturedNS_ and self.options_nsprefix_) else ''
1420
+ self.options.export(outfile, level, namespaceprefix_, namespacedef_='', name_='options', pretty_print=pretty_print)
1421
+ if self.restrictions is not None:
1422
+ namespaceprefix_ = self.restrictions_nsprefix_ + ':' if (UseCapturedNS_ and self.restrictions_nsprefix_) else ''
1423
+ self.restrictions.export(outfile, level, namespaceprefix_, namespacedef_='', name_='restrictions', pretty_print=pretty_print)
1424
+ def build(self, node, gds_collector_=None):
1425
+ self.gds_collector_ = gds_collector_
1426
+ if SaveElementTreeNode:
1427
+ self.gds_elementtree_node_ = node
1428
+ already_processed = set()
1429
+ self.ns_prefix_ = node.prefix
1430
+ self._buildAttributes(node, node.attrib, already_processed)
1431
+ for child in node:
1432
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1433
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1434
+ return self
1435
+ def _buildAttributes(self, node, attrs, already_processed):
1436
+ pass
1437
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1438
+ if nodeName_ == 'service-code':
1439
+ value_ = child_.text
1440
+ value_ = self.gds_parse_string(value_, node, 'service_code')
1441
+ value_ = self.gds_validate_string(value_, node, 'service_code')
1442
+ self.service_code = value_
1443
+ self.service_code_nsprefix_ = child_.prefix
1444
+ elif nodeName_ == 'service-name':
1445
+ value_ = child_.text
1446
+ value_ = self.gds_parse_string(value_, node, 'service_name')
1447
+ value_ = self.gds_validate_string(value_, node, 'service_name')
1448
+ self.service_name = value_
1449
+ self.service_name_nsprefix_ = child_.prefix
1450
+ elif nodeName_ == 'comment':
1451
+ value_ = child_.text
1452
+ value_ = self.gds_parse_string(value_, node, 'comment')
1453
+ value_ = self.gds_validate_string(value_, node, 'comment')
1454
+ self.comment = value_
1455
+ self.comment_nsprefix_ = child_.prefix
1456
+ elif nodeName_ == 'options':
1457
+ obj_ = optionsType.factory(parent_object_=self)
1458
+ obj_.build(child_, gds_collector_=gds_collector_)
1459
+ self.options = obj_
1460
+ obj_.original_tagname_ = 'options'
1461
+ elif nodeName_ == 'restrictions':
1462
+ obj_ = restrictionsType.factory(parent_object_=self)
1463
+ obj_.build(child_, gds_collector_=gds_collector_)
1464
+ self.restrictions = obj_
1465
+ obj_.original_tagname_ = 'restrictions'
1466
+ # end class service
1467
+
1468
+
1469
+ class options(GeneratedsSuper):
1470
+ __hash__ = GeneratedsSuper.__hash__
1471
+ subclass = None
1472
+ superclass = None
1473
+ def __init__(self, option=None, gds_collector_=None, **kwargs_):
1474
+ self.gds_collector_ = gds_collector_
1475
+ self.gds_elementtree_node_ = None
1476
+ self.original_tagname_ = None
1477
+ self.parent_object_ = kwargs_.get('parent_object_')
1478
+ self.ns_prefix_ = None
1479
+ if option is None:
1480
+ self.option = []
1481
+ else:
1482
+ self.option = option
1483
+ self.option_nsprefix_ = None
1484
+ def factory(*args_, **kwargs_):
1485
+ if CurrentSubclassModule_ is not None:
1486
+ subclass = getSubclassFromModule_(
1487
+ CurrentSubclassModule_, options)
1488
+ if subclass is not None:
1489
+ return subclass(*args_, **kwargs_)
1490
+ if options.subclass:
1491
+ return options.subclass(*args_, **kwargs_)
1492
+ else:
1493
+ return options(*args_, **kwargs_)
1494
+ factory = staticmethod(factory)
1495
+ def get_ns_prefix_(self):
1496
+ return self.ns_prefix_
1497
+ def set_ns_prefix_(self, ns_prefix):
1498
+ self.ns_prefix_ = ns_prefix
1499
+ def get_option(self):
1500
+ return self.option
1501
+ def set_option(self, option):
1502
+ self.option = option
1503
+ def add_option(self, value):
1504
+ self.option.append(value)
1505
+ def insert_option_at(self, index, value):
1506
+ self.option.insert(index, value)
1507
+ def replace_option_at(self, index, value):
1508
+ self.option[index] = value
1509
+ def has__content(self):
1510
+ if (
1511
+ self.option
1512
+ ):
1513
+ return True
1514
+ else:
1515
+ return False
1516
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='options', pretty_print=True):
1517
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('options')
1518
+ if imported_ns_def_ is not None:
1519
+ namespacedef_ = imported_ns_def_
1520
+ if pretty_print:
1521
+ eol_ = '\n'
1522
+ else:
1523
+ eol_ = ''
1524
+ if self.original_tagname_ is not None and name_ == 'options':
1525
+ name_ = self.original_tagname_
1526
+ if UseCapturedNS_ and self.ns_prefix_:
1527
+ namespaceprefix_ = self.ns_prefix_ + ':'
1528
+ showIndent(outfile, level, pretty_print)
1529
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1530
+ already_processed = set()
1531
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='options')
1532
+ if self.has__content():
1533
+ outfile.write('>%s' % (eol_, ))
1534
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='options', pretty_print=pretty_print)
1535
+ showIndent(outfile, level, pretty_print)
1536
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1537
+ else:
1538
+ outfile.write('/>%s' % (eol_, ))
1539
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='options'):
1540
+ pass
1541
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='options', fromsubclass_=False, pretty_print=True):
1542
+ if pretty_print:
1543
+ eol_ = '\n'
1544
+ else:
1545
+ eol_ = ''
1546
+ for option_ in self.option:
1547
+ namespaceprefix_ = self.option_nsprefix_ + ':' if (UseCapturedNS_ and self.option_nsprefix_) else ''
1548
+ option_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='option', pretty_print=pretty_print)
1549
+ def build(self, node, gds_collector_=None):
1550
+ self.gds_collector_ = gds_collector_
1551
+ if SaveElementTreeNode:
1552
+ self.gds_elementtree_node_ = node
1553
+ already_processed = set()
1554
+ self.ns_prefix_ = node.prefix
1555
+ self._buildAttributes(node, node.attrib, already_processed)
1556
+ for child in node:
1557
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1558
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1559
+ return self
1560
+ def _buildAttributes(self, node, attrs, already_processed):
1561
+ pass
1562
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1563
+ if nodeName_ == 'option':
1564
+ obj_ = optionType1.factory(parent_object_=self)
1565
+ obj_.build(child_, gds_collector_=gds_collector_)
1566
+ self.option.append(obj_)
1567
+ obj_.original_tagname_ = 'option'
1568
+ # end class options
1569
+
1570
+
1571
+ class NumberRangeType(GeneratedsSuper):
1572
+ __hash__ = GeneratedsSuper.__hash__
1573
+ subclass = None
1574
+ superclass = None
1575
+ def __init__(self, min=None, max=None, gds_collector_=None, **kwargs_):
1576
+ self.gds_collector_ = gds_collector_
1577
+ self.gds_elementtree_node_ = None
1578
+ self.original_tagname_ = None
1579
+ self.parent_object_ = kwargs_.get('parent_object_')
1580
+ self.ns_prefix_ = None
1581
+ self.min = _cast(float, min)
1582
+ self.min_nsprefix_ = None
1583
+ self.max = _cast(float, max)
1584
+ self.max_nsprefix_ = None
1585
+ def factory(*args_, **kwargs_):
1586
+ if CurrentSubclassModule_ is not None:
1587
+ subclass = getSubclassFromModule_(
1588
+ CurrentSubclassModule_, NumberRangeType)
1589
+ if subclass is not None:
1590
+ return subclass(*args_, **kwargs_)
1591
+ if NumberRangeType.subclass:
1592
+ return NumberRangeType.subclass(*args_, **kwargs_)
1593
+ else:
1594
+ return NumberRangeType(*args_, **kwargs_)
1595
+ factory = staticmethod(factory)
1596
+ def get_ns_prefix_(self):
1597
+ return self.ns_prefix_
1598
+ def set_ns_prefix_(self, ns_prefix):
1599
+ self.ns_prefix_ = ns_prefix
1600
+ def get_min(self):
1601
+ return self.min
1602
+ def set_min(self, min):
1603
+ self.min = min
1604
+ def get_max(self):
1605
+ return self.max
1606
+ def set_max(self, max):
1607
+ self.max = max
1608
+ def has__content(self):
1609
+ if (
1610
+
1611
+ ):
1612
+ return True
1613
+ else:
1614
+ return False
1615
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='NumberRangeType', pretty_print=True):
1616
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('NumberRangeType')
1617
+ if imported_ns_def_ is not None:
1618
+ namespacedef_ = imported_ns_def_
1619
+ if pretty_print:
1620
+ eol_ = '\n'
1621
+ else:
1622
+ eol_ = ''
1623
+ if self.original_tagname_ is not None and name_ == 'NumberRangeType':
1624
+ name_ = self.original_tagname_
1625
+ if UseCapturedNS_ and self.ns_prefix_:
1626
+ namespaceprefix_ = self.ns_prefix_ + ':'
1627
+ showIndent(outfile, level, pretty_print)
1628
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1629
+ already_processed = set()
1630
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='NumberRangeType')
1631
+ if self.has__content():
1632
+ outfile.write('>%s' % (eol_, ))
1633
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='NumberRangeType', pretty_print=pretty_print)
1634
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1635
+ else:
1636
+ outfile.write('/>%s' % (eol_, ))
1637
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='NumberRangeType'):
1638
+ if self.min is not None and 'min' not in already_processed:
1639
+ already_processed.add('min')
1640
+ outfile.write(' min="%s"' % self.gds_format_decimal(self.min, input_name='min'))
1641
+ if self.max is not None and 'max' not in already_processed:
1642
+ already_processed.add('max')
1643
+ outfile.write(' max="%s"' % self.gds_format_decimal(self.max, input_name='max'))
1644
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='NumberRangeType', fromsubclass_=False, pretty_print=True):
1645
+ pass
1646
+ def build(self, node, gds_collector_=None):
1647
+ self.gds_collector_ = gds_collector_
1648
+ if SaveElementTreeNode:
1649
+ self.gds_elementtree_node_ = node
1650
+ already_processed = set()
1651
+ self.ns_prefix_ = node.prefix
1652
+ self._buildAttributes(node, node.attrib, already_processed)
1653
+ for child in node:
1654
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1655
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1656
+ return self
1657
+ def _buildAttributes(self, node, attrs, already_processed):
1658
+ value = find_attr_value_('min', node)
1659
+ if value is not None and 'min' not in already_processed:
1660
+ already_processed.add('min')
1661
+ value = self.gds_parse_decimal(value, node, 'min')
1662
+ self.min = value
1663
+ value = find_attr_value_('max', node)
1664
+ if value is not None and 'max' not in already_processed:
1665
+ already_processed.add('max')
1666
+ value = self.gds_parse_decimal(value, node, 'max')
1667
+ self.max = value
1668
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1669
+ pass
1670
+ # end class NumberRangeType
1671
+
1672
+
1673
+ class serviceType(GeneratedsSuper):
1674
+ __hash__ = GeneratedsSuper.__hash__
1675
+ subclass = None
1676
+ superclass = None
1677
+ def __init__(self, service_code=None, service_name=None, link=None, gds_collector_=None, **kwargs_):
1678
+ self.gds_collector_ = gds_collector_
1679
+ self.gds_elementtree_node_ = None
1680
+ self.original_tagname_ = None
1681
+ self.parent_object_ = kwargs_.get('parent_object_')
1682
+ self.ns_prefix_ = None
1683
+ self.service_code = service_code
1684
+ self.service_code_nsprefix_ = None
1685
+ self.service_name = service_name
1686
+ self.service_name_nsprefix_ = None
1687
+ self.link = link
1688
+ self.link_nsprefix_ = None
1689
+ def factory(*args_, **kwargs_):
1690
+ if CurrentSubclassModule_ is not None:
1691
+ subclass = getSubclassFromModule_(
1692
+ CurrentSubclassModule_, serviceType)
1693
+ if subclass is not None:
1694
+ return subclass(*args_, **kwargs_)
1695
+ if serviceType.subclass:
1696
+ return serviceType.subclass(*args_, **kwargs_)
1697
+ else:
1698
+ return serviceType(*args_, **kwargs_)
1699
+ factory = staticmethod(factory)
1700
+ def get_ns_prefix_(self):
1701
+ return self.ns_prefix_
1702
+ def set_ns_prefix_(self, ns_prefix):
1703
+ self.ns_prefix_ = ns_prefix
1704
+ def get_service_code(self):
1705
+ return self.service_code
1706
+ def set_service_code(self, service_code):
1707
+ self.service_code = service_code
1708
+ def get_service_name(self):
1709
+ return self.service_name
1710
+ def set_service_name(self, service_name):
1711
+ self.service_name = service_name
1712
+ def get_link(self):
1713
+ return self.link
1714
+ def set_link(self, link):
1715
+ self.link = link
1716
+ def has__content(self):
1717
+ if (
1718
+ self.service_code is not None or
1719
+ self.service_name is not None or
1720
+ self.link is not None
1721
+ ):
1722
+ return True
1723
+ else:
1724
+ return False
1725
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='serviceType', pretty_print=True):
1726
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('serviceType')
1727
+ if imported_ns_def_ is not None:
1728
+ namespacedef_ = imported_ns_def_
1729
+ if pretty_print:
1730
+ eol_ = '\n'
1731
+ else:
1732
+ eol_ = ''
1733
+ if self.original_tagname_ is not None and name_ == 'serviceType':
1734
+ name_ = self.original_tagname_
1735
+ if UseCapturedNS_ and self.ns_prefix_:
1736
+ namespaceprefix_ = self.ns_prefix_ + ':'
1737
+ showIndent(outfile, level, pretty_print)
1738
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1739
+ already_processed = set()
1740
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='serviceType')
1741
+ if self.has__content():
1742
+ outfile.write('>%s' % (eol_, ))
1743
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='serviceType', pretty_print=pretty_print)
1744
+ showIndent(outfile, level, pretty_print)
1745
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1746
+ else:
1747
+ outfile.write('/>%s' % (eol_, ))
1748
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='serviceType'):
1749
+ pass
1750
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='serviceType', fromsubclass_=False, pretty_print=True):
1751
+ if pretty_print:
1752
+ eol_ = '\n'
1753
+ else:
1754
+ eol_ = ''
1755
+ if self.service_code is not None:
1756
+ namespaceprefix_ = self.service_code_nsprefix_ + ':' if (UseCapturedNS_ and self.service_code_nsprefix_) else ''
1757
+ showIndent(outfile, level, pretty_print)
1758
+ outfile.write('<%sservice-code>%s</%sservice-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.service_code), input_name='service-code')), namespaceprefix_ , eol_))
1759
+ if self.service_name is not None:
1760
+ namespaceprefix_ = self.service_name_nsprefix_ + ':' if (UseCapturedNS_ and self.service_name_nsprefix_) else ''
1761
+ showIndent(outfile, level, pretty_print)
1762
+ outfile.write('<%sservice-name>%s</%sservice-name>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.service_name), input_name='service-name')), namespaceprefix_ , eol_))
1763
+ if self.link is not None:
1764
+ namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else ''
1765
+ showIndent(outfile, level, pretty_print)
1766
+ outfile.write('<%slink>%s</%slink>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.link), input_name='link')), namespaceprefix_ , eol_))
1767
+ def build(self, node, gds_collector_=None):
1768
+ self.gds_collector_ = gds_collector_
1769
+ if SaveElementTreeNode:
1770
+ self.gds_elementtree_node_ = node
1771
+ already_processed = set()
1772
+ self.ns_prefix_ = node.prefix
1773
+ self._buildAttributes(node, node.attrib, already_processed)
1774
+ for child in node:
1775
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1776
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1777
+ return self
1778
+ def _buildAttributes(self, node, attrs, already_processed):
1779
+ pass
1780
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1781
+ if nodeName_ == 'service-code':
1782
+ value_ = child_.text
1783
+ value_ = self.gds_parse_string(value_, node, 'service_code')
1784
+ value_ = self.gds_validate_string(value_, node, 'service_code')
1785
+ self.service_code = value_
1786
+ self.service_code_nsprefix_ = child_.prefix
1787
+ elif nodeName_ == 'service-name':
1788
+ value_ = child_.text
1789
+ value_ = self.gds_parse_string(value_, node, 'service_name')
1790
+ value_ = self.gds_validate_string(value_, node, 'service_name')
1791
+ self.service_name = value_
1792
+ self.service_name_nsprefix_ = child_.prefix
1793
+ elif nodeName_ == 'link':
1794
+ value_ = child_.text
1795
+ value_ = self.gds_parse_string(value_, node, 'link')
1796
+ value_ = self.gds_validate_string(value_, node, 'link')
1797
+ self.link = value_
1798
+ self.link_nsprefix_ = child_.prefix
1799
+ # end class serviceType
1800
+
1801
+
1802
+ class conflicting_optionsType(GeneratedsSuper):
1803
+ __hash__ = GeneratedsSuper.__hash__
1804
+ subclass = None
1805
+ superclass = None
1806
+ def __init__(self, option_code=None, gds_collector_=None, **kwargs_):
1807
+ self.gds_collector_ = gds_collector_
1808
+ self.gds_elementtree_node_ = None
1809
+ self.original_tagname_ = None
1810
+ self.parent_object_ = kwargs_.get('parent_object_')
1811
+ self.ns_prefix_ = None
1812
+ if option_code is None:
1813
+ self.option_code = []
1814
+ else:
1815
+ self.option_code = option_code
1816
+ self.option_code_nsprefix_ = None
1817
+ def factory(*args_, **kwargs_):
1818
+ if CurrentSubclassModule_ is not None:
1819
+ subclass = getSubclassFromModule_(
1820
+ CurrentSubclassModule_, conflicting_optionsType)
1821
+ if subclass is not None:
1822
+ return subclass(*args_, **kwargs_)
1823
+ if conflicting_optionsType.subclass:
1824
+ return conflicting_optionsType.subclass(*args_, **kwargs_)
1825
+ else:
1826
+ return conflicting_optionsType(*args_, **kwargs_)
1827
+ factory = staticmethod(factory)
1828
+ def get_ns_prefix_(self):
1829
+ return self.ns_prefix_
1830
+ def set_ns_prefix_(self, ns_prefix):
1831
+ self.ns_prefix_ = ns_prefix
1832
+ def get_option_code(self):
1833
+ return self.option_code
1834
+ def set_option_code(self, option_code):
1835
+ self.option_code = option_code
1836
+ def add_option_code(self, value):
1837
+ self.option_code.append(value)
1838
+ def insert_option_code_at(self, index, value):
1839
+ self.option_code.insert(index, value)
1840
+ def replace_option_code_at(self, index, value):
1841
+ self.option_code[index] = value
1842
+ def has__content(self):
1843
+ if (
1844
+ self.option_code
1845
+ ):
1846
+ return True
1847
+ else:
1848
+ return False
1849
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='conflicting-optionsType', pretty_print=True):
1850
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('conflicting-optionsType')
1851
+ if imported_ns_def_ is not None:
1852
+ namespacedef_ = imported_ns_def_
1853
+ if pretty_print:
1854
+ eol_ = '\n'
1855
+ else:
1856
+ eol_ = ''
1857
+ if self.original_tagname_ is not None and name_ == 'conflicting-optionsType':
1858
+ name_ = self.original_tagname_
1859
+ if UseCapturedNS_ and self.ns_prefix_:
1860
+ namespaceprefix_ = self.ns_prefix_ + ':'
1861
+ showIndent(outfile, level, pretty_print)
1862
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1863
+ already_processed = set()
1864
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='conflicting-optionsType')
1865
+ if self.has__content():
1866
+ outfile.write('>%s' % (eol_, ))
1867
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='conflicting-optionsType', pretty_print=pretty_print)
1868
+ showIndent(outfile, level, pretty_print)
1869
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1870
+ else:
1871
+ outfile.write('/>%s' % (eol_, ))
1872
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='conflicting-optionsType'):
1873
+ pass
1874
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='conflicting-optionsType', fromsubclass_=False, pretty_print=True):
1875
+ if pretty_print:
1876
+ eol_ = '\n'
1877
+ else:
1878
+ eol_ = ''
1879
+ for option_code_ in self.option_code:
1880
+ namespaceprefix_ = self.option_code_nsprefix_ + ':' if (UseCapturedNS_ and self.option_code_nsprefix_) else ''
1881
+ showIndent(outfile, level, pretty_print)
1882
+ outfile.write('<%soption-code>%s</%soption-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(option_code_), input_name='option-code')), namespaceprefix_ , eol_))
1883
+ def build(self, node, gds_collector_=None):
1884
+ self.gds_collector_ = gds_collector_
1885
+ if SaveElementTreeNode:
1886
+ self.gds_elementtree_node_ = node
1887
+ already_processed = set()
1888
+ self.ns_prefix_ = node.prefix
1889
+ self._buildAttributes(node, node.attrib, already_processed)
1890
+ for child in node:
1891
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1892
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1893
+ return self
1894
+ def _buildAttributes(self, node, attrs, already_processed):
1895
+ pass
1896
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1897
+ if nodeName_ == 'option-code':
1898
+ value_ = child_.text
1899
+ value_ = self.gds_parse_string(value_, node, 'option_code')
1900
+ value_ = self.gds_validate_string(value_, node, 'option_code')
1901
+ self.option_code.append(value_)
1902
+ self.option_code_nsprefix_ = child_.prefix
1903
+ # end class conflicting_optionsType
1904
+
1905
+
1906
+ class prerequisite_optionsType(GeneratedsSuper):
1907
+ __hash__ = GeneratedsSuper.__hash__
1908
+ subclass = None
1909
+ superclass = None
1910
+ def __init__(self, option_code=None, gds_collector_=None, **kwargs_):
1911
+ self.gds_collector_ = gds_collector_
1912
+ self.gds_elementtree_node_ = None
1913
+ self.original_tagname_ = None
1914
+ self.parent_object_ = kwargs_.get('parent_object_')
1915
+ self.ns_prefix_ = None
1916
+ if option_code is None:
1917
+ self.option_code = []
1918
+ else:
1919
+ self.option_code = option_code
1920
+ self.option_code_nsprefix_ = None
1921
+ def factory(*args_, **kwargs_):
1922
+ if CurrentSubclassModule_ is not None:
1923
+ subclass = getSubclassFromModule_(
1924
+ CurrentSubclassModule_, prerequisite_optionsType)
1925
+ if subclass is not None:
1926
+ return subclass(*args_, **kwargs_)
1927
+ if prerequisite_optionsType.subclass:
1928
+ return prerequisite_optionsType.subclass(*args_, **kwargs_)
1929
+ else:
1930
+ return prerequisite_optionsType(*args_, **kwargs_)
1931
+ factory = staticmethod(factory)
1932
+ def get_ns_prefix_(self):
1933
+ return self.ns_prefix_
1934
+ def set_ns_prefix_(self, ns_prefix):
1935
+ self.ns_prefix_ = ns_prefix
1936
+ def get_option_code(self):
1937
+ return self.option_code
1938
+ def set_option_code(self, option_code):
1939
+ self.option_code = option_code
1940
+ def add_option_code(self, value):
1941
+ self.option_code.append(value)
1942
+ def insert_option_code_at(self, index, value):
1943
+ self.option_code.insert(index, value)
1944
+ def replace_option_code_at(self, index, value):
1945
+ self.option_code[index] = value
1946
+ def has__content(self):
1947
+ if (
1948
+ self.option_code
1949
+ ):
1950
+ return True
1951
+ else:
1952
+ return False
1953
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='prerequisite-optionsType', pretty_print=True):
1954
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('prerequisite-optionsType')
1955
+ if imported_ns_def_ is not None:
1956
+ namespacedef_ = imported_ns_def_
1957
+ if pretty_print:
1958
+ eol_ = '\n'
1959
+ else:
1960
+ eol_ = ''
1961
+ if self.original_tagname_ is not None and name_ == 'prerequisite-optionsType':
1962
+ name_ = self.original_tagname_
1963
+ if UseCapturedNS_ and self.ns_prefix_:
1964
+ namespaceprefix_ = self.ns_prefix_ + ':'
1965
+ showIndent(outfile, level, pretty_print)
1966
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1967
+ already_processed = set()
1968
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='prerequisite-optionsType')
1969
+ if self.has__content():
1970
+ outfile.write('>%s' % (eol_, ))
1971
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='prerequisite-optionsType', pretty_print=pretty_print)
1972
+ showIndent(outfile, level, pretty_print)
1973
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1974
+ else:
1975
+ outfile.write('/>%s' % (eol_, ))
1976
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='prerequisite-optionsType'):
1977
+ pass
1978
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='prerequisite-optionsType', fromsubclass_=False, pretty_print=True):
1979
+ if pretty_print:
1980
+ eol_ = '\n'
1981
+ else:
1982
+ eol_ = ''
1983
+ for option_code_ in self.option_code:
1984
+ namespaceprefix_ = self.option_code_nsprefix_ + ':' if (UseCapturedNS_ and self.option_code_nsprefix_) else ''
1985
+ showIndent(outfile, level, pretty_print)
1986
+ outfile.write('<%soption-code>%s</%soption-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(option_code_), input_name='option-code')), namespaceprefix_ , eol_))
1987
+ def build(self, node, gds_collector_=None):
1988
+ self.gds_collector_ = gds_collector_
1989
+ if SaveElementTreeNode:
1990
+ self.gds_elementtree_node_ = node
1991
+ already_processed = set()
1992
+ self.ns_prefix_ = node.prefix
1993
+ self._buildAttributes(node, node.attrib, already_processed)
1994
+ for child in node:
1995
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1996
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1997
+ return self
1998
+ def _buildAttributes(self, node, attrs, already_processed):
1999
+ pass
2000
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2001
+ if nodeName_ == 'option-code':
2002
+ value_ = child_.text
2003
+ value_ = self.gds_parse_string(value_, node, 'option_code')
2004
+ value_ = self.gds_validate_string(value_, node, 'option_code')
2005
+ self.option_code.append(value_)
2006
+ self.option_code_nsprefix_ = child_.prefix
2007
+ # end class prerequisite_optionsType
2008
+
2009
+
2010
+ class optionsType(GeneratedsSuper):
2011
+ __hash__ = GeneratedsSuper.__hash__
2012
+ subclass = None
2013
+ superclass = None
2014
+ def __init__(self, option=None, gds_collector_=None, **kwargs_):
2015
+ self.gds_collector_ = gds_collector_
2016
+ self.gds_elementtree_node_ = None
2017
+ self.original_tagname_ = None
2018
+ self.parent_object_ = kwargs_.get('parent_object_')
2019
+ self.ns_prefix_ = None
2020
+ if option is None:
2021
+ self.option = []
2022
+ else:
2023
+ self.option = option
2024
+ self.option_nsprefix_ = None
2025
+ def factory(*args_, **kwargs_):
2026
+ if CurrentSubclassModule_ is not None:
2027
+ subclass = getSubclassFromModule_(
2028
+ CurrentSubclassModule_, optionsType)
2029
+ if subclass is not None:
2030
+ return subclass(*args_, **kwargs_)
2031
+ if optionsType.subclass:
2032
+ return optionsType.subclass(*args_, **kwargs_)
2033
+ else:
2034
+ return optionsType(*args_, **kwargs_)
2035
+ factory = staticmethod(factory)
2036
+ def get_ns_prefix_(self):
2037
+ return self.ns_prefix_
2038
+ def set_ns_prefix_(self, ns_prefix):
2039
+ self.ns_prefix_ = ns_prefix
2040
+ def get_option(self):
2041
+ return self.option
2042
+ def set_option(self, option):
2043
+ self.option = option
2044
+ def add_option(self, value):
2045
+ self.option.append(value)
2046
+ def insert_option_at(self, index, value):
2047
+ self.option.insert(index, value)
2048
+ def replace_option_at(self, index, value):
2049
+ self.option[index] = value
2050
+ def has__content(self):
2051
+ if (
2052
+ self.option
2053
+ ):
2054
+ return True
2055
+ else:
2056
+ return False
2057
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionsType', pretty_print=True):
2058
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('optionsType')
2059
+ if imported_ns_def_ is not None:
2060
+ namespacedef_ = imported_ns_def_
2061
+ if pretty_print:
2062
+ eol_ = '\n'
2063
+ else:
2064
+ eol_ = ''
2065
+ if self.original_tagname_ is not None and name_ == 'optionsType':
2066
+ name_ = self.original_tagname_
2067
+ if UseCapturedNS_ and self.ns_prefix_:
2068
+ namespaceprefix_ = self.ns_prefix_ + ':'
2069
+ showIndent(outfile, level, pretty_print)
2070
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2071
+ already_processed = set()
2072
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='optionsType')
2073
+ if self.has__content():
2074
+ outfile.write('>%s' % (eol_, ))
2075
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='optionsType', pretty_print=pretty_print)
2076
+ showIndent(outfile, level, pretty_print)
2077
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2078
+ else:
2079
+ outfile.write('/>%s' % (eol_, ))
2080
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='optionsType'):
2081
+ pass
2082
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionsType', fromsubclass_=False, pretty_print=True):
2083
+ if pretty_print:
2084
+ eol_ = '\n'
2085
+ else:
2086
+ eol_ = ''
2087
+ for option_ in self.option:
2088
+ namespaceprefix_ = self.option_nsprefix_ + ':' if (UseCapturedNS_ and self.option_nsprefix_) else ''
2089
+ option_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='option', pretty_print=pretty_print)
2090
+ def build(self, node, gds_collector_=None):
2091
+ self.gds_collector_ = gds_collector_
2092
+ if SaveElementTreeNode:
2093
+ self.gds_elementtree_node_ = node
2094
+ already_processed = set()
2095
+ self.ns_prefix_ = node.prefix
2096
+ self._buildAttributes(node, node.attrib, already_processed)
2097
+ for child in node:
2098
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2099
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2100
+ return self
2101
+ def _buildAttributes(self, node, attrs, already_processed):
2102
+ pass
2103
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2104
+ if nodeName_ == 'option':
2105
+ obj_ = optionType.factory(parent_object_=self)
2106
+ obj_.build(child_, gds_collector_=gds_collector_)
2107
+ self.option.append(obj_)
2108
+ obj_.original_tagname_ = 'option'
2109
+ # end class optionsType
2110
+
2111
+
2112
+ class optionType(GeneratedsSuper):
2113
+ __hash__ = GeneratedsSuper.__hash__
2114
+ subclass = None
2115
+ superclass = None
2116
+ def __init__(self, option_code=None, option_name=None, link=None, mandatory=None, qualifier_required=None, qualifier_max=None, gds_collector_=None, **kwargs_):
2117
+ self.gds_collector_ = gds_collector_
2118
+ self.gds_elementtree_node_ = None
2119
+ self.original_tagname_ = None
2120
+ self.parent_object_ = kwargs_.get('parent_object_')
2121
+ self.ns_prefix_ = None
2122
+ self.option_code = option_code
2123
+ self.option_code_nsprefix_ = None
2124
+ self.option_name = option_name
2125
+ self.option_name_nsprefix_ = None
2126
+ self.link = link
2127
+ self.link_nsprefix_ = None
2128
+ self.mandatory = mandatory
2129
+ self.mandatory_nsprefix_ = None
2130
+ self.qualifier_required = qualifier_required
2131
+ self.qualifier_required_nsprefix_ = None
2132
+ self.qualifier_max = qualifier_max
2133
+ self.qualifier_max_nsprefix_ = None
2134
+ def factory(*args_, **kwargs_):
2135
+ if CurrentSubclassModule_ is not None:
2136
+ subclass = getSubclassFromModule_(
2137
+ CurrentSubclassModule_, optionType)
2138
+ if subclass is not None:
2139
+ return subclass(*args_, **kwargs_)
2140
+ if optionType.subclass:
2141
+ return optionType.subclass(*args_, **kwargs_)
2142
+ else:
2143
+ return optionType(*args_, **kwargs_)
2144
+ factory = staticmethod(factory)
2145
+ def get_ns_prefix_(self):
2146
+ return self.ns_prefix_
2147
+ def set_ns_prefix_(self, ns_prefix):
2148
+ self.ns_prefix_ = ns_prefix
2149
+ def get_option_code(self):
2150
+ return self.option_code
2151
+ def set_option_code(self, option_code):
2152
+ self.option_code = option_code
2153
+ def get_option_name(self):
2154
+ return self.option_name
2155
+ def set_option_name(self, option_name):
2156
+ self.option_name = option_name
2157
+ def get_link(self):
2158
+ return self.link
2159
+ def set_link(self, link):
2160
+ self.link = link
2161
+ def get_mandatory(self):
2162
+ return self.mandatory
2163
+ def set_mandatory(self, mandatory):
2164
+ self.mandatory = mandatory
2165
+ def get_qualifier_required(self):
2166
+ return self.qualifier_required
2167
+ def set_qualifier_required(self, qualifier_required):
2168
+ self.qualifier_required = qualifier_required
2169
+ def get_qualifier_max(self):
2170
+ return self.qualifier_max
2171
+ def set_qualifier_max(self, qualifier_max):
2172
+ self.qualifier_max = qualifier_max
2173
+ def has__content(self):
2174
+ if (
2175
+ self.option_code is not None or
2176
+ self.option_name is not None or
2177
+ self.link is not None or
2178
+ self.mandatory is not None or
2179
+ self.qualifier_required is not None or
2180
+ self.qualifier_max is not None
2181
+ ):
2182
+ return True
2183
+ else:
2184
+ return False
2185
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionType', pretty_print=True):
2186
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('optionType')
2187
+ if imported_ns_def_ is not None:
2188
+ namespacedef_ = imported_ns_def_
2189
+ if pretty_print:
2190
+ eol_ = '\n'
2191
+ else:
2192
+ eol_ = ''
2193
+ if self.original_tagname_ is not None and name_ == 'optionType':
2194
+ name_ = self.original_tagname_
2195
+ if UseCapturedNS_ and self.ns_prefix_:
2196
+ namespaceprefix_ = self.ns_prefix_ + ':'
2197
+ showIndent(outfile, level, pretty_print)
2198
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2199
+ already_processed = set()
2200
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='optionType')
2201
+ if self.has__content():
2202
+ outfile.write('>%s' % (eol_, ))
2203
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='optionType', pretty_print=pretty_print)
2204
+ showIndent(outfile, level, pretty_print)
2205
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2206
+ else:
2207
+ outfile.write('/>%s' % (eol_, ))
2208
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='optionType'):
2209
+ pass
2210
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionType', fromsubclass_=False, pretty_print=True):
2211
+ if pretty_print:
2212
+ eol_ = '\n'
2213
+ else:
2214
+ eol_ = ''
2215
+ if self.option_code is not None:
2216
+ namespaceprefix_ = self.option_code_nsprefix_ + ':' if (UseCapturedNS_ and self.option_code_nsprefix_) else ''
2217
+ showIndent(outfile, level, pretty_print)
2218
+ outfile.write('<%soption-code>%s</%soption-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_code), input_name='option-code')), namespaceprefix_ , eol_))
2219
+ if self.option_name is not None:
2220
+ namespaceprefix_ = self.option_name_nsprefix_ + ':' if (UseCapturedNS_ and self.option_name_nsprefix_) else ''
2221
+ showIndent(outfile, level, pretty_print)
2222
+ outfile.write('<%soption-name>%s</%soption-name>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_name), input_name='option-name')), namespaceprefix_ , eol_))
2223
+ if self.link is not None:
2224
+ namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else ''
2225
+ showIndent(outfile, level, pretty_print)
2226
+ outfile.write('<%slink>%s</%slink>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.link), input_name='link')), namespaceprefix_ , eol_))
2227
+ if self.mandatory is not None:
2228
+ namespaceprefix_ = self.mandatory_nsprefix_ + ':' if (UseCapturedNS_ and self.mandatory_nsprefix_) else ''
2229
+ showIndent(outfile, level, pretty_print)
2230
+ outfile.write('<%smandatory>%s</%smandatory>%s' % (namespaceprefix_ , self.gds_format_boolean(self.mandatory, input_name='mandatory'), namespaceprefix_ , eol_))
2231
+ if self.qualifier_required is not None:
2232
+ namespaceprefix_ = self.qualifier_required_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_required_nsprefix_) else ''
2233
+ showIndent(outfile, level, pretty_print)
2234
+ outfile.write('<%squalifier-required>%s</%squalifier-required>%s' % (namespaceprefix_ , self.gds_format_boolean(self.qualifier_required, input_name='qualifier-required'), namespaceprefix_ , eol_))
2235
+ if self.qualifier_max is not None:
2236
+ namespaceprefix_ = self.qualifier_max_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_max_nsprefix_) else ''
2237
+ showIndent(outfile, level, pretty_print)
2238
+ outfile.write('<%squalifier-max>%s</%squalifier-max>%s' % (namespaceprefix_ , self.gds_format_decimal(self.qualifier_max, input_name='qualifier-max'), namespaceprefix_ , eol_))
2239
+ def build(self, node, gds_collector_=None):
2240
+ self.gds_collector_ = gds_collector_
2241
+ if SaveElementTreeNode:
2242
+ self.gds_elementtree_node_ = node
2243
+ already_processed = set()
2244
+ self.ns_prefix_ = node.prefix
2245
+ self._buildAttributes(node, node.attrib, already_processed)
2246
+ for child in node:
2247
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2248
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2249
+ return self
2250
+ def _buildAttributes(self, node, attrs, already_processed):
2251
+ pass
2252
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2253
+ if nodeName_ == 'option-code':
2254
+ value_ = child_.text
2255
+ value_ = self.gds_parse_string(value_, node, 'option_code')
2256
+ value_ = self.gds_validate_string(value_, node, 'option_code')
2257
+ self.option_code = value_
2258
+ self.option_code_nsprefix_ = child_.prefix
2259
+ elif nodeName_ == 'option-name':
2260
+ value_ = child_.text
2261
+ value_ = self.gds_parse_string(value_, node, 'option_name')
2262
+ value_ = self.gds_validate_string(value_, node, 'option_name')
2263
+ self.option_name = value_
2264
+ self.option_name_nsprefix_ = child_.prefix
2265
+ elif nodeName_ == 'link':
2266
+ value_ = child_.text
2267
+ value_ = self.gds_parse_string(value_, node, 'link')
2268
+ value_ = self.gds_validate_string(value_, node, 'link')
2269
+ self.link = value_
2270
+ self.link_nsprefix_ = child_.prefix
2271
+ elif nodeName_ == 'mandatory':
2272
+ sval_ = child_.text
2273
+ ival_ = self.gds_parse_boolean(sval_, node, 'mandatory')
2274
+ ival_ = self.gds_validate_boolean(ival_, node, 'mandatory')
2275
+ self.mandatory = ival_
2276
+ self.mandatory_nsprefix_ = child_.prefix
2277
+ elif nodeName_ == 'qualifier-required':
2278
+ sval_ = child_.text
2279
+ ival_ = self.gds_parse_boolean(sval_, node, 'qualifier_required')
2280
+ ival_ = self.gds_validate_boolean(ival_, node, 'qualifier_required')
2281
+ self.qualifier_required = ival_
2282
+ self.qualifier_required_nsprefix_ = child_.prefix
2283
+ elif nodeName_ == 'qualifier-max' and child_.text:
2284
+ sval_ = child_.text
2285
+ fval_ = self.gds_parse_decimal(sval_, node, 'qualifier_max')
2286
+ fval_ = self.gds_validate_decimal(fval_, node, 'qualifier_max')
2287
+ self.qualifier_max = fval_
2288
+ self.qualifier_max_nsprefix_ = child_.prefix
2289
+ # end class optionType
2290
+
2291
+
2292
+ class restrictionsType(GeneratedsSuper):
2293
+ __hash__ = GeneratedsSuper.__hash__
2294
+ subclass = None
2295
+ superclass = None
2296
+ def __init__(self, weight_restriction=None, dimensional_restrictions=None, density_factor=None, can_ship_in_mailing_tube=None, can_ship_unpackaged=None, allowed_as_return_service=None, gds_collector_=None, **kwargs_):
2297
+ self.gds_collector_ = gds_collector_
2298
+ self.gds_elementtree_node_ = None
2299
+ self.original_tagname_ = None
2300
+ self.parent_object_ = kwargs_.get('parent_object_')
2301
+ self.ns_prefix_ = None
2302
+ self.weight_restriction = weight_restriction
2303
+ self.weight_restriction_nsprefix_ = None
2304
+ self.dimensional_restrictions = dimensional_restrictions
2305
+ self.dimensional_restrictions_nsprefix_ = None
2306
+ self.density_factor = density_factor
2307
+ self.density_factor_nsprefix_ = None
2308
+ self.can_ship_in_mailing_tube = can_ship_in_mailing_tube
2309
+ self.can_ship_in_mailing_tube_nsprefix_ = None
2310
+ self.can_ship_unpackaged = can_ship_unpackaged
2311
+ self.can_ship_unpackaged_nsprefix_ = None
2312
+ self.allowed_as_return_service = allowed_as_return_service
2313
+ self.allowed_as_return_service_nsprefix_ = None
2314
+ def factory(*args_, **kwargs_):
2315
+ if CurrentSubclassModule_ is not None:
2316
+ subclass = getSubclassFromModule_(
2317
+ CurrentSubclassModule_, restrictionsType)
2318
+ if subclass is not None:
2319
+ return subclass(*args_, **kwargs_)
2320
+ if restrictionsType.subclass:
2321
+ return restrictionsType.subclass(*args_, **kwargs_)
2322
+ else:
2323
+ return restrictionsType(*args_, **kwargs_)
2324
+ factory = staticmethod(factory)
2325
+ def get_ns_prefix_(self):
2326
+ return self.ns_prefix_
2327
+ def set_ns_prefix_(self, ns_prefix):
2328
+ self.ns_prefix_ = ns_prefix
2329
+ def get_weight_restriction(self):
2330
+ return self.weight_restriction
2331
+ def set_weight_restriction(self, weight_restriction):
2332
+ self.weight_restriction = weight_restriction
2333
+ def get_dimensional_restrictions(self):
2334
+ return self.dimensional_restrictions
2335
+ def set_dimensional_restrictions(self, dimensional_restrictions):
2336
+ self.dimensional_restrictions = dimensional_restrictions
2337
+ def get_density_factor(self):
2338
+ return self.density_factor
2339
+ def set_density_factor(self, density_factor):
2340
+ self.density_factor = density_factor
2341
+ def get_can_ship_in_mailing_tube(self):
2342
+ return self.can_ship_in_mailing_tube
2343
+ def set_can_ship_in_mailing_tube(self, can_ship_in_mailing_tube):
2344
+ self.can_ship_in_mailing_tube = can_ship_in_mailing_tube
2345
+ def get_can_ship_unpackaged(self):
2346
+ return self.can_ship_unpackaged
2347
+ def set_can_ship_unpackaged(self, can_ship_unpackaged):
2348
+ self.can_ship_unpackaged = can_ship_unpackaged
2349
+ def get_allowed_as_return_service(self):
2350
+ return self.allowed_as_return_service
2351
+ def set_allowed_as_return_service(self, allowed_as_return_service):
2352
+ self.allowed_as_return_service = allowed_as_return_service
2353
+ def has__content(self):
2354
+ if (
2355
+ self.weight_restriction is not None or
2356
+ self.dimensional_restrictions is not None or
2357
+ self.density_factor is not None or
2358
+ self.can_ship_in_mailing_tube is not None or
2359
+ self.can_ship_unpackaged is not None or
2360
+ self.allowed_as_return_service is not None
2361
+ ):
2362
+ return True
2363
+ else:
2364
+ return False
2365
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='restrictionsType', pretty_print=True):
2366
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('restrictionsType')
2367
+ if imported_ns_def_ is not None:
2368
+ namespacedef_ = imported_ns_def_
2369
+ if pretty_print:
2370
+ eol_ = '\n'
2371
+ else:
2372
+ eol_ = ''
2373
+ if self.original_tagname_ is not None and name_ == 'restrictionsType':
2374
+ name_ = self.original_tagname_
2375
+ if UseCapturedNS_ and self.ns_prefix_:
2376
+ namespaceprefix_ = self.ns_prefix_ + ':'
2377
+ showIndent(outfile, level, pretty_print)
2378
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2379
+ already_processed = set()
2380
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='restrictionsType')
2381
+ if self.has__content():
2382
+ outfile.write('>%s' % (eol_, ))
2383
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='restrictionsType', pretty_print=pretty_print)
2384
+ showIndent(outfile, level, pretty_print)
2385
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2386
+ else:
2387
+ outfile.write('/>%s' % (eol_, ))
2388
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='restrictionsType'):
2389
+ pass
2390
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='restrictionsType', fromsubclass_=False, pretty_print=True):
2391
+ if pretty_print:
2392
+ eol_ = '\n'
2393
+ else:
2394
+ eol_ = ''
2395
+ if self.weight_restriction is not None:
2396
+ namespaceprefix_ = self.weight_restriction_nsprefix_ + ':' if (UseCapturedNS_ and self.weight_restriction_nsprefix_) else ''
2397
+ self.weight_restriction.export(outfile, level, namespaceprefix_, namespacedef_='', name_='weight-restriction', pretty_print=pretty_print)
2398
+ if self.dimensional_restrictions is not None:
2399
+ namespaceprefix_ = self.dimensional_restrictions_nsprefix_ + ':' if (UseCapturedNS_ and self.dimensional_restrictions_nsprefix_) else ''
2400
+ self.dimensional_restrictions.export(outfile, level, namespaceprefix_, namespacedef_='', name_='dimensional-restrictions', pretty_print=pretty_print)
2401
+ if self.density_factor is not None:
2402
+ namespaceprefix_ = self.density_factor_nsprefix_ + ':' if (UseCapturedNS_ and self.density_factor_nsprefix_) else ''
2403
+ showIndent(outfile, level, pretty_print)
2404
+ outfile.write('<%sdensity-factor>%s</%sdensity-factor>%s' % (namespaceprefix_ , self.gds_format_decimal(self.density_factor, input_name='density-factor'), namespaceprefix_ , eol_))
2405
+ if self.can_ship_in_mailing_tube is not None:
2406
+ namespaceprefix_ = self.can_ship_in_mailing_tube_nsprefix_ + ':' if (UseCapturedNS_ and self.can_ship_in_mailing_tube_nsprefix_) else ''
2407
+ showIndent(outfile, level, pretty_print)
2408
+ outfile.write('<%scan-ship-in-mailing-tube>%s</%scan-ship-in-mailing-tube>%s' % (namespaceprefix_ , self.gds_format_boolean(self.can_ship_in_mailing_tube, input_name='can-ship-in-mailing-tube'), namespaceprefix_ , eol_))
2409
+ if self.can_ship_unpackaged is not None:
2410
+ namespaceprefix_ = self.can_ship_unpackaged_nsprefix_ + ':' if (UseCapturedNS_ and self.can_ship_unpackaged_nsprefix_) else ''
2411
+ showIndent(outfile, level, pretty_print)
2412
+ outfile.write('<%scan-ship-unpackaged>%s</%scan-ship-unpackaged>%s' % (namespaceprefix_ , self.gds_format_boolean(self.can_ship_unpackaged, input_name='can-ship-unpackaged'), namespaceprefix_ , eol_))
2413
+ if self.allowed_as_return_service is not None:
2414
+ namespaceprefix_ = self.allowed_as_return_service_nsprefix_ + ':' if (UseCapturedNS_ and self.allowed_as_return_service_nsprefix_) else ''
2415
+ showIndent(outfile, level, pretty_print)
2416
+ outfile.write('<%sallowed-as-return-service>%s</%sallowed-as-return-service>%s' % (namespaceprefix_ , self.gds_format_boolean(self.allowed_as_return_service, input_name='allowed-as-return-service'), namespaceprefix_ , eol_))
2417
+ def build(self, node, gds_collector_=None):
2418
+ self.gds_collector_ = gds_collector_
2419
+ if SaveElementTreeNode:
2420
+ self.gds_elementtree_node_ = node
2421
+ already_processed = set()
2422
+ self.ns_prefix_ = node.prefix
2423
+ self._buildAttributes(node, node.attrib, already_processed)
2424
+ for child in node:
2425
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2426
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2427
+ return self
2428
+ def _buildAttributes(self, node, attrs, already_processed):
2429
+ pass
2430
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2431
+ if nodeName_ == 'weight-restriction':
2432
+ obj_ = NumberRangeType.factory(parent_object_=self)
2433
+ obj_.build(child_, gds_collector_=gds_collector_)
2434
+ self.weight_restriction = obj_
2435
+ obj_.original_tagname_ = 'weight-restriction'
2436
+ elif nodeName_ == 'dimensional-restrictions':
2437
+ obj_ = dimensional_restrictionsType.factory(parent_object_=self)
2438
+ obj_.build(child_, gds_collector_=gds_collector_)
2439
+ self.dimensional_restrictions = obj_
2440
+ obj_.original_tagname_ = 'dimensional-restrictions'
2441
+ elif nodeName_ == 'density-factor' and child_.text:
2442
+ sval_ = child_.text
2443
+ fval_ = self.gds_parse_decimal(sval_, node, 'density_factor')
2444
+ fval_ = self.gds_validate_decimal(fval_, node, 'density_factor')
2445
+ self.density_factor = fval_
2446
+ self.density_factor_nsprefix_ = child_.prefix
2447
+ elif nodeName_ == 'can-ship-in-mailing-tube':
2448
+ sval_ = child_.text
2449
+ ival_ = self.gds_parse_boolean(sval_, node, 'can_ship_in_mailing_tube')
2450
+ ival_ = self.gds_validate_boolean(ival_, node, 'can_ship_in_mailing_tube')
2451
+ self.can_ship_in_mailing_tube = ival_
2452
+ self.can_ship_in_mailing_tube_nsprefix_ = child_.prefix
2453
+ elif nodeName_ == 'can-ship-unpackaged':
2454
+ sval_ = child_.text
2455
+ ival_ = self.gds_parse_boolean(sval_, node, 'can_ship_unpackaged')
2456
+ ival_ = self.gds_validate_boolean(ival_, node, 'can_ship_unpackaged')
2457
+ self.can_ship_unpackaged = ival_
2458
+ self.can_ship_unpackaged_nsprefix_ = child_.prefix
2459
+ elif nodeName_ == 'allowed-as-return-service':
2460
+ sval_ = child_.text
2461
+ ival_ = self.gds_parse_boolean(sval_, node, 'allowed_as_return_service')
2462
+ ival_ = self.gds_validate_boolean(ival_, node, 'allowed_as_return_service')
2463
+ self.allowed_as_return_service = ival_
2464
+ self.allowed_as_return_service_nsprefix_ = child_.prefix
2465
+ # end class restrictionsType
2466
+
2467
+
2468
+ class dimensional_restrictionsType(GeneratedsSuper):
2469
+ __hash__ = GeneratedsSuper.__hash__
2470
+ subclass = None
2471
+ superclass = None
2472
+ def __init__(self, length=None, width=None, height=None, length_plus_girth_max=None, length_height_width_sum_max=None, oversize_limit=None, gds_collector_=None, **kwargs_):
2473
+ self.gds_collector_ = gds_collector_
2474
+ self.gds_elementtree_node_ = None
2475
+ self.original_tagname_ = None
2476
+ self.parent_object_ = kwargs_.get('parent_object_')
2477
+ self.ns_prefix_ = None
2478
+ self.length = length
2479
+ self.length_nsprefix_ = None
2480
+ self.width = width
2481
+ self.width_nsprefix_ = None
2482
+ self.height = height
2483
+ self.height_nsprefix_ = None
2484
+ self.length_plus_girth_max = length_plus_girth_max
2485
+ self.length_plus_girth_max_nsprefix_ = None
2486
+ self.length_height_width_sum_max = length_height_width_sum_max
2487
+ self.length_height_width_sum_max_nsprefix_ = None
2488
+ self.oversize_limit = oversize_limit
2489
+ self.oversize_limit_nsprefix_ = None
2490
+ def factory(*args_, **kwargs_):
2491
+ if CurrentSubclassModule_ is not None:
2492
+ subclass = getSubclassFromModule_(
2493
+ CurrentSubclassModule_, dimensional_restrictionsType)
2494
+ if subclass is not None:
2495
+ return subclass(*args_, **kwargs_)
2496
+ if dimensional_restrictionsType.subclass:
2497
+ return dimensional_restrictionsType.subclass(*args_, **kwargs_)
2498
+ else:
2499
+ return dimensional_restrictionsType(*args_, **kwargs_)
2500
+ factory = staticmethod(factory)
2501
+ def get_ns_prefix_(self):
2502
+ return self.ns_prefix_
2503
+ def set_ns_prefix_(self, ns_prefix):
2504
+ self.ns_prefix_ = ns_prefix
2505
+ def get_length(self):
2506
+ return self.length
2507
+ def set_length(self, length):
2508
+ self.length = length
2509
+ def get_width(self):
2510
+ return self.width
2511
+ def set_width(self, width):
2512
+ self.width = width
2513
+ def get_height(self):
2514
+ return self.height
2515
+ def set_height(self, height):
2516
+ self.height = height
2517
+ def get_length_plus_girth_max(self):
2518
+ return self.length_plus_girth_max
2519
+ def set_length_plus_girth_max(self, length_plus_girth_max):
2520
+ self.length_plus_girth_max = length_plus_girth_max
2521
+ def get_length_height_width_sum_max(self):
2522
+ return self.length_height_width_sum_max
2523
+ def set_length_height_width_sum_max(self, length_height_width_sum_max):
2524
+ self.length_height_width_sum_max = length_height_width_sum_max
2525
+ def get_oversize_limit(self):
2526
+ return self.oversize_limit
2527
+ def set_oversize_limit(self, oversize_limit):
2528
+ self.oversize_limit = oversize_limit
2529
+ def has__content(self):
2530
+ if (
2531
+ self.length is not None or
2532
+ self.width is not None or
2533
+ self.height is not None or
2534
+ self.length_plus_girth_max is not None or
2535
+ self.length_height_width_sum_max is not None or
2536
+ self.oversize_limit is not None
2537
+ ):
2538
+ return True
2539
+ else:
2540
+ return False
2541
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='dimensional-restrictionsType', pretty_print=True):
2542
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('dimensional-restrictionsType')
2543
+ if imported_ns_def_ is not None:
2544
+ namespacedef_ = imported_ns_def_
2545
+ if pretty_print:
2546
+ eol_ = '\n'
2547
+ else:
2548
+ eol_ = ''
2549
+ if self.original_tagname_ is not None and name_ == 'dimensional-restrictionsType':
2550
+ name_ = self.original_tagname_
2551
+ if UseCapturedNS_ and self.ns_prefix_:
2552
+ namespaceprefix_ = self.ns_prefix_ + ':'
2553
+ showIndent(outfile, level, pretty_print)
2554
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2555
+ already_processed = set()
2556
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='dimensional-restrictionsType')
2557
+ if self.has__content():
2558
+ outfile.write('>%s' % (eol_, ))
2559
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='dimensional-restrictionsType', pretty_print=pretty_print)
2560
+ showIndent(outfile, level, pretty_print)
2561
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2562
+ else:
2563
+ outfile.write('/>%s' % (eol_, ))
2564
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='dimensional-restrictionsType'):
2565
+ pass
2566
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='dimensional-restrictionsType', fromsubclass_=False, pretty_print=True):
2567
+ if pretty_print:
2568
+ eol_ = '\n'
2569
+ else:
2570
+ eol_ = ''
2571
+ if self.length is not None:
2572
+ namespaceprefix_ = self.length_nsprefix_ + ':' if (UseCapturedNS_ and self.length_nsprefix_) else ''
2573
+ self.length.export(outfile, level, namespaceprefix_, namespacedef_='', name_='length', pretty_print=pretty_print)
2574
+ if self.width is not None:
2575
+ namespaceprefix_ = self.width_nsprefix_ + ':' if (UseCapturedNS_ and self.width_nsprefix_) else ''
2576
+ self.width.export(outfile, level, namespaceprefix_, namespacedef_='', name_='width', pretty_print=pretty_print)
2577
+ if self.height is not None:
2578
+ namespaceprefix_ = self.height_nsprefix_ + ':' if (UseCapturedNS_ and self.height_nsprefix_) else ''
2579
+ self.height.export(outfile, level, namespaceprefix_, namespacedef_='', name_='height', pretty_print=pretty_print)
2580
+ if self.length_plus_girth_max is not None:
2581
+ namespaceprefix_ = self.length_plus_girth_max_nsprefix_ + ':' if (UseCapturedNS_ and self.length_plus_girth_max_nsprefix_) else ''
2582
+ showIndent(outfile, level, pretty_print)
2583
+ outfile.write('<%slength-plus-girth-max>%s</%slength-plus-girth-max>%s' % (namespaceprefix_ , self.gds_format_decimal(self.length_plus_girth_max, input_name='length-plus-girth-max'), namespaceprefix_ , eol_))
2584
+ if self.length_height_width_sum_max is not None:
2585
+ namespaceprefix_ = self.length_height_width_sum_max_nsprefix_ + ':' if (UseCapturedNS_ and self.length_height_width_sum_max_nsprefix_) else ''
2586
+ showIndent(outfile, level, pretty_print)
2587
+ outfile.write('<%slength-height-width-sum-max>%s</%slength-height-width-sum-max>%s' % (namespaceprefix_ , self.gds_format_decimal(self.length_height_width_sum_max, input_name='length-height-width-sum-max'), namespaceprefix_ , eol_))
2588
+ if self.oversize_limit is not None:
2589
+ namespaceprefix_ = self.oversize_limit_nsprefix_ + ':' if (UseCapturedNS_ and self.oversize_limit_nsprefix_) else ''
2590
+ showIndent(outfile, level, pretty_print)
2591
+ outfile.write('<%soversize-limit>%s</%soversize-limit>%s' % (namespaceprefix_ , self.gds_format_decimal(self.oversize_limit, input_name='oversize-limit'), namespaceprefix_ , eol_))
2592
+ def build(self, node, gds_collector_=None):
2593
+ self.gds_collector_ = gds_collector_
2594
+ if SaveElementTreeNode:
2595
+ self.gds_elementtree_node_ = node
2596
+ already_processed = set()
2597
+ self.ns_prefix_ = node.prefix
2598
+ self._buildAttributes(node, node.attrib, already_processed)
2599
+ for child in node:
2600
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2601
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2602
+ return self
2603
+ def _buildAttributes(self, node, attrs, already_processed):
2604
+ pass
2605
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2606
+ if nodeName_ == 'length':
2607
+ obj_ = NumberRangeType.factory(parent_object_=self)
2608
+ obj_.build(child_, gds_collector_=gds_collector_)
2609
+ self.length = obj_
2610
+ obj_.original_tagname_ = 'length'
2611
+ elif nodeName_ == 'width':
2612
+ obj_ = NumberRangeType.factory(parent_object_=self)
2613
+ obj_.build(child_, gds_collector_=gds_collector_)
2614
+ self.width = obj_
2615
+ obj_.original_tagname_ = 'width'
2616
+ elif nodeName_ == 'height':
2617
+ obj_ = NumberRangeType.factory(parent_object_=self)
2618
+ obj_.build(child_, gds_collector_=gds_collector_)
2619
+ self.height = obj_
2620
+ obj_.original_tagname_ = 'height'
2621
+ elif nodeName_ == 'length-plus-girth-max' and child_.text:
2622
+ sval_ = child_.text
2623
+ fval_ = self.gds_parse_decimal(sval_, node, 'length_plus_girth_max')
2624
+ fval_ = self.gds_validate_decimal(fval_, node, 'length_plus_girth_max')
2625
+ self.length_plus_girth_max = fval_
2626
+ self.length_plus_girth_max_nsprefix_ = child_.prefix
2627
+ elif nodeName_ == 'length-height-width-sum-max' and child_.text:
2628
+ sval_ = child_.text
2629
+ fval_ = self.gds_parse_decimal(sval_, node, 'length_height_width_sum_max')
2630
+ fval_ = self.gds_validate_decimal(fval_, node, 'length_height_width_sum_max')
2631
+ self.length_height_width_sum_max = fval_
2632
+ self.length_height_width_sum_max_nsprefix_ = child_.prefix
2633
+ elif nodeName_ == 'oversize-limit' and child_.text:
2634
+ sval_ = child_.text
2635
+ fval_ = self.gds_parse_decimal(sval_, node, 'oversize_limit')
2636
+ fval_ = self.gds_validate_decimal(fval_, node, 'oversize_limit')
2637
+ self.oversize_limit = fval_
2638
+ self.oversize_limit_nsprefix_ = child_.prefix
2639
+ # end class dimensional_restrictionsType
2640
+
2641
+
2642
+ class optionType1(GeneratedsSuper):
2643
+ __hash__ = GeneratedsSuper.__hash__
2644
+ subclass = None
2645
+ superclass = None
2646
+ def __init__(self, option_code=None, option_name=None, link=None, qualifier_required=None, gds_collector_=None, **kwargs_):
2647
+ self.gds_collector_ = gds_collector_
2648
+ self.gds_elementtree_node_ = None
2649
+ self.original_tagname_ = None
2650
+ self.parent_object_ = kwargs_.get('parent_object_')
2651
+ self.ns_prefix_ = None
2652
+ self.option_code = option_code
2653
+ self.option_code_nsprefix_ = None
2654
+ self.option_name = option_name
2655
+ self.option_name_nsprefix_ = None
2656
+ self.link = link
2657
+ self.link_nsprefix_ = None
2658
+ self.qualifier_required = qualifier_required
2659
+ self.qualifier_required_nsprefix_ = None
2660
+ def factory(*args_, **kwargs_):
2661
+ if CurrentSubclassModule_ is not None:
2662
+ subclass = getSubclassFromModule_(
2663
+ CurrentSubclassModule_, optionType1)
2664
+ if subclass is not None:
2665
+ return subclass(*args_, **kwargs_)
2666
+ if optionType1.subclass:
2667
+ return optionType1.subclass(*args_, **kwargs_)
2668
+ else:
2669
+ return optionType1(*args_, **kwargs_)
2670
+ factory = staticmethod(factory)
2671
+ def get_ns_prefix_(self):
2672
+ return self.ns_prefix_
2673
+ def set_ns_prefix_(self, ns_prefix):
2674
+ self.ns_prefix_ = ns_prefix
2675
+ def get_option_code(self):
2676
+ return self.option_code
2677
+ def set_option_code(self, option_code):
2678
+ self.option_code = option_code
2679
+ def get_option_name(self):
2680
+ return self.option_name
2681
+ def set_option_name(self, option_name):
2682
+ self.option_name = option_name
2683
+ def get_link(self):
2684
+ return self.link
2685
+ def set_link(self, link):
2686
+ self.link = link
2687
+ def get_qualifier_required(self):
2688
+ return self.qualifier_required
2689
+ def set_qualifier_required(self, qualifier_required):
2690
+ self.qualifier_required = qualifier_required
2691
+ def has__content(self):
2692
+ if (
2693
+ self.option_code is not None or
2694
+ self.option_name is not None or
2695
+ self.link is not None or
2696
+ self.qualifier_required is not None
2697
+ ):
2698
+ return True
2699
+ else:
2700
+ return False
2701
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionType1', pretty_print=True):
2702
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('optionType1')
2703
+ if imported_ns_def_ is not None:
2704
+ namespacedef_ = imported_ns_def_
2705
+ if pretty_print:
2706
+ eol_ = '\n'
2707
+ else:
2708
+ eol_ = ''
2709
+ if self.original_tagname_ is not None and name_ == 'optionType1':
2710
+ name_ = self.original_tagname_
2711
+ if UseCapturedNS_ and self.ns_prefix_:
2712
+ namespaceprefix_ = self.ns_prefix_ + ':'
2713
+ showIndent(outfile, level, pretty_print)
2714
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2715
+ already_processed = set()
2716
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='optionType1')
2717
+ if self.has__content():
2718
+ outfile.write('>%s' % (eol_, ))
2719
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='optionType1', pretty_print=pretty_print)
2720
+ showIndent(outfile, level, pretty_print)
2721
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2722
+ else:
2723
+ outfile.write('/>%s' % (eol_, ))
2724
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='optionType1'):
2725
+ pass
2726
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='optionType1', fromsubclass_=False, pretty_print=True):
2727
+ if pretty_print:
2728
+ eol_ = '\n'
2729
+ else:
2730
+ eol_ = ''
2731
+ if self.option_code is not None:
2732
+ namespaceprefix_ = self.option_code_nsprefix_ + ':' if (UseCapturedNS_ and self.option_code_nsprefix_) else ''
2733
+ showIndent(outfile, level, pretty_print)
2734
+ outfile.write('<%soption-code>%s</%soption-code>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_code), input_name='option-code')), namespaceprefix_ , eol_))
2735
+ if self.option_name is not None:
2736
+ namespaceprefix_ = self.option_name_nsprefix_ + ':' if (UseCapturedNS_ and self.option_name_nsprefix_) else ''
2737
+ showIndent(outfile, level, pretty_print)
2738
+ outfile.write('<%soption-name>%s</%soption-name>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.option_name), input_name='option-name')), namespaceprefix_ , eol_))
2739
+ if self.link is not None:
2740
+ namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else ''
2741
+ showIndent(outfile, level, pretty_print)
2742
+ outfile.write('<%slink>%s</%slink>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.link), input_name='link')), namespaceprefix_ , eol_))
2743
+ if self.qualifier_required is not None:
2744
+ namespaceprefix_ = self.qualifier_required_nsprefix_ + ':' if (UseCapturedNS_ and self.qualifier_required_nsprefix_) else ''
2745
+ showIndent(outfile, level, pretty_print)
2746
+ outfile.write('<%squalifier-required>%s</%squalifier-required>%s' % (namespaceprefix_ , self.gds_format_boolean(self.qualifier_required, input_name='qualifier-required'), namespaceprefix_ , eol_))
2747
+ def build(self, node, gds_collector_=None):
2748
+ self.gds_collector_ = gds_collector_
2749
+ if SaveElementTreeNode:
2750
+ self.gds_elementtree_node_ = node
2751
+ already_processed = set()
2752
+ self.ns_prefix_ = node.prefix
2753
+ self._buildAttributes(node, node.attrib, already_processed)
2754
+ for child in node:
2755
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2756
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2757
+ return self
2758
+ def _buildAttributes(self, node, attrs, already_processed):
2759
+ pass
2760
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2761
+ if nodeName_ == 'option-code':
2762
+ value_ = child_.text
2763
+ if value_:
2764
+ value_ = re_.sub(String_cleanup_pat_, " ", value_).strip()
2765
+ else:
2766
+ value_ = ""
2767
+ value_ = self.gds_parse_string(value_, node, 'option_code')
2768
+ value_ = self.gds_validate_string(value_, node, 'option_code')
2769
+ self.option_code = value_
2770
+ self.option_code_nsprefix_ = child_.prefix
2771
+ elif nodeName_ == 'option-name':
2772
+ value_ = child_.text
2773
+ if value_:
2774
+ value_ = re_.sub(String_cleanup_pat_, " ", value_).strip()
2775
+ else:
2776
+ value_ = ""
2777
+ value_ = self.gds_parse_string(value_, node, 'option_name')
2778
+ value_ = self.gds_validate_string(value_, node, 'option_name')
2779
+ self.option_name = value_
2780
+ self.option_name_nsprefix_ = child_.prefix
2781
+ elif nodeName_ == 'link':
2782
+ value_ = child_.text
2783
+ value_ = self.gds_parse_string(value_, node, 'link')
2784
+ value_ = self.gds_validate_string(value_, node, 'link')
2785
+ self.link = value_
2786
+ self.link_nsprefix_ = child_.prefix
2787
+ elif nodeName_ == 'qualifier-required':
2788
+ sval_ = child_.text
2789
+ ival_ = self.gds_parse_boolean(sval_, node, 'qualifier_required')
2790
+ ival_ = self.gds_validate_boolean(ival_, node, 'qualifier_required')
2791
+ self.qualifier_required = ival_
2792
+ self.qualifier_required_nsprefix_ = child_.prefix
2793
+ # end class optionType1
2794
+
2795
+
2796
+ #
2797
+ # End data representation classes.
2798
+ #
2799
+
2800
+
2801
+ GDSClassesMapping = {
2802
+ }
2803
+
2804
+
2805
+ USAGE_TEXT = """
2806
+ Usage: python <Parser>.py [ -s ] <in_xml_file>
2807
+ """
2808
+
2809
+
2810
+ def usage():
2811
+ print(USAGE_TEXT)
2812
+ sys.exit(1)
2813
+
2814
+
2815
+ def get_root_tag(node):
2816
+ tag = Tag_pattern_.match(node.tag).groups()[-1]
2817
+ prefix_tag = TagNamePrefix + tag
2818
+ rootClass = GDSClassesMapping.get(prefix_tag)
2819
+ if rootClass is None:
2820
+ rootClass = globals().get(prefix_tag)
2821
+ return tag, rootClass
2822
+
2823
+
2824
+ def get_required_ns_prefix_defs(rootNode):
2825
+ '''Get all name space prefix definitions required in this XML doc.
2826
+ Return a dictionary of definitions and a char string of definitions.
2827
+ '''
2828
+ nsmap = {
2829
+ prefix: uri
2830
+ for node in rootNode.iter()
2831
+ for (prefix, uri) in node.nsmap.items()
2832
+ if prefix is not None
2833
+ }
2834
+ namespacedefs = ' '.join([
2835
+ 'xmlns:{}="{}"'.format(prefix, uri)
2836
+ for prefix, uri in nsmap.items()
2837
+ ])
2838
+ return nsmap, namespacedefs
2839
+
2840
+
2841
+ def parse(inFileName, silence=False, print_warnings=True):
2842
+ global CapturedNsmap_
2843
+ gds_collector = GdsCollector_()
2844
+ parser = None
2845
+ doc = parsexml_(inFileName, parser)
2846
+ rootNode = doc.getroot()
2847
+ rootTag, rootClass = get_root_tag(rootNode)
2848
+ if rootClass is None:
2849
+ rootTag = 'services'
2850
+ rootClass = services
2851
+ rootObj = rootClass.factory()
2852
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2853
+ CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
2854
+ if not SaveElementTreeNode:
2855
+ doc = None
2856
+ rootNode = None
2857
+ if not silence:
2858
+ sys.stdout.write('<?xml version="1.0" ?>\n')
2859
+ rootObj.export(
2860
+ sys.stdout, 0, name_=rootTag,
2861
+ namespacedef_=namespacedefs,
2862
+ pretty_print=True)
2863
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2864
+ separator = ('-' * 50) + '\n'
2865
+ sys.stderr.write(separator)
2866
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2867
+ len(gds_collector.get_messages()), ))
2868
+ gds_collector.write_messages(sys.stderr)
2869
+ sys.stderr.write(separator)
2870
+ return rootObj
2871
+
2872
+
2873
+ def parseEtree(inFileName, silence=False, print_warnings=True,
2874
+ mapping=None, reverse_mapping=None, nsmap=None):
2875
+ parser = None
2876
+ doc = parsexml_(inFileName, parser)
2877
+ gds_collector = GdsCollector_()
2878
+ rootNode = doc.getroot()
2879
+ rootTag, rootClass = get_root_tag(rootNode)
2880
+ if rootClass is None:
2881
+ rootTag = 'services'
2882
+ rootClass = services
2883
+ rootObj = rootClass.factory()
2884
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2885
+ if mapping is None:
2886
+ mapping = {}
2887
+ if reverse_mapping is None:
2888
+ reverse_mapping = {}
2889
+ rootElement = rootObj.to_etree(
2890
+ None, name_=rootTag, mapping_=mapping,
2891
+ reverse_mapping_=reverse_mapping, nsmap_=nsmap)
2892
+ reverse_node_mapping = rootObj.gds_reverse_node_mapping(mapping)
2893
+ # Enable Python to collect the space used by the DOM.
2894
+ if not SaveElementTreeNode:
2895
+ doc = None
2896
+ rootNode = None
2897
+ if not silence:
2898
+ content = etree_.tostring(
2899
+ rootElement, pretty_print=True,
2900
+ xml_declaration=True, encoding="utf-8")
2901
+ sys.stdout.write(str(content))
2902
+ sys.stdout.write('\n')
2903
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2904
+ separator = ('-' * 50) + '\n'
2905
+ sys.stderr.write(separator)
2906
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2907
+ len(gds_collector.get_messages()), ))
2908
+ gds_collector.write_messages(sys.stderr)
2909
+ sys.stderr.write(separator)
2910
+ return rootObj, rootElement, mapping, reverse_node_mapping
2911
+
2912
+
2913
+ def parseString(inString, silence=False, print_warnings=True):
2914
+ '''Parse a string, create the object tree, and export it.
2915
+
2916
+ Arguments:
2917
+ - inString -- A string. This XML fragment should not start
2918
+ with an XML declaration containing an encoding.
2919
+ - silence -- A boolean. If False, export the object.
2920
+ Returns -- The root object in the tree.
2921
+ '''
2922
+ parser = None
2923
+ rootNode= parsexmlstring_(inString, parser)
2924
+ gds_collector = GdsCollector_()
2925
+ rootTag, rootClass = get_root_tag(rootNode)
2926
+ if rootClass is None:
2927
+ rootTag = 'services'
2928
+ rootClass = services
2929
+ rootObj = rootClass.factory()
2930
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2931
+ if not SaveElementTreeNode:
2932
+ rootNode = None
2933
+ if not silence:
2934
+ sys.stdout.write('<?xml version="1.0" ?>\n')
2935
+ rootObj.export(
2936
+ sys.stdout, 0, name_=rootTag,
2937
+ namespacedef_='')
2938
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2939
+ separator = ('-' * 50) + '\n'
2940
+ sys.stderr.write(separator)
2941
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2942
+ len(gds_collector.get_messages()), ))
2943
+ gds_collector.write_messages(sys.stderr)
2944
+ sys.stderr.write(separator)
2945
+ return rootObj
2946
+
2947
+
2948
+ def parseLiteral(inFileName, silence=False, print_warnings=True):
2949
+ parser = None
2950
+ doc = parsexml_(inFileName, parser)
2951
+ gds_collector = GdsCollector_()
2952
+ rootNode = doc.getroot()
2953
+ rootTag, rootClass = get_root_tag(rootNode)
2954
+ if rootClass is None:
2955
+ rootTag = 'services'
2956
+ rootClass = services
2957
+ rootObj = rootClass.factory()
2958
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2959
+ # Enable Python to collect the space used by the DOM.
2960
+ if not SaveElementTreeNode:
2961
+ doc = None
2962
+ rootNode = None
2963
+ if not silence:
2964
+ sys.stdout.write('#from discovery import *\n\n')
2965
+ sys.stdout.write('import discovery as model_\n\n')
2966
+ sys.stdout.write('rootObj = model_.rootClass(\n')
2967
+ rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
2968
+ sys.stdout.write(')\n')
2969
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2970
+ separator = ('-' * 50) + '\n'
2971
+ sys.stderr.write(separator)
2972
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2973
+ len(gds_collector.get_messages()), ))
2974
+ gds_collector.write_messages(sys.stderr)
2975
+ sys.stderr.write(separator)
2976
+ return rootObj
2977
+
2978
+
2979
+ def main():
2980
+ args = sys.argv[1:]
2981
+ if len(args) == 1:
2982
+ parse(args[0])
2983
+ else:
2984
+ usage()
2985
+
2986
+
2987
+ if __name__ == '__main__':
2988
+ #import pdb; pdb.set_trace()
2989
+ main()
2990
+
2991
+ RenameMappings_ = {
2992
+ }
2993
+
2994
+ #
2995
+ # Mapping of namespaces to types defined in them
2996
+ # and the file in which each is defined.
2997
+ # simpleTypes are marked "ST" and complexTypes "CT".
2998
+ NamespaceToDefMappings_ = {'http://www.canadapost.ca/ws/ship/rate-v4': [('NumberRangeType',
2999
+ './schemas/discovery.xsd',
3000
+ 'CT')]}
3001
+
3002
+ __all__ = [
3003
+ "NumberRangeType",
3004
+ "conflicting_optionsType",
3005
+ "dimensional_restrictionsType",
3006
+ "option",
3007
+ "optionType",
3008
+ "optionType1",
3009
+ "options",
3010
+ "optionsType",
3011
+ "prerequisite_optionsType",
3012
+ "restrictionsType",
3013
+ "service",
3014
+ "serviceType",
3015
+ "services"
3016
+ ]