diff --git a/pyproject.toml b/pyproject.toml index 21d4278..77a924e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ namespaces = true # ----------------------------------------- Project Metadata ------------------------------------- # [project] -version = "0.0.0.dev11" +version = "0.0.0.dev12" name = "MDit" requires-python = ">=3.10" dependencies = [ @@ -42,10 +42,10 @@ dependencies = [ "pydantic >= 2.9", "referencing >= 0.35.1", "PkgData == 0.0.0.dev4", - "PySerials == 0.0.0.dev14", + "PySerials == 0.0.0.dev15", "PyBadger == 0.0.0.dev11", "PyColorIT == 0.0.0.dev7", "ProtocolMan == 0.0.0.dev2", "HTMP == 0.0.0.dev5", - "JSONSchemata == 0.0.0.dev10", + "JSONSchemata == 0.0.0.dev11", ] diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d06d8c3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,27 @@ +sphinx < 8 +myst-nb > 1, < 2 +pydata-sphinx-theme +sphinx-design >= 0.6 +sphinx-togglebutton +sphinx-copybutton >= 0.5 +sphinxcontrib-mermaid >= 0.9 +sphinx-tippy == 0.4.3 +markdown-it-py +mdit-py-plugins +linkify-it-py +readme-renderer[md] +cmarkgfm >= 0.8.0 +zundler +IPython +jupyterlab_myst +pygments +rich >= 13.8 +pydantic >= 2.9 +referencing >= 0.35.1 +PkgData == 0.0.0.dev4 +PySerials == 0.0.0.dev15 +PyBadger == 0.0.0.dev11 +PyColorIT == 0.0.0.dev7 +ProtocolMan == 0.0.0.dev2 +HTMP == 0.0.0.dev5 +JSONSchemata == 0.0.0.dev11 \ No newline at end of file diff --git a/src/mdit/render.py b/src/mdit/render.py index 1f56ddc..e74aec0 100644 --- a/src/mdit/render.py +++ b/src/mdit/render.py @@ -4,6 +4,9 @@ import tempfile as _tempfile from typing import TYPE_CHECKING as _TYPE_CHECKING from pathlib import Path as _Path +import logging as _logging +import io as _io +import warnings as _warnings from functools import partial as _partial import cmarkgfm as _gfm_pypi @@ -54,23 +57,26 @@ def sphinx( with open(filepath, "w") as f: f.write(text) out_dir = temp_dir / "build" - _Sphinx( - srcdir=src_dir, - confdir=None, - outdir=out_dir, - doctreedir=temp_dir / "doctrees", - buildername="zundler", - confoverrides=config, - status=status, - warning=warning, - freshenv=fresh_env, - warningiserror=warnings_are_errors, - tags=tags, - verbosity=verbosity, - parallel=parallel, - keep_going=keep_going, - pdb=pdb, - ).build(force_all=True) + _configure_zundler_logging() + with _warnings.catch_warnings(): + _warnings.filterwarnings("ignore", category=DeprecationWarning) + _Sphinx( + srcdir=src_dir, + confdir=None, + outdir=out_dir, + doctreedir=temp_dir / "doctrees", + buildername="zundler", + confoverrides=config, + status=status, + warning=warning, + freshenv=fresh_env, + warningiserror=warnings_are_errors, + tags=tags, + verbosity=verbosity, + parallel=parallel, + keep_going=keep_going, + pdb=pdb, + ).build(force_all=True) return (out_dir / "index.html").read_text() @@ -432,4 +438,24 @@ def readme_renderer( ): if isinstance(source, str): return _readme_renderer_md.render(source) - return {key: _readme_renderer_md.render(value) for key, value in source.items()} \ No newline at end of file + return {key: _readme_renderer_md.render(value) for key, value in source.items()} + + +def _configure_zundler_logging(): + # See https://github.com/AdrianVollmer/Zundler/pull/9 + + log_stream = _io.StringIO() + # Create a StreamHandler for the in-memory stream + stream_handler = _logging.StreamHandler(log_stream) + stream_handler.setLevel(_logging.DEBUG) + # Set a formatter for better readability + formatter = _logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + stream_handler.setFormatter(formatter) + + dependency_logger = _logging.getLogger('zundler.embed') + dependency_logger.handlers = [] # Remove existing handlers + dependency_logger.addHandler(stream_handler) + dependency_logger.setLevel(_logging.DEBUG) + # **Prevent logs from propagating to ancestor loggers** + dependency_logger.propagate = False + return \ No newline at end of file