diff --git a/src/pyquickhelper/helpgen/sphinxm_convert_doc_sphinx_helper.py b/src/pyquickhelper/helpgen/sphinxm_convert_doc_sphinx_helper.py index 1eb598b8..3ae309e9 100644 --- a/src/pyquickhelper/helpgen/sphinxm_convert_doc_sphinx_helper.py +++ b/src/pyquickhelper/helpgen/sphinxm_convert_doc_sphinx_helper.py @@ -1240,7 +1240,7 @@ def _init_env(self, freshenv): self.env.setup(self) self.info('done') except Exception as err: - self.info(f'failed: {err}') + self.info('failed: %r', err) self._init_env(freshenv=True) elif self.env is None: # pragma: no cover self.env = _CustomBuildEnvironment(self) @@ -1382,17 +1382,14 @@ def add_directive(self, name, obj, content=None, arguments=None, # pylint: disa def run(self): """Run the plot directive.""" logger = getLogger("MockSphinxApp") - logger.info( - f'[MockSphinxApp] PlotDirective: {self.content}') + logger.info('[MockSphinxApp] PlotDirective: %r', self.content) try: res = old_run(self) - logger.info( - '[MockSphinxApp] PlotDirective ok') + logger.info('[MockSphinxApp] PlotDirective ok') return res except OSError as e: # pragma: no cover logger = getLogger("MockSphinxApp") - logger.info( - f'[MockSphinxApp] PlotDirective failed: {e}') + logger.info('[MockSphinxApp] PlotDirective failed: %s', e) return [] obj.run = run diff --git a/src/pyquickhelper/pycode/utils_tests.py b/src/pyquickhelper/pycode/utils_tests.py index 7ecb461f..4c1121d2 100644 --- a/src/pyquickhelper/pycode/utils_tests.py +++ b/src/pyquickhelper/pycode/utils_tests.py @@ -462,13 +462,10 @@ def write_covlog(covs): err = res.get("err", "") if len(err) > 0: # pragma: no cover # Remove most of the Sphinx warnings (sphinx < 1.8) - lines = err.split("\n") - lines = [ - _ for _ in lines if _ and ( - "is already registered, it will be overridden" not in _ and - "has to be local relative or absolute path to image" not in _)] - err = "\n".join(lines) - if len(err) > 0: + fLOG("[main_wrapper_tests] EXCEPTION BEGIN") + fLOG(err) + fLOG("[main_wrapper_tests] EXCEPTION END") + if len(err) > 10000: raise TestWrappedException(err) # pragma: no cover datetime_end = datetime.now() diff --git a/src/pyquickhelper/sphinxext/_sphinx_common_builder.py b/src/pyquickhelper/sphinxext/_sphinx_common_builder.py index c9037151..1c6c6444 100644 --- a/src/pyquickhelper/sphinxext/_sphinx_common_builder.py +++ b/src/pyquickhelper/sphinxext/_sphinx_common_builder.py @@ -148,8 +148,8 @@ def base_visit_image(self, node, image_dest=None): except InternetException as e: # pragma: no cover logger = logging.getLogger("image") logger.warning( - "[image] unable to get content for url '{0}' due to '{1}'" - "".format(atts['src'], e)) + "[image] unable to get content for url %r due to %r", + atts['src'], e) this = os.path.abspath( os.path.dirname(__file__)) full = os.path.join( diff --git a/src/pyquickhelper/sphinxext/sphinx_autosignature.py b/src/pyquickhelper/sphinxext/sphinx_autosignature.py index 64373171..8c55de83 100644 --- a/src/pyquickhelper/sphinxext/sphinx_autosignature.py +++ b/src/pyquickhelper/sphinxext/sphinx_autosignature.py @@ -165,8 +165,7 @@ def keep_logging(*els): if logging_function: logging_function(mes) # pragma: no cover if lineno is not None: - logger.warning( - f' File "{source}", line {lineno}') + logger.warning(' File "%s", line %r', source, lineno) obj = None kind = None if opt_syspath: @@ -175,8 +174,8 @@ def keep_logging(*els): if opt_members is not None and kind != "class": # pragma: no cover logger = logging.getLogger("autosignature") logger.warning( - "[autosignature] option members is specified but '{0}' " - "is not a class (kind='{1}').".format(object_name, kind)) + "[autosignature] option members is specified but %r " + "is not a class (kind=%r).", object_name, kind) obj = None # build node @@ -187,8 +186,8 @@ def keep_logging(*els): if opt_path == 'import': if obj is None: logger = logging.getLogger("autosignature") - logger.warning( - f"[autosignature] object '{object_name}' cannot be imported.") + logger.warning("[autosignature] object %r cannot be imported.", + object_name) anchor = object_name elif kind == "staticmethod": cl, fu = object_name.split(".")[-2:] @@ -205,8 +204,8 @@ def keep_logging(*els): else: # pragma: no cover logger = logging.getLogger("autosignature") logger.warning( - "[autosignature] options path is '{0}', it should be in " - "(import, name, full) for object '{1}'.".format(opt_path, object_name)) + "[autosignature] options path is %r, it should be in " + "(import, name, full) for object %r.", opt_path, object_name) anchor = object_name if obj is None: @@ -334,7 +333,7 @@ def build_members(self, obj, members, object_name, annotation, summary): logger = logging.getLogger("autosignature") logger.warning( "[autosignature](2) unable to get signature of " - "'{0}.{1} - {2}'.".format(object_name, name, str(e).replace("\n", "\\n"))) + "'%s.%s - %s'.", object_name, name, str(e).replace("\n", "\\n")) signature = None except ValueError: # pragma: no cover signature = None @@ -355,8 +354,8 @@ def build_members(self, obj, members, object_name, annotation, summary): doc = value.__doc__ if doc is None: # pragma: no cover logger = logging.getLogger("autosignature") - logger.warning( - f"[autosignature] docstring empty for '{object_name}.{name}'.") + logger.warning("[autosignature] docstring empty for '%s.%s'.", + object_name, name) else: docstring = self.build_summary(doc) lines = "\n".join( diff --git a/src/pyquickhelper/sphinxext/sphinx_bigger_extension.py b/src/pyquickhelper/sphinxext/sphinx_bigger_extension.py index b2f47704..34459783 100644 --- a/src/pyquickhelper/sphinxext/sphinx_bigger_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_bigger_extension.py @@ -117,8 +117,8 @@ def depart_bigger_node(self, node): depart bigger_node for format other than html """ logger = getLogger("bigger") - logger.warning("[depart_bigger_node] output only available for HTML not for '{0}'".format( - type(self))) + logger.warning( + "[depart_bigger_node] output only available for HTML not for %r", type(self)) def setup(app): diff --git a/src/pyquickhelper/sphinxext/sphinx_blog_extension.py b/src/pyquickhelper/sphinxext/sphinx_blog_extension.py index 44091787..cfaf1721 100644 --- a/src/pyquickhelper/sphinxext/sphinx_blog_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_blog_extension.py @@ -173,7 +173,7 @@ def fill_node(self, node, env, tag, p, language_code, targetnode, sharepost): from sphinx.util import logging logger = logging.getLogger("blogpost") logger.warning( - f"[blogpost] unable to parse '{title}' - {e}") + "[blogpost] unable to parse %r - %s", title, e) raise e # final diff --git a/src/pyquickhelper/sphinxext/sphinx_cmdref_extension.py b/src/pyquickhelper/sphinxext/sphinx_cmdref_extension.py index fc66b16f..ce790dcb 100644 --- a/src/pyquickhelper/sphinxext/sphinx_cmdref_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_cmdref_extension.py @@ -106,11 +106,11 @@ def run(self): out = "--SCRIPT--{}\n--OUT--\n{}\n--ERR--\n{}\n--PATH--\n{}".format( name, out, err, path) logger = logging.getLogger("CmdRef") - logger.warning(f"[CmdRef] cmd failed '{name}'") + logger.warning("[CmdRef] cmd failed %r", name) elif out in (None, ''): out = f"--SCRIPT--{name}\n--EMPTY OUTPUT--\n--PATH--\n{path}" logger = logging.getLogger("CmdRef") - logger.warning(f"[CmdRef] cmd empty '{name}'") + logger.warning("[CmdRef] cmd empty %r", name) content = "python " + name cont += nodes.paragraph('<<<', '<<<') pout = nodes.literal_block(content, content) @@ -122,20 +122,22 @@ def run(self): if ":" not in name: logger = logging.getLogger("CmdRef") logger.warning( - f"[CmdRef] cmd '{name}' should contain ':': : as specified in the setup.") + "[CmdRef] cmd %r should contain ':': " + ": as specified in the setup.", + name) if lineno is not None: - logger.warning( - f' File "{source}", line {lineno}') + logger.warning(' File "%s", line %r', source, lineno) # example: pyquickhelper.cli.pyq_sync_cli:pyq_sync spl = name.strip("\r\n\t ").split(":") if len(spl) != 2: # pragma: no cover logger = logging.getLogger("CmdRef") logger.warning( - f"[CmdRef] cmd(*= '{name}' should contain ':': : as specified in the setup.") + "[CmdRef] cmd(*= %r should contain ':': " + ": as specified in the setup.", + name) if lineno is not None: - logger.warning( - f' File "{source}", line {lineno}') + logger.warning(' File "%s", line %r', source, lineno) # rename the command line if "=" in spl[0]: @@ -154,11 +156,9 @@ def run(self): obj, name = import_object(fullname, kind="function") except ImportError: # pragma: no cover logger = logging.getLogger("CmdRef") - logger.warning( - f"[CmdRef] unable to import '{fullname}'") + logger.warning("[CmdRef] unable to import %r", fullname) if lineno is not None: - logger.warning( - f' File "{source}", line {lineno}') + logger.warning(' File "%s", line %r', source, lineno) obj = None if obj is not None: @@ -177,13 +177,13 @@ def local_print(*li): if len(content) == 0: # pragma: no cover logger = logging.getLogger("CmdRef") logger.warning( - f"[CmdRef] empty output for '{fullname}'") + "[CmdRef] empty output for %r", fullname) if lineno is not None: logger.warning( - f' File "{source}", line {lineno}') + ' File "%s", line %r', source, lineno) out = f"--SCRIPT--{name}\n--EMPTY OUTPUT--\n--PATH--\n{path}" logger = logging.getLogger("CmdRef") - logger.warning(f"[CmdRef] cmd empty '{name}'") + logger.warning("[CmdRef] cmd empty %r", name) else: start = 'usage: ' + name_fct if content.startswith(start): diff --git a/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py b/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py index e3c1a4e5..2ede1206 100644 --- a/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_docassert_extension.py @@ -15,7 +15,8 @@ def check_typed_make_field(self, types, domain, items, env=None, parameters=None function_name=None, docname=None, kind=None): """ Overwrites function - `make_field `_. + #L197>`_. + `make_field 1: - logger.warning("[docassert] '{1}' of '{0}' is duplicated (in '{2}').".format( - function_name, fieldarg, docname)) + logger.warning("[docassert] %r of %r is duplicated (in %r).", + fieldarg, function_name, docname) if isinstance(items, list): for fieldarg, content in items: @@ -74,8 +75,8 @@ def check_item(fieldarg, content, logger): # Behavior should be improved. pass else: - logger.warning("[docassert] '{0}' has undocumented parameters '{1}' (in '{2}').".format( - function_name, ", ".join(nodoc), docname)) + logger.warning("[docassert] %r has undocumented parameters %r (in %r).", + function_name, ", ".join(nodoc), docname) else: # Documentation related to the return. pass @@ -208,8 +209,8 @@ def override_transform(self, other_self, node): else: reasons = "unknown" logger = logging.getLogger("docassert") - logger.warning( - f"[docassert] unable to import object '{docs}', reasons:\n{reasons}") + logger.warning("[docassert] unable to import object %r, reasons:\n%s", + docs, reasons) myfunc = None if myfunc is None: @@ -222,7 +223,7 @@ def override_transform(self, other_self, node): except (TypeError, ValueError): logger = logging.getLogger("docassert") logger.warning( - f"[docassert] unable to get signature of '{docs}'.") + "[docassert] unable to get signature of %r.", docs) signature = None parameters = None @@ -253,7 +254,7 @@ def override_transform(self, other_self, node): env = other_self.directive.state.document.settings.env except AttributeError as e: logger = logging.getLogger("docassert") - logger.warning(f"[docassert] {e}") + logger.warning("[docassert] %s", e) env = None docname = fieldbody.parent.source.split(':docstring')[0] @@ -262,7 +263,7 @@ def override_transform(self, other_self, node): if isinstance(entry, nodes.field): logger = logging.getLogger("docassert") logger.warning( - f"[docassert] unable to check [nodes.field] {entry}") + "[docassert] unable to check [nodes.field] %s", entry) else: fieldtype, content = entry fieldtypes = types.get(fieldtype.name, {}) diff --git a/src/pyquickhelper/sphinxext/sphinx_doctree_builder.py b/src/pyquickhelper/sphinxext/sphinx_doctree_builder.py index 660e5d76..1fd6d0e1 100644 --- a/src/pyquickhelper/sphinxext/sphinx_doctree_builder.py +++ b/src/pyquickhelper/sphinxext/sphinx_doctree_builder.py @@ -48,8 +48,7 @@ def __init__(self, document, builder): def log_unknown(self, type, node): logger = logging.getLogger("DocTreeBuilder") - logger.warning( - f"[doctree] {type}({node}) unsupported formatting") + logger.warning("[doctree] %s(%s) unsupported formatting", type, node) def wrap(self, text, width=STDINDENT): self.wrapper.width = width diff --git a/src/pyquickhelper/sphinxext/sphinx_downloadlink_extension.py b/src/pyquickhelper/sphinxext/sphinx_downloadlink_extension.py index 05ebe311..3b4fd81d 100644 --- a/src/pyquickhelper/sphinxext/sphinx_downloadlink_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_downloadlink_extension.py @@ -110,7 +110,7 @@ def process_downloadlink_role(role, rawtext, text, lineno, inliner, options=None node['anchor'] = anchor logger = logging.getLogger("downloadlink") - logger.info(f"[downloadlink] node '{str(node)}'") + logger.info("[downloadlink] node %s", node) return [node], [] @@ -123,7 +123,7 @@ def visit_downloadlink_node_html(self, node): raise nodes.SkipNode logger = logging.getLogger("downloadlink") - logger.info(f"[downloadlink] HTML '{str(node)}'") + logger.info("[downloadlink] HTML %s", node) atts = {'class': 'reference'} @@ -187,7 +187,7 @@ def visit_downloadlink_node_rst(self, node): Converts node *downloadlink* into :epkg:`rst`. """ logger = logging.getLogger("downloadlink") - logger.info(f"[downloadlink] RST '{str(node)}'") + logger.info("[downloadlink] RST %s", node) if node['format']: self.add_text(":downloadlink:`{0} <{1}::{2}>`".format( @@ -255,7 +255,7 @@ def process_doc(self, app, doctree): app.env.docname, rel_filename) if nb > 0: logger = logging.getLogger("downloadlink") - logger.info(f"[downloadlink] processed {nb}") + logger.info("[downloadlink] processed %r", nb) def copy_download_files(app, exc): @@ -291,13 +291,12 @@ def to_relpath(f): name = os.path.join(builder.srcdir, src) try: copyfile(name, dest) - logger.info( - f"[downloadlink] copy '{name}' to '{dest}'") + logger.info("[downloadlink] copy %r to %r", name, dest) except FileNotFoundError: mes = "Builder format '{0}'-'{3}', unable to copy file '{1}' into {2}'".format( builder.format, name, dest, builder.__class__.__name__) logger.warning( - f"[downloadlink] cannot copy '{name}' to '{dest}'") + "[downloadlink] cannot copy %r to %r", name, dest) def setup(app): diff --git a/src/pyquickhelper/sphinxext/sphinx_gdot_extension.py b/src/pyquickhelper/sphinxext/sphinx_gdot_extension.py index 35021f80..6ffce13b 100644 --- a/src/pyquickhelper/sphinxext/sphinx_gdot_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_gdot_extension.py @@ -134,7 +134,7 @@ def run(self): url = GDotDirective._default_url logger = logging.getLogger("gdot") logger.warning("[gdot] jyquickhelper not installed, falling back to " - "'{}'".format(url)) + "%r", url) info = get_env_state_info(self) docname = info['docname'] @@ -142,7 +142,8 @@ def run(self): if docname is None or 'HERE' not in info: url = GDotDirective._default_url logger = logging.getLogger("gdot") - logger.warning("[gdot] docname is none, falling back to %r.", url) + logger.warning( + "[gdot] docname is none, falling back to %r.", url) else: spl = docname.split("/") sp = ['..'] * (len(spl) - 1) + ['_static', 'viz.js'] @@ -291,27 +292,26 @@ def copy_js_files(app): dest = os.path.join(destf, 'viz.js') try: shutil.copy(path, dest) - logger.info( - f"[gdot] copy '{path}' to '{dest}'.") + logger.info("[gdot] copy %r to %r.", path, dest) except PermissionError as e: # pragma: no cover - logger.warning("[gdot] permission error: {}, " - "unable to use local viz.js.".format(e)) + logger.warning("[gdot] permission error: %e, " + "unable to use local viz.js.", e) if not os.path.exists(dest): - logger.warning("[gdot] unable to copy='{}', " - "unable to use local viz.js.".format(dest)) + logger.warning("[gdot] unable to copy=%r, " + "unable to use local viz.js.", dest) else: - logger.warning("[gdot] destination folder='{}' does not exists, " - "unable to use local viz.js.".format(destf)) + logger.warning("[gdot] destination folder=%r does not exists, " + "unable to use local viz.js.", destf) else: - logger.warning("[gdot] unable to locate html_static_path='{}', " - "unable to use local viz.js.".format(app.config.html_static_path)) + logger.warning("[gdot] unable to locate html_static_path=%r, " + "unable to use local viz.js.", app.config.html_static_path) else: - logger.warning("[gdot] jyquickhelper needs to be update, unable to find '{}'.".format( - path)) + logger.warning( + "[gdot] jyquickhelper needs to be update, unable to find %r.", path) else: logger.warning("[gdot] jyquickhelper not installed, falling back to " - "'{}'".format(GDotDirective._default_url)) + "%r", GDotDirective._default_url) def setup(app): diff --git a/src/pyquickhelper/sphinxext/sphinx_gitlog_extension.py b/src/pyquickhelper/sphinxext/sphinx_gitlog_extension.py index 4671f2d1..bdfec98d 100644 --- a/src/pyquickhelper/sphinxext/sphinx_gitlog_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_gitlog_extension.py @@ -120,8 +120,8 @@ def depart_gitlog_node(self, node): depart *gitlog_node* for format other than html """ logger = getLogger("gitlog") - logger.warning("[depart_gitlog_node] output only available for HTML not for '{0}'".format( - type(self))) + logger.warning( + "[depart_gitlog_node] output only available for HTML not for %r", type(self)) def setup(app): diff --git a/src/pyquickhelper/sphinxext/sphinx_image_extension.py b/src/pyquickhelper/sphinxext/sphinx_image_extension.py index 590b821d..1b10b634 100644 --- a/src/pyquickhelper/sphinxext/sphinx_image_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_image_extension.py @@ -79,8 +79,8 @@ def run(self): if '://' in filename: logger = getLogger("simpleimage") # pragma: no cover logger.warning( # pragma: no cover - "[simpleimage] url detected '{0}' in docname '{1}' - line {2}" - ".".format(filename, docname, self.lineno)) + "[simpleimage] url detected %r in docname %r - line %r" + ".", filename, docname, self.lineno) is_url = True else: is_url = False @@ -89,15 +89,16 @@ def run(self): if convert: logger = getLogger("simpleimage") # pragma: no cover logger.warning( # pragma: no cover - "[simpleimage] convert into '{3}' not implemented for '{0}' in " - "docname '{1}' - line {2}.".format( - filename, docname, self.lineno, convert)) + "[simpleimage] convert into %r not implemented for %r in " + "docname %r - line %r.", + convert, filename, docname, self.lineno) download = self.options.get('download', None) if convert: logger = getLogger("simpleimage") logger.warning( # pragma: no cover - f"[simpleimage] download not implemented for '{filename}' in docname '{docname}' - line {self.lineno}.") + "[simpleimage] download not implemented for %r in docname %r - line %r.", + filename, docname, self.lineno) if not is_url: env.images_mapping.add_file('', filename) @@ -123,8 +124,8 @@ def run(self): if abspath is None: logger = getLogger("simpleimage") # pragma: no cover logger.warning( # pragma: no cover - "[simpleimage] Unable to find '{0}' in docname '{1}' - line {2} - srcdir='{3}'.".format( - filename, docname, self.lineno, srcdir)) + "[simpleimage] Unable to find %r in docname %r - line %r - srcdir=%r.", + filename, docname, self.lineno, srcdir) else: abspath = None relpath = None diff --git a/src/pyquickhelper/sphinxext/sphinx_latex_builder.py b/src/pyquickhelper/sphinxext/sphinx_latex_builder.py index e8a5f547..67510397 100644 --- a/src/pyquickhelper/sphinxext/sphinx_latex_builder.py +++ b/src/pyquickhelper/sphinxext/sphinx_latex_builder.py @@ -44,8 +44,8 @@ def __init__(self, document, builder, theme=None): LaTeXTranslator.__init__(self, document, builder, theme=theme) except TypeError: # Sphinx<5 - LaTeXTranslator.__init__( - self, document, builder) # pylint: disable=E1120 + LaTeXTranslator.__init__( # pylint: disable=E1120 + self, document, builder) newlines = builder.config.text_newlines if newlines == 'windows': @@ -182,8 +182,8 @@ def depart_imgsgnode(self, node): def unknown_visit(self, node): logger = logging.getLogger("MdBuilder") - logger.warning("[latex] unknown visit node: '{0}' - '{1}'".format( - node.__class__.__name__, node)) + logger.warning("[latex] unknown visit node: %r - %r", + node.__class__.__name__, node) class EnhancedLaTeXWriter(LaTeXWriter): @@ -289,8 +289,7 @@ def write(self, *ignored): doctree.settings.docname = docname doctree.settings.docclass = docclass docwriter.write(doctree, destination) - self.logger.info( - f"[EnhancedLaTeXBuilder] done in '{targetname}'") + self.logger.info("[EnhancedLaTeXBuilder] done in %r", targetname) def setup(app): diff --git a/src/pyquickhelper/sphinxext/sphinx_md_builder.py b/src/pyquickhelper/sphinxext/sphinx_md_builder.py index 8e7cc46c..7ea26083 100644 --- a/src/pyquickhelper/sphinxext/sphinx_md_builder.py +++ b/src/pyquickhelper/sphinxext/sphinx_md_builder.py @@ -82,7 +82,7 @@ def __init__(self, document, builder): def log_unknown(self, type, node): logger = logging.getLogger("MdBuilder") - logger.warning(f"{type}({node}) unsupported formatting") + logger.warning("%s(%r) unsupported formatting", type, node) def wrap(self, text, width=STDINDENT): self.wrapper.width = width @@ -979,8 +979,8 @@ def depart_imgsgnode(self, node): def unknown_visit(self, node): logger = logging.getLogger("MdBuilder") - logger.warning("[md] unknown visit node: '{0}' - '{1}'".format( - node.__class__.__name__, node)) + logger.warning("[md] unknown visit node: %r - %r", + node.__class__.__name__, node) class MdBuilder(Builder): diff --git a/src/pyquickhelper/sphinxext/sphinx_postcontents_extension.py b/src/pyquickhelper/sphinxext/sphinx_postcontents_extension.py index bd4208a5..a6480d9b 100644 --- a/src/pyquickhelper/sphinxext/sphinx_postcontents_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_postcontents_extension.py @@ -136,7 +136,7 @@ def _modify_postcontents(node, event): if nid in memo: raise KeyError( # pragma: no cover f"node was already added '{nid}'") - logger.info(f"[{event}] {' ' * level}section id '{nid}'") + logger.info("[%r] %ssection id %r", event, ' ' * level, nid) level += 1 memo[nid] = subnode bli = nodes.bullet_list() @@ -144,7 +144,8 @@ def _modify_postcontents(node, event): roots.append(bli) sections.append(subnode) elif isinstance(subnode, nodes.title): - logger.info(f"[{event}] {' ' * level}title '{subnode.astext()}'") + logger.info("[%r] %stitle %r", event, + ' ' * level, subnode.astext()) par = nodes.paragraph() ref = nodes.reference(refid=sections[-1]["ids"][0], reftitle=subnode.astext(), @@ -159,8 +160,8 @@ def _modify_postcontents(node, event): ids = None if len(parent["ids"]) == 0 else parent["ids"][0] if ids in memo: level -= 1 - logger.info("[{}] {}end of section '{}'".format( - event, " " * level, parent["ids"])) + logger.info("[%r] %send of section %r", + event, " " * level, parent["ids"]) sections.pop() roots.pop() @@ -198,8 +199,8 @@ def transform_postcontents(app, doctree, fromdocname): for node in post_list: if node["pcprocessed"] != 1: - logger.warning("[postcontents] no first loop was ever processed: 'pcprocessed'={0} , File '{1}', line {2}".format( - node["pcprocessed"], node["pcdocname"], node["pclineno"])) + logger.warning("[postcontents] no first loop was ever processed: 'pcprocessed'=%s , File %r, line %r", + node["pcprocessed"], node["pcdocname"], node["pclineno"]) continue if len(node.children) > 0: # already processed diff --git a/src/pyquickhelper/sphinxext/sphinx_quote_extension.py b/src/pyquickhelper/sphinxext/sphinx_quote_extension.py index bd8e6cbe..16d0061f 100644 --- a/src/pyquickhelper/sphinxext/sphinx_quote_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_quote_extension.py @@ -231,7 +231,7 @@ def __(text): from sphinx.util import logging logger = logging.getLogger("blogpost") logger.warning( - f"[blogpost] unable to parse '{author}' - '{book or manga}' - {e}") + "[blogpost] unable to parse %r - %r - %r", author, book or manga, e) raise e node['tag'] = tag diff --git a/src/pyquickhelper/sphinxext/sphinx_rst_builder.py b/src/pyquickhelper/sphinxext/sphinx_rst_builder.py index bab958c8..fd3b079e 100644 --- a/src/pyquickhelper/sphinxext/sphinx_rst_builder.py +++ b/src/pyquickhelper/sphinxext/sphinx_rst_builder.py @@ -92,7 +92,7 @@ def __init__(self, document, builder): def log_unknown(self, type, node): logger = logging.getLogger("RstBuilder") - logger.warning(f"[rst] {type}({node}) unsupported formatting") + logger.warning("[rst] %s(%s) unsupported formatting", type, node) def wrap(self, text, width=STDINDENT): self.wrapper.width = width @@ -1101,8 +1101,8 @@ def unknown_visit(self, node): # due to jupyter_sphinx return logger = logging.getLogger("RstBuilder") - logger.warning("[rst] unknown visit node: '{0}' - '{1}'".format( - node.__class__.__name__, node)) + logger.warning("[rst] unknown visit node: '%r - %r", + node.__class__.__name__, node) def unknown_departure(self, node): classname = node.__class__.__name__ @@ -1114,8 +1114,8 @@ def unknown_departure(self, node): # due to jupyter_sphinx return logger = logging.getLogger("RstBuilder") - logger.warning("[rst] unknown depart node: '{0}' - '{1}'".format( - node.__class__.__name__, node)) + logger.warning("[rst] unknown depart node: %r - %r", + node.__class__.__name__, node) class _BodyPlaceholder: @@ -1129,10 +1129,10 @@ def append(self, element): if len(el) > 50: el = el[:50] + "..." self.logger.warning( - f"[rst] body.append was called with string {el!r}.") + "[rst] body.append was called with string %r", el) else: self.logger.warning( - f"[rst] body.append was called with type {type(element)!r}.") + "[rst] body.append was called with type %", type(element)) self.lines.append(element) diff --git a/src/pyquickhelper/sphinxext/sphinx_tocdelay_extension.py b/src/pyquickhelper/sphinxext/sphinx_tocdelay_extension.py index 8c54e3c5..fe7679c7 100644 --- a/src/pyquickhelper/sphinxext/sphinx_tocdelay_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_tocdelay_extension.py @@ -192,12 +192,10 @@ def transform_tocdelay(app, doctree, fromdocname): for node in post_list: if node["tdprocessed"] == 0: - logger.warning("[tocdelay] no first loop was ever processed: 'tdprocessed'={0} , File '{1}', line {2}".format( - node["tdprocessed"], node["tddocname"], node["tdlineno"])) + logger.warning("[tocdelay] no first loop was ever processed: 'tdprocessed'=%s , File %r, line %s", + node["tdprocessed"], node["tddocname"], node["tdlineno"]) continue if node["tdprocessed"] > 1: - # logger.warning("[tocdelay] already processed: 'tdprocessed'={0} , File '{1}', line {2}".format( - # node["tdprocessed"], node["tddocname"], node["tdlineno"])) continue docs = node["tddocuments"] @@ -214,8 +212,8 @@ def transform_tocdelay(app, doctree, fromdocname): dirdocname = os.path.dirname(nodedocname) clname, toctitle, tocid, tocdoc = node["tdrule"] - logger.info("[tocdelay] transform_tocdelay '{0}' from '{1}'".format( - nodedocname, fromdocname)) + logger.info("[tocdelay] transform_tocdelay %r from %r", + nodedocname, fromdocname) node["tdprocessed"] += 1 for name, subname, extitle in docs: @@ -228,8 +226,8 @@ def transform_tocdelay(app, doctree, fromdocname): subname = f"{dirdocname}/{name}" doc_doctree = env.get_doctree(subname) if doc_doctree is None: - logger.info("[tocdelay] ERROR (4): No doctree found for '{0}' from '{1}'".format( - subname, nodedocname)) + logger.info("[tocdelay] ERROR (4): No doctree found for %r from %r", + subname, nodedocname) # It finds a node sharing the same name. diginto = [] @@ -238,7 +236,7 @@ def transform_tocdelay(app, doctree, fromdocname): diginto.append(n) if len(diginto) == 0: logger.info( - f"[tocdelay] ERROR (3): No node '{clname}' found for '{subname}'") + "[tocdelay] ERROR (3): No node %r found for %r", clname, subname) continue # It takes the first one available. @@ -251,19 +249,19 @@ def transform_tocdelay(app, doctree, fromdocname): found = list( sorted(set(map(lambda x: x.__class__.__name__, diginto)))) ext = diginto[0].attributes if len(diginto) > 0 else "" - logger.warning("[tocdelay] ERROR (2): Unable to find node '{0}' in {1} [{2}]".format( - subname, ", ".join(map(str, found)), ext)) + logger.warning("[tocdelay] ERROR (2): Unable to find node %r in %s [%r]", + subname, ", ".join(map(str, found)), ext) continue rootnode = subnode if tocid not in rootnode.attributes: logger.warning( - f"[tocdelay] ERROR (7): Unable to find 'tocid' in '{rootnode}'") + "[tocdelay] ERROR (7): Unable to find 'tocid' in %r", rootnode) continue if tocdoc not in rootnode.attributes: logger.warning( - f"[tocdelay] ERROR (8): Unable to find 'tocdoc' in '{rootnode}'") + "[tocdelay] ERROR (8): Unable to find 'tocdoc' in %r", rootnode) continue refid = rootnode[tocid] refdoc = rootnode[tocdoc] @@ -271,18 +269,18 @@ def transform_tocdelay(app, doctree, fromdocname): subnode = list(rootnode.traverse(nodes.title)) if not subnode: logger.warning( - f"[tocdelay] ERROR (5): Unable to find a title in '{subname}'") + "[tocdelay] ERROR (5): Unable to find a title in %r", subname) continue subnode = subnode[0] try: refuri = app.builder.get_relative_uri(nodedocname, refdoc) - logger.info( - f"[tocdelay] add link for '{refid}' - '{refdoc}' from '{nodedocname}'") + logger.info("[tocdelay] add link for %r - %r from %r", + refid, refdoc, nodedocname) except NoUri: docn = list(sorted(app.builder.docnames)) - logger.info("[tocdelay] ERROR (9): unable to find a link for '{0}' - '{1}' from '{2}` -- {3} - {4}".format( - refid, refdoc, nodedocname, type(app.builder), docn)) + logger.info("[tocdelay] ERROR (9): unable to find a link for %r - %r from %r -- %s - %s", + refid, refdoc, nodedocname, type(app.builder), docn) refuri = '' use_title = extitle or subnode.astext() @@ -300,11 +298,10 @@ def transform_tocdelay(app, doctree, fromdocname): def _print_loop_on_children(node, indent="", msg="-"): logger = logging.getLogger("tocdelay") if hasattr(node, "children"): - logger.info( - f"[tocdelay] '{type(node)}' - {msg} - {node}") + logger.info("[tocdelay] %r - %s - %s", type(node), msg, node) for child in node.children: - logger.info("[tocdelay] {0}{1} - '{2}'".format(indent, type(child), - child.astext().replace("\n", " #EOL# "))) + logger.info("[tocdelay] %s%s - %r", + indent, type(child), child.astext().replace("\n", " #EOL# ")) _print_loop_on_children(child, indent + " ") diff --git a/src/pyquickhelper/sphinxext/sphinx_toctree_extension.py b/src/pyquickhelper/sphinxext/sphinx_toctree_extension.py index 3ee7a87a..69044b69 100644 --- a/src/pyquickhelper/sphinxext/sphinx_toctree_extension.py +++ b/src/pyquickhelper/sphinxext/sphinx_toctree_extension.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- """ @file -@brief Overwrites `toctree `_ +#directive-toctree>`_ +@brief Overwrites `toctree