As header says: spec_file.h is a mess of different approaches (using external tools, partly using rpm's python bindings, hand-crafted spec-file parsing vs using rpmlib's), inconsistent naming and interfaces.
It should be possible to base all access to the specfile using rpm's python bindings. There's at least one issue, though: current bindings doesn't export the %files list. See [https://bugzilla.redhat.com/show_bug.cgi?id=857653]
One of the bad things is that there is no simple enumeration of the packages generated by the spec. Instead innocent users requesting a thing named 'files' is served a dict of file lists... Changing this will cost some blood.
Fixed in c52f577f9e88bb6f91e0