[docutils:bugs] #514 publish_file no longer works with "BytesIO-like" objects.
Günter Milde via Docutils-develop <[email protected]> Fri, 19 Dec 2025 08:29:47 -0000
| Newsgroups | gmane.text.docutils.devel |
|---|---|
| Message-ID | </p/docutils/bugs/514/2df39c14b8aff838d52c9b64b949724ef396621d.bugs@docutils.p.sourceforge.net> |
This is a multi-part message in MIME format.
--===============5412806229243908126==
Content-Type: multipart/related; boundary="===============3093044674516894566=="
This is a multi-part message in MIME format.
--===============3093044674516894566==
Content-Type: multipart/alternative; boundary="===============7508286316337161222=="
MIME-Version: 1.0
--===============7508286316337161222==
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
- **status**: open-fixed --> closed-fixed
- **Comment**:
Fixed in Docutils 0.22.4.
Thank you for analysis and report.
---
**[bugs:#514] publish_file no longer works with "BytesIO-like" objects.**
**Status:** closed-fixed
**Created:** Sat Nov 15, 2025 05:26 PM UTC by Kristian Lehto
**Last Updated:** Mon Dec 01, 2025 11:14 PM UTC
**Owner:** nobody
Hello,
We are using code bellow to convert rst files to html.
Code works fine if we use old docutils version 0.20.1.
python -m pip install docutils==0.20.1
But current 0.22.3 version crashes.
import io
from docutils.core import publish_file
text = open('test.rst', 'rb').read()
source = io.BytesIO(text)
destination = open('test.html', 'w')
publish_file(source=source, destination=destination, writer_name='html')
destination.close()
source.close()
Traceback (most recent call last):
File "C:\projects\test\test.py", line 7, in <module>
publish_file(source=source, destination=destination, writer_name='html')
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python314\Lib\site-packages\docutils\core.py", line 465, in publish_file
output, _publisher = publish_programmatically(
~~~~~~~~~~~~~~~~~~~~~~~~^
source_class=io.FileInput, source=source, source_path=source_path,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<7 lines>...
config_section=config_section,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
enable_exit_status=enable_exit_status)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python314\Lib\site-packages\docutils\core.py", line 794, in publish_programmatically
output = publisher.publish(enable_exit_status=enable_exit_status)
File "C:\Python314\Lib\site-packages\docutils\core.py", line 269, in publish
self.document = self.reader.read(self.source, self.parser,
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
self.settings)
^^^^^^^^^^^^^^
File "C:\Python314\Lib\site-packages\docutils\readers\__init__.py", line 95, in read
self.parse()
~~~~~~~~~~^^
File "C:\Python314\Lib\site-packages\docutils\readers\__init__.py", line 101, in parse
self.parser.parse(self.input, document)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python314\Lib\site-packages\docutils\parsers\rst\__init__.py", line 175, in parse
inputlines = docutils.statemachine.string2lines(
inputstring, tab_width=document.settings.tab_width,
convert_whitespace=True)
File "C:\Python314\Lib\site-packages\docutils\statemachine.py", line 1515, in string2lines
astring = whitespace.sub(' ', astring)
TypeError: cannot use a string pattern on a bytes-like object
---
Sent from sourceforge.net because [email protected] is subscribed to https://sourceforge.net/p/docutils/bugs/
To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.
--===============7508286316337161222==
MIME-Version: 1.0
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: 7bit
<div class="markdown_content"><ul>
<li><strong>status</strong>: open-fixed --> closed-fixed</li>
<li><strong>Comment</strong>:</li>
</ul>
<p>Fixed in Docutils 0.22.4.<br/>
Thank you for analysis and report.</p>
<hr/>
<p><strong><a class="alink strikethrough" href="https://sourceforge.net/p/docutils/bugs/514/">[bugs:#514]</a> publish_file no longer works with "BytesIO-like" objects.</strong></p>
<p><strong>Status:</strong> closed-fixed<br/>
<strong>Created:</strong> Sat Nov 15, 2025 05:26 PM UTC by Kristian Lehto<br/>
<strong>Last Updated:</strong> Mon Dec 01, 2025 11:14 PM UTC<br/>
<strong>Owner:</strong> nobody</p>
<p>Hello,</p>
<p>We are using code bellow to convert rst files to html.</p>
<p>Code works fine if we use old docutils version 0.20.1.</p>
<p>python -m pip install docutils==0.20.1</p>
<p>But current 0.22.3 version crashes.</p>
<p>import io<br/>
from docutils.core import publish_file</p>
<p>text = open('test.rst', 'rb').read()<br/>
source = io.BytesIO(text)<br/>
destination = open('test.html', 'w')<br/>
publish_file(source=source, destination=destination, writer_name='html')<br/>
destination.close()<br/>
source.close()</p>
<p>Traceback (most recent call last):<br/>
File "C:\projects\test\test.py", line 7, in <module><br/>
publish_file(source=source, destination=destination, writer_name='html')<br/>
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br/>
File "C:\Python314\Lib\site-packages\docutils\core.py", line 465, in publish_file<br/>
output, _publisher = publish_programmatically(<br/>
~~~~~~~~~~~~~~~~~~~~~~~~^<br/>
source_class=io.FileInput, source=source, source_path=source_path,<br/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br/>
...<7 lines>...<br/>
config_section=config_section,<br/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br/>
enable_exit_status=enable_exit_status)<br/>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br/>
File "C:\Python314\Lib\site-packages\docutils\core.py", line 794, in publish_programmatically<br/>
output = publisher.publish(enable_exit_status=enable_exit_status)<br/>
File "C:\Python314\Lib\site-packages\docutils\core.py", line 269, in publish<br/>
self.document = self.reader.read(self.source, self.parser,<br/>
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^<br/>
self.settings)<br/>
^^^^^^^^^^^^^^<br/>
File "C:\Python314\Lib\site-packages\docutils\readers__init__.py", line 95, in read<br/>
self.parse()<br/>
~~~~~~~~~~^^<br/>
File "C:\Python314\Lib\site-packages\docutils\readers__init__.py", line 101, in parse<br/>
self.parser.parse(self.input, document)<br/>
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^<br/>
File "C:\Python314\Lib\site-packages\docutils\parsers\rst__init__.py", line 175, in parse<br/>
inputlines = docutils.statemachine.string2lines(<br/>
inputstring, tab_width=document.settings.tab_width,<br/>
convert_whitespace=True)<br/>
File "C:\Python314\Lib\site-packages\docutils\statemachine.py", line 1515, in string2lines<br/>
astring = whitespace.sub(' ', astring)<br/>
TypeError: cannot use a string pattern on a bytes-like object</module></p>
<hr/>
<p>Sent from sourceforge.net because [email protected] is subscribed to <a href="https://sourceforge.net/p/docutils/bugs/">https://sourceforge.net/p/docutils/bugs/</a></p>
<p>To unsubscribe from further messages, a project admin can change settings at <a href="https://sourceforge.net/p/docutils/admin/bugs/options.">https://sourceforge.net/p/docutils/admin/bugs/options.</a> Or, if this is a mailing list, you can unsubscribe from the mailing list.</p></div>
--===============7508286316337161222==--
--===============3093044674516894566==--
--===============5412806229243908126==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============5412806229243908126==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline