metaodi / osmapi

Python wrapper for the OpenStreetMap API
http://osmapi.metaodi.ch/
GNU General Public License v3.0
212 stars 41 forks source link

Parse() argument 1 must be string or read-only buffer, not None #73

Closed Xevib closed 7 years ago

Xevib commented 7 years ago

When i download the data of a Relation I get a Type error

Code to reproduce:

from osmapi import OsmApi
api = OsmApi()
api.RelationFull(2911456) 

Traceback:

/home/xevi/.virtualenvs/changeswithin/lib/python2.7/site-packages/osmapi/OsmApi.pyc in RelationFull(self, RelationId) 1126 uri = "/api/0.6/relation/%s/full" % (RelationId) 1127 data = self._get(uri) -> 1128 return self.ParseOsm(data) 1129 1130 def RelationsGet(self, RelationIdList):

/home/xevi/.virtualenvs/changeswithin/lib/python2.7/site-packages/osmapi/OsmApi.pyc in ParseOsm(self, data) 1709 } 1710 """ -> 1711 data = xml.dom.minidom.parseString(data) 1712 data = data.getElementsByTagName("osm")[0] 1713 result = []

/usr/lib64/python2.7/xml/dom/minidom.pyc in parseString(string, parser) 1926 if parser is None: 1927 from xml.dom import expatbuilder -> 1928 return expatbuilder.parseString(string) 1929 else: 1930 from xml.dom import pulldom

/usr/lib64/python2.7/xml/dom/expatbuilder.pyc in parseString(string, namespaces) 938 else: 939 builder = ExpatBuilder() --> 940 return builder.parseString(string) 941 942

/usr/lib64/python2.7/xml/dom/expatbuilder.pyc in parseString(self, string) 221 parser = self.getParser() 222 try: --> 223 parser.Parse(string, True) 224 self._setup_subset(string) 225 except ParseEscape:

The version of osmapi:

pip freeze|grep osmapi
osmapi==0.8.1
metaodi commented 7 years ago

Thanks for reporting this.

I could reproduce this error, it is due to the requested object being deleted (see http://openstreetmap.org/relation/2911456). The current implementation simply returns None in this case which leads to subsequent errors like the TypeError you got.

I propose to raise an exception instead or at least make sure the current code works whenNone is returned.

metaodi commented 7 years ago

The fix has been released in v1.0.0.0