Пример #1
0
    def test_supplied_handlers_kw_to_dumper(self):

        def person_handler(obj):
            return {"FirstName": obj.first_name,
                    "LastName": obj.last_name,
                    "Titles": obj.titles}

        def titles_handler(obj):
            return obj.titles
        
        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name, titles=None):
                self.first_name = first_name
                self.last_name = last_name
                self.titles = titles
                
        @to_list()
        class Titles(object):
            def __init__(self, *titles):
                self.titles = titles

        person = Person("Joe", "Smith", Titles("Mr", "Dr"))
        json_obj = json.loads(dumper(person, handlers={
            "Person": person_handler,
            "Titles": titles_handler
        }))
        
        self.assertEqual(json_obj, {
            "FirstName": "Joe",
            "LastName": "Smith",
            "Titles": ["Mr", "Dr"]
        })
Пример #2
0
    def test_subclass_json_web_encoder(self):
        message = []

        class MyJsonWebEncoder(JsonWebEncoder):
            def object_handler(self, obj):
                message.append("my_object_handler")
                suppress = obj._encode.suppress
                json_obj = dict([(k, v) for k, v in obj.__dict__.items()
                                 if not k.startswith("_") and k not in suppress
                                 ])
                if "__type__" not in suppress:
                    json_obj["__type__"] = obj._encode.__type__
                return json_obj

        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name):
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person, cls=MyJsonWebEncoder))

        self.assertEqual(json_obj, {
            "__type__": "Person",
            "first_name": "shawn",
            "last_name": "adams"
        })
        self.assertEqual(message[0], "my_object_handler")
Пример #3
0
    def test_subclass_json_web_encoder(self):
        message = []

        class MyJsonWebEncoder(JsonWebEncoder):
            def object_handler(self, obj):
                message.append("my_object_handler")
                suppress = obj._encode.suppress
                json_obj = dict([(k, v) for k, v in obj.__dict__.items()
                                 if not k.startswith("_") and k not in suppress])
                if "__type__" not in suppress:
                    json_obj["__type__"] = obj._encode.__type__
                return json_obj
        
        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name):
                self.first_name = first_name
                self.last_name = last_name
        
        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person, cls=MyJsonWebEncoder))
        
        self.assertEqual(json_obj, {
            "__type__": "Person",
            "first_name": "shawn",
            "last_name": "adams"
        })
        self.assertEqual(message[0], "my_object_handler")
Пример #4
0
    def test_json_list_decorator(self):

        @to_list()
        class NickNames(object):
            def __init__(self, nicknames):
                self.nicknames = nicknames

            def __iter__(self):
                return iter(self.nicknames)
            
        @to_object(suppress=["foo", "__type__"])
        class Person(object):
            def __init__(self, first_name, last_name, nicknames=[]):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                self.nicknames = NickNames(nicknames)
        
        person = Person("shawn", "adams", ["Boss", "Champ"])
        json_obj = json.loads(dumper(person))
        
        self.assertEqual(json_obj, {
            "first_name": "shawn",
            "last_name": "adams",
            "nicknames": ["Boss", "Champ"]
        })
Пример #5
0
    def test_json_list_decorator(self):
        @to_list()
        class NickNames(object):
            def __init__(self, nicknames):
                self.nicknames = nicknames

            def __iter__(self):
                return iter(self.nicknames)

        @to_object(suppress=["foo", "__type__"])
        class Person(object):
            def __init__(self, first_name, last_name, nicknames=[]):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                self.nicknames = NickNames(nicknames)

        person = Person("shawn", "adams", ["Boss", "Champ"])
        json_obj = json.loads(dumper(person))

        self.assertEqual(
            json_obj, {
                "first_name": "shawn",
                "last_name": "adams",
                "nicknames": ["Boss", "Champ"]
            })
Пример #6
0
def post_json(universe_id,about_type,about_id,result,uri=None):
    if uri is None:
        uri = "http://127.0.0.1:5000/note"
    data = {}
    data['universe_id'] = universe_id
    data['about_type'] = about_type
    data['about_id'] = about_id
    data['source'] = 'liu_papis_nlp'
    data['result'] = result    
    headers = {'content-type':'application/json'}
    r = requests.post(uri, data=dumper(data),headers = headers)
#or ican use r = requests.post(uri, json=sample_data)
    print(r.status_code, r.reason)
    print(r.text[:300] + '...')
    print '*'*100
    print dumper(data)
    return dumper(data)
Пример #7
0
    def test_suppress_kw_arg_to_dumper(self):
        @to_object(suppress=["foo"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))

        self.assertTrue("foo" not in json_obj)
        self.assertTrue("first_name" in json_obj)
        self.assertTrue("last_name" in json_obj)

        json_obj = json.loads(dumper(person, suppress="first_name"))
        self.assertTrue("foo" not in json_obj)
        self.assertTrue("first_name" not in json_obj)
        self.assertTrue("last_name" in json_obj)
Пример #8
0
    def test_exclude_nulls_on_dumper_trumps_to_object(self):
        @to_object(exclude_nulls=True)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", None)
        json_obj = json.loads(dumper(person, exclude_nulls=False))
        self.assertTrue("last_name" in json_obj)
Пример #9
0
    def test_suppress__type__attribute(self):
        @to_object(suppress=["__type__"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))
        self.assertTrue("__type__" not in json_obj)
Пример #10
0
    def test_suppress_kw_arg_to_dumper(self):

        @to_object(suppress=["foo"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                
        person = Person("shawn", "adams")                 
        json_obj = json.loads(dumper(person))
        
        self.assertTrue("foo" not in json_obj)
        self.assertTrue("first_name" in json_obj)
        self.assertTrue("last_name" in json_obj)
        
        json_obj = json.loads(dumper(person, suppress="first_name"))
        self.assertTrue("foo" not in json_obj)                
        self.assertTrue("first_name" not in json_obj)
        self.assertTrue("last_name" in json_obj)
Пример #11
0
    def test_suppress__type__attribute(self):

        @to_object(suppress=["__type__"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                
        person = Person("shawn", "adams")                 
        json_obj = json.loads(dumper(person))  
        self.assertTrue("__type__" not in json_obj)
Пример #12
0
    def test_exclude_nulls_on_dumper_trumps_to_object(self):

        @to_object(exclude_nulls=True)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                
        person = Person("shawn", None)                 
        json_obj = json.loads(dumper(person, exclude_nulls=False))
        self.assertTrue("last_name" in json_obj)
Пример #13
0
    def test_json_object_decorator(self):

        @to_object(suppress=["foo", "__type__"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
        
        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))
        
        self.assertEqual(json_obj, {"first_name": "shawn", "last_name": "adams"})
Пример #14
0
    def test_supplied_obj_handler(self):
        def person_handler(obj):
            return {"FirstName": obj.first_name, "LastName": obj.last_name}

        @to_object(handler=person_handler)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))

        self.assertEqual(json_obj, {"FirstName": "shawn", "LastName": "adams"})
Пример #15
0
    def test_methods_dont_get_serialized(self):
        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

            def foo_method(self):
                return self.foo

        person = Person("shawn", "adams")
        # the dumper call with actually fail if it tries to
        # serialize a method type.
        self.assertIsInstance(dumper(person), str)
Пример #16
0
    def test_json_object_decorator(self):
        @to_object(suppress=["foo", "__type__"])
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))

        self.assertEqual(json_obj, {
            "first_name": "shawn",
            "last_name": "adams"
        })
Пример #17
0
    def test_supplied_obj_handler(self):

        def person_handler(obj):
            return {"FirstName": obj.first_name, "LastName": obj.last_name}
        
        @to_object(handler=person_handler)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
        
        person = Person("shawn", "adams")
        json_obj = json.loads(dumper(person))
        
        self.assertEqual(json_obj, {"FirstName": "shawn", "LastName": "adams"})
Пример #18
0
    def test_methods_dont_get_serialized(self):

        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                
            def foo_method(self):
                return self.foo

        person = Person("shawn", "adams")
        # the dumper call with actually fail if it tries to
        # serialize a method type.
        self.assertIsInstance(dumper(person), str)
Пример #19
0
    def test_stacked_decorators(self):
        def person_handler(cls, obj):
            return cls(obj['first_name'], obj['last_name'])

        @to_object(suppress=["foo"])
        @from_object(person_handler)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name

        person = Person("shawn", "adams")
        json_str = dumper(person)
        del person
        person = loader(json_str)
        self.assertTrue(isinstance(person, Person))
Пример #20
0
    def test_stacked_decorators(self):

        def person_handler(cls, obj):
            return cls(
                obj['first_name'],
                obj['last_name']
            )                
                
        @to_object(suppress=["foo"])
        @from_object(person_handler)
        class Person(object):
            def __init__(self, first_name, last_name):
                self.foo = "bar"
                self.first_name = first_name
                self.last_name = last_name
                
        person = Person("shawn", "adams")
        json_str = dumper(person)
        del person
        person = loader(json_str)
        self.assertTrue(isinstance(person, Person))
Пример #21
0
    def test_supplied_handlers_kw_to_dumper(self):
        def person_handler(obj):
            return {
                "FirstName": obj.first_name,
                "LastName": obj.last_name,
                "Titles": obj.titles
            }

        def titles_handler(obj):
            return obj.titles

        @to_object()
        class Person(object):
            def __init__(self, first_name, last_name, titles=None):
                self.first_name = first_name
                self.last_name = last_name
                self.titles = titles

        @to_list()
        class Titles(object):
            def __init__(self, *titles):
                self.titles = titles

        person = Person("Joe", "Smith", Titles("Mr", "Dr"))
        json_obj = json.loads(
            dumper(person,
                   handlers={
                       "Person": person_handler,
                       "Titles": titles_handler
                   }))

        self.assertEqual(json_obj, {
            "FirstName": "Joe",
            "LastName": "Smith",
            "Titles": ["Mr", "Dr"]
        })