Exemplo n.º 1
0
 def test_adapt(self):
     from jsonpublish.encoder import JSONEncoder
     encoder = JSONEncoder()
     from datetime import date
     o = date(1987, 5, 8)
     self.assertRaises(TypeError, encoder.encode, o)
     encoder.adapters.register_adapter(date,
                                       lambda d: d.strftime("%Y-%m-%d"))
     self.assertEqual(encoder.encode(o), '"1987-05-08"')
Exemplo n.º 2
0
 def test_adapt(self):
     from jsonpublish.encoder import JSONEncoder
     encoder = JSONEncoder()
     from datetime import date
     o = date(1987, 5, 8)
     self.assertRaises(
         TypeError,
         encoder.encode, o)
     encoder.adapters.register_adapter(
         date, lambda d: d.strftime("%Y-%m-%d"))
     self.assertEqual(
         encoder.encode(o),
         '"1987-05-08"')
Exemplo n.º 3
0
 def test_serialize_on_adaptable(self):
     from jsonpublish.encoder import JSONEncoder
     encoder = JSONEncoder()
     from zope.proxy import ProxyBase
     from datetime import date
     o = date(1987, 5, 8)
     p = ProxyBase(o)
     def adapt_date(d):
         return d.strftime("%Y-%m-%d")
     encoder.adapters.register_adapter(date, adapt_date)
     self.assertEqual(
         encoder.encode(p),
         '"1987-05-08"')
Exemplo n.º 4
0
    def test_serialize_on_adaptable(self):
        from jsonpublish.encoder import JSONEncoder
        encoder = JSONEncoder()
        from zope.proxy import ProxyBase
        from datetime import date
        o = date(1987, 5, 8)
        p = ProxyBase(o)

        def adapt_date(d):
            return d.strftime("%Y-%m-%d")

        encoder.adapters.register_adapter(date, adapt_date)
        self.assertEqual(encoder.encode(p), '"1987-05-08"')
Exemplo n.º 5
0
    def test_settings(self):
        from jsonpublish.encoder import JSONEncoder, jsonsettings
        encoder = JSONEncoder()
        from datetime import date
        o = date(1987, 5, 8)

        def adapt_date(d, with_year=True):
            if with_year:
                return d.strftime("%Y-%m-%d")
            else:
                return d.strftime("%m-%d")

        encoder.adapters.register_adapter(date, adapt_date)
        self.assertEqual(encoder.encode(o), '"1987-05-08"')
        self.assertEqual(encoder.encode(jsonsettings(o, with_year=False)),
                         '"05-08"')
Exemplo n.º 6
0
def dumps(obj,
          skipkeys=False,
          ensure_ascii=True,
          check_circular=True,
          allow_nan=True,
          indent=None,
          separators=None,
          encoding='utf-8',
          default=None,
          use_decimal=True,
          namedtuple_as_object=True,
          tuple_as_array=True,
          **kw):
    """ Serialize `obj` using globally configured JSON encoder

    Accepted arguments are the same as :func:`json.dumps` accepts
    """
    if (not skipkeys and ensure_ascii and check_circular and allow_nan
            and indent is None and separators is None and encoding == 'utf-8'
            and default is None and use_decimal and namedtuple_as_object
            and tuple_as_array and not kw):
        return _default_encoder.encode(obj)
    return JSONEncoder(skipkeys=skipkeys,
                       ensure_ascii=ensure_ascii,
                       check_circular=check_circular,
                       allow_nan=allow_nan,
                       indent=indent,
                       separators=separators,
                       encoding=encoding,
                       default=default,
                       use_decimal=use_decimal,
                       namedtuple_as_object=namedtuple_as_object,
                       tuple_as_array=tuple_as_array,
                       adapters=_global_adapters,
                       **kw).encode(obj)
Exemplo n.º 7
0
 def test_settings(self):
     from jsonpublish.encoder import JSONEncoder, jsonsettings
     encoder = JSONEncoder()
     from datetime import date
     o = date(1987, 5, 8)
     def adapt_date(d, with_year=True):
         if with_year:
             return d.strftime("%Y-%m-%d")
         else:
             return d.strftime("%m-%d")
     encoder.adapters.register_adapter(date, adapt_date)
     self.assertEqual(
         encoder.encode(o),
         '"1987-05-08"')
     self.assertEqual(
         encoder.encode(jsonsettings(o, with_year=False)),
         '"05-08"')
Exemplo n.º 8
0
 def test_serialize_proxy(self):
     from jsonpublish.encoder import JSONEncoder
     encoder = JSONEncoder()
     from zope.proxy import ProxyBase
     p = ProxyBase(1)
     self.assertEqual(encoder.encode(p), '1')
Exemplo n.º 9
0
 def test_serialize_proxy(self):
     from jsonpublish.encoder import JSONEncoder
     encoder = JSONEncoder()
     from zope.proxy import ProxyBase
     p = ProxyBase(1)
     self.assertEqual(encoder.encode(p), '1')
Exemplo n.º 10
0
from jsonpublish.encoder import JSONEncoder, AdapterRegistry, jsonsettings

__all__ = ("dumps", "register_adapter", "jsonsettings")

_global_adapters = AdapterRegistry()
_default_encoder = JSONEncoder(
    skipkeys=False,
    ensure_ascii=True,
    check_circular=True,
    allow_nan=True,
    indent=None,
    separators=None,
    encoding='utf-8',
    default=None,
    adapters=_global_adapters,
)

#: Register adapter for global encoder which is used by :func:`.dumps` function
register_adapter = _global_adapters.register_adapter


def dumps(obj,
          skipkeys=False,
          ensure_ascii=True,
          check_circular=True,
          allow_nan=True,
          indent=None,
          separators=None,
          encoding='utf-8',
          default=None,
          use_decimal=True,