Changeset 1113

Show
Ignore:
Timestamp:
06/18/08 15:59:48
Author:
seang
Message:

Make dump/load into extras that depend on simplejson, raise not implemented without

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • geojsonlib/trunk/geojsonlib/encoding.py

    r1111 r1113  
    1 # ============================================================================ 
    2 # GeoJSON. Copyright (C) 2007 Sean C. Gillies 
    3 # 
    4 # See ../LICENSE.txt 
    5 #  
    6 # Contact: Sean Gillies, sgillies@frii.com 
    7 # ============================================================================ 
    8  
    9 import simplejson 
    101import geojsonlib 
    112import geojsonlib.factory 
    123from geojsonlib.mapping import Mapping, to_mapping 
     4 
     5 
     6class SimpleJson(object): 
     7    JSONEncoder = object 
     8    JSONDecoder = object 
     9    def dump(self, *args, **kwargs): 
     10        raise NotImplementedError, "dump() requires simplejson"  
     11    def dumps(self, *args, **kwargs): 
     12        raise NotImplementedError, "dumps() requires simplejson"  
     13    def load(self, *args, **kwargs): 
     14        raise NotImplementedError, "load() requires simplejson"  
     15    def loads(self, *args, **kwargs): 
     16        raise NotImplementedError, "loads() requires simplejson"  
     17 
     18try: 
     19    import simplejson 
     20except ImportError: 
     21    simplejson = SimpleJson() 
    1322 
    1423 
     
    2837 
    2938 
     39default_encoder = PyGFPEncoder 
     40default_decoder = simplejson.JSONDecoder 
     41 
     42 
    3043# Wrap the functions from simplejson, providing encoder, decoders, and 
    3144# object creation hooks 
    3245 
    33 def dump(obj, fp, cls=PyGFPEncoder, **kwargs): 
    34     return simplejson.dump(to_mapping(obj), fp, cls=cls, **kwargs) 
     46def dump(obj, fp, cls=None, **kwargs): 
     47    return simplejson.dump(to_mapping(obj), fp, cls=cls or default_encoder, **kwargs) 
    3548 
    3649 
    37 def dumps(obj, cls=PyGFPEncoder, **kwargs): 
    38     return simplejson.dumps(to_mapping(obj), cls=cls, **kwargs) 
     50def dumps(obj, cls=None, **kwargs): 
     51    return simplejson.dumps(to_mapping(obj), cls=cls or default_encoder, **kwargs) 
    3952 
    4053 
    41 def load(fp, cls=simplejson.JSONDecoder, object_hook=None, **kwargs): 
    42     return simplejson.load(fp, cls=cls, object_hook=object_hook, **kwargs) 
     54def load(fp, cls=None, object_hook=None, **kwargs): 
     55    return simplejson.load(fp, cls=cls or default_decoder, object_hook=object_hook, **kwargs) 
    4356 
    4457 
    45 def loads(s, cls=simplejson.JSONDecoder, object_hook=None, **kwargs): 
    46     return simplejson.loads(s, cls=cls, object_hook=object_hook, **kwargs) 
    47  
     58def loads(s, cls=None, object_hook=None, **kwargs): 
     59    return simplejson.loads(s, cls=cls or default_decoder, object_hook=object_hook, **kwargs) 
  • geojsonlib/trunk/setup.py

    r1111 r1113  
    1  
    21from setuptools import setup 
    32 
     
    1716      long_description = readme_text, 
    1817      packages          = ["geojsonlib"], 
    19       install_requires  = ["simplejson", "setuptools"], 
     18      install_requires  = ["setuptools"], 
     19      extras_require = { 
     20        'dump/load': ["simplejson"] 
     21        }, 
    2022      test_suite    = "tests.test_suite", 
    2123      classifiers   = [ 
     
    2931        ], 
    3032) 
    31