diff --git a/sphinx_automodapi/automodapi.py b/sphinx_automodapi/automodapi.py index 4d09e1f..ff059f7 100644 --- a/sphinx_automodapi/automodapi.py +++ b/sphinx_automodapi/automodapi.py @@ -83,6 +83,7 @@ class are included in the generated documentation. Defaults to ``False``. # actually built. import inspect +import io import os import re import sys @@ -322,8 +323,9 @@ def automodapi_replace(sourcestr, app, dotoctree=True, docname=None, ustr = newsourcestr.decode(app.config.source_encoding) if docname is None: - with open(os.path.join(app.srcdir, 'unknown.automodapi'), 'a') as f: - f.write('\n**NEW DOC**\n\n') + with io.open(os.path.join(app.srcdir, 'unknown.automodapi'), + 'a', encoding='utf8') as f: + f.write(u'\n**NEW DOC**\n\n') f.write(ustr) else: env = app.builder.env @@ -332,7 +334,8 @@ def automodapi_replace(sourcestr, app, dotoctree=True, docname=None, filename = docname + os.path.splitext(env.doc2path(docname))[1] filename += '.automodapi' - with open(os.path.join(app.srcdir, filename), 'w') as f: + with io.open(os.path.join(app.srcdir, filename), 'w', + encoding='utf8') as f: f.write(ustr) return newsourcestr diff --git a/sphinx_automodapi/tests/test_automodapi.py b/sphinx_automodapi/tests/test_automodapi.py index dabae44..48f1543 100644 --- a/sphinx_automodapi/tests/test_automodapi.py +++ b/sphinx_automodapi/tests/test_automodapi.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*- # Licensed under a 3-clause BSD style license - see LICENSE.rst import pytest @@ -97,6 +98,31 @@ def test_am_replacer_basic(): assert result == am_replacer_basic_expected + +am_replacer_repr_str = u""" +This comes before with spéciàl çhars + +.. automodapi:: sphinx_automodapi.tests.test_automodapi +{options} + +This comes after +""" + + +def test_am_replacer_writereprocessed(tmpdir): + """ + Tests the automodapi_writereprocessed option + """ + from ..automodapi import automodapi_replace + + fakeapp = FakeApp() + fakeapp.srcdir = str(tmpdir) + fakeapp.config.automodapi_writereprocessed = True + automodapi_replace(am_replacer_repr_str.format(options=''), fakeapp) + + assert tmpdir.join('unknown.automodapi').isfile() + + am_replacer_noinh_expected = """ This comes before