Ok so it took a lot shorter than I thought. The root problem is an encoding problem with util.read_text_file()

I had success with this:
```python
def read_text_file(filename):
    """Return the contents of *filename*.

    Try to decode the file contents with utf-8, the preffered system encoding
    (e.g., cp1252 on some Windows machines) and latin1, in that order. Decoding
    a byte string with latin1 will never raise an error. In the worst case, the
    returned string will contain some garbage characters.

    """
    with open(filename, 'rb') as fp:
        data = fp.read()

    encodings = ['utf-8', locale.getpreferredencoding(False), 'latin1']
    for enc in encodings:
        try:
            data = data.decode(enc).encode(enc)
        except UnicodeDecodeError:
            continue
        break

    #assert type(data) != bytes  # Latin1 should have worked.
    return data
```
which breaks Latin1 assertion that I don't know why it is necessary. Another workaround is:
```python
def read_text_file(filename):
    """Return the contents of *filename*.

    Try to decode the file contents with utf-8, the preffered system encoding
    (e.g., cp1252 on some Windows machines) and latin1, in that order. Decoding
    a byte string with latin1 will never raise an error. In the worst case, the
    returned string will contain some garbage characters.

    """
    with open(filename, 'rb') as fp:
        data = fp.read()

    encodings = ['utf-8', locale.getpreferredencoding(False), 'latin1']
    for enc in encodings:
        try:
            data = data.decode(enc)
        except UnicodeDecodeError:
            continue
        break

    assert type(data) != bytes  # Latin1 should have worked.
    
    if isinstance(data, unicode):
        data = data.encode('utf-8')

    return data
```
though I'm not sure how to make this work on Python 3