summaryrefslogtreecommitdiffstats
path: root/google_appengine/google/appengine/api/validation.pyc
blob: ccfed3ec7333b63347c60a43e00e6f12867e6993 (plain)
ofshex dumpascii
0000 d1 f2 0d 0a 26 08 a0 4a 63 00 00 00 00 00 00 00 00 06 00 00 00 40 00 00 00 73 b3 01 00 00 64 00 ....&..Jc............@...s....d.
0020 00 5a 00 00 64 01 00 64 02 00 6b 01 00 5a 01 00 64 01 00 64 02 00 6b 02 00 5a 02 00 64 01 00 64 .Z..d..d..k..Z..d..d..k..Z..d..d
0040 02 00 6b 03 00 5a 03 00 64 03 00 65 04 00 66 01 00 64 04 00 84 00 00 83 00 00 59 5a 05 00 64 05 ..k..Z..d..e..f..d........YZ..d.
0060 00 65 05 00 66 01 00 64 06 00 84 00 00 83 00 00 59 5a 06 00 64 07 00 65 05 00 66 01 00 64 08 00 .e..f..d........YZ..d..e..f..d..
0080 84 00 00 83 00 00 59 5a 07 00 64 09 00 65 07 00 66 01 00 64 0a 00 84 00 00 83 00 00 59 5a 08 00 ......YZ..d..e..f..d........YZ..
00a0 64 0b 00 84 00 00 5a 09 00 64 0c 00 65 0a 00 66 01 00 64 0d 00 84 00 00 83 00 00 59 5a 0b 00 64 d.....Z..d..e..f..d........YZ..d
00c0 0e 00 65 0a 00 66 01 00 64 0f 00 84 00 00 83 00 00 59 5a 0c 00 64 10 00 65 0c 00 66 01 00 64 11 ..e..f..d........YZ..d..e..f..d.
00e0 00 84 00 00 83 00 00 59 5a 0d 00 65 0d 00 65 0e 00 83 01 00 5a 0f 00 65 0d 00 65 10 00 83 01 00 .......YZ..e..e.....Z..e..e.....
0100 5a 11 00 65 0d 00 65 12 00 83 01 00 5a 13 00 65 0d 00 65 14 00 83 01 00 5a 15 00 65 0d 00 65 16 Z..e..e.....Z..e..e.....Z..e..e.
0120 00 83 01 00 5a 17 00 65 0d 00 65 18 00 83 01 00 5a 19 00 64 12 00 65 0c 00 66 01 00 64 13 00 84 ....Z..e..e.....Z..d..e..f..d...
0140 00 00 83 00 00 59 5a 1a 00 64 14 00 65 0c 00 66 01 00 64 15 00 84 00 00 83 00 00 59 5a 1b 00 64 .....YZ..d..e..f..d........YZ..d
0160 16 00 65 0c 00 66 01 00 64 17 00 84 00 00 83 00 00 59 5a 1c 00 64 18 00 65 0a 00 66 01 00 64 19 ..e..f..d........YZ..d..e..f..d.
0180 00 84 00 00 83 00 00 59 5a 1d 00 64 1a 00 65 0c 00 66 01 00 64 1b 00 84 00 00 83 00 00 59 5a 1e .......YZ..d..e..f..d........YZ.
01a0 00 64 1c 00 65 0c 00 66 01 00 64 1d 00 84 00 00 83 00 00 59 5a 1f 00 64 1e 00 65 0c 00 66 01 00 .d..e..f..d........YZ..d..e..f..
01c0 64 1f 00 84 00 00 83 00 00 59 5a 20 00 64 02 00 53 28 20 00 00 00 73 8e 03 00 00 56 61 6c 69 64 d........YZ..d..S(....s....Valid
01e0 61 74 69 6f 6e 20 74 6f 6f 6c 73 20 66 6f 72 20 67 65 6e 65 72 69 63 20 6f 62 6a 65 63 74 20 73 ation.tools.for.generic.object.s
0200 74 72 75 63 74 75 72 65 73 2e 0a 0a 54 68 69 73 20 6c 69 62 72 61 72 79 20 69 73 20 75 73 65 64 tructures...This.library.is.used
0220 20 66 6f 72 20 64 65 66 69 6e 69 6e 67 20 63 6c 61 73 73 65 73 20 77 69 74 68 20 63 6f 6e 73 74 .for.defining.classes.with.const
0240 72 61 69 6e 65 64 20 61 74 74 72 69 62 75 74 65 73 2e 0a 41 74 74 72 69 62 75 74 65 73 20 61 72 rained.attributes..Attributes.ar
0260 65 20 64 65 66 69 6e 65 64 20 6f 6e 20 74 68 65 20 63 6c 61 73 73 20 77 68 69 63 68 20 63 6f 6e e.defined.on.the.class.which.con
0280 74 61 69 6e 73 20 74 68 65 6d 20 75 73 69 6e 67 20 76 61 6c 69 64 61 74 6f 72 73 2e 0a 41 6c 74 tains.them.using.validators..Alt
02a0 68 6f 75 67 68 20 76 61 6c 69 64 61 74 6f 72 73 20 63 61 6e 20 62 65 20 64 65 66 69 6e 65 64 20 hough.validators.can.be.defined.
02c0 62 79 20 61 6e 79 20 63 6c 69 65 6e 74 20 6f 66 20 74 68 69 73 20 6c 69 62 72 61 72 79 2c 20 61 by.any.client.of.this.library,.a
02e0 20 6e 75 6d 62 65 72 0a 6f 66 20 73 74 61 6e 64 61 72 64 20 76 61 6c 69 64 61 74 6f 72 73 20 61 .number.of.standard.validators.a
0300 72 65 20 70 72 6f 76 69 64 65 64 20 68 65 72 65 2e 0a 0a 56 61 6c 69 64 61 74 6f 72 73 20 63 61 re.provided.here...Validators.ca
0320 6e 20 62 65 20 61 6e 79 20 63 61 6c 6c 61 62 6c 65 20 74 68 61 74 20 74 61 6b 65 73 20 61 20 73 n.be.any.callable.that.takes.a.s
0340 69 6e 67 6c 65 20 70 61 72 61 6d 65 74 65 72 20 77 68 69 63 68 20 63 68 65 63 6b 73 0a 74 68 65 ingle.parameter.which.checks.the
0360 20 6e 65 77 20 76 61 6c 75 65 20 62 65 66 6f 72 65 20 69 74 20 69 73 20 61 73 73 69 67 6e 65 64 .new.value.before.it.is.assigned
0380 20 74 6f 20 74 68 65 20 61 74 74 72 69 62 75 74 65 2e 20 20 56 61 6c 69 64 61 74 6f 72 73 20 61 .to.the.attribute...Validators.a
03a0 72 65 0a 70 65 72 6d 69 74 74 65 64 20 74 6f 20 6d 6f 64 69 66 79 20 61 20 72 65 63 65 69 76 65 re.permitted.to.modify.a.receive
03c0 64 20 76 61 6c 75 65 20 73 6f 20 74 68 61 74 20 69 74 20 69 73 20 61 70 70 72 6f 70 72 69 61 74 d.value.so.that.it.is.appropriat
03e0 65 20 66 6f 72 20 74 68 65 0a 61 74 74 72 69 62 75 74 65 20 64 65 66 69 6e 69 74 69 6f 6e 2e 20 e.for.the.attribute.definition..
0400 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 75 73 69 6e 67 20 69 6e 74 20 61 73 20 61 20 76 61 6c .For.example,.using.int.as.a.val
0420 69 64 61 74 6f 72 20 77 69 6c 6c 20 63 61 73 74 0a 61 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 idator.will.cast.a.correctly.for
0440 6d 61 74 74 65 64 20 73 74 72 69 6e 67 20 74 6f 20 61 20 6e 75 6d 62 65 72 2c 20 6f 72 20 72 61 matted.string.to.a.number,.or.ra
0460 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 69 74 0a 63 61 6e 20 6e 6f 74 2e 20 ise.an.exception.if.it.can.not..
0480 20 54 68 69 73 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 6d 65 6e 64 65 64 2c 20 68 6f 77 65 76 65 .This.is.not.recommended,.howeve
04a0 72 2e 20 20 74 68 65 20 63 6f 72 72 65 63 74 20 77 61 79 20 74 6f 20 75 73 65 20 61 0a 76 61 6c r...the.correct.way.to.use.a.val
04c0 69 64 61 74 6f 72 20 74 68 61 74 20 65 6e 73 75 72 65 20 74 68 65 20 63 6f 72 72 65 63 74 20 74 idator.that.ensure.the.correct.t
04e0 79 70 65 20 69 73 20 74 6f 20 75 73 65 20 74 68 65 20 54 79 70 65 20 76 61 6c 69 64 61 74 6f 72 ype.is.to.use.the.Type.validator
0500 2e 0a 0a 54 68 69 73 20 76 61 6c 69 64 61 74 69 6f 6e 20 6c 69 62 72 61 72 79 20 69 73 20 6d 61 ...This.validation.library.is.ma
0520 69 6e 6c 79 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 20 75 73 65 20 77 69 74 68 20 74 68 65 20 59 inly.intended.for.use.with.the.Y
0540 41 4d 4c 20 6f 62 6a 65 63 74 0a 62 75 69 6c 64 65 72 2e 20 20 53 65 65 20 79 61 6d 6c 5f 6f 62 AML.object.builder...See.yaml_ob
0560 6a 65 63 74 2e 70 79 2e 0a 69 ff ff ff ff 4e 74 05 00 00 00 45 72 72 6f 72 63 00 00 00 00 00 00 ject.py..i....Nt....Errorc......
0580 00 00 01 00 00 00 42 00 00 00 73 0e 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 52 53 28 01 00 ......B...s....e..Z..d..Z..RS(..
05a0 00 00 73 22 00 00 00 42 61 73 65 20 63 6c 61 73 73 20 66 6f 72 20 61 6c 6c 20 70 61 63 6b 61 67 ..s"...Base.class.for.all.packag
05c0 65 20 65 72 72 6f 72 73 2e 28 03 00 00 00 74 08 00 00 00 5f 5f 6e 61 6d 65 5f 5f 74 0a 00 00 00 e.errors.(....t....__name__t....
05e0 5f 5f 6d 6f 64 75 6c 65 5f 5f 74 07 00 00 00 5f 5f 64 6f 63 5f 5f 28 00 00 00 00 28 00 00 00 00 __module__t....__doc__(....(....
0600 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f (....sG.../home/zx2c4/Desktop/go
0620 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f ogle_appengine/google/appengine/
0640 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 00 00 00 00 2f 00 00 00 73 02 00 00 00 06 api/validation.pyR..../...s.....
0660 01 74 18 00 00 00 41 74 74 72 69 62 75 74 65 44 65 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 63 00 .t....AttributeDefinitionErrorc.
0680 00 00 00 00 00 00 00 01 00 00 00 42 00 00 00 73 0e 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 ...........B...s....e..Z..d..Z..
06a0 52 53 28 01 00 00 00 73 38 00 00 00 41 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20 69 6e RS(....s8...An.error.occurred.in
06c0 20 74 68 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 63 6c 61 73 73 20 61 74 74 72 69 62 75 .the.definition.of.class.attribu
06e0 74 65 73 2e 28 03 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 28 00 00 00 00 28 00 00 tes.(....R....R....R....(....(..
0700 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f ..(....sG.../home/zx2c4/Desktop/
0720 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e google_appengine/google/appengin
0740 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 04 00 00 00 33 00 00 00 73 02 00 00 e/api/validation.pyR....3...s...
0760 00 06 01 74 0f 00 00 00 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 63 00 00 00 00 00 00 00 00 ...t....ValidationErrorc........
0780 02 00 00 00 42 00 00 00 73 23 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 64 03 00 64 01 00 84 ....B...s#...e..Z..d..Z..d..d...
07a0 01 00 5a 04 00 64 02 00 84 00 00 5a 05 00 52 53 28 04 00 00 00 73 34 00 00 00 42 61 73 65 20 63 ..Z..d.....Z..RS(....s4...Base.c
07c0 6c 61 73 73 20 66 6f 72 20 72 61 69 73 69 6e 67 20 65 78 63 65 70 74 69 6f 6e 73 20 64 75 72 69 lass.for.raising.exceptions.duri
07e0 6e 67 20 76 61 6c 69 64 61 74 69 6f 6e 2e 63 03 00 00 00 03 00 00 00 04 00 00 00 43 00 00 00 73 ng.validation.c............C...s
0800 5a 00 00 00 74 00 00 7c 02 00 64 01 00 83 02 00 6f 24 00 01 7c 02 00 69 01 00 6f 1a 00 01 74 02 Z...t..|..d.....o$..|..i..o...t.
0820 00 69 03 00 7c 00 00 7c 01 00 7c 02 00 69 01 00 8c 02 00 01 6e 11 00 01 74 02 00 69 03 00 7c 00 .i..|..|..|..i......n...t..i..|.
0840 00 7c 01 00 83 02 00 01 7c 01 00 7c 00 00 5f 04 00 7c 02 00 7c 00 00 5f 05 00 64 02 00 53 28 03 .|......|..|.._..|..|.._..d..S(.
0860 00 00 00 73 15 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 20 65 78 63 65 70 74 69 6f 6e 2e 74 04 00 ...s....Initialize.exception.t..
0880 00 00 61 72 67 73 4e 28 06 00 00 00 74 07 00 00 00 68 61 73 61 74 74 72 52 06 00 00 00 52 00 00 ..argsN(....t....hasattrR....R..
08a0 00 00 74 08 00 00 00 5f 5f 69 6e 69 74 5f 5f 74 07 00 00 00 6d 65 73 73 61 67 65 74 05 00 00 00 ..t....__init__t....messaget....
08c0 63 61 75 73 65 28 03 00 00 00 74 04 00 00 00 73 65 6c 66 52 09 00 00 00 52 0a 00 00 00 28 00 00 cause(....t....selfR....R....(..
08e0 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f ..(....sG.../home/zx2c4/Desktop/
0900 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e google_appengine/google/appengin
0920 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 3a 00 00 00 73 0a 00 00 e/api/validation.pyR....:...s...
0940 00 00 02 1a 01 1a 02 10 01 09 01 63 01 00 00 00 01 00 00 00 02 00 00 00 43 00 00 00 73 0d 00 00 ...........c............C...s...
0960 00 74 00 00 7c 00 00 69 01 00 83 01 00 53 28 01 00 00 00 4e 28 02 00 00 00 74 03 00 00 00 73 74 .t..|..i.....S(....N(....t....st
0980 72 52 09 00 00 00 28 01 00 00 00 52 0b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f rR....(....R....(....(....sG.../
09a0 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 home/zx2c4/Desktop/google_appeng
09c0 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 ine/google/appengine/api/validat
09e0 69 6f 6e 2e 70 79 74 07 00 00 00 5f 5f 73 74 72 5f 5f 43 00 00 00 73 02 00 00 00 00 01 4e 28 06 ion.pyt....__str__C...s......N(.
0a00 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 74 04 00 00 00 4e 6f 6e 65 52 08 00 00 00 ...R....R....R....t....NoneR....
0a20 52 0d 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a R....(....(....(....sG.../home/z
0a40 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f x2c4/Desktop/google_appengine/go
0a60 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 ogle/appengine/api/validation.py
0a80 52 05 00 00 00 37 00 00 00 73 06 00 00 00 06 01 06 02 0c 09 74 10 00 00 00 4d 69 73 73 69 6e 67 R....7...s..........t....Missing
0aa0 41 74 74 72 69 62 75 74 65 63 00 00 00 00 00 00 00 00 01 00 00 00 42 00 00 00 73 0e 00 00 00 65 Attributec............B...s....e
0ac0 00 00 5a 01 00 64 00 00 5a 02 00 52 53 28 01 00 00 00 73 38 00 00 00 52 61 69 73 65 64 20 77 68 ..Z..d..Z..RS(....s8...Raised.wh
0ae0 65 6e 20 61 20 72 65 71 75 69 72 65 64 20 61 74 74 72 69 62 75 74 65 20 69 73 20 6d 69 73 73 69 en.a.required.attribute.is.missi
0b00 6e 67 20 66 72 6f 6d 20 6f 62 6a 65 63 74 2e 28 03 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 ng.from.object.(....R....R....R.
0b20 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 ...(....(....(....sG.../home/zx2
0b40 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 c4/Desktop/google_appengine/goog
0b60 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 0f le/appengine/api/validation.pyR.
0b80 00 00 00 47 00 00 00 73 02 00 00 00 06 01 63 01 00 00 00 01 00 00 00 05 00 00 00 43 00 00 00 73 ...G...s......c............C...s
0ba0 9e 00 00 00 74 00 00 7c 00 00 74 01 00 74 02 00 66 02 00 83 02 00 6f 14 00 01 74 03 00 7c 00 00 ....t..|..t..t..f.....o...t..|..
0bc0 74 04 00 7c 00 00 83 01 00 83 02 00 53 01 74 00 00 7c 00 00 74 04 00 83 02 00 6f 0b 00 01 74 05 t..|........S.t..|..t.....o...t.
0be0 00 7c 00 00 83 01 00 53 01 74 00 00 7c 00 00 74 06 00 74 07 00 74 08 00 66 03 00 83 02 00 6f 11 .|.....S.t..|..t..t..t..f.....o.
0c00 00 01 74 09 00 74 07 00 7c 00 00 83 01 00 8c 00 00 53 01 74 00 00 7c 00 00 74 0a 00 83 02 00 6f ..t..t..|........S.t..|..t.....o
0c20 05 00 01 7c 00 00 53 01 74 0b 00 64 01 00 74 01 00 7c 00 00 83 01 00 16 83 01 00 82 01 00 64 02 ...|..S.t..d..t..|............d.
0c40 00 53 28 03 00 00 00 73 dd 01 00 00 57 72 61 70 20 76 61 72 69 6f 75 73 20 74 79 70 65 73 20 61 .S(....s....Wrap.various.types.a
0c60 73 20 69 6e 73 74 61 6e 63 65 73 20 6f 66 20 61 20 76 61 6c 69 64 61 74 6f 72 2e 0a 0a 20 20 55 s.instances.of.a.validator.....U
0c80 73 65 64 20 74 6f 20 61 6c 6c 6f 77 20 73 68 6f 72 74 68 61 6e 64 20 66 6f 72 20 63 6f 6d 6d 6f sed.to.allow.shorthand.for.commo
0ca0 6e 20 76 61 6c 69 64 61 74 6f 72 20 74 79 70 65 73 2e 20 20 49 74 0a 20 20 63 6f 6e 76 65 72 74 n.validator.types...It...convert
0cc0 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 79 70 65 73 20 74 6f 20 74 68 65 20 66 6f 6c s.the.following.types.to.the.fol
0ce0 6c 6f 77 69 6e 67 20 56 61 6c 69 64 61 74 6f 72 73 2e 0a 0a 20 20 20 20 73 74 72 69 6e 67 73 20 lowing.Validators.......strings.
0d00 2d 3e 20 52 65 67 65 78 0a 20 20 20 20 74 79 70 65 20 2d 3e 20 54 79 70 65 0a 20 20 20 20 63 6f ->.Regex.....type.->.Type.....co
0d20 6c 6c 65 63 74 69 6f 6e 20 2d 3e 20 4f 70 74 69 6f 6e 73 0a 20 20 20 20 56 61 6c 69 64 61 74 6f llection.->.Options.....Validato
0d40 72 20 2d 3e 20 49 74 73 20 73 65 6c 66 21 0a 0a 20 20 41 72 67 73 3a 0a 20 20 20 20 76 61 6c 69 r.->.Its.self!....Args:.....vali
0d60 64 61 74 6f 72 3a 20 4f 62 6a 65 63 74 20 74 6f 20 77 72 61 70 20 69 6e 20 61 20 76 61 6c 69 64 dator:.Object.to.wrap.in.a.valid
0d80 61 74 6f 72 2e 0a 0a 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 56 61 6c 69 64 61 74 6f 72 20 ator.....Returns:.....Validator.
0da0 69 6e 73 74 61 6e 63 65 20 74 68 61 74 20 77 72 61 70 73 20 74 68 65 20 67 69 76 65 6e 20 76 61 instance.that.wraps.the.given.va
0dc0 6c 75 65 2e 0a 0a 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 41 74 74 72 69 62 75 74 65 44 65 66 lue.....Raises:.....AttributeDef
0de0 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 76 61 6c 69 64 61 74 6f 72 20 69 73 20 6e 6f 74 initionError.if.validator.is.not
0e00 20 6f 6e 65 20 6f 66 20 74 68 65 20 61 62 6f 76 65 20 64 65 73 63 72 69 62 65 64 0a 20 20 20 20 .one.of.the.above.described.....
0e20 74 79 70 65 73 2e 0a 20 20 73 1b 00 00 00 25 73 20 69 73 20 6e 6f 74 20 61 20 76 61 6c 69 64 20 types....s....%s.is.not.a.valid.
0e40 76 61 6c 69 64 61 74 6f 72 4e 28 0c 00 00 00 74 0a 00 00 00 69 73 69 6e 73 74 61 6e 63 65 52 0c validatorN(....t....isinstanceR.
0e60 00 00 00 74 07 00 00 00 75 6e 69 63 6f 64 65 74 05 00 00 00 52 65 67 65 78 74 04 00 00 00 74 79 ...t....unicodet....Regext....ty
0e80 70 65 74 04 00 00 00 54 79 70 65 74 04 00 00 00 6c 69 73 74 74 05 00 00 00 74 75 70 6c 65 74 03 pet....Typet....listt....tuplet.
0ea0 00 00 00 73 65 74 74 07 00 00 00 4f 70 74 69 6f 6e 73 74 09 00 00 00 56 61 6c 69 64 61 74 6f 72 ...sett....Optionst....Validator
0ec0 52 04 00 00 00 28 01 00 00 00 74 09 00 00 00 76 61 6c 69 64 61 74 6f 72 28 00 00 00 00 28 00 00 R....(....t....validator(....(..
0ee0 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c ..sG.../home/zx2c4/Desktop/googl
0f00 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 e_appengine/google/appengine/api
0f20 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 0b 00 00 00 41 73 56 61 6c 69 64 61 74 6f 72 4b 00 /validation.pyt....AsValidatorK.
0f40 00 00 73 14 00 00 00 00 15 16 01 14 01 10 01 0b 01 19 01 11 01 10 01 05 02 06 01 74 09 00 00 00 ..s........................t....
0f60 56 61 6c 69 64 61 74 65 64 63 00 00 00 00 00 00 00 00 02 00 00 00 42 00 00 00 73 95 00 00 00 65 Validatedc............B...s....e
0f80 00 00 5a 01 00 64 00 00 5a 02 00 64 0e 00 5a 04 00 64 01 00 84 00 00 5a 05 00 65 06 00 64 02 00 ..Z..d..Z..d..Z..d.....Z..e..d..
0fa0 84 00 00 83 01 00 5a 07 00 64 03 00 84 00 00 5a 08 00 64 04 00 84 00 00 5a 09 00 64 05 00 84 00 ......Z..d.....Z..d.....Z..d....
0fc0 00 5a 0a 00 64 06 00 84 00 00 5a 0b 00 64 07 00 84 00 00 5a 0c 00 64 08 00 84 00 00 5a 0d 00 64 .Z..d.....Z..d.....Z..d.....Z..d
0fe0 09 00 84 00 00 5a 0e 00 64 0a 00 84 00 00 5a 0f 00 65 10 00 64 0b 00 84 00 00 83 01 00 5a 11 00 .....Z..d.....Z..e..d........Z..
1000 64 0c 00 84 00 00 5a 12 00 64 0d 00 84 00 00 5a 13 00 52 53 28 0f 00 00 00 73 6e 02 00 00 42 61 d.....Z..d.....Z..RS(....sn...Ba
1020 73 65 20 63 6c 61 73 73 20 66 6f 72 20 6f 74 68 65 72 20 63 6c 61 73 73 65 73 20 74 68 61 74 20 se.class.for.other.classes.that.
1040 72 65 71 75 69 72 65 20 76 61 6c 69 64 61 74 69 6f 6e 2e 0a 0a 20 20 41 20 63 6c 61 73 73 20 77 require.validation.....A.class.w
1060 68 69 63 68 20 69 6e 74 65 6e 64 73 20 74 6f 20 75 73 65 20 76 61 6c 69 64 61 74 65 64 20 66 69 hich.intends.to.use.validated.fi
1080 65 6c 64 73 20 73 68 6f 75 6c 64 20 73 75 62 2d 63 6c 61 73 73 20 69 74 73 65 6c 66 20 66 72 6f elds.should.sub-class.itself.fro
10a0 6d 0a 20 20 74 68 69 73 20 63 6c 61 73 73 2e 20 20 45 61 63 68 20 63 6c 61 73 73 20 73 68 6f 75 m...this.class...Each.class.shou
10c0 6c 64 20 64 65 66 69 6e 65 20 61 6e 20 27 41 54 54 52 49 42 55 54 45 53 27 20 63 6c 61 73 73 20 ld.define.an.'ATTRIBUTES'.class.
10e0 76 61 72 69 61 62 6c 65 20 77 68 69 63 68 0a 20 20 73 68 6f 75 6c 64 20 62 65 20 61 20 6d 61 70 variable.which...should.be.a.map
1100 20 66 72 6f 6d 20 61 74 74 72 69 62 75 74 65 20 6e 61 6d 65 20 74 6f 20 69 74 73 20 76 61 6c 69 .from.attribute.name.to.its.vali
1120 64 61 74 6f 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 20 20 20 63 6c 61 73 73 20 dator...For.example:......class.
1140 53 74 6f 72 79 28 56 61 6c 69 64 61 74 65 64 29 3a 0a 20 20 20 20 20 20 41 54 54 52 49 42 55 54 Story(Validated):.......ATTRIBUT
1160 45 53 20 3d 20 7b 27 74 69 74 6c 65 27 3a 20 54 79 70 65 28 73 74 72 29 2c 0a 20 20 20 20 20 20 ES.=.{'title':.Type(str),.......
1180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 75 74 68 6f 72 73 27 3a 20 52 65 70 65 61 74 65 ..............'authors':.Repeate
11a0 64 28 54 79 70 65 28 73 74 72 29 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d(Type(str)),...................
11c0 20 20 27 69 73 62 6e 27 3a 20 4f 70 74 69 6f 6e 61 6c 28 54 79 70 65 28 73 74 72 29 29 2c 0a 20 ..'isbn':.Optional(Type(str)),..
11e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 70 61 67 65 73 27 3a 20 54 79 70 65 ...................'pages':.Type
1200 28 69 6e 74 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 (int),.....................}....
1220 41 74 74 72 69 62 75 74 65 73 20 74 68 61 74 20 61 72 65 20 6e 6f 74 20 6c 69 73 74 65 64 20 75 Attributes.that.are.not.listed.u
1240 6e 64 65 72 20 41 54 54 52 49 42 55 54 45 53 20 77 6f 72 6b 20 6c 69 6b 65 20 6e 6f 72 6d 61 6c nder.ATTRIBUTES.work.like.normal
1260 20 61 6e 64 20 61 72 65 0a 20 20 6e 6f 74 20 76 61 6c 69 64 61 74 65 64 20 75 70 6f 6e 20 61 73 .and.are...not.validated.upon.as
1280 73 69 67 6e 6d 65 6e 74 2e 0a 20 20 63 01 00 00 00 03 00 00 00 06 00 00 00 4b 00 00 00 73 74 00 signment....c............K...st.
12a0 00 00 74 00 00 7c 00 00 69 01 00 74 02 00 83 02 00 70 17 00 01 74 03 00 64 01 00 7c 00 00 69 04 ..t..|..i..t.....p...t..d..|..i.
12c0 00 16 83 01 00 82 01 00 6e 01 00 01 78 36 00 7c 00 00 69 01 00 69 05 00 83 00 00 44 5d 25 00 7d ........n...x6.|..i..i.....D]%.}
12e0 02 00 74 06 00 69 07 00 7c 00 00 7c 02 00 7c 00 00 69 08 00 7c 02 00 83 01 00 69 09 00 83 03 00 ..t..i..|..|..|..i..|.....i.....
1300 01 71 3a 00 57 7c 00 00 69 0a 00 7c 01 00 8d 00 00 01 64 02 00 53 28 03 00 00 00 73 14 01 00 00 .q:.W|..i..|......d..S(....s....
1320 43 6f 6e 73 74 72 75 63 74 6f 72 20 66 6f 72 20 56 61 6c 69 64 61 74 65 64 20 63 6c 61 73 73 65 Constructor.for.Validated.classe
1340 73 2e 0a 0a 20 20 20 20 54 68 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 63 61 6e 20 6f 70 74 s.......This.constructor.can.opt
1360 69 6f 6e 61 6c 6c 79 20 61 73 73 69 67 6e 20 76 61 6c 75 65 73 20 74 6f 20 74 68 65 20 63 6c 61 ionally.assign.values.to.the.cla
1380 73 73 20 76 69 61 20 69 74 73 0a 20 20 20 20 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 ss.via.its.....keyword.arguments
13a0 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 41 74 74 72 69 62 75 74 65 44 65 .......Raises:.......AttributeDe
13c0 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 63 6c 61 73 73 20 69 6e 73 74 61 6e 63 finitionError.when.class.instanc
13e0 65 20 69 73 20 6d 69 73 73 69 6e 67 20 41 54 54 52 49 42 55 54 45 0a 20 20 20 20 20 20 64 65 66 e.is.missing.ATTRIBUTE.......def
1400 69 6e 69 74 69 6f 6e 20 6f 72 20 77 68 65 6e 20 41 54 54 52 49 42 55 54 45 20 69 73 20 6f 66 20 inition.or.when.ATTRIBUTE.is.of.
1420 74 68 65 20 77 72 6f 6e 67 20 74 79 70 65 2e 0a 20 20 20 20 73 33 00 00 00 54 68 65 20 63 6c 61 the.wrong.type......s3...The.cla
1440 73 73 20 25 73 20 64 6f 65 73 20 6e 6f 74 20 64 65 66 69 6e 65 20 61 6e 20 41 54 54 52 49 42 55 ss.%s.does.not.define.an.ATTRIBU
1460 54 45 20 76 61 72 69 61 62 6c 65 2e 4e 28 0b 00 00 00 52 10 00 00 00 74 0a 00 00 00 41 54 54 52 TE.variable.N(....R....t....ATTR
1480 49 42 55 54 45 53 74 04 00 00 00 64 69 63 74 52 04 00 00 00 74 09 00 00 00 5f 5f 63 6c 61 73 73 IBUTESt....dictR....t....__class
14a0 5f 5f 74 04 00 00 00 6b 65 79 73 74 06 00 00 00 6f 62 6a 65 63 74 74 0b 00 00 00 5f 5f 73 65 74 __t....keyst....objectt....__set
14c0 61 74 74 72 5f 5f 74 0c 00 00 00 47 65 74 41 74 74 72 69 62 75 74 65 74 07 00 00 00 64 65 66 61 attr__t....GetAttributet....defa
14e0 75 6c 74 74 03 00 00 00 53 65 74 28 03 00 00 00 52 0b 00 00 00 74 0a 00 00 00 61 74 74 72 69 62 ultt....Set(....R....t....attrib
1500 75 74 65 73 74 03 00 00 00 6b 65 79 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 utest....key(....(....sG.../home
1520 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f /zx2c4/Desktop/google_appengine/
1540 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e google/appengine/api/validation.
1560 70 79 52 08 00 00 00 81 00 00 00 73 10 00 00 00 00 0a 13 01 03 01 03 01 11 02 10 00 06 01 23 02 pyR........s..................#.
1580 63 02 00 00 00 02 00 00 00 03 00 00 00 43 00 00 00 73 11 00 00 00 74 00 00 7c 00 00 69 01 00 7c c............C...s....t..|..i..|
15a0 01 00 19 83 01 00 53 28 01 00 00 00 73 d6 00 00 00 53 61 66 65 6c 79 20 67 65 74 20 74 68 65 20 ......S(....s....Safely.get.the.
15c0 75 6e 64 65 72 6c 79 69 6e 67 20 61 74 74 72 69 62 75 74 65 20 64 65 66 69 6e 69 74 69 6f 6e 20 underlying.attribute.definition.
15e0 61 73 20 61 20 56 61 6c 69 64 61 74 6f 72 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 as.a.Validator.......Args:......
1600 20 6b 65 79 3a 20 4e 61 6d 65 20 6f 66 20 61 74 74 72 69 62 75 74 65 20 74 6f 20 67 65 74 2e 0a .key:.Name.of.attribute.to.get..
1620 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 56 61 6c 69 64 61 74 6f 72 20 61 73 .....Returns:.......Validator.as
1640 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 6b 65 79 20 6f 72 20 61 74 74 72 69 62 75 74 65 20 76 sociated.with.key.or.attribute.v
1660 61 6c 75 65 20 77 72 61 70 70 65 64 20 69 6e 20 61 0a 20 20 20 20 20 20 76 61 6c 69 64 61 74 6f alue.wrapped.in.a.......validato
1680 72 2e 0a 20 20 20 20 28 02 00 00 00 52 1b 00 00 00 52 1d 00 00 00 28 02 00 00 00 52 0b 00 00 00 r......(....R....R....(....R....
16a0 52 27 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f R'...(....(....sG.../home/zx2c4/
16c0 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f Desktop/google_appengine/google/
16e0 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 23 00 00 00 appengine/api/validation.pyR#...
1700 95 00 00 00 73 02 00 00 00 00 0b 63 01 00 00 00 04 00 00 00 05 00 00 00 4b 00 00 00 73 5e 00 00 ....s......c............K...s^..
1720 00 78 57 00 7c 01 00 69 00 00 83 00 00 44 5d 49 00 5c 02 00 7d 02 00 7d 03 00 7c 02 00 7c 00 00 .xW.|..i.....D]I.\..}..}..|..|..
1740 69 01 00 6a 07 00 6f 1d 00 01 74 02 00 64 01 00 7c 00 00 69 03 00 7c 02 00 66 02 00 16 83 01 00 i..j..o...t..d..|..i..|..f......
1760 82 01 00 6e 01 00 01 74 04 00 7c 00 00 7c 02 00 7c 03 00 83 03 00 01 71 0d 00 57 64 02 00 53 28 ...n...t..|..|..|......q..Wd..S(
1780 03 00 00 00 73 f8 00 00 00 53 65 74 20 6d 75 6c 74 69 70 6c 65 20 76 61 6c 75 65 73 20 6f 6e 20 ....s....Set.multiple.values.on.
17a0 56 61 6c 69 64 61 74 65 64 20 69 6e 73 74 61 6e 63 65 2e 0a 0a 20 20 20 20 54 68 69 73 20 6d 65 Validated.instance.......This.me
17c0 74 68 6f 64 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 74 6f 20 61 73 73 69 67 6e 20 thod.can.only.be.used.to.assign.
17e0 76 61 6c 69 64 61 74 65 64 20 6d 65 74 68 6f 64 73 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 validated.methods.......Args:...
1800 20 20 20 20 61 74 74 72 69 62 75 74 65 73 3a 20 41 74 74 72 69 62 75 74 65 73 20 74 6f 20 73 65 ....attributes:.Attributes.to.se
1820 74 20 6f 6e 20 6f 62 6a 65 63 74 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 t.on.object.......Raises:.......
1840 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 6e 6f 20 76 61 6c 69 64 61 74 65 ValidationError.when.no.validate
1860 64 20 61 74 74 72 69 62 75 74 65 20 65 78 69 73 74 73 20 6f 6e 20 63 6c 61 73 73 2e 0a 20 20 20 d.attribute.exists.on.class.....
1880 20 73 27 00 00 00 43 6c 61 73 73 20 27 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 .s'...Class.'%s'.does.not.have.a
18a0 74 74 72 69 62 75 74 65 20 27 25 73 27 4e 28 05 00 00 00 74 09 00 00 00 69 74 65 72 69 74 65 6d ttribute.'%s'N(....t....iteritem
18c0 73 52 1d 00 00 00 52 05 00 00 00 52 1f 00 00 00 74 07 00 00 00 73 65 74 61 74 74 72 28 04 00 00 sR....R....R....t....setattr(...
18e0 00 52 0b 00 00 00 52 26 00 00 00 52 27 00 00 00 74 05 00 00 00 76 61 6c 75 65 28 00 00 00 00 28 .R....R&...R'...t....value(....(
1900 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f ....sG.../home/zx2c4/Desktop/goo
1920 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 gle_appengine/google/appengine/a
1940 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 25 00 00 00 a2 00 00 00 73 0c 00 00 00 00 0b pi/validation.pyR%.......s......
1960 0d 00 0c 01 10 01 06 01 17 01 63 01 00 00 00 03 00 00 00 08 00 00 00 43 00 00 00 73 69 00 00 00 ..........c............C...si...
1980 78 62 00 7c 00 00 69 00 00 69 01 00 83 00 00 44 5d 51 00 7d 01 00 79 20 00 7c 00 00 69 02 00 7c xb.|..i..i.....D]Q.}..y..|..i..|
19a0 01 00 83 01 00 74 03 00 7c 00 00 7c 01 00 83 02 00 83 01 00 01 57 71 10 00 04 74 04 00 6a 0a 00 .....t..|..|.........Wq...t..j..
19c0 6f 1c 00 01 01 7d 02 00 01 64 01 00 7c 01 00 16 7c 02 00 5f 05 00 7c 02 00 82 01 00 71 10 00 01 o....}...d..|...|.._..|.....q...
19e0 58 71 10 00 57 64 02 00 53 28 03 00 00 00 73 64 02 00 00 43 68 65 63 6b 73 20 74 68 61 74 20 61 Xq..Wd..S(....sd...Checks.that.a
1a00 6c 6c 20 72 65 71 75 69 72 65 64 20 66 69 65 6c 64 73 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a ll.required.fields.are.initializ
1a20 65 64 2e 0a 0a 20 20 20 20 53 69 6e 63 65 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 56 61 ed.......Since.an.instance.of.Va
1a40 6c 69 64 61 74 65 64 20 73 74 61 72 74 73 20 6f 66 66 20 69 6e 20 61 6e 20 75 6e 69 6e 69 74 69 lidated.starts.off.in.an.uniniti
1a60 61 6c 69 7a 65 64 20 73 74 61 74 65 2c 20 69 74 0a 20 20 20 20 69 73 20 73 6f 6d 65 74 69 6d 65 alized.state,.it.....is.sometime
1a80 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f 20 63 68 65 63 6b 20 74 68 61 74 20 69 74 20 68 61 73 s.necessary.to.check.that.it.has
1aa0 20 62 65 65 6e 20 66 75 6c 6c 79 20 69 6e 69 74 69 61 6c 69 7a 65 64 2e 0a 20 20 20 20 54 68 65 .been.fully.initialized......The
1ac0 20 6d 61 69 6e 20 70 72 6f 62 6c 65 6d 20 74 68 69 73 20 73 6f 6c 76 65 73 20 69 73 20 68 6f 77 .main.problem.this.solves.is.how
1ae0 20 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 61 74 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 68 61 .to.validate.that.an.instance.ha
1b00 73 0a 20 20 20 20 61 6c 6c 20 6f 66 20 69 74 73 20 72 65 71 75 69 72 65 64 20 66 69 65 6c 64 73 s.....all.of.its.required.fields
1b20 20 73 65 74 2e 20 20 42 79 20 64 65 66 61 75 6c 74 2c 20 56 61 6c 69 64 61 74 6f 72 20 63 6c 61 .set...By.default,.Validator.cla
1b40 73 73 65 73 20 64 6f 20 6e 6f 74 0a 20 20 20 20 61 6c 6c 6f 77 20 4e 6f 6e 65 2c 20 62 75 74 20 sses.do.not.....allow.None,.but.
1b60 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73 20 61 72 65 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 all.attributes.are.initialized.t
1b80 6f 20 4e 6f 6e 65 20 77 68 65 6e 20 69 6e 73 74 61 6e 74 69 61 74 65 64 2e 0a 0a 20 20 20 20 52 o.None.when.instantiated.......R
1ba0 61 69 73 65 73 3a 0a 20 20 20 20 20 20 45 78 63 65 70 74 69 6f 6e 20 72 65 6c 65 76 61 6e 74 20 aises:.......Exception.relevant.
1bc0 74 6f 20 74 68 65 20 6b 69 6e 64 20 6f 66 20 76 61 6c 69 64 61 74 69 6f 6e 2e 20 20 54 68 65 20 to.the.kind.of.validation...The.
1be0 74 79 70 65 20 6f 66 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 0a 20 20 20 20 20 20 69 73 20 64 type.of.the.exception.......is.d
1c00 65 74 65 72 6d 69 6e 65 64 20 62 79 20 74 68 65 20 76 61 6c 69 64 61 74 6f 72 2e 20 20 54 79 70 etermined.by.the.validator...Typ
1c20 69 63 61 6c 6c 79 20 74 68 69 73 20 77 69 6c 6c 20 62 65 20 56 61 6c 75 65 45 72 72 6f 72 20 6f ically.this.will.be.ValueError.o
1c40 72 0a 20 20 20 20 20 20 54 79 70 65 45 72 72 6f 72 2e 0a 20 20 20 20 73 1c 00 00 00 4d 69 73 73 r.......TypeError......s....Miss
1c60 69 6e 67 20 72 65 71 75 69 72 65 64 20 76 61 6c 75 65 20 27 25 73 27 2e 4e 28 06 00 00 00 52 1d ing.required.value.'%s'.N(....R.
1c80 00 00 00 74 08 00 00 00 69 74 65 72 6b 65 79 73 52 23 00 00 00 74 07 00 00 00 67 65 74 61 74 74 ...t....iterkeysR#...t....getatt
1ca0 72 52 0f 00 00 00 52 09 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 27 00 00 00 74 01 00 00 00 65 rR....R....(....R....R'...t....e
1cc0 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 (....(....sG.../home/zx2c4/Deskt
1ce0 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e op/google_appengine/google/appen
1d00 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 10 00 00 00 43 68 65 63 6b gine/api/validation.pyt....Check
1d20 49 6e 69 74 69 61 6c 69 7a 65 64 b3 00 00 00 73 0e 00 00 00 00 0e 10 00 06 01 03 01 20 01 10 01 Initialized....s................
1d40 0d 01 63 03 00 00 00 03 00 00 00 04 00 00 00 43 00 00 00 73 59 00 00 00 7c 01 00 7c 00 00 69 00 ..c............C...sY...|..|..i.
1d60 00 6a 06 00 6f 2c 00 01 7c 00 00 69 01 00 7c 01 00 83 01 00 7c 02 00 83 01 00 7d 02 00 74 02 00 .j..o,..|..i..|.....|.....}..t..
1d80 69 03 00 7c 00 00 7c 01 00 7c 02 00 83 03 00 01 6e 1a 00 01 74 04 00 64 01 00 7c 00 00 69 05 00 i..|..|..|......n...t..d..|..i..
1da0 7c 01 00 66 02 00 16 83 01 00 82 01 00 64 02 00 53 28 03 00 00 00 73 5a 02 00 00 53 65 74 20 61 |..f.........d..S(....sZ...Set.a
1dc0 74 74 72 69 62 75 74 65 2e 0a 0a 20 20 20 20 53 65 74 74 69 6e 67 20 61 20 76 61 6c 75 65 20 6f ttribute.......Setting.a.value.o
1de0 6e 20 61 6e 20 6f 62 6a 65 63 74 20 6f 66 20 74 68 69 73 20 74 79 70 65 20 77 69 6c 6c 20 6f 6e n.an.object.of.this.type.will.on
1e00 6c 79 20 77 6f 72 6b 20 66 6f 72 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 20 20 64 65 66 69 6e ly.work.for.attributes.....defin
1e20 65 64 20 69 6e 20 41 54 54 52 49 42 55 54 45 53 2e 20 20 54 6f 20 6d 61 6b 65 20 6f 74 68 65 72 ed.in.ATTRIBUTES...To.make.other
1e40 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 70 6f 73 73 69 62 6c 65 20 69 74 20 69 73 20 6e 65 63 65 .assignments.possible.it.is.nece
1e60 73 73 61 72 79 0a 20 20 20 20 74 6f 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 68 6f ssary.....to.override.this.metho
1e80 64 20 69 6e 20 73 75 62 63 6c 61 73 73 65 73 2e 0a 0a 20 20 20 20 49 74 20 69 73 20 69 6d 70 6f d.in.subclasses.......It.is.impo
1ea0 72 74 61 6e 74 20 74 68 61 74 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 73 20 72 65 73 74 72 69 63 rtant.that.assignment.is.restric
1ec0 74 65 64 20 69 6e 20 74 68 69 73 20 77 61 79 20 62 65 63 61 75 73 65 0a 20 20 20 20 74 68 69 73 ted.in.this.way.because.....this
1ee0 20 76 61 6c 69 64 61 74 69 6f 6e 20 69 73 20 75 73 65 64 20 61 73 20 76 61 6c 69 64 61 74 69 6f .validation.is.used.as.validatio
1f00 6e 20 66 6f 72 20 70 61 72 73 69 6e 67 2e 20 20 41 62 73 65 6e 74 20 74 68 69 73 20 72 65 73 74 n.for.parsing...Absent.this.rest
1f20 72 69 63 74 69 6f 6e 0a 20 20 20 20 69 74 20 77 6f 75 6c 64 20 62 65 20 70 6f 73 73 69 62 6c 65 riction.....it.would.be.possible
1f40 20 66 6f 72 20 6d 65 74 68 6f 64 20 6e 61 6d 65 73 20 74 6f 20 62 65 20 6f 76 65 72 77 72 69 74 .for.method.names.to.be.overwrit
1f60 74 65 6e 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 6b 65 79 3a 20 4e 61 6d 65 20 ten.......Args:.......key:.Name.
1f80 6f 66 20 61 74 74 72 69 62 75 74 65 20 74 6f 20 73 65 74 2e 0a 20 20 20 20 20 20 76 61 6c 75 65 of.attribute.to.set........value
1fa0 3a 20 41 74 74 72 69 62 75 74 65 73 20 6e 65 77 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 52 61 69 :.Attributes.new.value.......Rai
1fc0 73 65 73 3a 0a 20 20 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 ses:.......ValidationError.when.
1fe0 74 72 79 69 6e 67 20 74 6f 20 61 73 73 69 67 6e 20 74 6f 20 61 20 76 61 6c 75 65 20 74 68 61 74 trying.to.assign.to.a.value.that
2000 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 2e 0a 20 20 20 20 73 27 00 00 00 43 6c 61 73 73 20 .does.not.exist......s'...Class.
2020 27 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 61 74 74 72 69 62 75 74 65 20 27 25 73 '%s'.does.not.have.attribute.'%s
2040 27 4e 28 06 00 00 00 52 1d 00 00 00 52 23 00 00 00 52 21 00 00 00 52 22 00 00 00 52 05 00 00 00 'N(....R....R#...R!...R"...R....
2060 52 1f 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 27 00 00 00 52 2a 00 00 00 28 00 00 00 00 28 00 R....(....R....R'...R*...(....(.
2080 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 ...sG.../home/zx2c4/Desktop/goog
20a0 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 le_appengine/google/appengine/ap
20c0 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 22 00 00 00 c9 00 00 00 73 0a 00 00 00 00 13 10 i/validation.pyR".......s.......
20e0 01 15 01 17 02 06 01 63 01 00 00 00 01 00 00 00 02 00 00 00 43 00 00 00 73 0a 00 00 00 74 00 00 .......c............C...s....t..
2100 7c 00 00 83 01 00 53 28 01 00 00 00 73 35 00 00 00 46 6f 72 6d 61 74 74 65 64 20 76 69 65 77 20 |.....S(....s5...Formatted.view.
2120 6f 66 20 76 61 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 20 61 6e 64 20 6e 65 73 74 65 64 20 76 of.validated.object.and.nested.v
2140 61 6c 75 65 73 2e 28 01 00 00 00 74 04 00 00 00 72 65 70 72 28 01 00 00 00 52 0b 00 00 00 28 00 alues.(....t....repr(....R....(.
2160 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 ...(....sG.../home/zx2c4/Desktop
2180 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 /google_appengine/google/appengi
21a0 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 0d 00 00 00 e3 00 00 00 73 02 00 ne/api/validation.pyR........s..
21c0 00 00 00 02 63 01 00 00 00 07 00 00 00 08 00 00 00 43 00 00 00 73 90 00 00 00 67 00 00 04 7d 01 ....c............C...s....g...}.
21e0 00 7c 00 00 69 00 00 44 5d 1c 00 7d 02 00 7c 01 00 7c 02 00 74 01 00 7c 00 00 7c 02 00 83 02 00 .|..i..D]..}..|..|..t..|..|.....
2200 66 02 00 12 71 0e 00 7e 01 00 7d 03 00 64 01 00 7d 04 00 67 00 00 7d 05 00 78 2e 00 7c 03 00 44 f...q..~..}..d..}..g..}..x..|..D
2220 5d 26 00 5c 02 00 7d 02 00 7d 06 00 7c 05 00 69 02 00 64 02 00 7c 04 00 7c 02 00 7c 06 00 66 03 ]&.\..}..}..|..i..d..|..|..|..f.
2240 00 16 83 01 00 01 71 46 00 57 64 03 00 7c 00 00 69 03 00 69 04 00 64 04 00 69 05 00 7c 05 00 83 ......qF.Wd..|..i..i..d..i..|...
2260 01 00 7c 04 00 66 03 00 16 53 28 05 00 00 00 73 35 00 00 00 46 6f 72 6d 61 74 74 65 64 20 76 69 ..|..f...S(....s5...Formatted.vi
2280 65 77 20 6f 66 20 76 61 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 20 61 6e 64 20 6e 65 73 74 65 ew.of.validated.object.and.neste
22a0 64 20 76 61 6c 75 65 73 2e 73 04 00 00 00 20 20 20 20 73 08 00 00 00 0a 25 73 25 73 3d 25 73 73 d.values.s........s.....%s%s=%ss
22c0 0a 00 00 00 3c 25 73 20 25 73 0a 25 73 3e 74 01 00 00 00 20 28 06 00 00 00 52 1d 00 00 00 52 2c ....<%s.%s.%s>t.....(....R....R,
22e0 00 00 00 74 06 00 00 00 61 70 70 65 6e 64 52 1f 00 00 00 52 01 00 00 00 74 04 00 00 00 6a 6f 69 ...t....appendR....R....t....joi
2300 6e 28 07 00 00 00 52 0b 00 00 00 74 04 00 00 00 5f 5b 31 5d 74 04 00 00 00 61 74 74 72 74 06 00 n(....R....t...._[1]t....attrt..
2320 00 00 76 61 6c 75 65 73 74 04 00 00 00 64 65 6e 74 74 0a 00 00 00 76 61 6c 75 65 5f 6c 69 73 74 ..valuest....dentt....value_list
2340 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f R*...(....(....sG.../home/zx2c4/
2360 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f Desktop/google_appengine/google/
2380 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 08 00 00 00 appengine/api/validation.pyt....
23a0 5f 5f 72 65 70 72 5f 5f e7 00 00 00 73 0e 00 00 00 00 02 33 01 06 01 06 01 07 00 0c 01 1e 02 63 __repr__....s......3...........c
23c0 02 00 00 00 03 00 00 00 05 00 00 00 43 00 00 00 73 60 00 00 00 74 00 00 7c 00 00 83 01 00 74 00 ............C...s`...t..|.....t.
23e0 00 7c 01 00 83 01 00 6a 03 00 6f 05 00 01 74 01 00 53 01 78 3b 00 7c 00 00 69 02 00 69 03 00 83 .|.....j..o...t..S.x;.|..i..i...
2400 00 00 44 5d 2a 00 7d 02 00 74 04 00 7c 00 00 7c 02 00 83 02 00 74 04 00 7c 01 00 7c 02 00 83 02 ..D]*.}..t..|..|.....t..|..|....
2420 00 6a 03 00 6f 05 00 01 74 01 00 53 01 71 2e 00 57 74 05 00 53 28 01 00 00 00 73 2a 01 00 00 45 .j..o...t..S.q..Wt..S(....s*...E
2440 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f 72 2e 0a 0a 20 20 20 20 43 6f 6d 70 61 72 69 73 6f quality.operator.......Compariso
2460 6e 20 69 73 20 64 6f 6e 65 20 62 79 20 63 6f 6d 70 61 72 69 6e 67 20 61 6c 6c 20 61 74 74 72 69 n.is.done.by.comparing.all.attri
2480 62 75 74 65 20 76 61 6c 75 65 73 20 74 6f 20 74 68 6f 73 65 20 69 6e 20 74 68 65 20 6f 74 68 65 bute.values.to.those.in.the.othe
24a0 72 0a 20 20 20 20 69 6e 73 74 61 6e 63 65 2e 20 20 4f 62 6a 65 63 74 73 20 77 68 69 63 68 20 61 r.....instance...Objects.which.a
24c0 72 65 20 6e 6f 74 20 6f 66 20 74 68 65 20 73 61 6d 65 20 74 79 70 65 20 61 72 65 20 6e 6f 74 20 re.not.of.the.same.type.are.not.
24e0 65 71 75 61 6c 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 6f 74 68 65 72 3a 20 4f equal.......Args:.......other:.O
2500 74 68 65 72 20 6f 62 6a 65 63 74 20 74 6f 20 63 6f 6d 70 61 72 65 20 61 67 61 69 6e 73 74 2e 0a ther.object.to.compare.against..
2520 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 54 72 75 65 20 69 66 20 76 61 6c 69 .....Returns:.......True.if.vali
2540 64 61 74 65 64 20 6f 62 6a 65 63 74 73 20 61 72 65 20 65 71 75 61 6c 2c 20 65 6c 73 65 20 46 61 dated.objects.are.equal,.else.Fa
2560 6c 73 65 2e 0a 20 20 20 20 28 06 00 00 00 52 13 00 00 00 74 05 00 00 00 46 61 6c 73 65 52 1d 00 lse......(....R....t....FalseR..
2580 00 00 52 2b 00 00 00 52 2c 00 00 00 74 04 00 00 00 54 72 75 65 28 03 00 00 00 52 0b 00 00 00 74 ..R+...R,...t....True(....R....t
25a0 05 00 00 00 6f 74 68 65 72 52 27 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f ....otherR'...(....(....sG.../ho
25c0 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e me/zx2c4/Desktop/google_appengin
25e0 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f e/google/appengine/api/validatio
2600 6e 2e 70 79 74 06 00 00 00 5f 5f 65 71 5f 5f f1 00 00 00 73 0e 00 00 00 00 0c 19 01 05 01 10 00 n.pyt....__eq__....s............
2620 06 01 1f 01 09 01 63 02 00 00 00 02 00 00 00 02 00 00 00 43 00 00 00 73 0e 00 00 00 7c 00 00 69 ......c............C...s....|..i
2640 00 00 7c 01 00 83 01 00 0c 53 28 01 00 00 00 73 14 00 00 00 49 6e 65 71 75 61 6c 69 74 79 20 6f ..|......S(....s....Inequality.o
2660 70 65 72 61 74 6f 72 2e 28 01 00 00 00 52 3c 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 3b 00 00 perator.(....R<...(....R....R;..
2680 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b .(....(....sG.../home/zx2c4/Desk
26a0 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 top/google_appengine/google/appe
26c0 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 06 00 00 00 5f 5f 6e 65 ngine/api/validation.pyt....__ne
26e0 5f 5f 04 01 00 00 73 02 00 00 00 00 02 63 01 00 00 00 04 00 00 00 04 00 00 00 43 00 00 00 73 6d __....s......c............C...sm
2700 00 00 00 64 01 00 7d 01 00 78 60 00 7c 00 00 69 00 00 69 01 00 83 00 00 44 5d 4f 00 7d 02 00 74 ...d..}..x`.|..i..i.....D]O.}..t
2720 02 00 7c 00 00 7c 02 00 83 02 00 7d 03 00 74 03 00 7c 03 00 74 04 00 83 02 00 6f 10 00 01 74 05 ..|..|.....}..t..|..t.....o...t.
2740 00 7c 03 00 83 01 00 7d 03 00 6e 01 00 01 7c 01 00 74 06 00 7c 02 00 83 01 00 41 74 06 00 7c 03 .|.....}..n...|..t..|.....At..|.
2760 00 83 01 00 41 7d 01 00 71 16 00 57 7c 01 00 53 28 02 00 00 00 73 ba 00 00 00 48 61 73 68 20 66 ....A}..q..W|..S(....s....Hash.f
2780 75 6e 63 74 69 6f 6e 20 66 6f 72 20 75 73 69 6e 67 20 56 61 6c 69 64 61 74 65 64 20 6f 62 6a 65 unction.for.using.Validated.obje
27a0 63 74 73 20 69 6e 20 73 65 74 73 20 61 6e 64 20 6d 61 70 73 2e 0a 0a 20 20 20 20 48 61 73 68 20 cts.in.sets.and.maps.......Hash.
27c0 69 73 20 64 6f 6e 65 20 62 79 20 68 61 73 68 69 6e 67 20 61 6c 6c 20 6b 65 79 73 20 61 6e 64 20 is.done.by.hashing.all.keys.and.
27e0 76 61 6c 75 65 73 20 61 6e 64 20 78 6f 72 27 69 6e 67 20 74 68 65 6d 20 74 6f 67 65 74 68 65 72 values.and.xor'ing.them.together
2800 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 48 61 73 68 20 6f 66 20 76 61 .......Returns:.......Hash.of.va
2820 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 69 00 00 00 00 28 07 00 00 00 52 1d lidated.object......i....(....R.
2840 00 00 00 52 2b 00 00 00 52 2c 00 00 00 52 10 00 00 00 52 15 00 00 00 52 16 00 00 00 74 04 00 00 ...R+...R,...R....R....R....t...
2860 00 68 61 73 68 28 04 00 00 00 52 0b 00 00 00 74 06 00 00 00 72 65 73 75 6c 74 52 27 00 00 00 52 .hash(....R....t....resultR'...R
2880 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 *...(....(....sG.../home/zx2c4/D
28a0 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 esktop/google_appengine/google/a
28c0 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 08 00 00 00 5f ppengine/api/validation.pyt...._
28e0 5f 68 61 73 68 5f 5f 08 01 00 00 73 10 00 00 00 00 08 06 01 10 00 06 01 0f 01 10 01 10 01 1e 01 _hash__....s....................
2900 63 02 00 00 00 04 00 00 00 06 00 00 00 43 00 00 00 73 83 00 00 00 74 00 00 7c 01 00 74 01 00 83 c............C...s....t..|..t...
2920 02 00 6f 0b 00 01 7c 01 00 69 02 00 83 00 00 53 01 74 00 00 7c 01 00 74 03 00 74 04 00 66 02 00 ..o...|..i.....S.t..|..t..t..f..
2940 83 02 00 6f 2c 00 01 67 00 00 04 7d 02 00 7c 01 00 44 5d 19 00 7d 03 00 7c 02 00 74 01 00 69 05 ...o,..g...}..|..D]..}..|..t..i.
2960 00 7c 00 00 7c 03 00 83 02 00 12 71 3c 00 7e 02 00 53 01 74 00 00 7c 00 00 74 06 00 83 02 00 6f .|..|......q<.~..S.t..|..t.....o
2980 0e 00 01 7c 00 00 69 07 00 7c 01 00 83 01 00 53 01 7c 01 00 53 64 01 00 53 28 02 00 00 00 73 f6 ...|..i..|.....S.|..Sd..S(....s.
29a0 01 00 00 43 6f 6e 76 65 72 74 20 61 6e 79 20 76 61 6c 75 65 20 74 6f 20 73 69 6d 70 6c 69 66 69 ...Convert.any.value.to.simplifi
29c0 65 64 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 61 6e 64 20 62 61 73 69 63 20 74 79 70 65 73 2e 0a ed.collections.and.basic.types..
29e0 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 6c 69 64 61 74 6f 72 3a 20 41 6e 20 69 .....Args:.......validator:.An.i
2a00 6e 73 74 61 6e 63 65 20 6f 66 20 56 61 6c 69 64 61 74 6f 72 20 74 68 61 74 20 63 6f 72 72 65 73 nstance.of.Validator.that.corres
2a20 70 6f 6e 64 73 20 77 69 74 68 20 27 76 61 6c 75 65 27 2e 0a 20 20 20 20 20 20 20 20 4d 61 79 20 ponds.with.'value'..........May.
2a40 61 6c 73 6f 20 62 65 20 27 73 74 72 27 20 6f 72 20 27 69 6e 74 27 20 69 66 20 74 68 6f 73 65 20 also.be.'str'.or.'int'.if.those.
2a60 77 65 72 65 20 75 73 65 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 20 66 75 6c 6c 0a 20 20 20 20 were.used.instead.of.a.full.....
2a80 20 20 20 20 56 61 6c 69 64 61 74 6f 72 2e 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 56 61 6c 75 ....Validator........value:.Valu
2aa0 65 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 6f 20 73 69 6d 70 6c 69 66 69 65 64 20 63 6f 6c 6c 65 e.to.convert.to.simplified.colle
2ac0 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 54 68 65 20 ctions.......Returns:.......The.
2ae0 76 61 6c 75 65 20 61 73 20 61 20 64 69 63 74 69 6f 6e 61 72 79 20 69 66 20 69 74 20 69 73 20 61 value.as.a.dictionary.if.it.is.a
2b00 20 56 61 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 20 20 41 20 6c 69 73 74 20 .Validated.object........A.list.
2b20 6f 66 20 69 74 65 6d 73 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 20 73 69 6d 70 6c 69 66 69 65 64 of.items.converted.to.simplified
2b40 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 20 69 66 20 76 61 6c 75 65 20 69 73 20 61 20 6c 69 73 74 0a .collections.if.value.is.a.list.
2b60 20 20 20 20 20 20 20 20 6f 72 20 61 20 74 75 70 6c 65 2e 0a 20 20 20 20 20 20 4f 74 68 65 72 77 ........or.a.tuple........Otherw
2b80 69 73 65 2c 20 6a 75 73 74 20 74 68 65 20 76 61 6c 75 65 2e 0a 20 20 20 20 4e 28 08 00 00 00 52 ise,.just.the.value......N(....R
2ba0 10 00 00 00 52 1c 00 00 00 74 06 00 00 00 54 6f 44 69 63 74 52 15 00 00 00 52 16 00 00 00 74 08 ....R....t....ToDictR....R....t.
2bc0 00 00 00 5f 54 6f 56 61 6c 75 65 52 19 00 00 00 74 07 00 00 00 54 6f 56 61 6c 75 65 28 04 00 00 ..._ToValueR....t....ToValue(...
2be0 00 52 1a 00 00 00 52 2a 00 00 00 52 33 00 00 00 74 04 00 00 00 69 74 65 6d 28 00 00 00 00 28 00 .R....R*...R3...t....item(....(.
2c00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 ...sG.../home/zx2c4/Desktop/goog
2c20 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 le_appengine/google/appengine/ap
2c40 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 42 00 00 00 18 01 00 00 73 0e 00 00 00 00 10 10 i/validation.pyRB.......s.......
2c60 01 0b 01 16 01 2c 02 10 01 0e 01 63 01 00 00 00 05 00 00 00 04 00 00 00 43 00 00 00 73 73 00 00 .....,.....c............C...ss..
2c80 00 68 00 00 7d 01 00 78 66 00 7c 00 00 69 00 00 69 01 00 83 00 00 44 5d 55 00 5c 02 00 7d 02 00 .h..}..xf.|..i..i.....D]U.\..}..
2ca0 7d 03 00 74 02 00 7c 00 00 7c 02 00 83 02 00 7d 04 00 74 03 00 7c 03 00 74 04 00 83 02 00 6f 0d }..t..|..|.....}..t..|..t.....o.
2cc0 00 01 7c 04 00 7c 03 00 69 05 00 6a 02 00 70 1a 00 01 74 06 00 69 07 00 7c 03 00 7c 04 00 83 02 ..|..|..i..j..p...t..i..|..|....
2ce0 00 7c 01 00 7c 02 00 3c 71 16 00 01 71 16 00 57 7c 01 00 53 28 01 00 00 00 73 8f 01 00 00 43 6f .|..|..<q...q..W|..S(....s....Co
2d00 6e 76 65 72 74 20 56 61 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 20 74 6f 20 61 20 64 69 63 74 nvert.Validated.object.to.a.dict
2d20 69 6f 6e 61 72 79 2e 0a 0a 20 20 20 20 52 65 63 75 72 73 69 76 65 6c 79 20 74 72 61 76 65 72 73 ionary.......Recursively.travers
2d40 65 73 20 61 6c 6c 20 6f 66 20 69 74 73 20 65 6c 65 6d 65 6e 74 73 20 61 6e 64 20 63 6f 6e 76 65 es.all.of.its.elements.and.conve
2d60 72 74 73 20 65 76 65 72 79 74 68 69 6e 67 20 74 6f 0a 20 20 20 20 73 69 6d 70 6c 69 66 69 65 64 rts.everything.to.....simplified
2d80 20 63 6f 6c 6c 65 63 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 .collections.......Returns:.....
2da0 20 20 41 20 64 69 63 74 20 6f 66 20 61 6c 6c 20 61 74 74 72 69 62 75 74 65 73 20 64 65 66 69 6e ..A.dict.of.all.attributes.defin
2dc0 65 64 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73 65 73 20 41 54 54 52 49 42 55 54 45 53 20 6d 61 ed.in.this.classes.ATTRIBUTES.ma
2de0 70 70 65 64 0a 20 20 20 20 20 20 74 6f 20 69 74 73 20 76 61 6c 75 65 2e 20 20 54 68 69 73 20 73 pped.......to.its.value...This.s
2e00 74 72 75 63 74 75 72 65 20 69 73 20 72 65 63 75 72 73 69 76 65 20 69 6e 20 74 68 61 74 20 56 61 tructure.is.recursive.in.that.Va
2e20 6c 69 64 61 74 65 64 20 6f 62 6a 65 63 74 73 0a 20 20 20 20 20 20 74 68 61 74 20 61 72 65 20 72 lidated.objects.......that.are.r
2e40 65 66 65 72 65 6e 63 65 64 20 62 79 20 74 68 69 73 20 6f 62 6a 65 63 74 20 61 6e 64 20 69 6e 20 eferenced.by.this.object.and.in.
2e60 6c 69 73 74 73 20 61 72 65 20 61 6c 73 6f 20 63 6f 6e 76 65 72 74 65 64 20 74 6f 0a 20 20 20 20 lists.are.also.converted.to.....
2e80 20 20 64 69 63 74 73 2e 0a 20 20 20 20 28 08 00 00 00 52 1d 00 00 00 52 28 00 00 00 52 2c 00 00 ..dicts......(....R....R(...R,..
2ea0 00 52 10 00 00 00 52 19 00 00 00 52 24 00 00 00 52 1c 00 00 00 52 42 00 00 00 28 05 00 00 00 52 .R....R....R$...R....RB...(....R
2ec0 0b 00 00 00 52 3f 00 00 00 74 04 00 00 00 6e 61 6d 65 52 1a 00 00 00 52 2a 00 00 00 28 00 00 00 ....R?...t....nameR....R*...(...
2ee0 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 .(....sG.../home/zx2c4/Desktop/g
2f00 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 oogle_appengine/google/appengine
2f20 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 41 00 00 00 31 01 00 00 73 0e 00 00 00 /api/validation.pyRA...1...s....
2f40 00 0c 06 01 10 00 0c 01 0f 01 20 01 1e 01 63 01 00 00 00 01 00 00 00 06 00 00 00 43 00 00 00 73 ..............c............C...s
2f60 22 00 00 00 74 00 00 69 01 00 7c 00 00 69 02 00 83 00 00 64 01 00 74 03 00 64 02 00 74 00 00 69 "...t..i..|..i.....d..t..d..t..i
2f80 04 00 83 01 02 53 28 03 00 00 00 73 9a 00 00 00 50 72 69 6e 74 20 76 61 6c 69 64 61 74 65 64 20 .....S(....s....Print.validated.
2fa0 6f 62 6a 65 63 74 20 61 73 20 73 69 6d 70 6c 69 66 69 65 64 20 59 41 4d 4c 2e 0a 0a 20 20 20 20 object.as.simplified.YAML.......
2fc0 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 4f 62 6a 65 63 74 20 61 73 20 61 20 73 69 6d 70 6c Returns:.......Object.as.a.simpl
2fe0 69 66 69 65 64 20 59 41 4d 4c 20 73 74 72 69 6e 67 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 ified.YAML.string.compatible.wit
3000 68 20 70 61 72 73 69 6e 67 20 75 73 69 6e 67 20 74 68 65 0a 20 20 20 20 20 20 53 61 66 65 4c 6f h.parsing.using.the.......SafeLo
3020 61 64 65 72 2e 0a 20 20 20 20 74 12 00 00 00 64 65 66 61 75 6c 74 5f 66 6c 6f 77 5f 73 74 79 6c ader......t....default_flow_styl
3040 65 74 06 00 00 00 44 75 6d 70 65 72 28 05 00 00 00 74 04 00 00 00 79 61 6d 6c 74 04 00 00 00 64 et....Dumper(....t....yamlt....d
3060 75 6d 70 52 41 00 00 00 52 39 00 00 00 74 0a 00 00 00 53 61 66 65 44 75 6d 70 65 72 28 01 00 00 umpRA...R9...t....SafeDumper(...
3080 00 52 0b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 .R....(....(....sG.../home/zx2c4
30a0 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 /Desktop/google_appengine/google
30c0 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 06 00 00 /appengine/api/validation.pyt...
30e0 00 54 6f 59 41 4d 4c 44 01 00 00 73 06 00 00 00 00 07 12 01 06 01 4e 28 14 00 00 00 52 01 00 00 .ToYAMLD...s..........N(....R...
3100 00 52 02 00 00 00 52 03 00 00 00 52 0e 00 00 00 52 1d 00 00 00 52 08 00 00 00 74 0b 00 00 00 63 .R....R....R....R....R....t....c
3120 6c 61 73 73 6d 65 74 68 6f 64 52 23 00 00 00 52 25 00 00 00 52 2e 00 00 00 52 22 00 00 00 52 0d lassmethodR#...R%...R....R"...R.
3140 00 00 00 52 38 00 00 00 52 3c 00 00 00 52 3d 00 00 00 52 40 00 00 00 74 0c 00 00 00 73 74 61 74 ...R8...R<...R=...R@...t....stat
3160 69 63 6d 65 74 68 6f 64 52 42 00 00 00 52 41 00 00 00 52 4b 00 00 00 28 00 00 00 00 28 00 00 00 icmethodRB...RA...RK...(....(...
3180 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 .(....sG.../home/zx2c4/Desktop/g
31a0 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 oogle_appengine/google/appengine
31c0 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 1c 00 00 00 6d 00 00 00 73 1e 00 00 00 /api/validation.pyR....m...s....
31e0 06 10 06 02 06 02 09 14 0f 0d 09 11 09 16 09 1a 09 04 09 0a 09 13 09 04 09 10 0f 19 09 13 52 19 ..............................R.
3200 00 00 00 63 00 00 00 00 00 00 00 00 02 00 00 00 42 00 00 00 73 3b 00 00 00 65 00 00 5a 01 00 64 ...c............B...s;...e..Z..d
3220 00 00 5a 02 00 65 03 00 5a 04 00 64 05 00 64 01 00 84 01 00 5a 06 00 64 02 00 84 00 00 5a 07 00 ..Z..e..Z..d..d.....Z..d.....Z..
3240 64 03 00 84 00 00 5a 08 00 64 04 00 84 00 00 5a 09 00 52 53 28 06 00 00 00 73 8f 01 00 00 56 61 d.....Z..d.....Z..RS(....s....Va
3260 6c 69 64 61 74 6f 72 20 62 61 73 65 20 63 6c 61 73 73 2e 0a 0a 20 20 54 68 6f 75 67 68 20 61 6e lidator.base.class.....Though.an
3280 79 20 63 61 6c 6c 61 62 6c 65 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 61 20 76 61 6c 69 y.callable.can.be.used.as.a.vali
32a0 64 61 74 6f 72 2c 20 74 68 69 73 20 63 6c 61 73 73 20 65 6e 63 61 70 73 75 6c 61 74 65 73 20 74 dator,.this.class.encapsulates.t
32c0 68 65 0a 20 20 63 61 73 65 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 63 20 76 61 6c 69 64 61 he...case.when.a.specific.valida
32e0 74 6f 72 20 6e 65 65 64 73 20 74 6f 20 68 6f 6c 64 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 73 tor.needs.to.hold.a.particular.s
3300 74 61 74 65 20 6f 72 0a 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 0a 0a 20 20 54 6f 20 69 tate.or...configuration.....To.i
3320 6d 70 6c 65 6d 65 6e 74 20 56 61 6c 69 64 61 74 6f 72 20 73 75 62 2d 63 6c 61 73 73 2c 20 6f 76 mplement.Validator.sub-class,.ov
3340 65 72 72 69 64 65 20 74 68 65 20 76 61 6c 69 64 61 74 65 20 6d 65 74 68 6f 64 2e 0a 0a 20 20 54 erride.the.validate.method.....T
3360 68 69 73 20 63 6c 61 73 73 20 69 73 20 70 65 72 6d 69 74 74 65 64 20 74 6f 20 63 68 61 6e 67 65 his.class.is.permitted.to.change
3380 20 74 68 65 20 75 6c 74 69 6d 61 74 65 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 73 65 74 20 .the.ultimate.value.that.is.set.
33a0 74 6f 20 74 68 65 0a 20 20 61 74 74 72 69 62 75 74 65 20 69 66 20 74 68 65 72 65 20 69 73 20 61 to.the...attribute.if.there.is.a
33c0 20 72 65 61 73 6f 6e 61 62 6c 65 20 77 61 79 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 20 63 .reasonable.way.to.perform.the.c
33e0 6f 6e 76 65 72 73 69 6f 6e 2e 0a 20 20 63 02 00 00 00 02 00 00 00 02 00 00 00 43 00 00 00 73 0d onversion....c............C...s.
3400 00 00 00 7c 01 00 7c 00 00 5f 00 00 64 01 00 53 28 02 00 00 00 73 8a 00 00 00 43 6f 6e 73 74 72 ...|..|.._..d..S(....s....Constr
3420 75 63 74 6f 72 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a uctor.......Args:.......default:
3440 20 44 65 66 61 75 6c 74 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 73 20 6d 61 64 65 20 64 75 72 69 .Default.assignment.is.made.duri
3460 6e 67 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 61 6e 64 20 77 69 6c 6c 0a 20 20 20 20 20 ng.initialization.and.will......
3480 20 20 20 6e 6f 74 20 70 61 73 73 20 74 68 72 6f 75 67 68 20 76 61 6c 69 64 61 74 69 6f 6e 2e 0a ...not.pass.through.validation..
34a0 20 20 20 20 4e 28 01 00 00 00 52 24 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 24 00 00 00 28 00 ....N(....R$...(....R....R$...(.
34c0 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 ...(....sG.../home/zx2c4/Desktop
34e0 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 /google_appengine/google/appengi
3500 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 60 01 00 00 73 02 00 ne/api/validation.pyR....`...s..
3520 00 00 00 07 63 02 00 00 00 02 00 00 00 02 00 00 00 43 00 00 00 73 0d 00 00 00 7c 00 00 69 00 00 ....c............C...s....|..i..
3540 7c 01 00 83 01 00 53 28 01 00 00 00 73 2e 00 00 00 4d 61 69 6e 20 69 6e 74 65 72 66 61 63 65 20 |.....S(....s....Main.interface.
3560 74 6f 20 76 61 6c 69 64 61 74 6f 72 20 69 73 20 63 61 6c 6c 20 6d 65 63 68 61 6e 69 73 6d 2e 28 to.validator.is.call.mechanism.(
3580 01 00 00 00 74 08 00 00 00 56 61 6c 69 64 61 74 65 28 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 ....t....Validate(....R....R*...
35a0 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 (....(....sG.../home/zx2c4/Deskt
35c0 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e op/google_appengine/google/appen
35e0 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 08 00 00 00 5f 5f 63 61 6c gine/api/validation.pyt....__cal
3600 6c 5f 5f 69 01 00 00 73 02 00 00 00 00 02 63 02 00 00 00 02 00 00 00 01 00 00 00 43 00 00 00 73 l__i...s......c............C...s
3620 04 00 00 00 7c 01 00 53 28 01 00 00 00 73 b6 00 00 00 4f 76 65 72 72 69 64 65 20 74 68 69 73 20 ....|..S(....s....Override.this.
3640 6d 65 74 68 6f 64 20 74 6f 20 63 75 73 74 6f 6d 69 7a 65 20 73 75 62 2d 63 6c 61 73 73 20 62 65 method.to.customize.sub-class.be
3660 68 61 76 69 6f 72 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 havior.......Args:.......value:.
3680 56 61 6c 75 65 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a Value.to.validate.......Returns:
36a0 0a 20 20 20 20 20 20 56 61 6c 75 65 20 69 66 20 76 61 6c 75 65 20 69 73 20 76 61 6c 69 64 2c 20 .......Value.if.value.is.valid,.
36c0 6f 72 20 61 20 76 61 6c 69 64 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 76 61 6c or.a.valid.representation.of.val
36e0 75 65 2e 0a 20 20 20 20 28 00 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 28 00 00 00 ue......(....(....R....R*...(...
3700 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 .(....sG.../home/zx2c4/Desktop/g
3720 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 oogle_appengine/google/appengine
3740 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 00 6d 01 00 00 73 02 00 00 00 /api/validation.pyRN...m...s....
3760 00 09 63 02 00 00 00 02 00 00 00 01 00 00 00 43 00 00 00 73 04 00 00 00 7c 01 00 53 28 01 00 00 ..c............C...s....|..S(...
3780 00 73 a6 01 00 00 43 6f 6e 76 65 72 74 20 27 76 61 6c 75 65 27 20 74 6f 20 61 20 73 69 6d 70 6c .s....Convert.'value'.to.a.simpl
37a0 69 66 69 65 64 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 72 20 62 61 73 69 63 20 74 79 70 65 2e 0a ified.collection.or.basic.type..
37c0 0a 20 20 20 20 53 75 62 63 6c 61 73 73 65 73 20 6f 66 20 56 61 6c 69 64 61 74 6f 72 20 73 68 6f .....Subclasses.of.Validator.sho
37e0 75 6c 64 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 6d 65 74 68 6f 64 20 77 68 65 6e 20 74 68 uld.override.this.method.when.th
3800 65 20 64 75 6d 70 65 64 0a 20 20 20 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 27 e.dumped.....representation.of.'
3820 76 61 6c 75 65 27 20 69 73 20 6e 6f 74 20 73 69 6d 70 6c 79 20 3c 74 79 70 65 3e 28 76 61 6c 75 value'.is.not.simply.<type>(valu
3840 65 29 20 28 65 2e 67 2e 20 61 20 72 65 67 65 78 29 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 e).(e.g..a.regex).......Args:...
3860 20 20 20 20 76 61 6c 75 65 3a 20 41 6e 20 6f 62 6a 65 63 74 20 6f 66 20 74 68 65 20 73 61 6d 65 ....value:.An.object.of.the.same
3880 20 74 79 70 65 20 74 68 61 74 20 77 61 73 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 56 61 6c .type.that.was.returned.from.Val
38a0 69 64 61 74 65 28 29 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 41 6e 20 idate().......Returns:.......An.
38c0 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 62 75 69 6c 74 69 6e 20 74 79 70 65 20 28 65 2e 67 2e instance.of.a.builtin.type.(e.g.
38e0 20 69 6e 74 2c 20 73 74 72 2c 20 64 69 63 74 2c 20 65 74 63 29 2e 20 20 42 79 20 64 65 66 61 75 .int,.str,.dict,.etc)...By.defau
3900 6c 74 0a 20 20 20 20 20 20 69 74 20 72 65 74 75 72 6e 73 20 27 76 61 6c 75 65 27 20 75 6e 6d 6f lt.......it.returns.'value'.unmo
3920 64 69 66 69 65 64 2e 0a 20 20 20 20 28 00 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 dified......(....(....R....R*...
3940 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 (....(....sG.../home/zx2c4/Deskt
3960 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e op/google_appengine/google/appen
3980 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 43 00 00 00 78 01 00 00 73 gine/api/validation.pyRC...x...s
39a0 02 00 00 00 00 0d 4e 28 0a 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 21 00 00 00 ......N(....R....R....R....R!...
39c0 74 0d 00 00 00 65 78 70 65 63 74 65 64 5f 74 79 70 65 52 0e 00 00 00 52 08 00 00 00 52 4f 00 00 t....expected_typeR....R....RO..
39e0 00 52 4e 00 00 00 52 43 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f .RN...RC...(....(....(....sG.../
3a00 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 home/zx2c4/Desktop/google_appeng
3a20 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 ine/google/appengine/api/validat
3a40 69 6f 6e 2e 70 79 52 19 00 00 00 51 01 00 00 73 0c 00 00 00 06 0b 06 02 06 02 0c 09 09 04 09 0b ion.pyR....Q...s................
3a60 52 14 00 00 00 63 00 00 00 00 00 00 00 00 03 00 00 00 42 00 00 00 73 26 00 00 00 65 00 00 5a 01 R....c............B...s&...e..Z.
3a80 00 64 00 00 5a 02 00 65 03 00 64 03 00 64 01 00 84 02 00 5a 05 00 64 02 00 84 00 00 5a 06 00 52 .d..Z..e..d..d.....Z..d.....Z..R
3aa0 53 28 04 00 00 00 73 a9 02 00 00 56 65 72 69 66 69 65 73 20 70 72 6f 70 65 72 74 79 20 69 73 20 S(....s....Verifies.property.is.
3ac0 6f 66 20 65 78 70 65 63 74 65 64 20 74 79 70 65 2e 0a 0a 20 20 43 61 6e 20 6f 70 74 69 6f 6e 61 of.expected.type.....Can.optiona
3ae0 6c 6c 79 20 63 6f 6e 76 65 72 74 20 76 61 6c 75 65 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 6f lly.convert.value.if.it.is.not.o
3b00 66 20 74 68 65 20 65 78 70 65 63 74 65 64 20 74 79 70 65 2e 0a 0a 20 20 49 74 20 69 73 20 70 6f f.the.expected.type.....It.is.po
3b20 73 73 69 62 6c 65 20 74 6f 20 73 70 65 63 69 66 79 20 61 20 72 65 71 75 69 72 65 64 20 66 69 65 ssible.to.specify.a.required.fie
3b40 6c 64 20 6f 66 20 61 20 73 70 65 63 69 66 69 63 20 74 79 70 65 20 69 6e 20 73 68 6f 72 74 68 61 ld.of.a.specific.type.in.shortha
3b60 6e 64 0a 20 20 62 79 20 6d 65 72 65 6c 79 20 70 72 6f 76 69 64 69 6e 67 20 74 68 65 20 74 79 70 nd...by.merely.providing.the.typ
3b80 65 2e 20 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 73 6c 69 67 68 74 6c 79 20 6c 65 73 73 e...This.method.is.slightly.less
3ba0 20 65 66 66 69 63 69 65 6e 74 20 74 68 61 6e 0a 20 20 70 72 6f 76 69 64 69 6e 67 20 61 6e 20 65 .efficient.than...providing.an.e
3bc0 78 70 6c 69 63 69 74 20 74 79 70 65 20 62 75 74 20 69 73 20 6e 6f 74 20 73 69 67 6e 69 66 69 63 xplicit.type.but.is.not.signific
3be0 61 6e 74 20 75 6e 6c 65 73 73 20 70 61 72 73 69 6e 67 20 61 20 6c 61 72 67 65 0a 20 20 61 6d 6f ant.unless.parsing.a.large...amo
3c00 75 6e 74 20 6f 66 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 0a 20 20 20 20 63 6c 61 73 73 20 50 unt.of.information:......class.P
3c20 65 72 73 6f 6e 28 56 61 6c 69 64 61 74 65 64 29 3a 0a 20 20 20 20 20 20 41 54 54 52 49 42 55 54 erson(Validated):.......ATTRIBUT
3c40 45 53 20 3d 20 7b 27 6e 61 6d 65 27 3a 20 75 6e 69 63 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 ES.=.{'name':.unicode,..........
3c60 20 20 20 20 20 20 20 20 20 20 20 27 61 67 65 27 3a 20 69 6e 74 2c 0a 20 20 20 20 20 20 20 20 20 ...........'age':.int,..........
3c80 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 48 6f 77 65 76 65 72 2c 20 69 6e 20 6d 6f 73 74 ...........}....However,.in.most
3ca0 20 69 6e 73 74 61 6e 63 65 73 20 69 74 20 69 73 20 62 65 73 74 20 74 6f 20 75 73 65 20 74 68 65 .instances.it.is.best.to.use.the
3cc0 20 74 79 70 65 20 63 6f 6e 73 74 61 6e 74 73 3a 0a 0a 20 20 20 20 63 6c 61 73 73 20 50 65 72 73 .type.constants:......class.Pers
3ce0 6f 6e 28 56 61 6c 69 64 61 74 65 64 29 3a 0a 20 20 20 20 20 20 41 54 54 52 49 42 55 54 45 53 20 on(Validated):.......ATTRIBUTES.
3d00 3d 20 7b 27 6e 61 6d 65 27 3a 20 54 79 70 65 55 6e 69 63 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 =.{'name':.TypeUnicode,.........
3d20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 67 65 27 3a 20 54 79 70 65 49 6e 74 2c 0a 20 20 20 20 ............'age':.TypeInt,.....
3d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 63 04 00 00 00 04 00 00 00 03 00 00 ................}...c...........
3d60 00 43 00 00 00 73 2c 00 00 00 74 00 00 74 01 00 7c 00 00 83 02 00 69 02 00 7c 03 00 83 01 00 01 .C...s,...t..t..|.....i..|......
3d80 7c 01 00 7c 00 00 5f 03 00 7c 02 00 7c 00 00 5f 04 00 64 01 00 53 28 02 00 00 00 73 1d 01 00 00 |..|.._..|..|.._..d..S(....s....
3da0 49 6e 69 74 69 61 6c 69 7a 65 20 54 79 70 65 20 76 61 6c 69 64 61 74 6f 72 2e 0a 0a 20 20 20 20 Initialize.Type.validator.......
3dc0 41 72 67 73 3a 0a 20 20 20 20 20 20 65 78 70 65 63 74 65 64 5f 74 79 70 65 3a 20 54 79 70 65 20 Args:.......expected_type:.Type.
3de0 74 68 61 74 20 61 74 74 72 69 62 75 74 65 20 73 68 6f 75 6c 64 20 76 61 6c 69 64 61 74 65 20 61 that.attribute.should.validate.a
3e00 67 61 69 6e 73 74 2e 0a 20 20 20 20 20 20 63 6f 6e 76 65 72 74 3a 20 43 61 75 73 65 20 63 6f 6e gainst........convert:.Cause.con
3e20 76 65 72 73 69 6f 6e 20 69 66 20 76 61 6c 75 65 20 69 73 20 6e 6f 74 20 74 68 65 20 72 69 67 68 version.if.value.is.not.the.righ
3e40 74 20 74 79 70 65 2e 0a 20 20 20 20 20 20 20 20 43 6f 6e 76 65 72 73 69 6f 6e 20 69 73 20 64 6f t.type..........Conversion.is.do
3e60 6e 65 20 62 79 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 6f 66 ne.by.calling.the.constructor.of
3e80 20 74 68 65 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 76 61 6c 75 65 .the.type.........with.the.value
3ea0 20 61 73 20 69 74 73 20 66 69 72 73 74 20 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 20 20 4e 28 05 .as.its.first.parameter......N(.
3ec0 00 00 00 74 05 00 00 00 73 75 70 65 72 52 14 00 00 00 52 08 00 00 00 52 50 00 00 00 74 07 00 00 ...t....superR....R....RP...t...
3ee0 00 63 6f 6e 76 65 72 74 28 04 00 00 00 52 0b 00 00 00 52 50 00 00 00 52 52 00 00 00 52 24 00 00 .convert(....R....RP...RR...R$..
3f00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b .(....(....sG.../home/zx2c4/Desk
3f20 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 top/google_appengine/google/appe
3f40 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 9f 01 00 00 ngine/api/validation.pyR........
3f60 73 06 00 00 00 00 09 16 01 09 01 63 02 00 00 00 03 00 00 00 05 00 00 00 43 00 00 00 73 af 00 00 s..........c............C...s...
3f80 00 74 00 00 7c 01 00 7c 00 00 69 01 00 83 02 00 70 94 00 01 7c 01 00 64 04 00 6a 09 00 6f 77 00 .t..|..|..i.....p...|..d..j..ow.
3fa0 01 7c 00 00 69 03 00 6f 6d 00 01 79 11 00 7c 00 00 69 01 00 7c 01 00 83 01 00 53 57 71 a3 00 04 .|..i..om..y..|..i..|.....SWq...
3fc0 74 04 00 6a 0a 00 6f 1c 00 01 01 7d 02 00 01 74 05 00 64 01 00 7c 01 00 16 7c 02 00 83 02 00 82 t..j..o....}...t..d..|...|......
3fe0 01 00 71 a3 00 01 04 74 06 00 6a 0a 00 6f 22 00 01 01 7d 02 00 01 74 05 00 64 02 00 7c 00 00 69 ..q....t..j..o"...}...t..d..|..i
4000 01 00 7c 01 00 66 02 00 16 83 01 00 82 01 00 71 a3 00 01 58 71 ab 00 01 74 07 00 64 03 00 83 01 ..|..f.........q...Xq...t..d....
4020 00 82 01 00 6e 05 00 01 7c 01 00 53 64 04 00 53 28 05 00 00 00 73 5a 01 00 00 56 61 6c 69 64 61 ....n...|..Sd..S(....sZ...Valida
4040 74 65 20 74 68 61 74 20 76 61 6c 75 65 20 69 73 20 63 6f 72 72 65 63 74 20 74 79 70 65 2e 0a 0a te.that.value.is.correct.type...
4060 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 56 61 6c 75 65 20 74 6f 20 ....Args:.......value:.Value.to.
4080 76 61 6c 69 64 61 74 65 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 4e 6f validate.......Returns:.......No
40a0 6e 65 20 69 66 20 76 61 6c 75 65 20 69 73 20 4e 6f 6e 65 2c 20 76 61 6c 75 65 20 69 66 20 76 61 ne.if.value.is.None,.value.if.va
40c0 6c 75 65 20 69 73 20 6f 66 20 63 6f 72 72 65 63 74 20 74 79 70 65 2c 20 63 6f 6e 76 65 72 74 65 lue.is.of.correct.type,.converte
40e0 64 0a 20 20 20 20 20 20 76 61 6c 75 65 20 69 66 20 74 68 65 20 76 61 6c 69 64 61 74 6f 72 20 69 d.......value.if.the.validator.i
4100 73 20 63 6f 6e 66 69 67 75 72 65 64 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0a 0a 20 20 20 20 52 61 s.configured.to.convert.......Ra
4120 69 73 65 73 3a 0a 20 20 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 76 ises:.......ValidationError.if.v
4140 61 6c 75 65 20 69 73 20 6e 6f 74 20 6f 66 20 74 68 65 20 72 69 67 68 74 20 74 79 70 65 20 61 6e alue.is.not.of.the.right.type.an
4160 64 20 76 61 6c 69 64 61 74 6f 72 0a 20 20 20 20 20 20 69 73 20 6e 6f 74 20 63 6f 6e 66 69 67 75 d.validator.......is.not.configu
4180 72 65 64 20 74 6f 20 63 6f 6e 76 65 72 74 2e 0a 20 20 20 20 73 26 00 00 00 54 79 70 65 20 63 6f red.to.convert......s&...Type.co
41a0 6e 76 65 72 73 69 6f 6e 20 66 61 69 6c 65 64 20 66 6f 72 20 76 61 6c 75 65 20 27 25 73 27 2e 73 nversion.failed.for.value.'%s'.s
41c0 28 00 00 00 45 78 70 65 63 74 65 64 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 25 73 2c 20 62 (...Expected.value.of.type.%s,.b
41e0 75 74 20 67 6f 74 20 27 25 73 27 2e 73 1a 00 00 00 4d 69 73 73 69 6e 67 20 76 61 6c 75 65 20 69 ut.got.'%s'.s....Missing.value.i
4200 73 20 72 65 71 75 69 72 65 64 2e 4e 28 08 00 00 00 52 10 00 00 00 52 50 00 00 00 52 0e 00 00 00 s.required.N(....R....RP...R....
4220 52 52 00 00 00 74 0a 00 00 00 56 61 6c 75 65 45 72 72 6f 72 52 05 00 00 00 74 09 00 00 00 54 79 RR...t....ValueErrorR....t....Ty
4240 70 65 45 72 72 6f 72 52 0f 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 2a 00 00 00 52 2d 00 00 00 peErrorR....(....R....R*...R-...
4260 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 (....(....sG.../home/zx2c4/Deskt
4280 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e op/google_appengine/google/appen
42a0 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 00 ac 01 00 00 73 gine/api/validation.pyRN.......s
42c0 1a 00 00 00 00 0e 13 01 17 01 03 01 11 01 10 01 06 01 04 01 0d 01 10 01 06 01 1c 02 10 02 4e 28 ..............................N(
42e0 07 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 3a 00 00 00 52 0e 00 00 00 52 08 00 ....R....R....R....R:...R....R..
4300 00 00 52 4e 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 ..RN...(....(....(....sG.../home
4320 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f /zx2c4/Desktop/google_appengine/
4340 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e google/appengine/api/validation.
4360 70 79 52 14 00 00 00 88 01 00 00 73 06 00 00 00 06 15 06 02 0f 0d 52 18 00 00 00 63 00 00 00 00 pyR........s..........R....c....
4380 00 00 00 00 01 00 00 00 42 00 00 00 73 20 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 64 01 00 ........B...s....e..Z..d..Z..d..
43a0 84 00 00 5a 03 00 64 02 00 84 00 00 5a 04 00 52 53 28 03 00 00 00 73 3d 02 00 00 4c 69 6d 69 74 ...Z..d.....Z..RS(....s=...Limit
43c0 20 66 69 65 6c 64 20 62 61 73 65 64 20 6f 6e 20 70 72 65 2d 64 65 74 65 72 6d 69 6e 65 64 20 76 .field.based.on.pre-determined.v
43e0 61 6c 75 65 73 2e 0a 0a 20 20 4f 70 74 69 6f 6e 73 20 61 72 65 20 75 73 65 64 20 74 6f 20 6d 61 alues.....Options.are.used.to.ma
4400 6b 65 20 73 75 72 65 20 61 6e 20 65 6e 75 6d 65 72 61 74 65 64 20 73 65 74 20 6f 66 20 76 61 6c ke.sure.an.enumerated.set.of.val
4420 75 65 73 20 61 72 65 20 74 68 65 20 6f 6e 6c 79 0a 20 20 6f 6e 65 20 70 65 72 6d 69 74 74 65 64 ues.are.the.only...one.permitted
4440 20 66 6f 72 20 61 73 73 69 67 6e 6d 65 6e 74 2e 20 20 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65 .for.assignment...It.is.possible
4460 20 74 6f 20 64 65 66 69 6e 65 20 61 6c 69 61 73 65 73 20 77 68 69 63 68 0a 20 20 6d 61 70 20 6d .to.define.aliases.which...map.m
4480 75 6c 74 69 70 6c 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 73 20 74 6f 20 61 20 73 69 6e 67 6c ultiple.string.values.to.a.singl
44a0 65 20 6f 72 69 67 69 6e 61 6c 2e 20 20 41 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 61 67 65 e.original...An.example.of.usage
44c0 3a 0a 0a 20 20 20 20 63 6c 61 73 73 20 5a 6f 6f 41 6e 69 6d 61 6c 28 76 61 6c 69 64 61 74 65 64 :......class.ZooAnimal(validated
44e0 2e 43 6c 61 73 73 29 3a 0a 20 20 20 20 20 20 41 54 54 52 49 42 55 54 45 53 20 3d 20 7b 0a 20 20 .Class):.......ATTRIBUTES.=.{...
4500 20 20 20 20 20 20 27 6e 61 6d 65 27 3a 20 73 74 72 2c 0a 20 20 20 20 20 20 20 20 27 6b 69 6e 64 ......'name':.str,.........'kind
4520 27 3a 20 4f 70 74 69 6f 6e 73 28 27 70 6c 61 74 79 70 75 73 27 2c 20 20 20 20 20 20 20 20 20 20 ':.Options('platypus',..........
4540 20 20 20 20 20 20 20 20 20 23 20 4e 6f 20 61 6c 69 61 73 65 73 0a 20 20 20 20 20 20 20 20 20 20 .........#.No.aliases...........
4560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 72 68 69 6e 6f 63 65 72 6f 73 27 2c 20 5b 27 72 ..............('rhinoceros',.['r
4580 68 69 6e 6f 27 5d 29 2c 20 20 20 20 23 20 4f 6e 65 20 61 6c 69 61 73 0a 20 20 20 20 20 20 20 20 hino']),....#.One.alias.........
45a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 27 63 61 6e 69 6e 65 27 2c 20 28 27 64 6f 67 ................('canine',.('dog
45c0 27 2c 20 27 70 75 70 70 79 27 29 29 2c 20 23 20 54 77 6f 20 61 6c 69 61 73 65 73 0a 20 20 20 20 ',.'puppy')),.#.Two.aliases.....
45e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 20 20 63 01 00 00 00 09 00 00 ....................)...c.......
4600 00 06 00 00 00 0f 00 00 00 73 31 01 00 00 64 01 00 7c 02 00 6a 06 00 6f 0e 00 01 7c 02 00 64 01 .........s1...d..|..j..o...|..d.
4620 00 19 7d 03 00 6e 07 00 01 64 07 00 7d 03 00 68 00 00 89 00 00 87 00 00 66 01 00 64 02 00 86 00 ..}..n...d..}..h........f..d....
4640 00 7d 04 00 78 d5 00 7c 01 00 44 5d cd 00 7d 05 00 74 01 00 7c 05 00 74 02 00 83 02 00 6f 11 00 .}..x..|..D]..}..t..|..t.....o..
4660 01 7c 04 00 7c 05 00 7c 05 00 83 02 00 01 71 3d 00 01 74 01 00 7c 05 00 74 03 00 74 04 00 66 02 .|..|..|......q=..t..|..t..t..f.
4680 00 83 02 00 6f 84 00 01 74 05 00 7c 05 00 83 01 00 64 03 00 6a 03 00 6f 10 00 01 74 06 00 64 04 ....o...t..|.....d..j..o...t..d.
46a0 00 83 01 00 82 01 00 6e 01 00 01 7c 05 00 5c 02 00 7d 06 00 7d 07 00 7c 04 00 7c 06 00 7c 06 00 .......n...|..\..}..}..|..|..|..
46c0 83 02 00 01 74 01 00 7c 07 00 74 03 00 74 04 00 66 02 00 83 02 00 70 10 00 01 74 06 00 64 05 00 ....t..|..t..t..f.....p...t..d..
46e0 83 01 00 82 01 00 6e 01 00 01 78 2b 00 7c 07 00 44 5d 13 00 7d 08 00 7c 04 00 7c 08 00 7c 06 00 ......n...x+.|..D]..}..|..|..|..
4700 83 02 00 01 71 e3 00 57 71 3d 00 01 74 06 00 64 06 00 83 01 00 82 01 00 71 3d 00 57 74 07 00 74 ....q..Wq=..t..d........q=.Wt..t
4720 08 00 7c 00 00 83 02 00 69 09 00 7c 03 00 83 01 00 01 88 00 00 7c 00 00 5f 0a 00 64 07 00 53 28 ..|.....i..|.........|.._..d..S(
4740 08 00 00 00 73 4a 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 20 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20 ....sJ...Initialize.options.....
4760 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 6f 70 74 69 6f 6e 73 3a 20 4c 69 73 74 20 6f 66 20 61 ..Args:.......options:.List.of.a
4780 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 2e 0a 20 20 20 20 52 24 00 00 00 63 02 00 00 00 02 00 00 llowed.values......R$...c.......
47a0 00 03 00 00 00 13 00 00 00 73 4f 00 00 00 74 00 00 7c 00 00 74 01 00 83 02 00 70 10 00 01 74 02 .........sO...t..|..t.....p...t.
47c0 00 64 01 00 83 01 00 82 01 00 6e 22 00 01 7c 00 00 88 00 00 6a 06 00 6f 14 00 01 74 02 00 64 02 .d........n"..|.....j..o...t..d.
47e0 00 7c 00 00 16 83 01 00 82 01 00 6e 01 00 01 7c 01 00 88 00 00 7c 00 00 3c 64 03 00 53 28 04 00 .|.........n...|.....|..<d..S(..
4800 00 00 73 96 00 00 00 53 65 74 20 6e 65 77 20 61 6c 69 61 73 20 6f 6e 20 61 6c 69 61 73 5f 6d 61 ..s....Set.new.alias.on.alias_ma
4820 70 2e 0a 0a 20 20 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 20 20 41 74 74 72 69 62 p.........Raises:.........Attrib
4840 75 74 65 44 65 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 6f 70 74 69 6f 6e 20 61 uteDefinitionError.when.option.a
4860 6c 72 65 61 64 79 20 65 78 69 73 74 73 20 6f 72 20 69 66 20 61 6c 69 61 73 20 69 73 0a 20 20 20 lready.exists.or.if.alias.is....
4880 20 20 20 20 20 6e 6f 74 20 6f 66 20 74 79 70 65 20 73 74 72 2e 2e 0a 20 20 20 20 20 20 73 26 00 .....not.of.type.str.........s&.
48a0 00 00 41 6c 6c 20 6f 70 74 69 6f 6e 20 76 61 6c 75 65 73 20 6d 75 73 74 20 62 65 20 6f 66 20 74 ..All.option.values.must.be.of.t
48c0 79 70 65 20 73 74 72 2e 73 31 00 00 00 4f 70 74 69 6f 6e 20 27 25 73 27 20 61 6c 72 65 61 64 79 ype.str.s1...Option.'%s'.already
48e0 20 64 65 66 69 6e 65 64 20 66 6f 72 20 6f 70 74 69 6f 6e 73 20 70 72 6f 70 65 72 74 79 2e 4e 28 .defined.for.options.property.N(
4900 03 00 00 00 52 10 00 00 00 52 0c 00 00 00 52 04 00 00 00 28 02 00 00 00 74 05 00 00 00 61 6c 69 ....R....R....R....(....t....ali
4920 61 73 74 08 00 00 00 6f 72 69 67 69 6e 61 6c 28 01 00 00 00 74 09 00 00 00 61 6c 69 61 73 5f 6d ast....original(....t....alias_m
4940 61 70 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f ap(....sG.../home/zx2c4/Desktop/
4960 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e google_appengine/google/appengin
4980 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 08 00 00 00 41 64 64 41 6c 69 61 73 e/api/validation.pyt....AddAlias
49a0 ef 01 00 00 73 0e 00 00 00 00 07 10 01 03 01 0d 01 0d 01 03 01 11 01 69 02 00 00 00 73 bd 00 00 ....s..................i....s...
49c0 00 41 6c 69 61 73 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 20 61 20 6c 69 73 74 20 6f 66 20 74 .Alias.is.defined.as.a.list.of.t
49e0 75 70 6c 65 20 77 69 74 68 20 74 77 6f 20 69 74 65 6d 73 2e 20 20 54 68 65 20 66 69 72 73 74 20 uple.with.two.items...The.first.
4a00 69 73 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 6f 70 74 69 6f 6e 2c 20 77 68 69 6c 65 20 74 68 is.the.original.option,.while.th
4a20 65 20 73 65 63 6f 6e 64 20 69 73 20 61 20 6c 69 73 74 20 6f 72 20 74 75 70 6c 65 20 6f 66 20 73 e.second.is.a.list.or.tuple.of.s
4a40 74 72 20 61 6c 69 61 73 65 73 2e 0a 0a 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 28 27 tr.aliases.....Example:.......('
4a60 6f 72 69 67 69 6e 61 6c 27 2c 20 28 27 61 6c 69 61 73 31 27 2c 20 27 61 6c 69 61 73 32 27 73 23 original',.('alias1',.'alias2's#
4a80 00 00 00 41 6c 69 61 73 20 6c 69 73 74 73 20 6d 75 73 74 20 62 65 20 61 20 6c 69 73 74 20 6f 72 ...Alias.lists.must.be.a.list.or
4aa0 20 74 75 70 6c 65 73 3f 00 00 00 41 6c 6c 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74 20 62 65 20 6f .tuples?...All.options.must.be.o
4ac0 66 20 74 79 70 65 20 73 74 72 20 6f 72 20 6f 66 20 74 68 65 20 66 6f 72 6d 20 28 73 74 72 2c 20 f.type.str.or.of.the.form.(str,.
4ae0 5b 73 74 72 2e 2e 2e 5d 29 2e 4e 28 0b 00 00 00 52 0e 00 00 00 52 10 00 00 00 52 0c 00 00 00 52 [str...]).N(....R....R....R....R
4b00 15 00 00 00 52 16 00 00 00 74 03 00 00 00 6c 65 6e 52 04 00 00 00 52 51 00 00 00 52 18 00 00 00 ....R....t....lenR....RQ...R....
4b20 52 08 00 00 00 74 07 00 00 00 6f 70 74 69 6f 6e 73 28 09 00 00 00 52 0b 00 00 00 52 5a 00 00 00 R....t....options(....R....RZ...
4b40 74 02 00 00 00 6b 77 52 24 00 00 00 52 58 00 00 00 74 06 00 00 00 6f 70 74 69 6f 6e 52 56 00 00 t....kwR$...RX...t....optionRV..
4b60 00 74 07 00 00 00 61 6c 69 61 73 65 73 52 55 00 00 00 28 00 00 00 00 28 01 00 00 00 52 57 00 00 .t....aliasesRU...(....(....RW..
4b80 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 .sG.../home/zx2c4/Desktop/google
4ba0 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f _appengine/google/appengine/api/
4bc0 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 e3 01 00 00 73 2c 00 00 00 00 06 0d 01 0e validation.pyR........s,........
4be0 02 06 02 06 01 0f 0f 07 00 06 01 10 01 11 02 16 01 13 01 10 07 0c 01 0d 01 16 01 10 02 07 00 06 ................................
4c00 01 15 03 10 02 16 01 63 02 00 00 00 02 00 00 00 04 00 00 00 43 00 00 00 73 61 00 00 00 7c 01 00 .......c............C...sa...|..
4c20 64 03 00 6a 08 00 6f 10 00 01 74 01 00 64 01 00 83 01 00 82 01 00 6e 01 00 01 74 02 00 7c 01 00 d..j..o...t..d........n...t..|..
4c40 83 01 00 7d 01 00 7c 01 00 7c 00 00 69 03 00 6a 07 00 6f 1d 00 01 74 01 00 64 02 00 7c 01 00 7c ...}..|..|..i..j..o...t..d..|..|
4c60 00 00 69 03 00 66 02 00 16 83 01 00 82 01 00 6e 01 00 01 7c 00 00 69 03 00 7c 01 00 19 53 28 04 ..i..f.........n...|..i..|...S(.
4c80 00 00 00 73 9c 00 00 00 56 61 6c 69 64 61 74 65 20 6f 70 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 52 ...s....Validate.options.......R
4ca0 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 4f 72 69 67 69 6e 61 6c 20 76 61 6c 75 65 20 66 6f 72 eturns:.......Original.value.for
4cc0 20 70 72 6f 76 69 64 65 64 20 61 6c 69 61 73 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 .provided.alias.......Raises:...
4ce0 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 76 61 6c 75 65 20 69 ....ValidationError.when.value.i
4d00 73 20 6e 6f 74 20 6f 6e 65 20 6f 66 20 70 72 65 64 65 66 69 6e 65 64 20 76 61 6c 75 65 73 2e 0a s.not.one.of.predefined.values..
4d20 20 20 20 20 73 29 00 00 00 56 61 6c 75 65 20 66 6f 72 20 6f 70 74 69 6f 6e 73 20 66 69 65 6c 64 ....s)...Value.for.options.field
4d40 20 6d 75 73 74 20 6e 6f 74 20 62 65 20 4e 6f 6e 65 2e 73 15 00 00 00 56 61 6c 75 65 20 27 25 73 .must.not.be.None.s....Value.'%s
4d60 27 20 6e 6f 74 20 69 6e 20 25 73 2e 4e 28 04 00 00 00 52 0e 00 00 00 52 05 00 00 00 52 0c 00 00 '.not.in.%s.N(....R....R....R...
4d80 00 52 5a 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 .RZ...(....R....R*...(....(....s
4da0 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 G.../home/zx2c4/Desktop/google_a
4dc0 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 ppengine/google/appengine/api/va
4de0 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 00 19 02 00 00 73 0e 00 00 00 00 09 0d 01 10 01 0c lidation.pyRN.......s...........
4e00 01 10 01 06 01 17 01 28 05 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 08 00 00 00 .......(....R....R....R....R....
4e20 52 4e 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a RN...(....(....(....sG.../home/z
4e40 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f x2c4/Desktop/google_appengine/go
4e60 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 ogle/appengine/api/validation.py
4e80 52 18 00 00 00 d3 01 00 00 73 06 00 00 00 06 0e 06 02 09 36 74 08 00 00 00 4f 70 74 69 6f 6e 61 R........s.........6t....Optiona
4ea0 6c 63 00 00 00 00 00 00 00 00 02 00 00 00 42 00 00 00 73 23 00 00 00 65 00 00 5a 01 00 64 00 00 lc............B...s#...e..Z..d..
4ec0 5a 02 00 64 03 00 64 01 00 84 01 00 5a 04 00 64 02 00 84 00 00 5a 05 00 52 53 28 04 00 00 00 73 Z..d..d.....Z..d.....Z..RS(....s
4ee0 2a 01 00 00 44 65 66 69 6e 69 74 69 6f 6e 20 6f 66 20 6f 70 74 69 6f 6e 61 6c 20 61 74 74 72 69 *...Definition.of.optional.attri
4f00 62 75 74 65 73 2e 0a 0a 20 20 4f 70 74 69 6f 6e 61 6c 20 76 61 6c 75 65 73 20 61 72 65 20 61 74 butes.....Optional.values.are.at
4f20 74 72 69 62 75 74 65 73 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 73 65 74 20 74 6f 20 4e 6f 6e tributes.which.can.be.set.to.Non
4f40 65 20 6f 72 20 6c 65 66 74 0a 20 20 75 6e 73 65 74 2e 20 20 41 6c 6c 20 76 61 6c 75 65 73 20 69 e.or.left...unset...All.values.i
4f60 6e 20 61 20 62 61 73 69 63 20 56 61 6c 69 64 61 74 65 64 20 63 6c 61 73 73 20 61 72 65 20 73 65 n.a.basic.Validated.class.are.se
4f80 74 20 74 6f 20 4e 6f 6e 65 0a 20 20 61 74 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 2e 20 20 t.to.None...at.initialization...
4fa0 46 61 69 6c 75 72 65 20 74 6f 20 61 73 73 69 67 6e 20 74 6f 20 6e 6f 6e 2d 6f 70 74 69 6f 6e 61 Failure.to.assign.to.non-optiona
4fc0 6c 20 76 61 6c 75 65 73 0a 20 20 77 69 6c 6c 20 72 65 73 75 6c 74 20 69 6e 20 61 20 76 61 6c 69 l.values...will.result.in.a.vali
4fe0 64 61 74 69 6f 6e 20 65 72 72 6f 72 20 77 68 65 6e 20 63 61 6c 6c 69 6e 67 20 43 68 65 63 6b 49 dation.error.when.calling.CheckI
5000 6e 69 74 69 61 6c 69 7a 65 64 2e 0a 20 20 63 03 00 00 00 03 00 00 00 02 00 00 00 43 00 00 00 73 nitialized....c............C...s
5020 2b 00 00 00 74 00 00 7c 01 00 83 01 00 7c 00 00 5f 01 00 7c 00 00 69 01 00 69 02 00 7c 00 00 5f +...t..|.....|.._..|..i..i..|.._
5040 02 00 7c 02 00 7c 00 00 5f 03 00 64 01 00 53 28 02 00 00 00 73 d7 01 00 00 49 6e 69 74 69 61 6c ..|..|.._..d..S(....s....Initial
5060 69 7a 65 72 2e 0a 0a 20 20 20 20 54 68 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 77 69 6c 6c izer.......This.constructor.will
5080 20 6d 61 6b 65 20 61 20 66 65 77 20 67 75 65 73 73 65 73 20 61 62 6f 75 74 20 74 68 65 20 76 61 .make.a.few.guesses.about.the.va
50a0 6c 75 65 20 70 61 73 73 65 64 20 69 6e 0a 20 20 20 20 61 73 20 74 68 65 20 76 61 6c 69 64 61 74 lue.passed.in.....as.the.validat
50c0 6f 72 3a 0a 0a 20 20 20 20 20 20 2d 20 49 66 20 74 68 65 20 76 61 6c 69 64 61 74 6f 72 20 61 72 or:........-.If.the.validator.ar
50e0 67 75 6d 65 6e 74 20 69 73 20 61 20 74 79 70 65 2c 20 69 74 20 61 75 74 6f 6d 61 74 69 63 61 6c gument.is.a.type,.it.automatical
5100 6c 79 20 63 72 65 61 74 65 73 20 61 20 54 79 70 65 0a 20 20 20 20 20 20 20 20 76 61 6c 69 64 61 ly.creates.a.Type.........valida
5120 74 6f 72 20 61 72 6f 75 6e 64 20 69 74 2e 0a 0a 20 20 20 20 20 20 2d 20 49 66 20 74 68 65 20 76 tor.around.it.........-.If.the.v
5140 61 6c 69 64 61 74 6f 72 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 6c 69 73 74 20 6f 72 20 74 alidator.argument.is.a.list.or.t
5160 75 70 6c 65 2c 20 69 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 63 uple,.it.automatically.........c
5180 72 65 61 74 65 73 20 61 6e 20 4f 70 74 69 6f 6e 73 20 76 61 6c 69 64 61 74 6f 72 20 61 72 6f 75 reates.an.Options.validator.arou
51a0 6e 64 20 69 74 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 6c 69 64 61 74 6f nd.it.......Args:.......validato
51c0 72 3a 20 4f 70 74 69 6f 6e 61 6c 20 76 61 6c 69 64 61 74 69 6f 6e 20 63 6f 6e 64 69 74 69 6f 6e r:.Optional.validation.condition
51e0 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 41 74 74 72 69 62 75 74 65 44 65 .......Raises:.......AttributeDe
5200 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 76 61 6c 69 64 61 74 6f 72 20 69 73 20 6e 6f finitionError.if.validator.is.no
5220 74 20 63 61 6c 6c 61 62 6c 65 2e 0a 20 20 20 20 4e 28 04 00 00 00 52 1b 00 00 00 52 1a 00 00 00 t.callable......N(....R....R....
5240 52 50 00 00 00 52 24 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 1a 00 00 00 52 24 00 00 00 28 00 RP...R$...(....R....R....R$...(.
5260 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 ...(....sG.../home/zx2c4/Desktop
5280 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 /google_appengine/google/appengi
52a0 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 34 02 00 00 73 06 00 ne/api/validation.pyR....4...s..
52c0 00 00 00 12 0f 01 0f 01 63 02 00 00 00 02 00 00 00 02 00 00 00 43 00 00 00 73 1f 00 00 00 7c 01 ........c............C...s....|.
52e0 00 64 01 00 6a 08 00 6f 05 00 01 64 01 00 53 01 7c 00 00 69 01 00 7c 01 00 83 01 00 53 28 02 00 .d..j..o...d..S.|..i..|.....S(..
5300 00 00 73 18 01 00 00 4f 70 74 69 6f 6e 61 6c 6c 79 20 72 65 71 75 69 72 65 20 61 20 76 61 6c 75 ..s....Optionally.require.a.valu
5320 65 2e 0a 0a 20 20 20 20 4e 6f 72 6d 61 6c 20 76 61 6c 69 64 61 74 6f 72 73 20 64 6f 20 6e 6f 74 e.......Normal.validators.do.not
5340 20 61 63 63 65 70 74 20 4e 6f 6e 65 2e 20 20 54 68 69 73 20 77 69 6c 6c 20 61 63 63 65 70 74 20 .accept.None...This.will.accept.
5360 6e 6f 6e 65 20 6f 6e 0a 20 20 20 20 62 65 68 61 6c 66 20 6f 66 20 74 68 65 20 63 6f 6e 74 61 69 none.on.....behalf.of.the.contai
5380 6e 65 64 20 76 61 6c 69 64 61 74 6f 72 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 ned.validator.......Args:.......
53a0 76 61 6c 75 65 3a 20 56 61 6c 75 65 20 74 6f 20 62 65 20 76 61 6c 69 64 61 74 65 64 20 61 73 20 value:.Value.to.be.validated.as.
53c0 6f 70 74 69 6f 6e 61 6c 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 4e 6f optional.......Returns:.......No
53e0 6e 65 20 69 66 20 76 61 6c 75 65 20 69 73 20 4e 6f 6e 65 2c 20 65 6c 73 65 20 72 65 73 75 6c 74 ne.if.value.is.None,.else.result
5400 73 20 6f 66 20 63 6f 6e 74 61 69 6e 65 64 20 76 61 6c 69 64 61 74 69 6f 6e 2e 0a 20 20 20 20 4e s.of.contained.validation......N
5420 28 02 00 00 00 52 0e 00 00 00 52 1a 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 28 00 (....R....R....(....R....R*...(.
5440 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 ...(....sG.../home/zx2c4/Desktop
5460 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 /google_appengine/google/appengi
5480 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 00 4a 02 00 00 73 06 00 ne/api/validation.pyRN...J...s..
54a0 00 00 00 0c 0d 01 05 01 4e 28 06 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 0e 00 ........N(....R....R....R....R..
54c0 00 00 52 08 00 00 00 52 4e 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 ..R....RN...(....(....(....sG...
54e0 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e /home/zx2c4/Desktop/google_appen
5500 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 gine/google/appengine/api/valida
5520 74 69 6f 6e 2e 70 79 52 5e 00 00 00 2b 02 00 00 73 06 00 00 00 06 07 06 02 0c 16 52 12 00 00 00 tion.pyR^...+...s..........R....
5540 63 00 00 00 00 00 00 00 00 03 00 00 00 42 00 00 00 73 26 00 00 00 65 00 00 5a 01 00 64 00 00 5a c............B...s&...e..Z..d..Z
5560 02 00 65 03 00 64 03 00 64 01 00 84 02 00 5a 05 00 64 02 00 84 00 00 5a 06 00 52 53 28 04 00 00 ..e..d..d.....Z..d.....Z..RS(...
5580 00 73 83 03 00 00 52 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 76 61 6c 69 64 61 74 .s....Regular.expression.validat
55a0 6f 72 2e 0a 0a 20 20 52 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 76 61 6c 69 64 61 or.....Regular.expression.valida
55c0 74 6f 72 20 61 6c 77 61 79 73 20 63 6f 6e 76 65 72 74 73 20 76 61 6c 75 65 20 74 6f 20 73 74 72 tor.always.converts.value.to.str
55e0 69 6e 67 2e 20 20 4e 6f 74 65 20 74 68 61 74 0a 20 20 6d 61 74 63 68 65 73 20 6d 75 73 74 20 62 ing...Note.that...matches.must.b
5600 65 20 65 78 61 63 74 2e 20 20 50 61 72 74 69 61 6c 20 6d 61 74 63 68 65 73 20 77 69 6c 6c 20 6e e.exact...Partial.matches.will.n
5620 6f 74 20 76 61 6c 69 64 61 74 65 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 20 20 20 ot.validate...For.example:......
5640 63 6c 61 73 73 20 43 6c 61 73 73 44 65 73 63 72 28 56 61 6c 69 64 61 74 65 64 29 3a 0a 20 20 20 class.ClassDescr(Validated):....
5660 20 20 20 41 54 54 52 49 42 55 54 45 53 20 3d 20 7b 20 27 6e 61 6d 65 27 3a 20 52 65 67 65 78 28 ...ATTRIBUTES.=.{.'name':.Regex(
5680 72 27 5b 61 2d 7a 41 2d 5a 5f 5d 5b 61 2d 7a 41 2d 5a 5f 30 2d 39 5d 2a 27 29 2c 0a 20 20 20 20 r'[a-zA-Z_][a-zA-Z_0-9]*'),.....
56a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 70 61 72 65 6e 74 27 3a 20 54 79 70 65 28 .................'parent':.Type(
56c0 74 79 70 65 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 type),......................}...
56e0 20 41 6c 74 65 72 6e 61 74 69 76 65 6c 79 2c 20 61 6e 79 20 61 74 74 72 69 62 75 74 65 20 74 68 .Alternatively,.any.attribute.th
5700 61 74 20 69 73 20 64 65 66 69 6e 65 64 20 61 73 20 61 20 73 74 72 69 6e 67 20 69 73 20 61 75 74 at.is.defined.as.a.string.is.aut
5720 6f 6d 61 74 69 63 61 6c 6c 79 0a 20 20 69 6e 74 65 72 70 72 65 74 65 64 20 74 6f 20 62 65 20 6f omatically...interpreted.to.be.o
5740 66 20 74 79 70 65 20 52 65 67 65 78 2e 20 20 49 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f f.type.Regex...It.is.possible.to
5760 20 73 70 65 63 69 66 79 20 75 6e 69 63 6f 64 65 20 72 65 67 65 78 0a 20 20 73 74 72 69 6e 67 73 .specify.unicode.regex...strings
5780 20 61 73 20 77 65 6c 6c 2e 20 20 54 68 69 73 20 61 70 70 72 6f 61 63 68 20 69 73 20 73 6c 69 67 .as.well...This.approach.is.slig
57a0 68 74 6c 79 20 6c 65 73 73 20 65 66 66 69 63 69 65 6e 74 2c 20 62 75 74 20 75 73 75 61 6c 6c 79 htly.less.efficient,.but.usually
57c0 0a 20 20 69 73 20 6e 6f 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 75 6e 6c 65 73 73 20 70 61 72 ...is.not.significant.unless.par
57e0 73 69 6e 67 20 6c 61 72 67 65 20 61 6d 6f 75 6e 74 73 20 6f 66 20 64 61 74 61 3a 0a 0a 20 20 20 sing.large.amounts.of.data:.....
5800 20 63 6c 61 73 73 20 43 6c 61 73 73 44 65 73 63 72 28 56 61 6c 69 64 61 74 65 64 29 3a 0a 20 20 .class.ClassDescr(Validated):...
5820 20 20 20 20 41 54 54 52 49 42 55 54 45 53 20 3d 20 7b 20 27 6e 61 6d 65 27 3a 20 72 27 5b 61 2d ....ATTRIBUTES.=.{.'name':.r'[a-
5840 7a 41 2d 5a 5f 5d 5b 61 2d 7a 41 2d 5a 5f 30 2d 39 5d 2a 27 2c 0a 20 20 20 20 20 20 20 20 20 20 zA-Z_][a-zA-Z_0-9]*',...........
5860 20 20 20 20 20 20 20 20 20 20 20 27 70 61 72 65 6e 74 27 3a 20 54 79 70 65 28 74 79 70 65 29 2c ...........'parent':.Type(type),
5880 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 54 ......................}......#.T
58a0 68 69 73 20 77 69 6c 6c 20 72 61 69 73 65 20 61 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 his.will.raise.a.ValidationError
58c0 20 65 78 63 65 70 74 69 6f 6e 2e 0a 20 20 20 20 6d 79 5f 63 6c 61 73 73 28 6e 61 6d 65 3d 27 41 .exception......my_class(name='A
58e0 4e 61 6d 65 20 77 69 74 68 20 73 70 61 63 65 27 2c 20 70 61 72 65 6e 74 3d 41 6e 6f 74 68 65 72 Name.with.space',.parent=Another
5900 43 6c 61 73 73 29 0a 20 20 63 04 00 00 00 04 00 00 00 04 00 00 00 43 00 00 00 73 9b 00 00 00 74 Class)...c............C...s....t
5920 00 00 74 01 00 7c 00 00 83 02 00 69 02 00 7c 03 00 83 01 00 01 74 03 00 7c 02 00 74 04 00 83 02 ..t..|.....i..|......t..|..t....
5940 00 0c 70 0d 00 01 7c 02 00 74 04 00 6a 08 00 6f 1a 00 01 74 05 00 64 01 00 74 06 00 7c 02 00 83 ..p...|..t..j..o...t..d..t..|...
5960 01 00 16 83 01 00 82 01 00 6e 01 00 01 74 07 00 7c 01 00 74 04 00 83 02 00 6f 1a 00 01 74 08 00 .........n...t..|..t.....o...t..
5980 69 09 00 64 02 00 7c 01 00 16 83 01 00 7c 00 00 5f 08 00 6e 17 00 01 74 05 00 64 03 00 74 06 00 i..d..|......|.._..n...t..d..t..
59a0 7c 01 00 83 01 00 16 83 01 00 82 01 00 7c 02 00 7c 00 00 5f 0a 00 64 04 00 53 28 05 00 00 00 73 |............|..|.._..d..S(....s
59c0 be 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 64 20 72 65 67 65 78 20 76 61 6c 69 64 61 74 6f 72 2e ....Initialized.regex.validator.
59e0 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 72 65 67 65 78 3a 20 52 65 67 75 6c 61 72 ......Args:.......regex:.Regular
5a00 20 65 78 70 72 65 73 73 69 6f 6e 20 73 74 72 69 6e 67 20 74 6f 20 75 73 65 20 66 6f 72 20 63 6f .expression.string.to.use.for.co
5a20 6d 70 61 72 69 73 6f 6e 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 41 74 74 mparison.......Raises:.......Att
5a40 72 69 62 75 74 65 44 65 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 73 74 72 69 6e 67 5f ributeDefinitionError.if.string_
5a60 74 79 70 65 20 69 73 20 6e 6f 74 20 61 20 6b 69 6e 64 20 6f 66 20 73 74 72 69 6e 67 2e 0a 20 20 type.is.not.a.kind.of.string....
5a80 20 20 73 2a 00 00 00 52 65 67 65 78 20 66 69 65 6c 64 73 20 6d 75 73 74 20 62 65 20 61 20 73 74 ..s*...Regex.fields.must.be.a.st
5aa0 72 69 6e 67 20 74 79 70 65 20 6e 6f 74 20 25 73 2e 73 04 00 00 00 5e 25 73 24 73 2d 00 00 00 52 ring.type.not.%s.s....^%s$s-...R
5ac0 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 62 65 20 73 74 72 69 6e 67 egular.expression.must.be.string
5ae0 2e 20 20 46 6f 75 6e 64 20 25 73 2e 4e 28 0b 00 00 00 52 51 00 00 00 52 12 00 00 00 52 08 00 00 ...Found.%s.N(....RQ...R....R...
5b00 00 74 0a 00 00 00 69 73 73 75 62 63 6c 61 73 73 74 0a 00 00 00 62 61 73 65 73 74 72 69 6e 67 52 .t....issubclasst....basestringR
5b20 04 00 00 00 52 0c 00 00 00 52 10 00 00 00 74 02 00 00 00 72 65 74 07 00 00 00 63 6f 6d 70 69 6c ....R....R....t....ret....compil
5b40 65 52 50 00 00 00 28 04 00 00 00 52 0b 00 00 00 74 05 00 00 00 72 65 67 65 78 74 0b 00 00 00 73 eRP...(....R....t....regext....s
5b60 74 72 69 6e 67 5f 74 79 70 65 52 24 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 tring_typeR$...(....(....sG.../h
5b80 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 ome/zx2c4/Desktop/google_appengi
5ba0 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 ne/google/appengine/api/validati
5bc0 6f 6e 2e 70 79 52 08 00 00 00 74 02 00 00 73 14 00 00 00 00 09 16 01 11 01 0d 01 03 01 17 01 10 on.pyR....t...s.................
5be0 01 1a 02 03 01 13 02 63 02 00 00 00 03 00 00 00 04 00 00 00 43 00 00 00 73 6c 00 00 00 74 00 00 .......c............C...sl...t..
5c00 7c 00 00 69 01 00 74 02 00 83 02 00 6f 10 00 01 74 03 00 7c 01 00 83 01 00 7d 02 00 6e 0d 00 01 |..i..t.....o...t..|.....}..n...
5c20 74 04 00 7c 01 00 83 01 00 7d 02 00 7c 00 00 69 05 00 69 06 00 7c 02 00 83 01 00 64 02 00 6a 08 t..|.....}..|..i..i..|.....d..j.
5c40 00 6f 20 00 01 74 08 00 64 01 00 7c 01 00 7c 00 00 69 05 00 69 09 00 66 02 00 16 83 01 00 82 01 .o...t..d..|..|..i..i..f........
5c60 00 6e 01 00 01 7c 02 00 53 28 03 00 00 00 73 0b 01 00 00 44 6f 65 73 20 76 61 6c 69 64 61 74 69 .n...|..S(....s....Does.validati
5c80 6f 6e 20 6f 66 20 61 20 73 74 72 69 6e 67 20 61 67 61 69 6e 73 74 20 61 20 72 65 67 75 6c 61 72 on.of.a.string.against.a.regular
5ca0 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 .expression.......Args:.......va
5cc0 6c 75 65 3a 20 53 74 72 69 6e 67 20 74 6f 20 6d 61 74 63 68 20 61 67 61 69 6e 73 74 20 72 65 67 lue:.String.to.match.against.reg
5ce0 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 ular.expression.......Raises:...
5d00 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 76 61 6c 75 65 20 64 ....ValidationError.when.value.d
5d20 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e oes.not.match.regular.expression
5d40 20 6f 72 0a 20 20 20 20 20 20 77 68 65 6e 20 76 61 6c 75 65 20 64 6f 65 73 20 6e 6f 74 20 6d 61 .or.......when.value.does.not.ma
5d60 74 63 68 20 70 72 6f 76 69 64 65 64 20 73 74 72 69 6e 67 20 74 79 70 65 2e 0a 20 20 20 20 73 29 tch.provided.string.type......s)
5d80 00 00 00 56 61 6c 75 65 20 27 25 73 27 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 65 78 70 ...Value.'%s'.does.not.match.exp
5da0 72 65 73 73 69 6f 6e 20 27 25 73 27 4e 28 0a 00 00 00 52 5f 00 00 00 52 50 00 00 00 52 0c 00 00 ression.'%s'N(....R_...RP...R...
5dc0 00 74 08 00 00 00 54 59 50 45 5f 53 54 52 74 0c 00 00 00 54 59 50 45 5f 55 4e 49 43 4f 44 45 52 .t....TYPE_STRt....TYPE_UNICODER
5de0 61 00 00 00 74 05 00 00 00 6d 61 74 63 68 52 0e 00 00 00 52 05 00 00 00 74 07 00 00 00 70 61 74 a...t....matchR....R....t....pat
5e00 74 65 72 6e 28 03 00 00 00 52 0b 00 00 00 52 2a 00 00 00 74 0a 00 00 00 63 61 73 74 5f 76 61 6c tern(....R....R*...t....cast_val
5e20 75 65 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 ue(....(....sG.../home/zx2c4/Des
5e40 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 ktop/google_appengine/google/app
5e60 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 00 8a 02 00 engine/api/validation.pyRN......
5e80 00 73 0e 00 00 00 00 0a 13 01 10 02 0c 02 19 01 06 01 1a 01 4e 28 07 00 00 00 52 01 00 00 00 52 .s..................N(....R....R
5ea0 02 00 00 00 52 03 00 00 00 52 11 00 00 00 52 0e 00 00 00 52 08 00 00 00 52 4e 00 00 00 28 00 00 ....R....R....R....R....RN...(..
5ec0 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 ..(....(....sG.../home/zx2c4/Des
5ee0 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 ktop/google_appengine/google/app
5f00 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 12 00 00 00 5b 02 00 engine/api/validation.pyR....[..
5f20 00 73 06 00 00 00 06 17 06 02 0f 16 74 0e 00 00 00 5f 52 65 67 65 78 53 74 72 56 61 6c 75 65 63 .s..........t...._RegexStrValuec
5f40 00 00 00 00 00 00 00 00 02 00 00 00 42 00 00 00 73 6e 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 ............B...sn...e..Z..d..Z.
5f60 00 64 01 00 84 00 00 5a 03 00 64 02 00 84 00 00 5a 04 00 64 03 00 84 00 00 5a 05 00 64 04 00 84 .d.....Z..d.....Z..d.....Z..d...
5f80 00 00 5a 06 00 65 07 00 64 05 00 84 00 00 83 01 00 5a 08 00 64 06 00 84 00 00 5a 09 00 64 07 00 ..Z..e..d........Z..d.....Z..d..
5fa0 84 00 00 5a 0a 00 64 08 00 84 00 00 5a 0b 00 64 09 00 84 00 00 5a 0c 00 64 0a 00 84 00 00 5a 0d ...Z..d.....Z..d.....Z..d.....Z.
5fc0 00 52 53 28 0b 00 00 00 73 03 02 00 00 53 69 6d 75 6c 61 74 65 73 20 74 68 65 20 72 65 67 65 78 .RS(....s....Simulates.the.regex
5fe0 20 6f 62 6a 65 63 74 20 74 6f 20 73 75 70 70 6f 72 74 20 72 65 63 6f 6d 70 6c 61 74 69 6f 6e 20 .object.to.support.recomplation.
6000 77 68 65 6e 20 6e 65 63 65 73 73 61 72 79 2e 0a 0a 20 20 55 73 65 64 20 62 79 20 74 68 65 20 52 when.necessary.....Used.by.the.R
6020 65 67 65 78 53 74 72 20 63 6c 61 73 73 20 74 6f 20 64 79 6e 61 6d 69 63 61 6c 6c 79 20 62 75 69 egexStr.class.to.dynamically.bui
6040 6c 64 20 61 6e 64 20 72 65 63 6f 6d 70 69 6c 65 20 72 65 67 75 6c 61 72 0a 20 20 65 78 70 72 65 ld.and.recompile.regular...expre
6060 73 73 69 6f 6e 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 61 20 76 61 6c 69 64 61 74 65 64 20 ssion.attributes.of.a.validated.
6080 6f 62 6a 65 63 74 2e 20 20 54 68 69 73 20 6f 62 6a 65 63 74 20 72 65 70 6c 61 63 65 73 20 74 68 object...This.object.replaces.th
60a0 65 20 6e 6f 72 6d 61 6c 0a 20 20 6f 62 6a 65 63 74 20 72 65 74 75 72 6e 65 64 20 66 72 6f 6d 20 e.normal...object.returned.from.
60c0 72 65 2e 63 6f 6d 70 69 6c 65 20 77 68 69 63 68 20 69 73 20 69 6d 6d 75 74 61 62 6c 65 2e 0a 0a re.compile.which.is.immutable...
60e0 20 20 57 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 20 ..When.the.value.of.this.object.
6100 69 73 20 61 20 73 74 72 69 6e 67 2c 20 74 68 61 74 20 73 74 72 69 6e 67 20 69 73 20 73 69 6d 70 is.a.string,.that.string.is.simp
6120 6c 79 20 75 73 65 64 20 61 73 20 74 68 65 0a 20 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 ly.used.as.the...regular.express
6140 69 6f 6e 20 77 68 65 6e 20 72 65 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 69 73 20 6e 65 65 64 65 64 ion.when.recompilation.is.needed
6160 2e 20 20 49 66 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 74 68 69 73 20 6f 62 6a 65 63 74 0a 20 ...If.the.state.of.this.object..
6180 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 74 68 65 20 73 74 72 69 6e .is.a.list.of.strings,.the.strin
61a0 67 73 20 61 72 65 20 6a 6f 69 6e 65 64 20 69 6e 20 74 6f 20 61 20 73 69 6e 67 6c 65 20 27 6f 72 gs.are.joined.in.to.a.single.'or
61c0 27 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 63 03 00 00 00 03 00 00 00 02 00 00 00 43 00 00 '.expression....c............C..
61e0 00 73 1f 00 00 00 7c 01 00 7c 00 00 5f 00 00 7c 02 00 7c 00 00 5f 01 00 64 01 00 7c 00 00 5f 03 .s....|..|.._..|..|.._..d..|.._.
6200 00 64 01 00 53 28 02 00 00 00 73 fc 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 20 72 65 63 6f 6d 70 .d..S(....s....Initialize.recomp
6220 69 6c 61 62 6c 65 20 72 65 67 65 78 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 ilable.regex.value.......Args:..
6240 20 20 20 20 20 61 74 74 72 69 62 75 74 65 3a 20 41 74 74 72 69 62 75 74 65 20 76 61 6c 69 64 61 .....attribute:.Attribute.valida
6260 74 6f 72 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 72 65 67 65 78 20 76 tor.associated.with.this.regex.v
6280 61 6c 75 65 2e 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 49 6e 69 74 69 61 6c 20 75 6e 64 65 72 alue........value:.Initial.under
62a0 6c 79 69 6e 67 20 70 79 74 68 6f 6e 20 76 61 6c 75 65 20 66 6f 72 20 72 65 67 65 78 20 73 74 72 lying.python.value.for.regex.str
62c0 69 6e 67 2e 20 20 45 69 74 68 65 72 20 61 20 73 69 6e 67 6c 65 0a 20 20 20 20 20 20 20 20 72 65 ing...Either.a.single.........re
62e0 67 65 78 20 73 74 72 69 6e 67 20 6f 72 20 61 20 6c 69 73 74 20 6f 66 20 72 65 67 65 78 20 73 74 gex.string.or.a.list.of.regex.st
6300 72 69 6e 67 73 2e 0a 20 20 20 20 4e 28 04 00 00 00 74 19 00 00 00 5f 52 65 67 65 78 53 74 72 56 rings......N(....t...._RegexStrV
6320 61 6c 75 65 5f 5f 61 74 74 72 69 62 75 74 65 74 15 00 00 00 5f 52 65 67 65 78 53 74 72 56 61 6c alue__attributet...._RegexStrVal
6340 75 65 5f 5f 76 61 6c 75 65 52 0e 00 00 00 74 15 00 00 00 5f 52 65 67 65 78 53 74 72 56 61 6c 75 ue__valueR....t...._RegexStrValu
6360 65 5f 5f 72 65 67 65 78 28 03 00 00 00 52 0b 00 00 00 74 09 00 00 00 61 74 74 72 69 62 75 74 65 e__regex(....R....t....attribute
6380 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f R*...(....(....sG.../home/zx2c4/
63a0 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f Desktop/google_appengine/google/
63c0 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 appengine/api/validation.pyR....
63e0 ab 02 00 00 73 06 00 00 00 00 08 09 01 09 01 63 02 00 00 00 03 00 00 00 03 00 00 00 43 00 00 00 ....s..........c............C...
6400 73 5a 00 00 00 74 00 00 7c 00 00 69 01 00 69 02 00 74 03 00 83 02 00 6f 10 00 01 74 04 00 7c 01 sZ...t..|..i..i..t.....o...t..|.
6420 00 83 01 00 7d 02 00 6e 0d 00 01 74 05 00 7c 01 00 83 01 00 7d 02 00 7c 02 00 69 06 00 64 01 00 ....}..n...t..|.....}..|..i..d..
6440 64 02 00 83 02 00 7d 02 00 7c 02 00 69 06 00 64 03 00 64 02 00 83 02 00 7d 02 00 7c 02 00 53 28 d.....}..|..i..d..d.....}..|..S(
6460 04 00 00 00 73 89 00 00 00 43 6f 6e 76 65 72 74 20 61 20 76 61 6c 75 65 20 74 6f 20 61 70 70 72 ....s....Convert.a.value.to.appr
6480 6f 70 72 69 61 74 65 20 73 74 72 69 6e 67 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 opriate.string.......Returns:...
64a0 20 20 20 20 53 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66 20 76 61 6c 75 65 20 77 69 74 68 ....String.version.of.value.with
64c0 20 61 6c 6c 20 63 61 72 72 69 61 67 65 20 72 65 74 75 72 6e 73 20 61 6e 64 20 6c 69 6e 65 20 66 .all.carriage.returns.and.line.f
64e0 65 65 64 73 20 72 65 6d 6f 76 65 64 2e 0a 20 20 20 20 73 01 00 00 00 0a 74 00 00 00 00 73 01 00 eeds.removed......s.....t....s..
6500 00 00 0d 28 07 00 00 00 52 5f 00 00 00 52 6b 00 00 00 52 50 00 00 00 52 0c 00 00 00 52 65 00 00 ...(....R_...Rk...RP...R....Re..
6520 00 52 66 00 00 00 74 07 00 00 00 72 65 70 6c 61 63 65 28 03 00 00 00 52 0b 00 00 00 52 2a 00 00 .Rf...t....replace(....R....R*..
6540 00 52 69 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 .Ri...(....(....sG.../home/zx2c4
6560 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 /Desktop/google_appengine/google
6580 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 0a 00 00 /appengine/api/validation.pyt...
65a0 00 5f 5f 41 73 53 74 72 69 6e 67 b7 02 00 00 73 0c 00 00 00 00 06 16 01 10 02 0c 02 12 01 12 01 .__AsString....s................
65c0 63 01 00 00 00 05 00 00 00 05 00 00 00 43 00 00 00 73 90 00 00 00 74 00 00 7c 00 00 69 01 00 74 c............C...s....t..|..i..t
65e0 02 00 83 02 00 6f 13 00 01 7c 00 00 69 01 00 7d 01 00 74 03 00 7d 02 00 6e 13 00 01 7c 00 00 69 .....o...|..i..}..t..}..n...|..i
6600 01 00 67 01 00 7d 01 00 74 04 00 7d 02 00 67 00 00 7d 03 00 78 24 00 7c 01 00 44 5d 1c 00 7d 04 ..g..}..t..}..g..}..x$.|..D]..}.
6620 00 7c 03 00 69 05 00 7c 00 00 69 06 00 7c 04 00 83 01 00 83 01 00 01 71 45 00 57 7c 02 00 6f 18 .|..i..|..i..|.........qE.W|..o.
6640 00 01 64 01 00 69 07 00 64 02 00 84 00 00 7c 03 00 44 83 01 00 83 01 00 53 01 7c 03 00 64 03 00 ..d..i..d.....|..D......S.|..d..
6660 19 53 64 04 00 53 28 05 00 00 00 73 fe 00 00 00 42 75 69 6c 64 20 72 65 67 65 78 20 73 74 72 69 .Sd..S(....s....Build.regex.stri
6680 6e 67 20 66 72 6f 6d 20 73 74 61 74 65 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 ng.from.state.......Returns:....
66a0 20 20 20 53 74 72 69 6e 67 20 76 65 72 73 69 6f 6e 20 6f 66 20 72 65 67 75 6c 61 72 20 65 78 70 ...String.version.of.regular.exp
66c0 72 65 73 73 69 6f 6e 2e 20 20 53 65 71 75 65 6e 63 65 20 6f 62 6a 65 63 74 73 20 61 72 65 20 63 ression...Sequence.objects.are.c
66e0 6f 6e 73 74 72 75 63 74 65 64 0a 20 20 20 20 20 20 61 73 20 6c 61 72 67 65 72 20 72 65 67 75 6c onstructed.......as.larger.regul
6700 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 77 68 65 72 65 20 65 61 63 68 20 72 65 67 65 78 20 69 ar.expression.where.each.regex.i
6720 6e 20 74 68 65 20 6c 69 73 74 20 69 73 20 6a 6f 69 6e 65 64 20 77 69 74 68 0a 20 20 20 20 20 20 n.the.list.is.joined.with.......
6740 61 6c 6c 20 74 68 65 20 6f 74 68 65 72 73 20 61 73 20 73 69 6e 67 6c 65 20 27 6f 72 27 20 65 78 all.the.others.as.single.'or'.ex
6760 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 74 01 00 00 00 7c 63 01 00 00 00 02 00 00 00 03 00 00 pression......t....|c...........
6780 00 73 00 00 00 73 1d 00 00 00 78 16 00 7c 00 00 5d 0f 00 7d 01 00 64 00 00 7c 01 00 16 56 01 71 .s...s....x..|..]..}..d..|...V.q
67a0 06 00 57 64 01 00 53 28 02 00 00 00 73 06 00 00 00 28 3f 3a 25 73 29 4e 28 00 00 00 00 28 02 00 ..Wd..S(....s....(?:%s)N(....(..
67c0 00 00 74 02 00 00 00 2e 30 52 44 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f ..t.....0RD...(....(....sG.../ho
67e0 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e me/zx2c4/Desktop/google_appengin
6800 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f e/google/appengine/api/validatio
6820 6e 2e 70 79 73 09 00 00 00 3c 67 65 6e 65 78 70 72 3e da 02 00 00 73 02 00 00 00 09 00 69 00 00 n.pys....<genexpr>....s......i..
6840 00 00 4e 28 08 00 00 00 52 10 00 00 00 52 6c 00 00 00 52 15 00 00 00 52 3a 00 00 00 52 39 00 00 ..N(....R....Rl...R....R:...R9..
6860 00 52 31 00 00 00 74 18 00 00 00 5f 52 65 67 65 78 53 74 72 56 61 6c 75 65 5f 5f 41 73 53 74 72 .R1...t...._RegexStrValue__AsStr
6880 69 6e 67 52 32 00 00 00 28 05 00 00 00 52 0b 00 00 00 52 37 00 00 00 74 08 00 00 00 73 65 71 75 ingR2...(....R....R7...t....sequ
68a0 65 6e 63 65 74 0a 00 00 00 72 65 67 65 78 5f 6c 69 73 74 52 44 00 00 00 28 00 00 00 00 28 00 00 encet....regex_listRD...(....(..
68c0 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c ..sG.../home/zx2c4/Desktop/googl
68e0 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 e_appengine/google/appengine/api
6900 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 0c 00 00 00 5f 5f 42 75 69 6c 64 52 65 67 65 78 c6 /validation.pyt....__BuildRegex.
6920 02 00 00 73 18 00 00 00 00 08 13 01 09 01 0a 02 0c 01 06 02 06 01 07 00 06 01 1a 02 07 01 18 02 ...s............................
6940 63 01 00 00 00 03 00 00 00 05 00 00 00 43 00 00 00 73 55 00 00 00 7c 00 00 69 00 00 83 00 00 7d c............C...sU...|..i.....}
6960 01 00 79 11 00 74 01 00 69 02 00 7c 01 00 83 01 00 53 57 6e 31 00 04 74 01 00 69 03 00 6a 0a 00 ..y..t..i..|.....SWn1..t..i..j..
6980 6f 22 00 01 01 7d 02 00 01 74 04 00 64 01 00 7c 01 00 7c 02 00 66 02 00 16 7c 02 00 83 02 00 82 o"...}...t..d..|..|..f...|......
69a0 01 00 6e 02 00 01 58 64 02 00 53 28 03 00 00 00 73 79 00 00 00 42 75 69 6c 64 20 72 65 67 75 6c ..n...Xd..S(....sy...Build.regul
69c0 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 73 74 61 74 65 2e ar.expression.object.from.state.
69e0 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 3a 0a 20 20 20 20 20 20 43 6f 6d 70 69 6c 65 64 20 72 65 ......Returns:.......Compiled.re
6a00 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 69 6e 74 65 72 6e gular.expression.based.on.intern
6a20 61 6c 20 76 61 6c 75 65 2e 0a 20 20 20 20 73 1f 00 00 00 56 61 6c 75 65 20 27 25 73 27 20 64 6f al.value......s....Value.'%s'.do
6a40 65 73 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 3a 20 25 73 4e 28 05 00 00 00 74 1a 00 00 00 5f 52 65 es.not.compile:.%sN(....t...._Re
6a60 67 65 78 53 74 72 56 61 6c 75 65 5f 5f 42 75 69 6c 64 52 65 67 65 78 52 61 00 00 00 52 62 00 00 gexStrValue__BuildRegexRa...Rb..
6a80 00 74 05 00 00 00 65 72 72 6f 72 52 05 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 63 00 00 00 52 .t....errorR....(....R....Rc...R
6aa0 2d 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 -...(....(....sG.../home/zx2c4/D
6ac0 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 esktop/google_appengine/google/a
6ae0 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 09 00 00 00 5f ppengine/api/validation.pyt...._
6b00 5f 43 6f 6d 70 69 6c 65 de 02 00 00 73 0a 00 00 00 00 06 0c 01 03 01 11 01 13 01 63 01 00 00 00 _Compile....s..............c....
6b20 01 00 00 00 01 00 00 00 43 00 00 00 73 0a 00 00 00 7c 00 00 69 00 00 83 00 00 53 28 01 00 00 00 ........C...s....|..i.....S(....
6b40 73 3d 00 00 00 43 6f 6d 70 69 6c 65 64 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e s=...Compiled.regular.expression
6b60 20 61 73 20 64 65 73 63 72 69 62 65 64 20 62 79 20 75 6e 64 65 72 6c 79 69 6e 67 20 76 61 6c 75 .as.described.by.underlying.valu
6b80 65 2e 28 01 00 00 00 74 17 00 00 00 5f 52 65 67 65 78 53 74 72 56 61 6c 75 65 5f 5f 43 6f 6d 70 e.(....t...._RegexStrValue__Comp
6ba0 69 6c 65 28 01 00 00 00 52 0b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d ile(....R....(....(....sG.../hom
6bc0 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 e/zx2c4/Desktop/google_appengine
6be0 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e /google/appengine/api/validation
6c00 2e 70 79 52 63 00 00 00 ea 02 00 00 73 02 00 00 00 00 03 63 02 00 00 00 02 00 00 00 03 00 00 00 .pyRc.......s......c............
6c20 43 00 00 00 73 16 00 00 00 74 00 00 69 01 00 7c 00 00 69 02 00 83 00 00 7c 01 00 83 02 00 53 28 C...s....t..i..|..i.....|.....S(
6c40 01 00 00 00 73 7a 00 00 00 4d 61 74 63 68 20 61 67 61 69 6e 73 74 20 69 6e 74 65 72 6e 61 6c 20 ....sz...Match.against.internal.
6c60 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 0a 20 20 20 20 52 65 74 75 72 6e 73 regular.expression.......Returns
6c80 3a 0a 20 20 20 20 20 20 52 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 62 6a 65 63 :.......Regular.expression.objec
6ca0 74 20 62 75 69 6c 74 20 66 72 6f 6d 20 75 6e 64 65 72 6c 79 69 6e 67 20 76 61 6c 75 65 2e 0a 20 t.built.from.underlying.value...
6cc0 20 20 20 28 03 00 00 00 52 61 00 00 00 52 67 00 00 00 52 78 00 00 00 28 02 00 00 00 52 0b 00 00 ...(....Ra...Rg...Rx...(....R...
6ce0 00 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 .R*...(....(....sG.../home/zx2c4
6d00 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 /Desktop/google_appengine/google
6d20 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 67 00 00 /appengine/api/validation.pyRg..
6d40 00 ef 02 00 00 73 02 00 00 00 00 06 63 01 00 00 00 01 00 00 00 01 00 00 00 43 00 00 00 73 0e 00 .....s......c............C...s..
6d60 00 00 7c 00 00 69 00 00 83 00 00 01 64 01 00 53 28 02 00 00 00 73 22 00 00 00 45 6e 73 75 72 65 ..|..i......d..S(....s"...Ensure
6d80 20 74 68 61 74 20 72 65 67 65 78 20 73 74 72 69 6e 67 20 63 6f 6d 70 69 6c 65 73 2e 4e 28 01 00 .that.regex.string.compiles.N(..
6da0 00 00 52 7b 00 00 00 28 01 00 00 00 52 0b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 ..R{...(....R....(....(....sG...
6dc0 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e /home/zx2c4/Desktop/google_appen
6de0 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 gine/google/appengine/api/valida
6e00 74 69 6f 6e 2e 70 79 52 4e 00 00 00 f7 02 00 00 73 02 00 00 00 00 02 63 01 00 00 00 01 00 00 00 tion.pyRN.......s......c........
6e20 01 00 00 00 43 00 00 00 73 0a 00 00 00 7c 00 00 69 00 00 83 00 00 53 28 01 00 00 00 73 3b 00 00 ....C...s....|..i.....S(....s;..
6e40 00 52 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 73 74 72 69 6e 67 20 61 73 20 64 65 .Regular.expression.string.as.de
6e60 73 63 72 69 62 65 64 20 62 79 20 75 6e 64 65 72 6c 79 69 6e 67 20 76 61 6c 75 65 2e 28 01 00 00 scribed.by.underlying.value.(...
6e80 00 52 78 00 00 00 28 01 00 00 00 52 0b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f .Rx...(....R....(....(....sG.../
6ea0 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 home/zx2c4/Desktop/google_appeng
6ec0 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 ine/google/appengine/api/validat
6ee0 69 6f 6e 2e 70 79 52 0d 00 00 00 fb 02 00 00 73 02 00 00 00 00 02 63 02 00 00 00 02 00 00 00 03 ion.pyR........s......c.........
6f00 00 00 00 43 00 00 00 73 37 00 00 00 74 00 00 7c 01 00 74 01 00 83 02 00 6f 17 00 01 7c 00 00 69 ...C...s7...t..|..t.....o...|..i
6f20 02 00 83 00 00 7c 01 00 69 02 00 83 00 00 6a 02 00 53 01 74 03 00 7c 00 00 83 01 00 7c 01 00 6a .....|..i.....j..S.t..|.....|..j
6f40 02 00 53 28 01 00 00 00 73 3a 00 00 00 43 6f 6d 70 61 72 69 73 6f 6e 20 61 67 61 69 6e 73 74 20 ..S(....s:...Comparison.against.
6f60 6f 74 68 65 72 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 73 74 72 69 6e 67 20 other.regular.expression.string.
6f80 76 61 6c 75 65 73 2e 28 04 00 00 00 52 10 00 00 00 52 6a 00 00 00 52 78 00 00 00 52 0c 00 00 00 values.(....R....Rj...Rx...R....
6fa0 28 02 00 00 00 52 0b 00 00 00 52 3b 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 (....R....R;...(....(....sG.../h
6fc0 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 ome/zx2c4/Desktop/google_appengi
6fe0 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 ne/google/appengine/api/validati
7000 6f 6e 2e 70 79 52 3c 00 00 00 ff 02 00 00 73 06 00 00 00 00 02 10 01 17 01 63 02 00 00 00 02 00 on.pyR<.......s..........c......
7020 00 00 02 00 00 00 43 00 00 00 73 0e 00 00 00 7c 00 00 69 00 00 7c 01 00 83 01 00 0c 53 28 01 00 ......C...s....|..i..|......S(..
7040 00 00 73 38 00 00 00 49 6e 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f 72 20 66 6f 72 20 72 ..s8...Inequality.operator.for.r
7060 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 20 73 74 72 69 6e 67 20 76 61 6c 75 65 2e 28 egular.expression.string.value.(
7080 01 00 00 00 52 3c 00 00 00 28 02 00 00 00 52 0b 00 00 00 52 3b 00 00 00 28 00 00 00 00 28 00 00 ....R<...(....R....R;...(....(..
70a0 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c ..sG.../home/zx2c4/Desktop/googl
70c0 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 e_appengine/google/appengine/api
70e0 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 3d 00 00 00 05 03 00 00 73 02 00 00 00 00 02 28 0e /validation.pyR=.......s......(.
7100 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 08 00 00 00 52 74 00 00 00 52 78 00 00 ...R....R....R....R....Rt...Rx..
7120 00 52 7b 00 00 00 74 08 00 00 00 70 72 6f 70 65 72 74 79 52 63 00 00 00 52 67 00 00 00 52 4e 00 .R{...t....propertyRc...Rg...RN.
7140 00 00 52 0d 00 00 00 52 3c 00 00 00 52 3d 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 ..R....R<...R=...(....(....(....
7160 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f sG.../home/zx2c4/Desktop/google_
7180 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 appengine/google/appengine/api/v
71a0 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 6a 00 00 00 9f 02 00 00 73 16 00 00 00 06 0a 06 02 09 0c alidation.pyRj.......s..........
71c0 09 0f 09 18 09 0c 0f 05 09 08 09 04 09 04 09 06 74 08 00 00 00 52 65 67 65 78 53 74 72 63 00 00 ................t....RegexStrc..
71e0 00 00 00 00 00 00 03 00 00 00 42 00 00 00 73 2f 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 65 ..........B...s/...e..Z..d..Z..e
7200 03 00 64 04 00 64 01 00 84 02 00 5a 05 00 64 02 00 84 00 00 5a 06 00 64 03 00 84 00 00 5a 07 00 ..d..d.....Z..d.....Z..d.....Z..
7220 52 53 28 05 00 00 00 73 0b 01 00 00 56 61 6c 69 64 61 74 65 73 20 74 68 61 74 20 61 20 73 74 72 RS(....s....Validates.that.a.str
7240 69 6e 67 20 63 61 6e 20 63 6f 6d 70 69 6c 65 20 61 73 20 61 20 72 65 67 65 78 20 77 69 74 68 6f ing.can.compile.as.a.regex.witho
7260 75 74 20 65 72 72 6f 72 73 2e 0a 0a 20 20 55 73 65 20 74 68 69 73 20 76 61 6c 69 64 61 74 6f 72 ut.errors.....Use.this.validator
7280 20 77 68 65 6e 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20 66 69 65 6c 64 20 73 68 6f 75 6c .when.the.value.of.a.field.shoul
72a0 64 20 62 65 20 61 20 72 65 67 65 78 2e 20 20 54 68 61 74 0a 20 20 6d 65 61 6e 73 20 74 68 61 74 d.be.a.regex...That...means.that
72c0 20 74 68 65 20 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 74 68 61 74 .the.value.must.be.a.string.that
72e0 20 63 61 6e 20 62 65 20 63 6f 6d 70 69 6c 65 64 20 62 79 20 72 65 2e 63 6f 6d 70 69 6c 65 28 29 .can.be.compiled.by.re.compile()
7300 2e 0a 20 20 54 68 65 20 61 74 74 72 69 62 75 74 65 20 77 69 6c 6c 20 74 68 65 6e 20 62 65 20 61 ....The.attribute.will.then.be.a
7320 20 63 6f 6d 70 69 6c 65 64 20 72 65 20 6f 62 6a 65 63 74 2e 0a 20 20 63 03 00 00 00 03 00 00 00 .compiled.re.object....c........
7340 04 00 00 00 43 00 00 00 73 8e 00 00 00 7c 02 00 64 02 00 6a 09 00 6f 26 00 01 74 01 00 7c 00 00 ....C...s....|..d..j..o&..t..|..
7360 7c 02 00 83 02 00 7d 02 00 74 02 00 69 03 00 74 04 00 7c 02 00 83 01 00 83 01 00 01 6e 01 00 01 |.....}..t..i..t..|.........n...
7380 74 05 00 74 06 00 7c 00 00 83 02 00 69 07 00 7c 02 00 83 01 00 01 74 08 00 7c 01 00 74 09 00 83 t..t..|.....i..|......t..|..t...
73a0 02 00 0c 70 0d 00 01 7c 01 00 74 09 00 6a 08 00 6f 1a 00 01 74 0a 00 64 01 00 74 04 00 7c 01 00 ...p...|..t..j..o...t..d..t..|..
73c0 83 01 00 16 83 01 00 82 01 00 6e 01 00 01 7c 01 00 7c 00 00 5f 0b 00 64 02 00 53 28 03 00 00 00 ..........n...|..|.._..d..S(....
73e0 73 75 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 64 20 72 65 67 65 78 20 76 61 6c 69 64 61 74 6f 72 su...Initialized.regex.validator
7400 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 41 74 74 72 69 62 75 74 65 44 65 .......Raises:.......AttributeDe
7420 66 69 6e 69 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 73 74 72 69 6e 67 5f 74 79 70 65 20 69 73 20 finitionError.if.string_type.is.
7440 6e 6f 74 20 61 20 6b 69 6e 64 20 6f 66 20 73 74 72 69 6e 67 2e 0a 20 20 20 20 73 2d 00 00 00 52 not.a.kind.of.string......s-...R
7460 65 67 65 78 53 74 72 20 66 69 65 6c 64 73 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 egexStr.fields.must.be.a.string.
7480 74 79 70 65 20 6e 6f 74 20 25 73 2e 4e 28 0c 00 00 00 52 0e 00 00 00 52 6a 00 00 00 52 61 00 00 type.not.%s.N(....R....Rj...Ra..
74a0 00 52 62 00 00 00 52 0c 00 00 00 52 51 00 00 00 52 7d 00 00 00 52 08 00 00 00 52 5f 00 00 00 52 .Rb...R....RQ...R}...R....R_...R
74c0 60 00 00 00 52 04 00 00 00 52 50 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 64 00 00 00 52 24 00 `...R....RP...(....R....Rd...R$.
74e0 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 ..(....(....sG.../home/zx2c4/Des
7500 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 ktop/google_appengine/google/app
7520 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 12 03 00 engine/api/validation.pyR.......
7540 00 73 12 00 00 00 00 06 0d 01 0f 01 17 01 16 01 11 01 0d 01 03 01 17 02 63 02 00 00 00 02 00 00 .s......................c.......
7560 00 03 00 00 00 43 00 00 00 73 32 00 00 00 74 00 00 7c 01 00 74 01 00 83 02 00 6f 05 00 01 7c 01 .....C...s2...t..|..t.....o...|.
7580 00 53 01 74 01 00 7c 00 00 7c 01 00 83 02 00 7d 01 00 7c 01 00 69 02 00 83 00 00 01 7c 01 00 53 .S.t..|..|.....}..|..i......|..S
75a0 28 01 00 00 00 73 a1 01 00 00 56 61 6c 69 64 61 74 65 73 20 74 68 61 74 20 74 68 65 20 73 74 72 (....s....Validates.that.the.str
75c0 69 6e 67 20 63 6f 6d 70 69 6c 65 73 20 61 73 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 ing.compiles.as.a.regular.expres
75e0 73 69 6f 6e 2e 0a 0a 20 20 20 20 42 65 63 61 75 73 65 20 74 68 65 20 72 65 67 75 6c 61 72 20 65 sion.......Because.the.regular.e
7600 78 70 72 65 73 73 69 6f 6e 20 6d 69 67 68 74 20 68 61 76 65 20 62 65 65 6e 20 65 78 70 72 65 73 xpression.might.have.been.expres
7620 73 65 64 20 61 73 20 61 20 6d 75 6c 74 69 6c 69 6e 65 0a 20 20 20 20 73 74 72 69 6e 67 2c 20 74 sed.as.a.multiline.....string,.t
7640 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 6c 73 6f 20 73 74 72 69 70 73 20 6e 65 77 6c 69 6e 65 his.function.also.strips.newline
7660 73 20 6f 75 74 20 6f 66 20 76 61 6c 75 65 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 s.out.of.value.......Args:......
7680 20 76 61 6c 75 65 3a 20 53 74 72 69 6e 67 20 74 6f 20 63 6f 6d 70 69 6c 65 20 61 73 20 61 20 72 .value:.String.to.compile.as.a.r
76a0 65 67 75 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a egular.expression.......Raises:.
76c0 20 20 20 20 20 20 56 61 6c 75 65 45 72 72 6f 72 20 77 68 65 6e 20 76 61 6c 75 65 20 64 6f 65 73 ......ValueError.when.value.does
76e0 20 6e 6f 74 20 63 6f 6d 70 69 6c 65 20 61 73 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 65 73 .not.compile.as.a.regular.expres
7700 73 69 6f 6e 2e 20 20 54 79 70 65 45 72 72 6f 72 0a 20 20 20 20 20 20 77 68 65 6e 20 76 61 6c 75 sion...TypeError.......when.valu
7720 65 20 64 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 70 72 6f 76 69 64 65 64 20 73 74 72 69 6e 67 e.does.not.match.provided.string
7740 20 74 79 70 65 2e 0a 20 20 20 20 28 03 00 00 00 52 10 00 00 00 52 6a 00 00 00 52 4e 00 00 00 28 .type......(....R....Rj...RN...(
7760 02 00 00 00 52 0b 00 00 00 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f ....R....R*...(....(....sG.../ho
7780 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e me/zx2c4/Desktop/google_appengin
77a0 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f e/google/appengine/api/validatio
77c0 6e 2e 70 79 52 4e 00 00 00 23 03 00 00 73 0a 00 00 00 00 0d 10 01 05 01 0f 01 0a 01 63 02 00 00 n.pyRN...#...s..............c...
77e0 00 02 00 00 00 02 00 00 00 43 00 00 00 73 0a 00 00 00 74 00 00 7c 01 00 83 01 00 53 28 01 00 00 .........C...s....t..|.....S(...
7800 00 73 2a 00 00 00 52 65 74 75 72 6e 73 20 74 68 65 20 52 45 20 70 61 74 74 65 72 6e 20 66 6f 72 .s*...Returns.the.RE.pattern.for
7820 20 74 68 69 73 20 76 61 6c 69 64 61 74 6f 72 2e 28 01 00 00 00 52 0c 00 00 00 28 02 00 00 00 52 .this.validator.(....R....(....R
7840 0b 00 00 00 52 2a 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 ....R*...(....(....sG.../home/zx
7860 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 2c4/Desktop/google_appengine/goo
7880 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 gle/appengine/api/validation.pyR
78a0 43 00 00 00 36 03 00 00 73 02 00 00 00 00 02 4e 28 08 00 00 00 52 01 00 00 00 52 02 00 00 00 52 C...6...s......N(....R....R....R
78c0 03 00 00 00 52 11 00 00 00 52 0e 00 00 00 52 08 00 00 00 52 4e 00 00 00 52 43 00 00 00 28 00 00 ....R....R....R....RN...RC...(..
78e0 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 ..(....(....sG.../home/zx2c4/Des
7900 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 ktop/google_appengine/google/app
7920 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 7d 00 00 00 0a 03 00 engine/api/validation.pyR}......
7940 00 73 08 00 00 00 06 06 06 02 0f 11 09 13 74 05 00 00 00 52 61 6e 67 65 63 00 00 00 00 00 00 00 .s............t....Rangec.......
7960 00 03 00 00 00 42 00 00 00 73 26 00 00 00 65 00 00 5a 01 00 64 00 00 5a 02 00 65 03 00 64 03 00 .....B...s&...e..Z..d..Z..e..d..
7980 64 01 00 84 02 00 5a 05 00 64 02 00 84 00 00 5a 06 00 52 53 28 04 00 00 00 73 bf 01 00 00 56 61 d.....Z..d.....Z..RS(....s....Va
79a0 6c 69 64 61 74 65 73 20 74 68 61 74 20 6e 75 6d 62 65 72 73 20 66 61 6c 6c 20 77 69 74 68 69 6e lidates.that.numbers.fall.within
79c0 20 74 68 65 20 63 6f 72 72 65 63 74 20 72 61 6e 67 65 2e 0a 0a 20 20 49 6e 20 74 68 65 6f 72 79 .the.correct.range.....In.theory
79e0 20 74 68 69 73 20 63 6c 61 73 73 20 63 61 6e 20 62 65 20 65 6d 75 6c 61 74 65 64 20 75 73 69 6e .this.class.can.be.emulated.usin
7a00 67 20 4f 70 74 69 6f 6e 73 2c 20 68 6f 77 65 76 65 72 20 65 72 72 6f 72 0a 20 20 6d 65 73 73 61 g.Options,.however.error...messa
7a20 67 65 73 20 67 65 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 74 68 61 74 20 63 6c 61 73 73 20 77 69 ges.generated.from.that.class.wi
7a40 6c 6c 20 6e 6f 74 20 62 65 20 76 65 72 79 20 69 6e 74 65 6c 6c 69 67 69 62 6c 65 2e 0a 20 20 54 ll.not.be.very.intelligible....T
7a60 68 69 73 20 63 6c 61 73 73 20 65 73 73 65 6e 74 69 61 6c 6c 79 20 64 6f 65 73 20 74 68 65 20 73 his.class.essentially.does.the.s
7a80 61 6d 65 20 74 68 69 6e 67 2c 20 62 75 74 20 6b 6e 6f 77 73 20 74 68 65 20 69 6e 74 65 6e 64 65 ame.thing,.but.knows.the.intende
7aa0 64 0a 20 20 69 6e 74 65 67 65 72 20 72 61 6e 67 65 2e 0a 0a 20 20 41 6c 73 6f 2c 20 74 68 69 73 d...integer.range.....Also,.this
7ac0 20 72 61 6e 67 65 20 63 6c 61 73 73 20 73 75 70 70 6f 72 74 73 20 66 6c 6f 61 74 73 20 61 6e 64 .range.class.supports.floats.and
7ae0 20 6f 74 68 65 72 20 74 79 70 65 73 20 74 68 61 74 20 69 6d 70 6c 65 6d 65 6e 74 0a 20 20 6f 72 .other.types.that.implement...or
7b00 64 69 6e 61 6c 69 74 79 2e 0a 0a 20 20 54 68 65 20 72 61 6e 67 65 20 69 73 20 69 6e 63 6c 75 73 dinality.....The.range.is.inclus
7b20 69 76 65 2c 20 6d 65 61 6e 69 6e 67 20 33 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 69 6e 20 ive,.meaning.3.is.considered.in.
7b40 74 68 65 20 72 61 6e 67 65 0a 20 20 69 6e 20 52 61 6e 67 65 28 31 2c 33 29 2e 0a 20 20 63 05 00 the.range...in.Range(1,3)....c..
7b60 00 00 05 00 00 00 06 00 00 00 43 00 00 00 73 ce 00 00 00 74 00 00 74 01 00 7c 00 00 83 02 00 69 ..........C...s....t..t..|.....i
7b80 02 00 7c 04 00 83 01 00 01 74 03 00 7c 01 00 7c 03 00 83 02 00 70 35 00 01 74 04 00 64 01 00 74 ..|......t..|..|.....p5..t..d..t
7ba0 05 00 7c 03 00 83 01 00 74 05 00 74 06 00 7c 01 00 83 01 00 83 01 00 74 05 00 7c 01 00 83 01 00 ..|.....t..t..|........t..|.....
7bc0 66 03 00 16 83 01 00 82 01 00 6e 01 00 01 74 03 00 7c 02 00 7c 03 00 83 02 00 70 35 00 01 74 04 f.........n...t..|..|.....p5..t.
7be0 00 64 02 00 74 05 00 7c 03 00 83 01 00 74 05 00 74 06 00 7c 02 00 83 01 00 83 01 00 74 05 00 7c .d..t..|.....t..t..|........t..|
7c00 02 00 83 01 00 66 03 00 16 83 01 00 82 01 00 6e 01 00 01 7c 01 00 7c 00 00 5f 07 00 7c 02 00 7c .....f.........n...|..|.._..|..|
7c20 00 00 5f 08 00 7c 03 00 7c 00 00 5f 09 00 74 0a 00 7c 03 00 83 01 00 7c 00 00 5f 0b 00 64 03 00 .._..|..|.._..t..|.....|.._..d..
7c40 53 28 04 00 00 00 73 a5 00 00 00 49 6e 69 74 69 61 6c 69 7a 65 72 20 66 6f 72 20 72 61 6e 67 65 S(....s....Initializer.for.range
7c60 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 6d 69 6e 69 6d 75 6d 3a 20 4d 69 6e 69 .......Args:.......minimum:.Mini
7c80 6d 75 6d 20 66 6f 72 20 61 74 74 72 69 62 75 74 65 2e 0a 20 20 20 20 20 20 6d 61 78 69 6d 75 6d mum.for.attribute........maximum
7ca0 3a 20 4d 61 78 69 6d 75 6d 20 66 6f 72 20 61 74 74 72 69 62 75 74 65 2e 0a 20 20 20 20 20 20 72 :.Maximum.for.attribute........r
7cc0 61 6e 67 65 5f 74 79 70 65 3a 20 54 79 70 65 20 6f 66 20 66 69 65 6c 64 2e 20 20 44 65 66 61 75 ange_type:.Type.of.field...Defau
7ce0 6c 74 73 20 74 6f 20 69 6e 74 2e 0a 20 20 20 20 73 38 00 00 00 4d 69 6e 69 6d 75 6d 20 76 61 6c lts.to.int......s8...Minimum.val
7d00 75 65 20 6d 75 73 74 20 62 65 20 6f 66 20 74 79 70 65 20 25 73 2c 20 69 6e 73 74 65 61 64 20 69 ue.must.be.of.type.%s,.instead.i
7d20 74 20 69 73 20 25 73 20 28 25 73 29 2e 73 38 00 00 00 4d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 t.is.%s.(%s).s8...Maximum.value.
7d40 6d 75 73 74 20 62 65 20 6f 66 20 74 79 70 65 20 25 73 2c 20 69 6e 73 74 65 61 64 20 69 74 20 69 must.be.of.type.%s,.instead.it.i
7d60 73 20 25 73 20 28 25 73 29 2e 4e 28 0c 00 00 00 52 51 00 00 00 52 7e 00 00 00 52 08 00 00 00 52 s.%s.(%s).N(....RQ...R~...R....R
7d80 10 00 00 00 52 04 00 00 00 52 0c 00 00 00 52 13 00 00 00 74 07 00 00 00 6d 69 6e 69 6d 75 6d 74 ....R....R....R....t....minimumt
7da0 07 00 00 00 6d 61 78 69 6d 75 6d 52 50 00 00 00 52 14 00 00 00 74 0f 00 00 00 5f 74 79 70 65 5f ....maximumRP...R....t...._type_
7dc0 76 61 6c 69 64 61 74 6f 72 28 05 00 00 00 52 0b 00 00 00 52 7f 00 00 00 52 80 00 00 00 74 0a 00 validator(....R....R....R....t..
7de0 00 00 72 61 6e 67 65 5f 74 79 70 65 52 24 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 ..range_typeR$...(....(....sG...
7e00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e /home/zx2c4/Desktop/google_appen
7e20 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 gine/google/appengine/api/valida
7e40 74 69 6f 6e 2e 70 79 52 08 00 00 00 4a 03 00 00 73 1a 00 00 00 00 08 16 01 10 01 03 01 03 01 2f tion.pyR....J...s............../
7e60 01 10 01 03 01 03 01 2f 02 09 01 09 01 09 01 63 02 00 00 00 03 00 00 00 06 00 00 00 43 00 00 00 ......./.......c............C...
7e80 73 6b 00 00 00 7c 00 00 69 00 00 69 01 00 7c 01 00 83 01 00 7d 02 00 7c 02 00 7c 00 00 69 02 00 sk...|..i..i..|.....}..|..|..i..
7ea0 6a 00 00 70 10 00 01 7c 02 00 7c 00 00 69 03 00 6a 04 00 6f 35 00 01 74 04 00 64 01 00 74 05 00 j..p...|..|..i..j..o5..t..d..t..
7ec0 7c 01 00 83 01 00 74 05 00 7c 00 00 69 02 00 83 01 00 74 05 00 7c 00 00 69 03 00 83 01 00 66 03 |.....t..|..i.....t..|..i.....f.
7ee0 00 16 83 01 00 82 01 00 6e 01 00 01 7c 02 00 53 28 02 00 00 00 73 0e 01 00 00 56 61 6c 69 64 61 ........n...|..S(....s....Valida
7f00 74 65 20 74 68 61 74 20 76 61 6c 75 65 20 69 73 20 77 69 74 68 69 6e 20 72 61 6e 67 65 2e 0a 0a te.that.value.is.within.range...
7f20 20 20 20 20 56 61 6c 69 64 61 74 65 73 20 61 67 61 69 6e 73 74 20 72 61 6e 67 65 2d 74 79 70 65 ....Validates.against.range-type
7f40 20 74 68 65 6e 20 63 68 65 63 6b 73 20 74 68 65 20 72 61 6e 67 65 2e 0a 0a 20 20 20 20 41 72 67 .then.checks.the.range.......Arg
7f60 73 3a 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 56 61 6c 75 65 20 74 6f 20 76 61 6c 69 64 61 74 s:.......value:.Value.to.validat
7f80 65 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e e.......Raises:.......Validation
7fa0 45 72 72 6f 72 20 77 68 65 6e 20 76 61 6c 75 65 20 69 73 20 6f 75 74 20 6f 66 20 72 61 6e 67 65 Error.when.value.is.out.of.range
7fc0 2e 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 77 68 65 6e 20 76 61 6c 75 65 0a 20 20 ...ValidationError.when.value...
7fe0 20 20 20 20 69 73 20 6e 6f 74 64 20 6f 66 20 74 68 65 20 73 61 6d 65 20 72 61 6e 67 65 20 74 79 ....is.notd.of.the.same.range.ty
8000 70 65 2e 0a 20 20 20 20 73 22 00 00 00 56 61 6c 75 65 20 27 25 73 27 20 69 73 20 6f 75 74 20 6f pe......s"...Value.'%s'.is.out.o
8020 66 20 72 61 6e 67 65 20 25 73 20 2d 20 25 73 28 06 00 00 00 52 81 00 00 00 52 4e 00 00 00 52 7f f.range.%s.-.%s(....R....RN...R.
8040 00 00 00 52 80 00 00 00 52 05 00 00 00 52 0c 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 2a 00 00 ...R....R....R....(....R....R*..
8060 00 52 69 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 .Ri...(....(....sG.../home/zx2c4
8080 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 /Desktop/google_appengine/google
80a0 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 /appengine/api/validation.pyRN..
80c0 00 61 03 00 00 73 0e 00 00 00 00 0c 12 01 20 01 06 01 09 01 0c 01 1a 01 4e 28 07 00 00 00 52 01 .a...s..................N(....R.
80e0 00 00 00 52 02 00 00 00 52 03 00 00 00 74 03 00 00 00 69 6e 74 52 0e 00 00 00 52 08 00 00 00 52 ...R....R....t....intR....R....R
8100 4e 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 N...(....(....(....sG.../home/zx
8120 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 2c4/Desktop/google_appengine/goo
8140 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 gle/appengine/api/validation.pyR
8160 7e 00 00 00 3b 03 00 00 73 06 00 00 00 06 0d 06 02 0f 17 74 08 00 00 00 52 65 70 65 61 74 65 64 ~...;...s..........t....Repeated
8180 63 00 00 00 00 00 00 00 00 02 00 00 00 42 00 00 00 73 23 00 00 00 65 00 00 5a 01 00 64 00 00 5a c............B...s#...e..Z..d..Z
81a0 02 00 64 03 00 64 01 00 84 01 00 5a 04 00 64 02 00 84 00 00 5a 05 00 52 53 28 04 00 00 00 73 0d ..d..d.....Z..d.....Z..RS(....s.
81c0 01 00 00 52 65 70 65 61 74 65 64 20 66 69 65 6c 64 20 76 61 6c 69 64 61 74 6f 72 2e 0a 0a 20 20 ...Repeated.field.validator.....
81e0 49 6e 64 69 63 61 74 65 73 20 74 68 61 74 20 61 74 74 72 69 62 75 74 65 20 69 73 20 65 78 70 65 Indicates.that.attribute.is.expe
8200 63 74 65 64 20 74 6f 20 62 65 20 61 20 72 65 70 65 61 74 65 64 20 76 61 6c 75 65 2c 20 69 65 2c cted.to.be.a.repeated.value,.ie,
8220 0a 20 20 61 20 73 65 71 75 65 6e 63 65 2e 20 20 54 68 69 73 20 61 64 64 73 20 61 64 64 69 74 69 ...a.sequence...This.adds.additi
8240 6f 6e 61 6c 20 76 61 6c 69 64 61 74 69 6f 6e 20 6f 76 65 72 20 6a 75 73 74 20 54 79 70 65 28 6c onal.validation.over.just.Type(l
8260 69 73 74 29 0a 20 20 69 6e 20 74 68 61 74 20 69 74 20 72 65 74 61 69 6e 73 20 69 6e 66 6f 72 6d ist)...in.that.it.retains.inform
8280 61 74 69 6f 6e 20 61 62 6f 75 74 20 77 68 61 74 20 63 61 6e 20 62 65 20 73 74 6f 72 65 64 20 69 ation.about.what.can.be.stored.i
82a0 6e 20 74 68 65 20 6c 69 73 74 20 62 79 0a 20 20 75 73 65 20 6f 66 20 69 74 73 20 63 6f 6e 73 74 n.the.list.by...use.of.its.const
82c0 72 75 63 74 6f 72 20 66 69 65 6c 64 2e 0a 20 20 63 03 00 00 00 03 00 00 00 03 00 00 00 43 00 00 ructor.field....c............C..
82e0 00 73 2c 00 00 00 74 00 00 74 01 00 7c 00 00 83 02 00 69 02 00 7c 02 00 83 01 00 01 7c 01 00 7c .s,...t..t..|.....i..|......|..|
8300 00 00 5f 03 00 74 04 00 7c 00 00 5f 05 00 64 01 00 53 28 02 00 00 00 73 7a 00 00 00 49 6e 69 74 .._..t..|.._..d..S(....sz...Init
8320 69 61 6c 69 7a 65 72 20 66 6f 72 20 72 65 70 65 61 74 65 64 20 66 69 65 6c 64 2e 0a 0a 20 20 20 ializer.for.repeated.field......
8340 20 41 72 67 73 3a 0a 20 20 20 20 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 3a 20 54 79 70 65 20 75 .Args:.......constructor:.Type.u
8360 73 65 64 20 66 6f 72 20 76 65 72 69 66 79 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 73 65 sed.for.verifying.elements.of.se
8380 71 75 65 6e 63 65 20 61 74 74 72 69 62 75 74 65 2e 0a 20 20 20 20 4e 28 06 00 00 00 52 51 00 00 quence.attribute......N(....RQ..
83a0 00 52 84 00 00 00 52 08 00 00 00 74 0b 00 00 00 63 6f 6e 73 74 72 75 63 74 6f 72 52 15 00 00 00 .R....R....t....constructorR....
83c0 52 50 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 85 00 00 00 52 24 00 00 00 28 00 00 00 00 28 00 RP...(....R....R....R$...(....(.
83e0 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 ...sG.../home/zx2c4/Desktop/goog
8400 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 le_appengine/google/appengine/ap
8420 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 08 00 00 00 7f 03 00 00 73 06 00 00 00 00 06 16 i/validation.pyR........s.......
8440 01 09 01 63 02 00 00 00 03 00 00 00 06 00 00 00 43 00 00 00 73 9e 00 00 00 74 00 00 7c 01 00 74 ...c............C...s....t..|..t
8460 01 00 83 02 00 70 14 00 01 74 02 00 64 01 00 7c 01 00 16 83 01 00 82 01 00 6e 01 00 01 78 73 00 .....p...t..d..|.........n...xs.
8480 7c 01 00 44 5d 6b 00 7d 02 00 74 00 00 7c 00 00 69 03 00 74 04 00 83 02 00 6f 16 00 01 7c 00 00 |..D]k.}..t..|..i..t.....o...|..
84a0 69 03 00 69 05 00 7c 02 00 83 01 00 7d 02 00 71 2b 00 01 74 00 00 7c 02 00 7c 00 00 69 03 00 83 i..i..|.....}..q+..t..|..|..i...
84c0 02 00 70 29 00 01 74 02 00 64 02 00 74 06 00 7c 00 00 69 03 00 83 01 00 74 06 00 7c 02 00 83 01 ..p)..t..d..t..|..i.....t..|....
84e0 00 66 02 00 16 83 01 00 82 01 00 71 2b 00 01 71 2b 00 57 7c 01 00 53 28 03 00 00 00 73 04 01 00 .f.........q+..q+.W|..S(....s...
8500 00 44 6f 20 76 61 6c 69 64 61 74 69 6f 6e 20 6f 66 20 73 65 71 75 65 6e 63 65 2e 0a 0a 20 20 20 .Do.validation.of.sequence......
8520 20 56 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 6c 69 73 74 20 61 6e 64 20 61 6c 6c 20 65 6c .Value.must.be.a.list.and.all.el
8540 65 6d 65 6e 74 73 20 6d 75 73 74 20 62 65 20 6f 66 20 74 79 70 65 20 27 63 6f 6e 73 74 72 75 63 ements.must.be.of.type.'construc
8560 74 6f 72 27 2e 0a 0a 20 20 20 20 41 72 67 73 3a 0a 20 20 20 20 20 20 76 61 6c 75 65 3a 20 56 61 tor'.......Args:.......value:.Va
8580 6c 75 65 20 74 6f 20 76 61 6c 69 64 61 74 65 2e 0a 0a 20 20 20 20 52 61 69 73 65 73 3a 0a 20 20 lue.to.validate.......Raises:...
85a0 20 20 20 20 56 61 6c 69 64 61 74 69 6f 6e 45 72 72 6f 72 20 69 66 20 76 61 6c 75 65 20 69 73 20 ....ValidationError.if.value.is.
85c0 4e 6f 6e 65 2c 20 6e 6f 74 20 61 20 6c 69 73 74 20 6f 72 20 6f 6e 65 20 6f 66 20 69 74 73 20 65 None,.not.a.list.or.one.of.its.e
85e0 6c 65 6d 65 6e 74 73 20 69 73 20 74 68 65 0a 20 20 20 20 20 20 77 72 6f 6e 67 20 74 79 70 65 2e lements.is.the.......wrong.type.
8600 0a 20 20 20 20 73 31 00 00 00 52 65 70 65 61 74 65 64 20 66 69 65 6c 64 73 20 6d 75 73 74 20 62 .....s1...Repeated.fields.must.b
8620 65 20 73 65 71 75 65 6e 63 65 2c 20 62 75 74 20 66 6f 75 6e 64 20 27 25 73 27 2e 73 2a 00 00 00 e.sequence,.but.found.'%s'.s*...
8640 52 65 70 65 61 74 65 64 20 69 74 65 6d 73 20 6d 75 73 74 20 62 65 20 25 73 2c 20 62 75 74 20 66 Repeated.items.must.be.%s,.but.f
8660 6f 75 6e 64 20 27 25 73 27 2e 28 07 00 00 00 52 10 00 00 00 52 15 00 00 00 52 05 00 00 00 52 85 ound.'%s'.(....R....R....R....R.
8680 00 00 00 52 19 00 00 00 52 4e 00 00 00 52 0c 00 00 00 28 03 00 00 00 52 0b 00 00 00 52 2a 00 00 ...R....RN...R....(....R....R*..
86a0 00 52 44 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 .RD...(....(....sG.../home/zx2c4
86c0 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 /Desktop/google_appengine/google
86e0 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 4e 00 00 /appengine/api/validation.pyRN..
8700 00 89 03 00 00 73 16 00 00 00 00 0c 10 01 06 01 0e 02 07 00 06 01 13 01 16 01 13 01 06 01 27 02 .....s........................'.
8720 4e 28 06 00 00 00 52 01 00 00 00 52 02 00 00 00 52 03 00 00 00 52 0e 00 00 00 52 08 00 00 00 52 N(....R....R....R....R....R....R
8740 4e 00 00 00 28 00 00 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 N...(....(....(....sG.../home/zx
8760 32 63 34 2f 44 65 73 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 2c4/Desktop/google_appengine/goo
8780 67 6c 65 2f 61 70 70 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 52 gle/appengine/api/validation.pyR
87a0 84 00 00 00 76 03 00 00 73 06 00 00 00 06 07 06 02 0c 0a 28 21 00 00 00 52 03 00 00 00 52 61 00 ....v...s..........(!...R....Ra.
87c0 00 00 74 06 00 00 00 67 6f 6f 67 6c 65 52 48 00 00 00 74 09 00 00 00 45 78 63 65 70 74 69 6f 6e ..t....googleRH...t....Exception
87e0 52 00 00 00 00 52 04 00 00 00 52 05 00 00 00 52 0f 00 00 00 52 1b 00 00 00 52 21 00 00 00 52 1c R....R....R....R....R....R!...R.
8800 00 00 00 52 19 00 00 00 52 14 00 00 00 74 04 00 00 00 62 6f 6f 6c 74 09 00 00 00 54 59 50 45 5f ...R....R....t....boolt....TYPE_
8820 42 4f 4f 4c 52 83 00 00 00 74 08 00 00 00 54 59 50 45 5f 49 4e 54 74 04 00 00 00 6c 6f 6e 67 74 BOOLR....t....TYPE_INTt....longt
8840 09 00 00 00 54 59 50 45 5f 4c 4f 4e 47 52 0c 00 00 00 52 65 00 00 00 52 11 00 00 00 52 66 00 00 ....TYPE_LONGR....Re...R....Rf..
8860 00 74 05 00 00 00 66 6c 6f 61 74 74 0a 00 00 00 54 59 50 45 5f 46 4c 4f 41 54 52 18 00 00 00 52 .t....floatt....TYPE_FLOATR....R
8880 5e 00 00 00 52 12 00 00 00 52 6a 00 00 00 52 7d 00 00 00 52 7e 00 00 00 52 84 00 00 00 28 00 00 ^...R....Rj...R}...R~...R....(..
88a0 00 00 28 00 00 00 00 28 00 00 00 00 73 47 00 00 00 2f 68 6f 6d 65 2f 7a 78 32 63 34 2f 44 65 73 ..(....(....sG.../home/zx2c4/Des
88c0 6b 74 6f 70 2f 67 6f 6f 67 6c 65 5f 61 70 70 65 6e 67 69 6e 65 2f 67 6f 6f 67 6c 65 2f 61 70 70 ktop/google_appengine/google/app
88e0 65 6e 67 69 6e 65 2f 61 70 69 2f 76 61 6c 69 64 61 74 69 6f 6e 2e 70 79 74 08 00 00 00 3c 6d 6f engine/api/validation.pyt....<mo
8900 64 75 6c 65 3e 23 00 00 00 73 30 00 00 00 06 06 0c 02 0c 01 0c 03 16 04 16 04 16 10 16 04 09 22 dule>#...s0...................."
8920 16 e4 16 37 16 43 0c 01 0c 01 0c 01 0c 01 0c 01 0c 03 16 58 16 30 16 44 16 6b 16 31 16 3b ...7.C.............X.0.D.k.1.;