Matt,

What would you think about keeping geojsonlib.dumps/loads as is for
convenience and just raise exceptions if simplejson can't be imported?
See rev 1113 -- I marked the dump/load feature as an "extra" in setup.py.

Sean

Matthew Russell wrote:
> Hi,
> 
> this is a proposal which Sean already +1'd in the recent "[Community] [Fwd:
> [Geojson] GeoJSON 1.0 Released]" thread.
> 
> The proposal is to remove the reliance on simplejson from geojsonlib (but
> keeping simplejson as the default).
> 
> I'n slight alteration to my previous api suggestion for the interface for
> simplejson's peers,
> I'd like to change the api from:
> 
> geojsonlib.{dumps, dump, loads, load}
> 
> to:
> 
> json = geojsonlib.encode(obj, codec="geojsonlib.defaultcodec", *codec_args,
> **codec_kwargs)
>   - where obj is any python object supporting the geointerface, or a mapping
>   - returns unicode or str
> 
> obj = geojsonlib.decode(json, codec="geojsonlib.defaultcodec", *codec_args,
> **codec_kwargs)
> 
>   - where 'json' is a unicode or str instance.
>   - reutrns a geojsonlib.GeoJSON instance or subclass thereof.
> 
> The primary motivation for this is file encoding.
> I'd like to keep the serialisation to file-like objects within the control
> of the user at the I/O boundaries.
> Removing the dump and load functions from geojsonlib would acheive this.
> I also think the names encode and decode are better, since load and dumps
> indicate serialization to disk.
> 
> So, does anyone object if the api changes from:
> geojsonlib.dumps -> geojson.encode
> geojsonlib.loads -> geojson.decode
> geojsonlib.dump -> file_like.write(geojsonlib.encode(obj))
> geojsonlib.load -> geojsonlib.decode(file_like.read())
> 
> ?
> 
> Once this is implemented, simplejson will only be required in the default
> case:
> 
> .encode(obj), .decode(obj)
> 
> and not if you want to use another JSON library, and have an adapter:
> 
> e.g
> 
> class CjsonEncoder:
>      def encode(self, obj):
>            ...
> 
> .encode(obj, codec=CjsonEncoder)
> 
> N.B:
> 
> 'codec' can be a dotted path, or any namespace with a .encode or .decode
> callable attribute as releveant.
> 
> --
> Cheers,
> Matt
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Community mailing list
> [email protected]
> http://lists.gispython.org/mailman/listinfo/community

_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community

Reply via email to