mirror of
https://github.com/triqs/dft_tools
synced 2024-09-12 05:38:31 +02:00
[doc] Update autorun to latest version, default to utf8 encoding
This commit is contained in:
parent
746710ea48
commit
c98b36140a
@ -3,7 +3,7 @@
|
||||
# TRIQS documentation build configuration file
|
||||
|
||||
import sys
|
||||
sys.path.insert(0, "@CMAKE_CURRENT_SOURCE_DIR@/sphinxext/autorun")
|
||||
sys.path.insert(0, "@CMAKE_CURRENT_SOURCE_DIR@/sphinxext")
|
||||
sys.path.insert(0, "@CMAKE_CURRENT_SOURCE_DIR@/sphinxext/numpydoc")
|
||||
|
||||
extensions = ['sphinx.ext.autodoc',
|
||||
@ -14,8 +14,8 @@ extensions = ['sphinx.ext.autodoc',
|
||||
'sphinx.ext.viewcode',
|
||||
'sphinx.ext.autosummary',
|
||||
'sphinx.ext.githubpages',
|
||||
'sphinx_autorun',
|
||||
'matplotlib.sphinxext.plot_directive',
|
||||
'autorun',
|
||||
'numpydoc']
|
||||
|
||||
source_suffix = '.rst'
|
||||
|
@ -1,104 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
sphinxcontirb.autorun
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Run the code and insert stdout after the code block.
|
||||
|
||||
|
||||
"""
|
||||
import os
|
||||
from subprocess import Popen,PIPE
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import Directive
|
||||
from docutils.parsers.rst import directives
|
||||
from sphinx.errors import SphinxError
|
||||
from pygments import highlight
|
||||
from pygments.lexers import PythonLexer
|
||||
from pygments.formatters import HtmlFormatter
|
||||
|
||||
class RunBlockError(SphinxError):
|
||||
category = 'runblock error'
|
||||
|
||||
class AutoRun:
|
||||
here = os.path.abspath(__file__)
|
||||
pycon = os.path.join(os.path.dirname(here),'pycon.py')
|
||||
config = dict(
|
||||
pycon = 'python ' + pycon,
|
||||
pycon_prefix_chars = 4,
|
||||
pycon_show_source = False,
|
||||
console = 'bash',
|
||||
console_prefix_chars = 1 ,
|
||||
)
|
||||
@classmethod
|
||||
def builder_init(cls,app):
|
||||
cls.config.update(app.builder.config.autorun_languages)
|
||||
|
||||
|
||||
|
||||
class RunBlock(Directive):
|
||||
has_content = True
|
||||
required_arguments = 1
|
||||
optional_arguments = 0
|
||||
final_argument_whitespace = False
|
||||
option_spec = {
|
||||
'linenos': directives.flag,
|
||||
}
|
||||
|
||||
|
||||
def run(self):
|
||||
config = AutoRun.config
|
||||
language = self.arguments[0]
|
||||
|
||||
if language not in config:
|
||||
raise RunBlockError('Unknown language %s' % language)
|
||||
|
||||
|
||||
# Get configuration values for the language
|
||||
args = config[language].split()
|
||||
#input_encoding = config.get(language+'_input_encoding','ascii')
|
||||
input_encoding = 'utf8'
|
||||
output_encoding = 'utf8'
|
||||
#output_encoding = config.get(language+'_output_encoding','ascii')
|
||||
prefix_chars = config.get(language+'_prefix_chars',0)
|
||||
show_source = config.get(language+'_show_source',True)
|
||||
|
||||
|
||||
# Build the code text
|
||||
proc = Popen(args,bufsize=1,stdin=PIPE,stdout=PIPE,stderr=PIPE)
|
||||
codelines = (line[prefix_chars:] for line in self.content)
|
||||
code = '\n'.join(codelines).encode(input_encoding)
|
||||
|
||||
# Run the code
|
||||
stdout,stderr = proc.communicate(code)
|
||||
|
||||
# Process output
|
||||
out =''
|
||||
if stdout:
|
||||
out += ''.join(stdout).decode(output_encoding)
|
||||
if stderr:
|
||||
out += ''.join(stderr).decode(output_encoding)
|
||||
|
||||
# Get the original code with prefixes
|
||||
if show_source:
|
||||
code = '\n'.join(self.content)
|
||||
else:
|
||||
code = ''
|
||||
#code_out = u'\n\n ---Output:---\n'.join((highlight(code, PythonLexer(), HtmlFormatter()),out))
|
||||
code_out = '\n\n ---Output:---\n'.join((code,out))
|
||||
|
||||
literal = nodes.literal_block(code_out,code_out)
|
||||
#literal['language'] = language
|
||||
literal['language'] = 'python'
|
||||
literal['linenos'] = 'linenos' in self.options
|
||||
return [literal]
|
||||
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive('runblock', RunBlock)
|
||||
app.connect('builder-inited',AutoRun.builder_init)
|
||||
app.add_config_value('autorun_languages', AutoRun.config, 'env')
|
||||
|
||||
# vim: set expandtab shiftwidth=4 softtabstop=4 :
|
93
doc/sphinxext/sphinx_autorun/__init__.py
Normal file
93
doc/sphinxext/sphinx_autorun/__init__.py
Normal file
@ -0,0 +1,93 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
sphinxcontirb.autorun
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Run the code and insert stdout after the code block.
|
||||
"""
|
||||
import os
|
||||
from subprocess import PIPE, Popen
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import Directive, directives
|
||||
from sphinx.errors import SphinxError
|
||||
|
||||
from sphinx_autorun import version
|
||||
|
||||
__version__ = version.version
|
||||
|
||||
|
||||
class RunBlockError(SphinxError):
|
||||
category = 'runblock error'
|
||||
|
||||
|
||||
class AutoRun(object):
|
||||
here = os.path.abspath(__file__)
|
||||
pycon = os.path.join(os.path.dirname(here), 'pycon.py')
|
||||
config = {
|
||||
'pycon': 'python ' + pycon,
|
||||
'pycon_prefix_chars': 4,
|
||||
'pycon_show_source': False,
|
||||
'console': 'bash',
|
||||
'console_prefix_chars': 1,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
def builder_init(cls, app):
|
||||
cls.config.update(app.builder.config.autorun_languages)
|
||||
|
||||
|
||||
class RunBlock(Directive):
|
||||
has_content = True
|
||||
required_arguments = 1
|
||||
optional_arguments = 0
|
||||
final_argument_whitespace = False
|
||||
option_spec = {
|
||||
'linenos': directives.flag,
|
||||
}
|
||||
|
||||
def run(self):
|
||||
config = AutoRun.config
|
||||
language = self.arguments[0]
|
||||
|
||||
if language not in config:
|
||||
raise RunBlockError('Unknown language %s' % language)
|
||||
|
||||
# Get configuration values for the language
|
||||
args = config[language].split()
|
||||
input_encoding = config.get(language+'_input_encoding', 'utf8')
|
||||
output_encoding = config.get(language+'_output_encoding', 'utf8')
|
||||
prefix_chars = config.get(language+'_prefix_chars', 0)
|
||||
show_source = config.get(language+'_show_source', True)
|
||||
|
||||
# Build the code text
|
||||
proc = Popen(args, bufsize=1, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
codelines = (line[prefix_chars:] for line in self.content)
|
||||
code = u'\n'.join(codelines).encode(input_encoding)
|
||||
|
||||
# Run the code
|
||||
stdout, stderr = proc.communicate(code)
|
||||
|
||||
# Process output
|
||||
if stdout:
|
||||
out = stdout.decode(output_encoding)
|
||||
if stderr:
|
||||
out = stderr.decode(output_encoding)
|
||||
|
||||
# Get the original code with prefixes
|
||||
if show_source:
|
||||
code = u'\n'.join(self.content)
|
||||
code_out = u'\n'.join((code, out))
|
||||
else:
|
||||
code_out = out
|
||||
|
||||
literal = nodes.literal_block(code_out, code_out)
|
||||
literal['language'] = language
|
||||
literal['linenos'] = 'linenos' in self.options
|
||||
return [literal]
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive('runblock', RunBlock)
|
||||
app.connect('builder-inited', AutoRun.builder_init)
|
||||
app.add_config_value('autorun_languages', AutoRun.config, 'env')
|
@ -12,7 +12,9 @@ def main():
|
||||
try:
|
||||
while True:
|
||||
source = next(source_lines)
|
||||
print('>>>', source)
|
||||
# Allow the user to ignore specific lines of output.
|
||||
if not source.endswith('# ignore'):
|
||||
print('>>>', source)
|
||||
more = console.runsource(source)
|
||||
while more:
|
||||
next_line = next(source_lines)
|
||||
@ -25,10 +27,5 @@ def main():
|
||||
more = console.runsource(source + '\n')
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
# vim: set expandtab shiftwidth=4 softtabstop=4 :
|
||||
|
4
doc/sphinxext/sphinx_autorun/version.py
Normal file
4
doc/sphinxext/sphinx_autorun/version.py
Normal file
@ -0,0 +1,4 @@
|
||||
# coding: utf-8
|
||||
# file generated by setuptools_scm
|
||||
# don't change, don't track in version control
|
||||
version = '1.1.1'
|
Loading…
Reference in New Issue
Block a user