88import sys
99
1010import logging
11+
12+ import python_jsonschema_objects .wrapper_types
13+
1114logger = logging .getLogger (__name__ )
1215
1316logger .addHandler (logging .NullHandler ())
@@ -64,6 +67,9 @@ def for_json(self):
6467 return self .as_dict ()
6568
6669 def __eq__ (self , other ):
70+ if not isinstance (other , ProtocolBase ):
71+ return False
72+
6773 return self .as_dict () == other .as_dict ()
6874
6975 def __str__ (self ):
@@ -153,7 +159,6 @@ def __init__(self, **props):
153159 six .moves .xrange (len (self .__prop_names__ ))]))
154160
155161 for prop in props :
156-
157162 try :
158163 logger .debug (util .lazy_format ("Setting value for '{0}' to {1}" , prop , props [prop ]))
159164 setattr (self , prop , props [prop ])
@@ -318,7 +323,11 @@ def __init__(self, value, typ=None):
318323 :value: @todo
319324
320325 """
321- self ._value = value
326+ if isinstance (value , LiteralValue ):
327+ self ._value = value ._value
328+ else :
329+ self ._value = value
330+
322331 self .validate ()
323332
324333 def as_dict (self ):
@@ -456,7 +465,7 @@ def _construct(self, uri, clsdata, parent=(ProtocolBase,),**kw):
456465 elif clsdata .get ('type' ) == 'array' and 'items' in clsdata :
457466 clsdata_copy = {}
458467 clsdata_copy .update (clsdata )
459- self .resolved [uri ] = validators . ArrayValidator .create (
468+ self .resolved [uri ] = python_jsonschema_objects . wrapper_types . ArrayWrapper .create (
460469 uri ,
461470 item_constraint = clsdata_copy .pop ('items' ),
462471 classbuilder = self ,
@@ -530,6 +539,7 @@ def _build_object(self, nm, clsdata, parents,**kw):
530539 name_translation = {}
531540
532541 for prop , detail in properties .items ():
542+ logger .debug (util .lazy_format ("Handling property {0}.{1}" ,nm , prop ))
533543 properties [prop ]['raw_name' ] = prop
534544 name_translation [prop ] = prop .replace ('@' , '' )
535545 prop = name_translation [prop ]
@@ -550,6 +560,9 @@ def _build_object(self, nm, clsdata, parents,**kw):
550560 elif 'type' not in detail and '$ref' in detail :
551561 ref = detail ['$ref' ]
552562 uri = util .resolve_ref_uri (self .resolver .resolution_scope , ref )
563+ logger .debug (util .lazy_format ("Resolving reference {0} for {1}.{2}" ,
564+ ref , nm , prop
565+ ))
553566 if uri not in self .resolved :
554567 with self .resolver .resolving (ref ) as resolved :
555568 self .resolved [uri ] = self .construct (
@@ -581,7 +594,7 @@ def _build_object(self, nm, clsdata, parents,**kw):
581594 typ = self .construct (uri , detail ['items' ])
582595 propdata = {
583596 'type' : 'array' ,
584- 'validator' : validators . ArrayValidator .create (
597+ 'validator' : python_jsonschema_objects . wrapper_types . ArrayWrapper .create (
585598 uri ,
586599 item_constraint = typ )}
587600 else :
@@ -602,14 +615,14 @@ def _build_object(self, nm, clsdata, parents,**kw):
602615 else :
603616 typ = self .construct (uri , detail ['items' ])
604617 propdata = {'type' : 'array' ,
605- 'validator' : validators . ArrayValidator .create (uri , item_constraint = typ ,
606- addl_constraints = detail )}
618+ 'validator' : python_jsonschema_objects . wrapper_types . ArrayWrapper .create (uri , item_constraint = typ ,
619+ addl_constraints = detail )}
607620 except NotImplementedError :
608621 typ = detail ['items' ]
609622 propdata = {'type' : 'array' ,
610- 'validator' : validators . ArrayValidator .create (uri ,
611- item_constraint = typ ,
612- addl_constraints = detail )}
623+ 'validator' : python_jsonschema_objects . wrapper_types . ArrayWrapper .create (uri ,
624+ item_constraint = typ ,
625+ addl_constraints = detail )}
613626
614627 props [prop ] = make_property (prop ,
615628 propdata ,
@@ -725,7 +738,7 @@ def setprop(self, val):
725738 val .validate ()
726739 ok = True
727740 break
728- elif util .safe_issubclass (typ , validators . ArrayValidator ):
741+ elif util .safe_issubclass (typ , python_jsonschema_objects . wrapper_types . ArrayWrapper ):
729742 try :
730743 val = typ (val )
731744 except Exception as e :
@@ -743,13 +756,14 @@ def setprop(self, val):
743756 "Object must be one of {0}: \n {1}" .format (info ['type' ], errstr ))
744757
745758 elif info ['type' ] == 'array' :
746- instance = info ['validator' ](val )
747- val = instance .validate ()
759+ val = info ['validator' ](val )
760+ val .validate ()
748761
749- elif util .safe_issubclass (info ['type' ], validators .ArrayValidator ):
762+ elif util .safe_issubclass (info ['type' ],
763+ python_jsonschema_objects .wrapper_types .ArrayWrapper ):
750764 # An array type may have already been converted into an ArrayValidator
751- instance = info ['type' ](val )
752- val = instance .validate ()
765+ val = info ['type' ](val )
766+ val .validate ()
753767
754768 elif getattr (info ['type' ], 'isLiteralClass' , False ) is True :
755769 if not isinstance (val , info ['type' ]):
0 commit comments