Skip to content

reprunicode function attribute dropped by upgraded docutils package. #1415

@egberts

Description

@egberts
  • [ x] I have read the Filing Issues and subsequent “How to Get Help” sections of the documentation.

  • [x ] I can reproduce this problem with stock/default settings file, theme, and sample content (as described in above “How to Get Help” sections of the documentation).

  • [x ] I have searched the issues (including closed ones) and believe that this is not a duplicate.

  • OS version and name: Linux 6.1.0-37-amd64 The pelican latex plugin #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux

  • Python version: 3.11.2

  • Pelican version: HEAD (also v4.9.1)

  • Link to theme: mosra's m.css

  • Links to plugins: n/a

  • Link to your site: egbert.net

  • Link to your source: GitHub/egberts/pelican

  • Link to a GitHub with the contents of your settings file: [https://github.com/egberts/egberts.github.io-src/blob/master/pelicanconf.py]

Issue

Upgrading docutils package to v0.21 (from v0.20.1) caused a breakage with the following stack trace dump below.

The 'reprunicode' function attribute has been removed, by the docutils package maintainer.

 Read file articles/code-syntax-python-rst.rst -> Article                          readers.py:586
           ERROR    Could not process articles/code-syntax-python-rst.rst                          generators.py:684
                    module 'docutils.nodes' has no attribute 'reprunicode'                                          
                    Traceback (most recent call last):                                                              
                      File "/home/wolfe/work/github/egberts/pelican/pelican/generators.py", line                    
                    673, in generate_context                                                                        
                        article = self.readers.read_file(                                                           
                                  ^^^^^^^^^^^^^^^^^^^^^^^                                                           
                      File "/home/wolfe/work/github/egberts/pelican/pelican/readers.py", line 622,                  
                    in read_file                                                                                    
                        content, reader_metadata = reader.read(path)                                                
                                                   ^^^^^^^^^^^^^^^^^                                                
                      File "/home/wolfe/work/github/egberts/pelican/pelican/readers.py", line 279,                  
                    in read                                                                                         
                        pub = self._get_publisher(source_path)                                                      
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                      
                      File "/home/wolfe/work/github/egberts/pelican/pelican/readers.py", line 274,                  
                    in _get_publisher                                                                               
                        pub.publish()                                                                               
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/core.py", line 234, in publish                                                           
                        self.document = self.reader.read(self.source, self.parser,                                  
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                  
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/readers/__init__.py", line 70, in read                                                   
                        self.parse()                                                                                
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/readers/__init__.py", line 76, in parse                                                  
                        self.parser.parse(self.input, document)                                                     
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/__init__.py", line 184, in parse                                             
                        self.statemachine.run(inputlines, document, inliner=self.inliner)                           
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 169, in run                                                 
                        results = StateMachineWS.run(self, input_lines, input_offset,                               
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                               
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 233, in run                                                       
                        context, next_state, result = self.check_line(                                              
                                                      ^^^^^^^^^^^^^^^^                                              
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 445, in check_line                                                
                        return method(match, context, next_state)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                   
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2790, in underline                                          
                        self.section(title, source, style, lineno - 1, messages)                                    
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 325, in section                                             
                        self.new_subsection(title, lineno, messages)                                                
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 391, in new_subsection                                      
                        newabsoffset = self.nested_parse(                                                           
                                       ^^^^^^^^^^^^^^^^^^                                                           
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 279, in nested_parse                                        
                        state_machine.run(block, input_offset, memo=self.memo,                                      
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 195, in run                                                 
                        results = StateMachineWS.run(self, input_lines, input_offset)                               
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                               
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 233, in run                                                       
                        context, next_state, result = self.check_line(                                              
                                                      ^^^^^^^^^^^^^^^^                                              
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 445, in check_line                                                
                        return method(match, context, next_state)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                   
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2790, in underline                                          
                        self.section(title, source, style, lineno - 1, messages)                                    
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 325, in section                                             
                        self.new_subsection(title, lineno, messages)                                                
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 391, in new_subsection                                      
                        newabsoffset = self.nested_parse(                                                           
                                       ^^^^^^^^^^^^^^^^^^                                                           
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 279, in nested_parse                                        
                        state_machine.run(block, input_offset, memo=self.memo,                                      
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 195, in run                                                 
                        results = StateMachineWS.run(self, input_lines, input_offset)                               
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                               
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 233, in run                                                       
                        context, next_state, result = self.check_line(                                              
                                                      ^^^^^^^^^^^^^^^^                                              
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/statemachine.py", line 445, in check_line                                                
                        return method(match, context, next_state)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                   
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2357, in explicit_markup                                    
                        nodelist, blank_finish = self.explicit_construct(match)                                     
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                     
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2369, in explicit_construct                                 
                        return method(self, expmatch)                                                               
                               ^^^^^^^^^^^^^^^^^^^^^^                                                               
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2106, in directive                                          
                        return self.run_directive(                                                                  
                               ^^^^^^^^^^^^^^^^^^^                                                                  
                      File                                                                                          
                    "/home/wolfe/work/github/egberts/pelican/.venv/lib/python3.11/site-packages/do                  
                    cutils/parsers/rst/states.py", line 2156, in run_directive                                      
                        result = directive_instance.run()                                                           
                                 ^^^^^^^^^^^^^^^^^^^^^^^^                                                           
                      File                                                                                          
                    "/home/wolfe/work/github/egberts.github.io-src/plugins/code_include/code_inclu                  
                    de.py", line 34, in run                                                                         
                        path = nodes.reprunicode(path)                                                              
                               ^^^^^^^^^^^^^^^^^                                                                    
                    AttributeError: module 'docutils.nodes' has no attribute 'reprunicode'         

Cross-posted this issue over at @ boredomwontgetus/pelican-code-include#1 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions