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