"VfivdZddlZddlZddlmZddlmZddlmZGddZ Gd d e Z d Z Gd d e Z Gdde Z Gdde ZGddee ZGdde ZGddeZGdde ZGdde ZGdde ZGdde ZGd d!ee ZGd"d#e ZGd$d%e ZGd&d'e ZGd(d)e ZGd*d+e ZGd,d-e ZGd.d/e ZdS)0z~ Based on Python Cookbook 3rd Edition, 8.13 http://chimera.labs.oreilly.com/books/1230000000393/ch08.html#_discussiuncion_130 N)DEBUG) from_ISO8601) namespacedceZdZddZdZdS) DescriptorNc j||_|D]\}}t|||dSN)nameitemssetattr)selfr kwkvs Hc:\PYTHON\DbComparer\venv\Lib\site-packages\openpyxl/descriptors/base.py__init__zDescriptor.__init__sC HHJJ  DAq D!Q      c$||j|j<dSr )__dict__r rinstancevalues r__set__zDescriptor.__set__s',$)$$$rr )__name__ __module__ __qualname__rrrrrrs7    -----rrcPeZdZdZedZdZdZfdZfdZ dZ xZ S)Typedz Values must of a particular typeNFcXtj|i|d|j|_dS)NzValues must be of type )superr expected_type__doc__)rargsr __class__s rrzTyped.__init__#s5$%"%%%E1CEE rc lt||js{|jr |jrm|k|jd|jd|jdt |}t r,|jd|jd|jd|dt | }t|t ||dS)N.z should be z but value is z but z is ) isinstancer# allow_noner&r typer TypeErrorr"r)rrrmsgr&s rrz Typed.__set__'s%!344 %O %O %(-(9!+ssdissDDVssfjkpfqfqssz%/yy$)yyHZyyafyylpqvlwlwyyCnn$ %(((((rc|jSr )r$rs r__repr__zTyped.__repr__1s  r) rrrr$r+r#r*nestedrrr0 __classcell__r&s@rr r s**DJJMJ FFFFFF)))))rr ct||s1 ||}n$#tdt|zxYw|S)zA Check value is of or can be converted to expected type. z expected )r)r,str)r#rs r_convertr65sU e] + +> >!M%((EE >K#m*<*<<== = Ls !?c"eZdZdZfdZxZS) Convertiblez/Values must be convertible to a particular typec|jr||jst|j|}t||dSr )r*r6r#r"rrrrr&s rrzConvertible.__set__DsL _ 8!2?"3T/77E %(((((r)rrrr$rr2r3s@rr8r8As>99)))))))))rr8c4eZdZdZeZdZfdZfdZxZ S)Maxz&Values must be less than a `max` valueFc d|vrt|dstdtjdi|dS)Nmaxzmissing max valuerhasattrr,r"rrrr&s rrz Max.__init__QL ??74#7#7?/00 02rc|jr||jsGt|j|}||jkr't d|jt ||dS)NzMax value is {0})r*r6r#r> ValueErrorformatr"rr:s rrz Max.__set__Vy _ F!2?"3T/77Etx !3!:!:48!D!DEEE %(((((r rrrr$floatr#r*rrr2r3s@rr<r<Ksa00MJ )))))))))rr<c4eZdZdZeZdZfdZfdZxZ S)Minz)Values must be greater than a `min` valueFc d|vrt|dstdtjdi|dS)Nminzmissing min valuerr?rAs rrz Min.__init__erBrc|jr||jsGt|j|}||jkr't d|jt ||dS)NzMin value is {0})r*r6r#rLrDrEr"rr:s rrz Min.__set__jrFrrGr3s@rrJrJ_sa33MJ )))))))))rrJceZdZdZdS)MinMaxzAValues must be greater than `min` value and less than a `max` oneN)rrrr$rrrrOrOssKKDrrOc.eZdZdZdfd ZfdZxZS)Setz+Value can only be from a set of know valuesNc d|vrtdt|d|d<tj|fi|d|j|_dS)Nvalueszmissing set of valueszValue must be one of {0})r,setr"rrErSr$rr rr&s rrz Set.__init__{sj2~~344 42h<((8 $$$$$188EE rc||jvrt|jt||dSr )rSrDr$r"rr:s rrz Set.__set__s>  # #T\** * %(((((rr rrrr$rrr2r3s@rrQrQxsb55FFFFFF)))))))))rrQc.eZdZdZdfd ZfdZxZS)NoneSetz'none' will be treated as NoneNc ptj|fi||jddSr )r"rrSaddrUs rrzNoneSet.__init__s<$$$$$ rc\|dkrd}t||dS)Nnone)r"rr:s rrzNoneSet.__set__s/ F??E %(((((rr rWr3s@rrYrYs\(()))))))))rrYceZdZeZdS)IntegerN)rrrintr#rrrr_r_MMMrr_ceZdZeZdS)FloatN)rrrrHr#rrrrcrcMMMrrcc"eZdZeZfdZxZS)Boolct|tr|dvrd}t||dS)N)falsef0F)r)r5r"rr:s rrz Bool.__set__sD eS ! ! +++ %(((((r)rrrboolr#rr2r3s@rrfrfs=M)))))))))rrfceZdZeZdS)StringN)rrrr5r#rrrrmrmrarrmceZdZdS)TextN)rrrrrrrorosDrroceZdZeZdS)ASCIIN)rrrbytesr#rrrrqrqrdrrqceZdZeZdS)TupleN)rrrtupler#rrrrtrtrdrrtc*eZdZdfd ZfdZxZS)LengthNc `d|vrtdtjdi|dS)Nlengthzvalue length must be suppliedr)r,r"rrUs rrzLength.__init__s@ 2  ;<< <2rct||jkr'td|jt ||dS)NzValue must be length {0})lenryrDrEr"rr:s rrzLength.__set__sS u:: $ $7>>t{KKLL L %(((((rr )rrrrrr2r3s@rrwrwsV )))))))))rrwc*eZdZdZdfd ZdZxZS)Defaultz When called returns an instance of the expected type. Additional default values can be passed in to the descriptor Nc Ld|vri|d<tjdi|dS)Ndefaultsr)r"rrUs rrzDefault.__init__s: R  BzN2rc*|Sr )r#r/s r__call__zDefault.__call__s!!###rr )rrrr$rrr2r3s@rr}r}sV  $$$$$$$rr}c$eZdZdZdZdZdZdS)Aliasz Aliases can be used when either the desired attribute name is not allowed or confusing in Python (eg. "type") or a more descriptive name is desired (eg. "underline" for "u") c||_dSr )alias)rrs rrzAlias.__init__s  rc2t||j|dSr )r rrs rrz Alias.__set__s$*e,,,,,rc,t||jSr )getattrr)rrclss r__get__z Alias.__get__sx,,,rN)rrrr$rrrrrrrrsK --------rrc2eZdZdZdZdfd ZfdZxZS) MatchPatternz"Values must match a regex pattern FNc d|vrt|dstdtj|fi|t j|jtj|_dS)Npatternzmissing pattern value) r@r,r"rrecompilerVERBOSE test_patternrUs rrzMatchPattern.__init__si B  wtY'?'? 344 4$$$$$Jt|RZ@@rc||jstd|jr||jsA|j|s'td|jt ||dS)NzValue must not be nonez Value does not match pattern {0})r*rDrmatchrErr"rr:s rrzMatchPattern.__set__s ==566 6 _ Z!2?"3$**511 Z !C!J!J4rs  000000!!!!!!--------J2   )))))%))))))))+)))()))))+)))(     S#   ) ) ) ) )* ) ) ) ) ) ) ) )c ) ) )k K )))));)))U      6;   E E ) ) ) ) )Z ) ) ) $ $ $ $ $e $ $ $-----J---"))))):)))2 ) ) ) ) )u ) ) ) ) )r