@jtratner I'm not familiar with the `read1` issue.

And the problem about the `StringIO` is the following:

```python
In [2]: type(pd.compat.StringIO(u'test').read())
Out[2]: unicode

In [3]: type(pd.compat.StringIO('test').read())
Out[3]: str
```
If I get a `StringIO` object I have no idea if I will get bytes or strings from it.

On the other hand:

```python
In [7]: type(io.StringIO(u'test').read())
Out[7]: unicode

In [8]: type(io.StringIO('test').read())
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-ec84dbdb83c4> in <module>()
----> 1 type(io.StringIO('test').read())

TypeError: initial_value must be unicode or None, not str
```