Since there is no way of knowing what global names will conflict in the future, it could be useful for GRC to prefix ids (id_audio), make them part of another structure (ids.audio), or something similar. This adds complexity to manual coding in Python, so it's a tradeoff.
Hi
One of my flowgraph was generating the error:
self.audio_sink_0 = audio.sink(audio_rate, '', True)
AttributeError: 'int' object has no attribute 'sink'
This error was not easy to debug since the error message sounds like
there was a library error (which was not the case here).
My mistake was a "QT GUI Chooser" whose id was (incorrectly) set to
audio; "audio" being also the name of a gnuradio python module.
Now that I found my mistake, it's obvious that no ID should be set to
some python module name.
May be it could be interesting that gnuradio-companion tests block ids
and rejects forbidden ones when compiling flowgraph.
Regards