When the source model is a read, a list is always created so the functionality is the for 1-N planar surfaces. Here is an example of parsing a source model with a single characteristic source, which contains only a single planar surface:

<pre>
>>> from openquake.nrmllib.hazard import parsers
>>> p = parsers.SourceModelParser('characteristic-source.xml')
>>> model = p.parse()
>>> sources = list(model)
>>> sources
[<openquake.nrmllib.models.CharacteristicSource object at 0x1016a7f90>]
>>> sources[0].__dict__
{'mfd': <openquake.nrmllib.models.TGRMFD object at 0x1016a7fd0>, 'name': 'characteristic source, multi surface', 'rake': 90.0, 'surface': [<openquake.nrmllib.models.PlanarSurface object at 0x101d8b5d0>], 'id': '7', 'trt': 'Volcanic'}
>>> 

</pre>