U ]@sbddlZz ddlZWnek r,dZYnXddlmZddlmZmZGdddej j Z dS)NF) get_all_args) string2typeget_class_from_qualified_namecs2eZdZdZdZiZdfdd ZddZZS)JSONObjectDecoderaCustom JSON decoder class especially for state machines This JSON decoder class inherits from the basic JSON decoder class. It can decode all classes deriving from JSONObject. In addition, tuples (encoded by :py:class:`JSONObjectEncoder`) are maintained and type objects (e.g. int, object, float) are handled. Finally, it is tried to convert dictionary keys to integers. Nc st|ddtr"|d|_|d=||_tt|j}t|}d|krdtt|jf||j d|ntt|jfd|j i|dS)Nsubstitute_modulesencoding)r object_hookr) isinstancegetdictradditional_hooksuperr__init__r_dict_to_qualified_object)selfrrkwargsZparental_constructorZparental_constructor_args __class__=/tmp/pip-target-hkr6o2s8/lib/python/jsonconversion/decoder.pyr s   zJSONObjectDecoder.__init__c Csd|kr|d}||jkr&|j|}t|}|tkrBt|dS|tkrVt|dStrr|tjkrrt|dSt|dr| |S|j r| |S|Sd|krt |dSt |t ri}|D]2\}}z t|}Wntk rYnX|||<q|}|j r| |S|S)NZ__jsonqualname__items from_dictZ__type__)poprrtuplesetnpZndarrayarrayhasattrrr rr r rint ValueError)r dictionaryZqualified_nameclsZtemp_dictionarykeyvaluerrrr,s<             z+JSONObjectDecoder._dict_to_qualified_object)NN) __name__ __module__ __qualname____doc__r rrr __classcell__rrrrrs  r) jsonnumpyr ImportErrorjsonconversionrZjsonconversion.conversionrrdecoder JSONDecoderrrrrr s