Hi everyone,

I've been working here and there on making the two point functions compatible with yt 3. I've run into an issue with the file i/o that's got me puzzled.

There's a call to write_on_root() that's failing with the error

AttributeError: 'builtin_function_or_method' object has no attribute 'StringIO'

Looking at the definition for write_on_root() in parallel_analysis_interface.py, I see that the offending line is:

return cStringIO.StringIO()

So apparently there's no function called StringIO(), even though the documentation for cStringIO says there should be.

I think the issue is how cStringIO is being imported:
from yt.extern.six.moves import cStringIO

Looking through yt/extern/six.py, it looks like it's modifying how the modules are imported, or something like that, but I can't really figure out what's going on in that file.

Does anyone have any thoughts on this?