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,2307 @@
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/customerinfo.py')
11
+ #
12
+ # Command line arguments:
13
+ # ./schemas/customerinfo.xsd
14
+ #
15
+ # Command line:
16
+ # /home/kserver/Workspace/karrio/.venv/karrio/bin/generateDS --no-namespace-defs -o "./karrio/schemas/canadapost/customerinfo.py" ./schemas/customerinfo.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
+ BEHALFOFCUSTOMER='behalf-of-customer'
1009
+
1010
+
1011
+ #
1012
+ # Start data representation classes
1013
+ #
1014
+ class CustomerBaseType(GeneratedsSuper):
1015
+ __hash__ = GeneratedsSuper.__hash__
1016
+ subclass = None
1017
+ superclass = None
1018
+ def __init__(self, customer_number=None, contracts=None, authorized_payers=None, extensiontype_=None, gds_collector_=None, **kwargs_):
1019
+ self.gds_collector_ = gds_collector_
1020
+ self.gds_elementtree_node_ = None
1021
+ self.original_tagname_ = None
1022
+ self.parent_object_ = kwargs_.get('parent_object_')
1023
+ self.ns_prefix_ = None
1024
+ self.customer_number = customer_number
1025
+ self.validate_CustomerIDType(self.customer_number)
1026
+ self.customer_number_nsprefix_ = None
1027
+ self.contracts = contracts
1028
+ self.contracts_nsprefix_ = None
1029
+ self.authorized_payers = authorized_payers
1030
+ self.authorized_payers_nsprefix_ = None
1031
+ self.extensiontype_ = extensiontype_
1032
+ def factory(*args_, **kwargs_):
1033
+ if CurrentSubclassModule_ is not None:
1034
+ subclass = getSubclassFromModule_(
1035
+ CurrentSubclassModule_, CustomerBaseType)
1036
+ if subclass is not None:
1037
+ return subclass(*args_, **kwargs_)
1038
+ if CustomerBaseType.subclass:
1039
+ return CustomerBaseType.subclass(*args_, **kwargs_)
1040
+ else:
1041
+ return CustomerBaseType(*args_, **kwargs_)
1042
+ factory = staticmethod(factory)
1043
+ def get_ns_prefix_(self):
1044
+ return self.ns_prefix_
1045
+ def set_ns_prefix_(self, ns_prefix):
1046
+ self.ns_prefix_ = ns_prefix
1047
+ def get_customer_number(self):
1048
+ return self.customer_number
1049
+ def set_customer_number(self, customer_number):
1050
+ self.customer_number = customer_number
1051
+ def get_contracts(self):
1052
+ return self.contracts
1053
+ def set_contracts(self, contracts):
1054
+ self.contracts = contracts
1055
+ def get_authorized_payers(self):
1056
+ return self.authorized_payers
1057
+ def set_authorized_payers(self, authorized_payers):
1058
+ self.authorized_payers = authorized_payers
1059
+ def get_extensiontype_(self): return self.extensiontype_
1060
+ def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_
1061
+ def validate_CustomerIDType(self, value):
1062
+ result = True
1063
+ # Validate type CustomerIDType, a restriction on xsd:string.
1064
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
1065
+ if not isinstance(value, str):
1066
+ lineno = self.gds_get_node_lineno_()
1067
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
1068
+ return False
1069
+ if not self.gds_validate_simple_patterns(
1070
+ self.validate_CustomerIDType_patterns_, value):
1071
+ self.gds_collector_.add_message('Value "%s" does not match xsd pattern restrictions: %s' % (encode_str_2_3(value), self.validate_CustomerIDType_patterns_, ))
1072
+ result = False
1073
+ return result
1074
+ validate_CustomerIDType_patterns_ = [['^(\\d{1,10})$']]
1075
+ def has__content(self):
1076
+ if (
1077
+ self.customer_number is not None or
1078
+ self.contracts is not None or
1079
+ self.authorized_payers is not None
1080
+ ):
1081
+ return True
1082
+ else:
1083
+ return False
1084
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CustomerBaseType', pretty_print=True):
1085
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('CustomerBaseType')
1086
+ if imported_ns_def_ is not None:
1087
+ namespacedef_ = imported_ns_def_
1088
+ if pretty_print:
1089
+ eol_ = '\n'
1090
+ else:
1091
+ eol_ = ''
1092
+ if self.original_tagname_ is not None and name_ == 'CustomerBaseType':
1093
+ name_ = self.original_tagname_
1094
+ if UseCapturedNS_ and self.ns_prefix_:
1095
+ namespaceprefix_ = self.ns_prefix_ + ':'
1096
+ showIndent(outfile, level, pretty_print)
1097
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1098
+ already_processed = set()
1099
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='CustomerBaseType')
1100
+ if self.has__content():
1101
+ outfile.write('>%s' % (eol_, ))
1102
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='CustomerBaseType', pretty_print=pretty_print)
1103
+ showIndent(outfile, level, pretty_print)
1104
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1105
+ else:
1106
+ outfile.write('/>%s' % (eol_, ))
1107
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='CustomerBaseType'):
1108
+ if self.extensiontype_ is not None and 'xsi:type' not in already_processed:
1109
+ already_processed.add('xsi:type')
1110
+ outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"')
1111
+ if ":" not in self.extensiontype_:
1112
+ imported_ns_type_prefix_ = GenerateDSNamespaceTypePrefixes_.get(self.extensiontype_, '')
1113
+ outfile.write(' xsi:type="%s%s"' % (imported_ns_type_prefix_, self.extensiontype_))
1114
+ else:
1115
+ outfile.write(' xsi:type="%s"' % self.extensiontype_)
1116
+ pass
1117
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='CustomerBaseType', fromsubclass_=False, pretty_print=True):
1118
+ if pretty_print:
1119
+ eol_ = '\n'
1120
+ else:
1121
+ eol_ = ''
1122
+ if self.customer_number is not None:
1123
+ namespaceprefix_ = self.customer_number_nsprefix_ + ':' if (UseCapturedNS_ and self.customer_number_nsprefix_) else ''
1124
+ showIndent(outfile, level, pretty_print)
1125
+ outfile.write('<%scustomer-number>%s</%scustomer-number>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.customer_number), input_name='customer-number')), namespaceprefix_ , eol_))
1126
+ if self.contracts is not None:
1127
+ namespaceprefix_ = self.contracts_nsprefix_ + ':' if (UseCapturedNS_ and self.contracts_nsprefix_) else ''
1128
+ self.contracts.export(outfile, level, namespaceprefix_, namespacedef_='', name_='contracts', pretty_print=pretty_print)
1129
+ if self.authorized_payers is not None:
1130
+ namespaceprefix_ = self.authorized_payers_nsprefix_ + ':' if (UseCapturedNS_ and self.authorized_payers_nsprefix_) else ''
1131
+ self.authorized_payers.export(outfile, level, namespaceprefix_, namespacedef_='', name_='authorized-payers', pretty_print=pretty_print)
1132
+ def build(self, node, gds_collector_=None):
1133
+ self.gds_collector_ = gds_collector_
1134
+ if SaveElementTreeNode:
1135
+ self.gds_elementtree_node_ = node
1136
+ already_processed = set()
1137
+ self.ns_prefix_ = node.prefix
1138
+ self._buildAttributes(node, node.attrib, already_processed)
1139
+ for child in node:
1140
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1141
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1142
+ return self
1143
+ def _buildAttributes(self, node, attrs, already_processed):
1144
+ value = find_attr_value_('xsi:type', node)
1145
+ if value is not None and 'xsi:type' not in already_processed:
1146
+ already_processed.add('xsi:type')
1147
+ self.extensiontype_ = value
1148
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1149
+ if nodeName_ == 'customer-number':
1150
+ value_ = child_.text
1151
+ value_ = self.gds_parse_string(value_, node, 'customer_number')
1152
+ value_ = self.gds_validate_string(value_, node, 'customer_number')
1153
+ self.customer_number = value_
1154
+ self.customer_number_nsprefix_ = child_.prefix
1155
+ # validate type CustomerIDType
1156
+ self.validate_CustomerIDType(self.customer_number)
1157
+ elif nodeName_ == 'contracts':
1158
+ obj_ = ContractsType.factory(parent_object_=self)
1159
+ obj_.build(child_, gds_collector_=gds_collector_)
1160
+ self.contracts = obj_
1161
+ obj_.original_tagname_ = 'contracts'
1162
+ elif nodeName_ == 'authorized-payers':
1163
+ obj_ = AuthorizedPayersType.factory(parent_object_=self)
1164
+ obj_.build(child_, gds_collector_=gds_collector_)
1165
+ self.authorized_payers = obj_
1166
+ obj_.original_tagname_ = 'authorized-payers'
1167
+ # end class CustomerBaseType
1168
+
1169
+
1170
+ class MoboLinksType(GeneratedsSuper):
1171
+ __hash__ = GeneratedsSuper.__hash__
1172
+ subclass = None
1173
+ superclass = None
1174
+ def __init__(self, link=None, gds_collector_=None, **kwargs_):
1175
+ self.gds_collector_ = gds_collector_
1176
+ self.gds_elementtree_node_ = None
1177
+ self.original_tagname_ = None
1178
+ self.parent_object_ = kwargs_.get('parent_object_')
1179
+ self.ns_prefix_ = None
1180
+ if link is None:
1181
+ self.link = []
1182
+ else:
1183
+ self.link = link
1184
+ self.link_nsprefix_ = None
1185
+ def factory(*args_, **kwargs_):
1186
+ if CurrentSubclassModule_ is not None:
1187
+ subclass = getSubclassFromModule_(
1188
+ CurrentSubclassModule_, MoboLinksType)
1189
+ if subclass is not None:
1190
+ return subclass(*args_, **kwargs_)
1191
+ if MoboLinksType.subclass:
1192
+ return MoboLinksType.subclass(*args_, **kwargs_)
1193
+ else:
1194
+ return MoboLinksType(*args_, **kwargs_)
1195
+ factory = staticmethod(factory)
1196
+ def get_ns_prefix_(self):
1197
+ return self.ns_prefix_
1198
+ def set_ns_prefix_(self, ns_prefix):
1199
+ self.ns_prefix_ = ns_prefix
1200
+ def get_link(self):
1201
+ return self.link
1202
+ def set_link(self, link):
1203
+ self.link = link
1204
+ def add_link(self, value):
1205
+ self.link.append(value)
1206
+ def insert_link_at(self, index, value):
1207
+ self.link.insert(index, value)
1208
+ def replace_link_at(self, index, value):
1209
+ self.link[index] = value
1210
+ def has__content(self):
1211
+ if (
1212
+ self.link
1213
+ ):
1214
+ return True
1215
+ else:
1216
+ return False
1217
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MoboLinksType', pretty_print=True):
1218
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('MoboLinksType')
1219
+ if imported_ns_def_ is not None:
1220
+ namespacedef_ = imported_ns_def_
1221
+ if pretty_print:
1222
+ eol_ = '\n'
1223
+ else:
1224
+ eol_ = ''
1225
+ if self.original_tagname_ is not None and name_ == 'MoboLinksType':
1226
+ name_ = self.original_tagname_
1227
+ if UseCapturedNS_ and self.ns_prefix_:
1228
+ namespaceprefix_ = self.ns_prefix_ + ':'
1229
+ showIndent(outfile, level, pretty_print)
1230
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1231
+ already_processed = set()
1232
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='MoboLinksType')
1233
+ if self.has__content():
1234
+ outfile.write('>%s' % (eol_, ))
1235
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='MoboLinksType', pretty_print=pretty_print)
1236
+ showIndent(outfile, level, pretty_print)
1237
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1238
+ else:
1239
+ outfile.write('/>%s' % (eol_, ))
1240
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='MoboLinksType'):
1241
+ pass
1242
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MoboLinksType', fromsubclass_=False, pretty_print=True):
1243
+ if pretty_print:
1244
+ eol_ = '\n'
1245
+ else:
1246
+ eol_ = ''
1247
+ for link_ in self.link:
1248
+ namespaceprefix_ = self.link_nsprefix_ + ':' if (UseCapturedNS_ and self.link_nsprefix_) else ''
1249
+ link_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='link', pretty_print=pretty_print)
1250
+ def build(self, node, gds_collector_=None):
1251
+ self.gds_collector_ = gds_collector_
1252
+ if SaveElementTreeNode:
1253
+ self.gds_elementtree_node_ = node
1254
+ already_processed = set()
1255
+ self.ns_prefix_ = node.prefix
1256
+ self._buildAttributes(node, node.attrib, already_processed)
1257
+ for child in node:
1258
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1259
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1260
+ return self
1261
+ def _buildAttributes(self, node, attrs, already_processed):
1262
+ pass
1263
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1264
+ if nodeName_ == 'link':
1265
+ obj_ = LinkType.factory(parent_object_=self)
1266
+ obj_.build(child_, gds_collector_=gds_collector_)
1267
+ self.link.append(obj_)
1268
+ obj_.original_tagname_ = 'link'
1269
+ # end class MoboLinksType
1270
+
1271
+
1272
+ class LinkType(GeneratedsSuper):
1273
+ __hash__ = GeneratedsSuper.__hash__
1274
+ subclass = None
1275
+ superclass = None
1276
+ def __init__(self, href=None, rel=None, index=None, media_type=None, gds_collector_=None, **kwargs_):
1277
+ self.gds_collector_ = gds_collector_
1278
+ self.gds_elementtree_node_ = None
1279
+ self.original_tagname_ = None
1280
+ self.parent_object_ = kwargs_.get('parent_object_')
1281
+ self.ns_prefix_ = None
1282
+ self.href = _cast(None, href)
1283
+ self.href_nsprefix_ = None
1284
+ self.rel = _cast(None, rel)
1285
+ self.rel_nsprefix_ = None
1286
+ self.index = _cast(int, index)
1287
+ self.index_nsprefix_ = None
1288
+ self.media_type = _cast(None, media_type)
1289
+ self.media_type_nsprefix_ = None
1290
+ def factory(*args_, **kwargs_):
1291
+ if CurrentSubclassModule_ is not None:
1292
+ subclass = getSubclassFromModule_(
1293
+ CurrentSubclassModule_, LinkType)
1294
+ if subclass is not None:
1295
+ return subclass(*args_, **kwargs_)
1296
+ if LinkType.subclass:
1297
+ return LinkType.subclass(*args_, **kwargs_)
1298
+ else:
1299
+ return LinkType(*args_, **kwargs_)
1300
+ factory = staticmethod(factory)
1301
+ def get_ns_prefix_(self):
1302
+ return self.ns_prefix_
1303
+ def set_ns_prefix_(self, ns_prefix):
1304
+ self.ns_prefix_ = ns_prefix
1305
+ def get_href(self):
1306
+ return self.href
1307
+ def set_href(self, href):
1308
+ self.href = href
1309
+ def get_rel(self):
1310
+ return self.rel
1311
+ def set_rel(self, rel):
1312
+ self.rel = rel
1313
+ def get_index(self):
1314
+ return self.index
1315
+ def set_index(self, index):
1316
+ self.index = index
1317
+ def get_media_type(self):
1318
+ return self.media_type
1319
+ def set_media_type(self, media_type):
1320
+ self.media_type = media_type
1321
+ def validate_RelType(self, value):
1322
+ # Validate type RelType, a restriction on xsd:string.
1323
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
1324
+ if not isinstance(value, str):
1325
+ lineno = self.gds_get_node_lineno_()
1326
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
1327
+ return False
1328
+ value = value
1329
+ enumerations = ['behalf-of-customer']
1330
+ if value not in enumerations:
1331
+ lineno = self.gds_get_node_lineno_()
1332
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd enumeration restriction on RelType' % {"value" : encode_str_2_3(value), "lineno": lineno} )
1333
+ result = False
1334
+ def has__content(self):
1335
+ if (
1336
+
1337
+ ):
1338
+ return True
1339
+ else:
1340
+ return False
1341
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='LinkType', pretty_print=True):
1342
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('LinkType')
1343
+ if imported_ns_def_ is not None:
1344
+ namespacedef_ = imported_ns_def_
1345
+ if pretty_print:
1346
+ eol_ = '\n'
1347
+ else:
1348
+ eol_ = ''
1349
+ if self.original_tagname_ is not None and name_ == 'LinkType':
1350
+ name_ = self.original_tagname_
1351
+ if UseCapturedNS_ and self.ns_prefix_:
1352
+ namespaceprefix_ = self.ns_prefix_ + ':'
1353
+ showIndent(outfile, level, pretty_print)
1354
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1355
+ already_processed = set()
1356
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='LinkType')
1357
+ if self.has__content():
1358
+ outfile.write('>%s' % (eol_, ))
1359
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='LinkType', pretty_print=pretty_print)
1360
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1361
+ else:
1362
+ outfile.write('/>%s' % (eol_, ))
1363
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='LinkType'):
1364
+ if self.href is not None and 'href' not in already_processed:
1365
+ already_processed.add('href')
1366
+ outfile.write(' href=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.href), input_name='href')), ))
1367
+ if self.rel is not None and 'rel' not in already_processed:
1368
+ already_processed.add('rel')
1369
+ outfile.write(' rel=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.rel), input_name='rel')), ))
1370
+ if self.index is not None and 'index' not in already_processed:
1371
+ already_processed.add('index')
1372
+ outfile.write(' index="%s"' % self.gds_format_integer(self.index, input_name='index'))
1373
+ if self.media_type is not None and 'media_type' not in already_processed:
1374
+ already_processed.add('media_type')
1375
+ outfile.write(' media-type=%s' % (self.gds_encode(self.gds_format_string(quote_attrib(self.media_type), input_name='media-type')), ))
1376
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='LinkType', fromsubclass_=False, pretty_print=True):
1377
+ pass
1378
+ def build(self, node, gds_collector_=None):
1379
+ self.gds_collector_ = gds_collector_
1380
+ if SaveElementTreeNode:
1381
+ self.gds_elementtree_node_ = node
1382
+ already_processed = set()
1383
+ self.ns_prefix_ = node.prefix
1384
+ self._buildAttributes(node, node.attrib, already_processed)
1385
+ for child in node:
1386
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1387
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1388
+ return self
1389
+ def _buildAttributes(self, node, attrs, already_processed):
1390
+ value = find_attr_value_('href', node)
1391
+ if value is not None and 'href' not in already_processed:
1392
+ already_processed.add('href')
1393
+ self.href = value
1394
+ value = find_attr_value_('rel', node)
1395
+ if value is not None and 'rel' not in already_processed:
1396
+ already_processed.add('rel')
1397
+ self.rel = value
1398
+ self.validate_RelType(self.rel) # validate type RelType
1399
+ value = find_attr_value_('index', node)
1400
+ if value is not None and 'index' not in already_processed:
1401
+ already_processed.add('index')
1402
+ self.index = self.gds_parse_integer(value, node, 'index')
1403
+ if self.index <= 0:
1404
+ raise_parse_error(node, 'Invalid PositiveInteger')
1405
+ value = find_attr_value_('media-type', node)
1406
+ if value is not None and 'media-type' not in already_processed:
1407
+ already_processed.add('media-type')
1408
+ self.media_type = value
1409
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1410
+ pass
1411
+ # end class LinkType
1412
+
1413
+
1414
+ class ContractsType(GeneratedsSuper):
1415
+ __hash__ = GeneratedsSuper.__hash__
1416
+ subclass = None
1417
+ superclass = None
1418
+ def __init__(self, contract_id=None, gds_collector_=None, **kwargs_):
1419
+ self.gds_collector_ = gds_collector_
1420
+ self.gds_elementtree_node_ = None
1421
+ self.original_tagname_ = None
1422
+ self.parent_object_ = kwargs_.get('parent_object_')
1423
+ self.ns_prefix_ = None
1424
+ if contract_id is None:
1425
+ self.contract_id = []
1426
+ else:
1427
+ self.contract_id = contract_id
1428
+ self.contract_id_nsprefix_ = None
1429
+ def factory(*args_, **kwargs_):
1430
+ if CurrentSubclassModule_ is not None:
1431
+ subclass = getSubclassFromModule_(
1432
+ CurrentSubclassModule_, ContractsType)
1433
+ if subclass is not None:
1434
+ return subclass(*args_, **kwargs_)
1435
+ if ContractsType.subclass:
1436
+ return ContractsType.subclass(*args_, **kwargs_)
1437
+ else:
1438
+ return ContractsType(*args_, **kwargs_)
1439
+ factory = staticmethod(factory)
1440
+ def get_ns_prefix_(self):
1441
+ return self.ns_prefix_
1442
+ def set_ns_prefix_(self, ns_prefix):
1443
+ self.ns_prefix_ = ns_prefix
1444
+ def get_contract_id(self):
1445
+ return self.contract_id
1446
+ def set_contract_id(self, contract_id):
1447
+ self.contract_id = contract_id
1448
+ def add_contract_id(self, value):
1449
+ self.contract_id.append(value)
1450
+ def insert_contract_id_at(self, index, value):
1451
+ self.contract_id.insert(index, value)
1452
+ def replace_contract_id_at(self, index, value):
1453
+ self.contract_id[index] = value
1454
+ def validate_ContractType(self, value):
1455
+ result = True
1456
+ # Validate type ContractType, a restriction on xsd:string.
1457
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
1458
+ if not isinstance(value, str):
1459
+ lineno = self.gds_get_node_lineno_()
1460
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
1461
+ return False
1462
+ if not self.gds_validate_simple_patterns(
1463
+ self.validate_ContractType_patterns_, value):
1464
+ self.gds_collector_.add_message('Value "%s" does not match xsd pattern restrictions: %s' % (encode_str_2_3(value), self.validate_ContractType_patterns_, ))
1465
+ result = False
1466
+ return result
1467
+ validate_ContractType_patterns_ = [['^(\\d{1,10})$']]
1468
+ def has__content(self):
1469
+ if (
1470
+ self.contract_id
1471
+ ):
1472
+ return True
1473
+ else:
1474
+ return False
1475
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='ContractsType', pretty_print=True):
1476
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('ContractsType')
1477
+ if imported_ns_def_ is not None:
1478
+ namespacedef_ = imported_ns_def_
1479
+ if pretty_print:
1480
+ eol_ = '\n'
1481
+ else:
1482
+ eol_ = ''
1483
+ if self.original_tagname_ is not None and name_ == 'ContractsType':
1484
+ name_ = self.original_tagname_
1485
+ if UseCapturedNS_ and self.ns_prefix_:
1486
+ namespaceprefix_ = self.ns_prefix_ + ':'
1487
+ showIndent(outfile, level, pretty_print)
1488
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1489
+ already_processed = set()
1490
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='ContractsType')
1491
+ if self.has__content():
1492
+ outfile.write('>%s' % (eol_, ))
1493
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='ContractsType', pretty_print=pretty_print)
1494
+ showIndent(outfile, level, pretty_print)
1495
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1496
+ else:
1497
+ outfile.write('/>%s' % (eol_, ))
1498
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='ContractsType'):
1499
+ pass
1500
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='ContractsType', fromsubclass_=False, pretty_print=True):
1501
+ if pretty_print:
1502
+ eol_ = '\n'
1503
+ else:
1504
+ eol_ = ''
1505
+ for contract_id_ in self.contract_id:
1506
+ namespaceprefix_ = self.contract_id_nsprefix_ + ':' if (UseCapturedNS_ and self.contract_id_nsprefix_) else ''
1507
+ showIndent(outfile, level, pretty_print)
1508
+ outfile.write('<%scontract-id>%s</%scontract-id>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(contract_id_), input_name='contract-id')), namespaceprefix_ , eol_))
1509
+ def build(self, node, gds_collector_=None):
1510
+ self.gds_collector_ = gds_collector_
1511
+ if SaveElementTreeNode:
1512
+ self.gds_elementtree_node_ = node
1513
+ already_processed = set()
1514
+ self.ns_prefix_ = node.prefix
1515
+ self._buildAttributes(node, node.attrib, already_processed)
1516
+ for child in node:
1517
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1518
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1519
+ return self
1520
+ def _buildAttributes(self, node, attrs, already_processed):
1521
+ pass
1522
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1523
+ if nodeName_ == 'contract-id':
1524
+ value_ = child_.text
1525
+ value_ = self.gds_parse_string(value_, node, 'contract_id')
1526
+ value_ = self.gds_validate_string(value_, node, 'contract_id')
1527
+ self.contract_id.append(value_)
1528
+ self.contract_id_nsprefix_ = child_.prefix
1529
+ # validate type ContractType
1530
+ self.validate_ContractType(self.contract_id[-1])
1531
+ # end class ContractsType
1532
+
1533
+
1534
+ class AuthorizedPayersType(GeneratedsSuper):
1535
+ __hash__ = GeneratedsSuper.__hash__
1536
+ subclass = None
1537
+ superclass = None
1538
+ def __init__(self, payer=None, gds_collector_=None, **kwargs_):
1539
+ self.gds_collector_ = gds_collector_
1540
+ self.gds_elementtree_node_ = None
1541
+ self.original_tagname_ = None
1542
+ self.parent_object_ = kwargs_.get('parent_object_')
1543
+ self.ns_prefix_ = None
1544
+ if payer is None:
1545
+ self.payer = []
1546
+ else:
1547
+ self.payer = payer
1548
+ self.payer_nsprefix_ = None
1549
+ def factory(*args_, **kwargs_):
1550
+ if CurrentSubclassModule_ is not None:
1551
+ subclass = getSubclassFromModule_(
1552
+ CurrentSubclassModule_, AuthorizedPayersType)
1553
+ if subclass is not None:
1554
+ return subclass(*args_, **kwargs_)
1555
+ if AuthorizedPayersType.subclass:
1556
+ return AuthorizedPayersType.subclass(*args_, **kwargs_)
1557
+ else:
1558
+ return AuthorizedPayersType(*args_, **kwargs_)
1559
+ factory = staticmethod(factory)
1560
+ def get_ns_prefix_(self):
1561
+ return self.ns_prefix_
1562
+ def set_ns_prefix_(self, ns_prefix):
1563
+ self.ns_prefix_ = ns_prefix
1564
+ def get_payer(self):
1565
+ return self.payer
1566
+ def set_payer(self, payer):
1567
+ self.payer = payer
1568
+ def add_payer(self, value):
1569
+ self.payer.append(value)
1570
+ def insert_payer_at(self, index, value):
1571
+ self.payer.insert(index, value)
1572
+ def replace_payer_at(self, index, value):
1573
+ self.payer[index] = value
1574
+ def has__content(self):
1575
+ if (
1576
+ self.payer
1577
+ ):
1578
+ return True
1579
+ else:
1580
+ return False
1581
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AuthorizedPayersType', pretty_print=True):
1582
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('AuthorizedPayersType')
1583
+ if imported_ns_def_ is not None:
1584
+ namespacedef_ = imported_ns_def_
1585
+ if pretty_print:
1586
+ eol_ = '\n'
1587
+ else:
1588
+ eol_ = ''
1589
+ if self.original_tagname_ is not None and name_ == 'AuthorizedPayersType':
1590
+ name_ = self.original_tagname_
1591
+ if UseCapturedNS_ and self.ns_prefix_:
1592
+ namespaceprefix_ = self.ns_prefix_ + ':'
1593
+ showIndent(outfile, level, pretty_print)
1594
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1595
+ already_processed = set()
1596
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='AuthorizedPayersType')
1597
+ if self.has__content():
1598
+ outfile.write('>%s' % (eol_, ))
1599
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='AuthorizedPayersType', pretty_print=pretty_print)
1600
+ showIndent(outfile, level, pretty_print)
1601
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1602
+ else:
1603
+ outfile.write('/>%s' % (eol_, ))
1604
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='AuthorizedPayersType'):
1605
+ pass
1606
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='AuthorizedPayersType', fromsubclass_=False, pretty_print=True):
1607
+ if pretty_print:
1608
+ eol_ = '\n'
1609
+ else:
1610
+ eol_ = ''
1611
+ for payer_ in self.payer:
1612
+ namespaceprefix_ = self.payer_nsprefix_ + ':' if (UseCapturedNS_ and self.payer_nsprefix_) else ''
1613
+ payer_.export(outfile, level, namespaceprefix_, namespacedef_='', name_='payer', pretty_print=pretty_print)
1614
+ def build(self, node, gds_collector_=None):
1615
+ self.gds_collector_ = gds_collector_
1616
+ if SaveElementTreeNode:
1617
+ self.gds_elementtree_node_ = node
1618
+ already_processed = set()
1619
+ self.ns_prefix_ = node.prefix
1620
+ self._buildAttributes(node, node.attrib, already_processed)
1621
+ for child in node:
1622
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1623
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1624
+ return self
1625
+ def _buildAttributes(self, node, attrs, already_processed):
1626
+ pass
1627
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1628
+ if nodeName_ == 'payer':
1629
+ obj_ = PayerType.factory(parent_object_=self)
1630
+ obj_.build(child_, gds_collector_=gds_collector_)
1631
+ self.payer.append(obj_)
1632
+ obj_.original_tagname_ = 'payer'
1633
+ # end class AuthorizedPayersType
1634
+
1635
+
1636
+ class PayerType(GeneratedsSuper):
1637
+ __hash__ = GeneratedsSuper.__hash__
1638
+ subclass = None
1639
+ superclass = None
1640
+ def __init__(self, payer_number=None, methods_of_payment=None, gds_collector_=None, **kwargs_):
1641
+ self.gds_collector_ = gds_collector_
1642
+ self.gds_elementtree_node_ = None
1643
+ self.original_tagname_ = None
1644
+ self.parent_object_ = kwargs_.get('parent_object_')
1645
+ self.ns_prefix_ = None
1646
+ self.payer_number = payer_number
1647
+ self.validate_PayerNumberType(self.payer_number)
1648
+ self.payer_number_nsprefix_ = None
1649
+ self.methods_of_payment = methods_of_payment
1650
+ self.methods_of_payment_nsprefix_ = None
1651
+ def factory(*args_, **kwargs_):
1652
+ if CurrentSubclassModule_ is not None:
1653
+ subclass = getSubclassFromModule_(
1654
+ CurrentSubclassModule_, PayerType)
1655
+ if subclass is not None:
1656
+ return subclass(*args_, **kwargs_)
1657
+ if PayerType.subclass:
1658
+ return PayerType.subclass(*args_, **kwargs_)
1659
+ else:
1660
+ return PayerType(*args_, **kwargs_)
1661
+ factory = staticmethod(factory)
1662
+ def get_ns_prefix_(self):
1663
+ return self.ns_prefix_
1664
+ def set_ns_prefix_(self, ns_prefix):
1665
+ self.ns_prefix_ = ns_prefix
1666
+ def get_payer_number(self):
1667
+ return self.payer_number
1668
+ def set_payer_number(self, payer_number):
1669
+ self.payer_number = payer_number
1670
+ def get_methods_of_payment(self):
1671
+ return self.methods_of_payment
1672
+ def set_methods_of_payment(self, methods_of_payment):
1673
+ self.methods_of_payment = methods_of_payment
1674
+ def validate_PayerNumberType(self, value):
1675
+ result = True
1676
+ # Validate type PayerNumberType, a restriction on xsd:normalizedString.
1677
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
1678
+ if not isinstance(value, str):
1679
+ lineno = self.gds_get_node_lineno_()
1680
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
1681
+ return False
1682
+ if not self.gds_validate_simple_patterns(
1683
+ self.validate_PayerNumberType_patterns_, value):
1684
+ self.gds_collector_.add_message('Value "%s" does not match xsd pattern restrictions: %s' % (encode_str_2_3(value), self.validate_PayerNumberType_patterns_, ))
1685
+ result = False
1686
+ return result
1687
+ validate_PayerNumberType_patterns_ = [['^(\\d{1,10})$']]
1688
+ def has__content(self):
1689
+ if (
1690
+ self.payer_number is not None or
1691
+ self.methods_of_payment is not None
1692
+ ):
1693
+ return True
1694
+ else:
1695
+ return False
1696
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PayerType', pretty_print=True):
1697
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('PayerType')
1698
+ if imported_ns_def_ is not None:
1699
+ namespacedef_ = imported_ns_def_
1700
+ if pretty_print:
1701
+ eol_ = '\n'
1702
+ else:
1703
+ eol_ = ''
1704
+ if self.original_tagname_ is not None and name_ == 'PayerType':
1705
+ name_ = self.original_tagname_
1706
+ if UseCapturedNS_ and self.ns_prefix_:
1707
+ namespaceprefix_ = self.ns_prefix_ + ':'
1708
+ showIndent(outfile, level, pretty_print)
1709
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1710
+ already_processed = set()
1711
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='PayerType')
1712
+ if self.has__content():
1713
+ outfile.write('>%s' % (eol_, ))
1714
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='PayerType', pretty_print=pretty_print)
1715
+ showIndent(outfile, level, pretty_print)
1716
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1717
+ else:
1718
+ outfile.write('/>%s' % (eol_, ))
1719
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='PayerType'):
1720
+ pass
1721
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='PayerType', fromsubclass_=False, pretty_print=True):
1722
+ if pretty_print:
1723
+ eol_ = '\n'
1724
+ else:
1725
+ eol_ = ''
1726
+ if self.payer_number is not None:
1727
+ namespaceprefix_ = self.payer_number_nsprefix_ + ':' if (UseCapturedNS_ and self.payer_number_nsprefix_) else ''
1728
+ showIndent(outfile, level, pretty_print)
1729
+ outfile.write('<%spayer-number>%s</%spayer-number>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(self.payer_number), input_name='payer-number')), namespaceprefix_ , eol_))
1730
+ if self.methods_of_payment is not None:
1731
+ namespaceprefix_ = self.methods_of_payment_nsprefix_ + ':' if (UseCapturedNS_ and self.methods_of_payment_nsprefix_) else ''
1732
+ self.methods_of_payment.export(outfile, level, namespaceprefix_, namespacedef_='', name_='methods-of-payment', pretty_print=pretty_print)
1733
+ def build(self, node, gds_collector_=None):
1734
+ self.gds_collector_ = gds_collector_
1735
+ if SaveElementTreeNode:
1736
+ self.gds_elementtree_node_ = node
1737
+ already_processed = set()
1738
+ self.ns_prefix_ = node.prefix
1739
+ self._buildAttributes(node, node.attrib, already_processed)
1740
+ for child in node:
1741
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1742
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1743
+ return self
1744
+ def _buildAttributes(self, node, attrs, already_processed):
1745
+ pass
1746
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1747
+ if nodeName_ == 'payer-number':
1748
+ value_ = child_.text
1749
+ value_ = self.gds_parse_string(value_, node, 'payer_number')
1750
+ value_ = self.gds_validate_string(value_, node, 'payer_number')
1751
+ self.payer_number = value_
1752
+ self.payer_number_nsprefix_ = child_.prefix
1753
+ # validate type PayerNumberType
1754
+ self.validate_PayerNumberType(self.payer_number)
1755
+ elif nodeName_ == 'methods-of-payment':
1756
+ obj_ = MethodsOfPaymentType.factory(parent_object_=self)
1757
+ obj_.build(child_, gds_collector_=gds_collector_)
1758
+ self.methods_of_payment = obj_
1759
+ obj_.original_tagname_ = 'methods-of-payment'
1760
+ # end class PayerType
1761
+
1762
+
1763
+ class MethodsOfPaymentType(GeneratedsSuper):
1764
+ __hash__ = GeneratedsSuper.__hash__
1765
+ subclass = None
1766
+ superclass = None
1767
+ def __init__(self, method_of_payment=None, gds_collector_=None, **kwargs_):
1768
+ self.gds_collector_ = gds_collector_
1769
+ self.gds_elementtree_node_ = None
1770
+ self.original_tagname_ = None
1771
+ self.parent_object_ = kwargs_.get('parent_object_')
1772
+ self.ns_prefix_ = None
1773
+ if method_of_payment is None:
1774
+ self.method_of_payment = []
1775
+ else:
1776
+ self.method_of_payment = method_of_payment
1777
+ self.method_of_payment_nsprefix_ = None
1778
+ def factory(*args_, **kwargs_):
1779
+ if CurrentSubclassModule_ is not None:
1780
+ subclass = getSubclassFromModule_(
1781
+ CurrentSubclassModule_, MethodsOfPaymentType)
1782
+ if subclass is not None:
1783
+ return subclass(*args_, **kwargs_)
1784
+ if MethodsOfPaymentType.subclass:
1785
+ return MethodsOfPaymentType.subclass(*args_, **kwargs_)
1786
+ else:
1787
+ return MethodsOfPaymentType(*args_, **kwargs_)
1788
+ factory = staticmethod(factory)
1789
+ def get_ns_prefix_(self):
1790
+ return self.ns_prefix_
1791
+ def set_ns_prefix_(self, ns_prefix):
1792
+ self.ns_prefix_ = ns_prefix
1793
+ def get_method_of_payment(self):
1794
+ return self.method_of_payment
1795
+ def set_method_of_payment(self, method_of_payment):
1796
+ self.method_of_payment = method_of_payment
1797
+ def add_method_of_payment(self, value):
1798
+ self.method_of_payment.append(value)
1799
+ def insert_method_of_payment_at(self, index, value):
1800
+ self.method_of_payment.insert(index, value)
1801
+ def replace_method_of_payment_at(self, index, value):
1802
+ self.method_of_payment[index] = value
1803
+ def validate_MethodOfPaymentType(self, value):
1804
+ result = True
1805
+ # Validate type MethodOfPaymentType, a restriction on xsd:normalizedString.
1806
+ if value is not None and Validate_simpletypes_ and self.gds_collector_ is not None:
1807
+ if not isinstance(value, str):
1808
+ lineno = self.gds_get_node_lineno_()
1809
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s is not of the correct base simple type (str)' % {"value": value, "lineno": lineno, })
1810
+ return False
1811
+ if len(value) > 15:
1812
+ lineno = self.gds_get_node_lineno_()
1813
+ self.gds_collector_.add_message('Value "%(value)s"%(lineno)s does not match xsd maxLength restriction on MethodOfPaymentType' % {"value": value, "lineno": lineno} )
1814
+ result = False
1815
+ return result
1816
+ def has__content(self):
1817
+ if (
1818
+ self.method_of_payment
1819
+ ):
1820
+ return True
1821
+ else:
1822
+ return False
1823
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MethodsOfPaymentType', pretty_print=True):
1824
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('MethodsOfPaymentType')
1825
+ if imported_ns_def_ is not None:
1826
+ namespacedef_ = imported_ns_def_
1827
+ if pretty_print:
1828
+ eol_ = '\n'
1829
+ else:
1830
+ eol_ = ''
1831
+ if self.original_tagname_ is not None and name_ == 'MethodsOfPaymentType':
1832
+ name_ = self.original_tagname_
1833
+ if UseCapturedNS_ and self.ns_prefix_:
1834
+ namespaceprefix_ = self.ns_prefix_ + ':'
1835
+ showIndent(outfile, level, pretty_print)
1836
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1837
+ already_processed = set()
1838
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='MethodsOfPaymentType')
1839
+ if self.has__content():
1840
+ outfile.write('>%s' % (eol_, ))
1841
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='MethodsOfPaymentType', pretty_print=pretty_print)
1842
+ showIndent(outfile, level, pretty_print)
1843
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1844
+ else:
1845
+ outfile.write('/>%s' % (eol_, ))
1846
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='MethodsOfPaymentType'):
1847
+ pass
1848
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='MethodsOfPaymentType', fromsubclass_=False, pretty_print=True):
1849
+ if pretty_print:
1850
+ eol_ = '\n'
1851
+ else:
1852
+ eol_ = ''
1853
+ for method_of_payment_ in self.method_of_payment:
1854
+ namespaceprefix_ = self.method_of_payment_nsprefix_ + ':' if (UseCapturedNS_ and self.method_of_payment_nsprefix_) else ''
1855
+ showIndent(outfile, level, pretty_print)
1856
+ outfile.write('<%smethod-of-payment>%s</%smethod-of-payment>%s' % (namespaceprefix_ , self.gds_encode(self.gds_format_string(quote_xml(method_of_payment_), input_name='method-of-payment')), namespaceprefix_ , eol_))
1857
+ def build(self, node, gds_collector_=None):
1858
+ self.gds_collector_ = gds_collector_
1859
+ if SaveElementTreeNode:
1860
+ self.gds_elementtree_node_ = node
1861
+ already_processed = set()
1862
+ self.ns_prefix_ = node.prefix
1863
+ self._buildAttributes(node, node.attrib, already_processed)
1864
+ for child in node:
1865
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1866
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1867
+ return self
1868
+ def _buildAttributes(self, node, attrs, already_processed):
1869
+ pass
1870
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1871
+ if nodeName_ == 'method-of-payment':
1872
+ value_ = child_.text
1873
+ value_ = self.gds_parse_string(value_, node, 'method_of_payment')
1874
+ value_ = self.gds_validate_string(value_, node, 'method_of_payment')
1875
+ self.method_of_payment.append(value_)
1876
+ self.method_of_payment_nsprefix_ = child_.prefix
1877
+ # validate type MethodOfPaymentType
1878
+ self.validate_MethodOfPaymentType(self.method_of_payment[-1])
1879
+ # end class MethodsOfPaymentType
1880
+
1881
+
1882
+ class behalf_of_customer(CustomerBaseType):
1883
+ __hash__ = GeneratedsSuper.__hash__
1884
+ subclass = None
1885
+ superclass = CustomerBaseType
1886
+ def __init__(self, customer_number=None, contracts=None, authorized_payers=None, gds_collector_=None, **kwargs_):
1887
+ self.gds_collector_ = gds_collector_
1888
+ self.gds_elementtree_node_ = None
1889
+ self.original_tagname_ = None
1890
+ self.parent_object_ = kwargs_.get('parent_object_')
1891
+ self.ns_prefix_ = None
1892
+ super(globals().get("behalf_of_customer"), self).__init__(customer_number, contracts, authorized_payers, **kwargs_)
1893
+ def factory(*args_, **kwargs_):
1894
+ if CurrentSubclassModule_ is not None:
1895
+ subclass = getSubclassFromModule_(
1896
+ CurrentSubclassModule_, behalf_of_customer)
1897
+ if subclass is not None:
1898
+ return subclass(*args_, **kwargs_)
1899
+ if behalf_of_customer.subclass:
1900
+ return behalf_of_customer.subclass(*args_, **kwargs_)
1901
+ else:
1902
+ return behalf_of_customer(*args_, **kwargs_)
1903
+ factory = staticmethod(factory)
1904
+ def get_ns_prefix_(self):
1905
+ return self.ns_prefix_
1906
+ def set_ns_prefix_(self, ns_prefix):
1907
+ self.ns_prefix_ = ns_prefix
1908
+ def has__content(self):
1909
+ if (
1910
+ super(behalf_of_customer, self).has__content()
1911
+ ):
1912
+ return True
1913
+ else:
1914
+ return False
1915
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='behalf-of-customer', pretty_print=True):
1916
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('behalf-of-customer')
1917
+ if imported_ns_def_ is not None:
1918
+ namespacedef_ = imported_ns_def_
1919
+ if pretty_print:
1920
+ eol_ = '\n'
1921
+ else:
1922
+ eol_ = ''
1923
+ if self.original_tagname_ is not None and name_ == 'behalf-of-customer':
1924
+ name_ = self.original_tagname_
1925
+ if UseCapturedNS_ and self.ns_prefix_:
1926
+ namespaceprefix_ = self.ns_prefix_ + ':'
1927
+ showIndent(outfile, level, pretty_print)
1928
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
1929
+ already_processed = set()
1930
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='behalf-of-customer')
1931
+ if self.has__content():
1932
+ outfile.write('>%s' % (eol_, ))
1933
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='behalf-of-customer', pretty_print=pretty_print)
1934
+ showIndent(outfile, level, pretty_print)
1935
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
1936
+ else:
1937
+ outfile.write('/>%s' % (eol_, ))
1938
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='behalf-of-customer'):
1939
+ super(behalf_of_customer, self)._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='behalf-of-customer')
1940
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='behalf-of-customer', fromsubclass_=False, pretty_print=True):
1941
+ super(behalf_of_customer, self)._exportChildren(outfile, level, namespaceprefix_, namespacedef_, name_, True, pretty_print=pretty_print)
1942
+ def build(self, node, gds_collector_=None):
1943
+ self.gds_collector_ = gds_collector_
1944
+ if SaveElementTreeNode:
1945
+ self.gds_elementtree_node_ = node
1946
+ already_processed = set()
1947
+ self.ns_prefix_ = node.prefix
1948
+ self._buildAttributes(node, node.attrib, already_processed)
1949
+ for child in node:
1950
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
1951
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
1952
+ return self
1953
+ def _buildAttributes(self, node, attrs, already_processed):
1954
+ super(behalf_of_customer, self)._buildAttributes(node, attrs, already_processed)
1955
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
1956
+ super(behalf_of_customer, self)._buildChildren(child_, node, nodeName_, True)
1957
+ pass
1958
+ # end class behalf_of_customer
1959
+
1960
+
1961
+ class customer(CustomerBaseType):
1962
+ __hash__ = GeneratedsSuper.__hash__
1963
+ subclass = None
1964
+ superclass = CustomerBaseType
1965
+ def __init__(self, customer_number=None, contracts=None, authorized_payers=None, links=None, gds_collector_=None, **kwargs_):
1966
+ self.gds_collector_ = gds_collector_
1967
+ self.gds_elementtree_node_ = None
1968
+ self.original_tagname_ = None
1969
+ self.parent_object_ = kwargs_.get('parent_object_')
1970
+ self.ns_prefix_ = None
1971
+ super(globals().get("customer"), self).__init__(customer_number, contracts, authorized_payers, **kwargs_)
1972
+ self.links = links
1973
+ self.links_nsprefix_ = None
1974
+ def factory(*args_, **kwargs_):
1975
+ if CurrentSubclassModule_ is not None:
1976
+ subclass = getSubclassFromModule_(
1977
+ CurrentSubclassModule_, customer)
1978
+ if subclass is not None:
1979
+ return subclass(*args_, **kwargs_)
1980
+ if customer.subclass:
1981
+ return customer.subclass(*args_, **kwargs_)
1982
+ else:
1983
+ return customer(*args_, **kwargs_)
1984
+ factory = staticmethod(factory)
1985
+ def get_ns_prefix_(self):
1986
+ return self.ns_prefix_
1987
+ def set_ns_prefix_(self, ns_prefix):
1988
+ self.ns_prefix_ = ns_prefix
1989
+ def get_links(self):
1990
+ return self.links
1991
+ def set_links(self, links):
1992
+ self.links = links
1993
+ def has__content(self):
1994
+ if (
1995
+ self.links is not None or
1996
+ super(customer, self).has__content()
1997
+ ):
1998
+ return True
1999
+ else:
2000
+ return False
2001
+ def export(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='customer', pretty_print=True):
2002
+ imported_ns_def_ = GenerateDSNamespaceDefs_.get('customer')
2003
+ if imported_ns_def_ is not None:
2004
+ namespacedef_ = imported_ns_def_
2005
+ if pretty_print:
2006
+ eol_ = '\n'
2007
+ else:
2008
+ eol_ = ''
2009
+ if self.original_tagname_ is not None and name_ == 'customer':
2010
+ name_ = self.original_tagname_
2011
+ if UseCapturedNS_ and self.ns_prefix_:
2012
+ namespaceprefix_ = self.ns_prefix_ + ':'
2013
+ showIndent(outfile, level, pretty_print)
2014
+ outfile.write('<%s%s%s' % (namespaceprefix_, name_, namespacedef_ and ' ' + namespacedef_ or '', ))
2015
+ already_processed = set()
2016
+ self._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='customer')
2017
+ if self.has__content():
2018
+ outfile.write('>%s' % (eol_, ))
2019
+ self._exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, name_='customer', pretty_print=pretty_print)
2020
+ showIndent(outfile, level, pretty_print)
2021
+ outfile.write('</%s%s>%s' % (namespaceprefix_, name_, eol_))
2022
+ else:
2023
+ outfile.write('/>%s' % (eol_, ))
2024
+ def _exportAttributes(self, outfile, level, already_processed, namespaceprefix_='', name_='customer'):
2025
+ super(customer, self)._exportAttributes(outfile, level, already_processed, namespaceprefix_, name_='customer')
2026
+ def _exportChildren(self, outfile, level, namespaceprefix_='', namespacedef_='', name_='customer', fromsubclass_=False, pretty_print=True):
2027
+ super(customer, self)._exportChildren(outfile, level, namespaceprefix_, namespacedef_, name_, True, pretty_print=pretty_print)
2028
+ if pretty_print:
2029
+ eol_ = '\n'
2030
+ else:
2031
+ eol_ = ''
2032
+ if self.links is not None:
2033
+ namespaceprefix_ = self.links_nsprefix_ + ':' if (UseCapturedNS_ and self.links_nsprefix_) else ''
2034
+ self.links.export(outfile, level, namespaceprefix_, namespacedef_='', name_='links', pretty_print=pretty_print)
2035
+ def build(self, node, gds_collector_=None):
2036
+ self.gds_collector_ = gds_collector_
2037
+ if SaveElementTreeNode:
2038
+ self.gds_elementtree_node_ = node
2039
+ already_processed = set()
2040
+ self.ns_prefix_ = node.prefix
2041
+ self._buildAttributes(node, node.attrib, already_processed)
2042
+ for child in node:
2043
+ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1]
2044
+ self._buildChildren(child, node, nodeName_, gds_collector_=gds_collector_)
2045
+ return self
2046
+ def _buildAttributes(self, node, attrs, already_processed):
2047
+ super(customer, self)._buildAttributes(node, attrs, already_processed)
2048
+ def _buildChildren(self, child_, node, nodeName_, fromsubclass_=False, gds_collector_=None):
2049
+ if nodeName_ == 'links':
2050
+ obj_ = MoboLinksType.factory(parent_object_=self)
2051
+ obj_.build(child_, gds_collector_=gds_collector_)
2052
+ self.links = obj_
2053
+ obj_.original_tagname_ = 'links'
2054
+ super(customer, self)._buildChildren(child_, node, nodeName_, True)
2055
+ # end class customer
2056
+
2057
+
2058
+ #
2059
+ # End data representation classes.
2060
+ #
2061
+
2062
+
2063
+ GDSClassesMapping = {
2064
+ }
2065
+
2066
+
2067
+ USAGE_TEXT = """
2068
+ Usage: python <Parser>.py [ -s ] <in_xml_file>
2069
+ """
2070
+
2071
+
2072
+ def usage():
2073
+ print(USAGE_TEXT)
2074
+ sys.exit(1)
2075
+
2076
+
2077
+ def get_root_tag(node):
2078
+ tag = Tag_pattern_.match(node.tag).groups()[-1]
2079
+ prefix_tag = TagNamePrefix + tag
2080
+ rootClass = GDSClassesMapping.get(prefix_tag)
2081
+ if rootClass is None:
2082
+ rootClass = globals().get(prefix_tag)
2083
+ return tag, rootClass
2084
+
2085
+
2086
+ def get_required_ns_prefix_defs(rootNode):
2087
+ '''Get all name space prefix definitions required in this XML doc.
2088
+ Return a dictionary of definitions and a char string of definitions.
2089
+ '''
2090
+ nsmap = {
2091
+ prefix: uri
2092
+ for node in rootNode.iter()
2093
+ for (prefix, uri) in node.nsmap.items()
2094
+ if prefix is not None
2095
+ }
2096
+ namespacedefs = ' '.join([
2097
+ 'xmlns:{}="{}"'.format(prefix, uri)
2098
+ for prefix, uri in nsmap.items()
2099
+ ])
2100
+ return nsmap, namespacedefs
2101
+
2102
+
2103
+ def parse(inFileName, silence=False, print_warnings=True):
2104
+ global CapturedNsmap_
2105
+ gds_collector = GdsCollector_()
2106
+ parser = None
2107
+ doc = parsexml_(inFileName, parser)
2108
+ rootNode = doc.getroot()
2109
+ rootTag, rootClass = get_root_tag(rootNode)
2110
+ if rootClass is None:
2111
+ rootTag = 'customer'
2112
+ rootClass = customer
2113
+ rootObj = rootClass.factory()
2114
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2115
+ CapturedNsmap_, namespacedefs = get_required_ns_prefix_defs(rootNode)
2116
+ if not SaveElementTreeNode:
2117
+ doc = None
2118
+ rootNode = None
2119
+ if not silence:
2120
+ sys.stdout.write('<?xml version="1.0" ?>\n')
2121
+ rootObj.export(
2122
+ sys.stdout, 0, name_=rootTag,
2123
+ namespacedef_=namespacedefs,
2124
+ pretty_print=True)
2125
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2126
+ separator = ('-' * 50) + '\n'
2127
+ sys.stderr.write(separator)
2128
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2129
+ len(gds_collector.get_messages()), ))
2130
+ gds_collector.write_messages(sys.stderr)
2131
+ sys.stderr.write(separator)
2132
+ return rootObj
2133
+
2134
+
2135
+ def parseEtree(inFileName, silence=False, print_warnings=True,
2136
+ mapping=None, reverse_mapping=None, nsmap=None):
2137
+ parser = None
2138
+ doc = parsexml_(inFileName, parser)
2139
+ gds_collector = GdsCollector_()
2140
+ rootNode = doc.getroot()
2141
+ rootTag, rootClass = get_root_tag(rootNode)
2142
+ if rootClass is None:
2143
+ rootTag = 'customer'
2144
+ rootClass = customer
2145
+ rootObj = rootClass.factory()
2146
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2147
+ if mapping is None:
2148
+ mapping = {}
2149
+ if reverse_mapping is None:
2150
+ reverse_mapping = {}
2151
+ rootElement = rootObj.to_etree(
2152
+ None, name_=rootTag, mapping_=mapping,
2153
+ reverse_mapping_=reverse_mapping, nsmap_=nsmap)
2154
+ reverse_node_mapping = rootObj.gds_reverse_node_mapping(mapping)
2155
+ # Enable Python to collect the space used by the DOM.
2156
+ if not SaveElementTreeNode:
2157
+ doc = None
2158
+ rootNode = None
2159
+ if not silence:
2160
+ content = etree_.tostring(
2161
+ rootElement, pretty_print=True,
2162
+ xml_declaration=True, encoding="utf-8")
2163
+ sys.stdout.write(str(content))
2164
+ sys.stdout.write('\n')
2165
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2166
+ separator = ('-' * 50) + '\n'
2167
+ sys.stderr.write(separator)
2168
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2169
+ len(gds_collector.get_messages()), ))
2170
+ gds_collector.write_messages(sys.stderr)
2171
+ sys.stderr.write(separator)
2172
+ return rootObj, rootElement, mapping, reverse_node_mapping
2173
+
2174
+
2175
+ def parseString(inString, silence=False, print_warnings=True):
2176
+ '''Parse a string, create the object tree, and export it.
2177
+
2178
+ Arguments:
2179
+ - inString -- A string. This XML fragment should not start
2180
+ with an XML declaration containing an encoding.
2181
+ - silence -- A boolean. If False, export the object.
2182
+ Returns -- The root object in the tree.
2183
+ '''
2184
+ parser = None
2185
+ rootNode= parsexmlstring_(inString, parser)
2186
+ gds_collector = GdsCollector_()
2187
+ rootTag, rootClass = get_root_tag(rootNode)
2188
+ if rootClass is None:
2189
+ rootTag = 'customer'
2190
+ rootClass = customer
2191
+ rootObj = rootClass.factory()
2192
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2193
+ if not SaveElementTreeNode:
2194
+ rootNode = None
2195
+ if not silence:
2196
+ sys.stdout.write('<?xml version="1.0" ?>\n')
2197
+ rootObj.export(
2198
+ sys.stdout, 0, name_=rootTag,
2199
+ namespacedef_='')
2200
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2201
+ separator = ('-' * 50) + '\n'
2202
+ sys.stderr.write(separator)
2203
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2204
+ len(gds_collector.get_messages()), ))
2205
+ gds_collector.write_messages(sys.stderr)
2206
+ sys.stderr.write(separator)
2207
+ return rootObj
2208
+
2209
+
2210
+ def parseLiteral(inFileName, silence=False, print_warnings=True):
2211
+ parser = None
2212
+ doc = parsexml_(inFileName, parser)
2213
+ gds_collector = GdsCollector_()
2214
+ rootNode = doc.getroot()
2215
+ rootTag, rootClass = get_root_tag(rootNode)
2216
+ if rootClass is None:
2217
+ rootTag = 'customer'
2218
+ rootClass = customer
2219
+ rootObj = rootClass.factory()
2220
+ rootObj.build(rootNode, gds_collector_=gds_collector)
2221
+ # Enable Python to collect the space used by the DOM.
2222
+ if not SaveElementTreeNode:
2223
+ doc = None
2224
+ rootNode = None
2225
+ if not silence:
2226
+ sys.stdout.write('#from customerinfo import *\n\n')
2227
+ sys.stdout.write('import customerinfo as model_\n\n')
2228
+ sys.stdout.write('rootObj = model_.rootClass(\n')
2229
+ rootObj.exportLiteral(sys.stdout, 0, name_=rootTag)
2230
+ sys.stdout.write(')\n')
2231
+ if print_warnings and len(gds_collector.get_messages()) > 0:
2232
+ separator = ('-' * 50) + '\n'
2233
+ sys.stderr.write(separator)
2234
+ sys.stderr.write('----- Warnings -- count: {} -----\n'.format(
2235
+ len(gds_collector.get_messages()), ))
2236
+ gds_collector.write_messages(sys.stderr)
2237
+ sys.stderr.write(separator)
2238
+ return rootObj
2239
+
2240
+
2241
+ def main():
2242
+ args = sys.argv[1:]
2243
+ if len(args) == 1:
2244
+ parse(args[0])
2245
+ else:
2246
+ usage()
2247
+
2248
+
2249
+ if __name__ == '__main__':
2250
+ #import pdb; pdb.set_trace()
2251
+ main()
2252
+
2253
+ RenameMappings_ = {
2254
+ }
2255
+
2256
+ #
2257
+ # Mapping of namespaces to types defined in them
2258
+ # and the file in which each is defined.
2259
+ # simpleTypes are marked "ST" and complexTypes "CT".
2260
+ NamespaceToDefMappings_ = {'http://www.canadapost.ca/ws/customer': [('RelType',
2261
+ './schemas/customerinfo.xsd',
2262
+ 'ST'),
2263
+ ('CustomerIDType',
2264
+ './schemas/customerinfo.xsd',
2265
+ 'ST'),
2266
+ ('ContractType',
2267
+ './schemas/customerinfo.xsd',
2268
+ 'ST'),
2269
+ ('PayerNumberType',
2270
+ './schemas/customerinfo.xsd',
2271
+ 'ST'),
2272
+ ('MethodOfPaymentType',
2273
+ './schemas/customerinfo.xsd',
2274
+ 'ST'),
2275
+ ('CustomerBaseType',
2276
+ './schemas/customerinfo.xsd',
2277
+ 'CT'),
2278
+ ('MoboLinksType',
2279
+ './schemas/customerinfo.xsd',
2280
+ 'CT'),
2281
+ ('LinkType',
2282
+ './schemas/customerinfo.xsd',
2283
+ 'CT'),
2284
+ ('ContractsType',
2285
+ './schemas/customerinfo.xsd',
2286
+ 'CT'),
2287
+ ('AuthorizedPayersType',
2288
+ './schemas/customerinfo.xsd',
2289
+ 'CT'),
2290
+ ('PayerType',
2291
+ './schemas/customerinfo.xsd',
2292
+ 'CT'),
2293
+ ('MethodsOfPaymentType',
2294
+ './schemas/customerinfo.xsd',
2295
+ 'CT')]}
2296
+
2297
+ __all__ = [
2298
+ "AuthorizedPayersType",
2299
+ "ContractsType",
2300
+ "CustomerBaseType",
2301
+ "LinkType",
2302
+ "MethodsOfPaymentType",
2303
+ "MoboLinksType",
2304
+ "PayerType",
2305
+ "behalf_of_customer",
2306
+ "customer"
2307
+ ]