| Type | Description | PR | Issues | Author |
| Feature |
Add a pre-commit hook for pydoc-markdown. | 298 | | @RomainTT |
| Improvement |
Bump minimum version of `databind.core` and `databind.json` to `^4.4.2` to ensure Python 3.12 support | 304 | | @NiklasRosenstein |
| Breaking change |
Drop Python 3.7 compatibility | 304 | | @NiklasRosenstein |
| Fix |
Fix `escape_except_blockquotes` option for greater than 9 blockquotes in a docstring | 317 | | @jackgerrits |
| Docs |
Fix links to docspec | 337 | | @rafalkrupinski |
| Improvement |
Replace Black and isort development checks with Ruff and restore mypy compatibility across the supported Python matrix. | 354 | | rosensteinniklas@gmail.com |
| Fix |
Use consolidated Databind, exclude the broken 4.5.2 proxy packages, and require TypeAPI 2.3.0 to keep configuration loading compatible across supported Python versions. | 355 | | rosensteinniklas@gmail.com |
| Breaking change |
Raise the minimum supported Python version to 3.10. | 355 | | rosensteinniklas@gmail.com |
| Feature |
Allow setting a fallback page title for standalone Markdown rendering. | 356 | | rosensteinniklas@gmail.com |
| Improvement |
Make automatically discovered module ordering deterministic. | 356 | | rosensteinniklas@gmail.com |
| Feature |
Allow renderer pages to exclude API objects with glob patterns. | 358 | | rosensteinniklas@gmail.com |
| Fix |
Watch configured page source files when serving MkDocs and Hugo output. | 359 | | rosensteinniklas@gmail.com |
| Type | Description | PR | Issues | Author |
| Docs |
docusaurus: Update `plugin-content-docs` config for docusarus@beta to not exclude files and folders with underscores. | 235 | 189 | @chrisstetter |
| Hygiene |
remove `MarkdownRenderer.classdef_render_init_signature_if_needed` option because it never worked to begin with | 245 | | @NiklasRosenstein |
| Breaking change |
remove `MarkdownRenderer.render_to_stream()` from public api | 245 | | @NiklasRosenstein |
| Feature |
add `pydoc_markdown.interfaces.SingleObjectRenderer` and use it in Novella `@pydoc` tag processor | 245 | | @NiklasRosenstein |
| Feature |
add `ApiSuite` class and `ResolverV2` which is used by the new `@pydoc` tag preprocessor when using Novella | 245 | | @NiklasRosenstein |
| Feature |
`MarkdownReferenceResolver` now implements the new `ResolverV2` interface and can resolve references globally | 245 | | @NiklasRosenstein |
| Feature |
`CrossRefProcessor` now accepts a `resolver_v2` argument to use instead of the `resolver` object passed through the `Processor` API | 245 | | @NiklasRosenstein |
| Feature |
bring back formatting function, class and variable signatures with YAPF. (Tagging @lgeiger as the author because he was the original author of the feature in a previous version of Pydoc-Markdown, see https://github.com/NiklasRosenstein/pydoc-markdown/pull/78) | 245 | 244 | @lgeiger |
| Fix |
fix forwarding of `PluginBase.init()` calls to sub-plugins in unittests and `DocusaurusRenderer` | 245 | | @NiklasRosenstein |
| Improvement |
do not render link to source for modules in `MarkdownRenderer` | 245 | | @NiklasRosenstein |
| Improvement |
Git source linkers now fall back to the SHA if the current branch is invalid (e.g. in a detached HEAD state) and logs a warning | | | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Fix |
Sphinx processor now triggers when `:arg` or other Sphinx keywords are encountered in a docstring | | 221 | @NiklasRosenstein |
| Tests |
Refactor sphinx processor tests and add new test for param keyword only. Fixes minor issue with argument only docstring. @gmarks2149 | | | @NiklasRosenstein |
| Fix |
sphinx_processor: Fix multi-line parameter sphinx docstring rendering issue by switching to docstring-parser to parse the docstrings. @gmarks2149 | | 195 | @NiklasRosenstein |
| Fix |
Fix configuration generated with `--bootstrap mkdocs` | | 230 | @gethvi |
| Feature |
HugoRenderer: add `serverURL` and `serverPort` options to `$.renderer.config` block to allow overwriting the URL where the local Hugo server serves from | | 202, 231 | @melMass |
| Feature |
add `GitlabSourceLinker` class (entrypoint name: `gitlab`). @Heiss | | | @NiklasRosenstein |
| Feature |
MarkdownRenderer: add `render_typehint_in_data_header` option to `MarkdownRenderer` | | 229 | @NiklasRosenstein |
| Fix |
MarkdownRenderer: no longer escape markdown in headers when `html_headers` is enabled (used to result in additional backslashes when interpreted by most Markdown to HTML renderers) | | | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Fix |
HugoRenderer: Enable Hugo `markup.goldmark.renderer.unsafe` option by default | | 198 | @NiklasRosenstein |
| Fix |
MarkdownRenderer: Markdown renderer produces header anchors with `name` attribute instead of `id` | | 200 | @NiklasRosenstein |
| Feature |
MarkdownRenderer: @melMass added the `MarkdownRenderer.add_module_prefix` option | | 199 | @NiklasRosenstein |
| Docs |
switch Pydoc-Markdown to generated its docs with MkDocs | | | @NiklasRosenstein |
| Docs |
add Jinja2 renderer documentation in generated docs | | | @NiklasRosenstein |
| Improvement |
update template for `--bootstrap readthedocs` and related documentation | | | @NiklasRosenstein |
| Fix |
fix `mkdocs` bootstrap configuration, update mkdocs and hugo bootstrap config to include example on how to select parts of the API docs | | | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Feature |
plugin types can now be resolved by their FQN (i.e. the absolute import name, such as `pydoc_markdown.contrib.loaders.python.PythonLoader`) in addition to their registered entrypoint name. | | 131 | @NiklasRosenstein |
| Feature |
add new `SourceLinker` interface | | | @NiklasRosenstein |
| Feature |
add `GitHubSourceLinker` class (entrypoint name: `github`) | | | @NiklasRosenstein |
| Feature |
markdown: add `MarkdownRenderer.source_linker`, `.source_position` and `.source_format` options | | 122 | @NiklasRosenstein |
| Improvement |
cli: `-v,--verbose` and `-q,--quiet` flags are now countable (e.g. `-vv` will raise the logging verbosity to `DEBUG`) | | | @NiklasRosenstein |
| Improvement |
internal: Ensure consistency independent of the CWD from which Pydoc-Markdown is invoked as long as the same configuration file is used by introduce the `Context` object and the `init()` method for plugins. The `Context.directory` is set to the parent directory of the `pydoc-markdown.yml` configuration file. Plugins use that directory to interpret relative paths instead of the current working directory. | | | @NiklasRosenstein |
| Feature |
implement YTT-like YAML preprocessing when the Pydoc-Markdown configuration is loaded | | | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Feature |
cli: add `--dump` and `--with-processors/--without-processors` options | | | @NiklasRosenstein |
| Docs |
add docstrings to classes defined in `pydoc_markdown.contrib.processors` | | | @NiklasRosenstein |
| Improvement |
use `docspec` module instead of `pydoc_markdown.reflection` to represent API objects | | | @NiklasRosenstein |
| Improvement |
python: use `docspec-python` to load Python API objects | | | @NiklasRosenstein |
| Improvement |
crossref: warnings produced about references that cannot be resolved are now summarized in a single log-line | | | @NiklasRosenstein |
| Improvement |
With the removal of `pydoc_markdown.reflection`, the `ModuleGraph` class has also been removed and replaced by List[docspec.Module]` | | | @NiklasRosenstein |
| Improvement |
filter: Rename FilterProcessor.include_root_objects to .do_not_filter_modules | | | @NiklasRosenstein |
| Improvement |
change type signatures and some method names of interfaces in `pydoc_markdown.interfaces` | | | @NiklasRosenstein |
| Improvement |
utils: The `Page.filtered_modules()` method now warns if an element in `Page.contents` did not match an API object | | | @NiklasRosenstein |
| Fix |
markdown: the Markdown header level for methods is now correctly read from the "Method" key in `MarkdownRenderer.header_level_by_type` | | 121 | @NiklasRosenstein |
| Improvement |
cli: remove `--bootstrap-mkdocs` in favor of `--bootstrap` option which now accepts an argument | | | @NiklasRosenstein |
| Improvement |
cli: the `--bootstrap` option now requires an argument, which must be either "base", "mkdocs" or "hugo" (new) | | | @NiklasRosenstein |
| Feature |
mkdocs: The `MkdocsRenderer.clean_render` option is enabled again by default, but instead of removing the whole `content_directory`, it will instead only remove files that it has previously generated (it will place a `.generated-files.txt` file in the `output_directory` for that). | | | @NiklasRosenstein |
| Feature |
cli: add `MarkdownRenderer.classdef_with_decorators` and `MarkdownRenderer.signature_with_decorators` options | | | @NiklasRosenstein |
| Feature |
Add new `HugoRenderer` (YAML type name `hugo`). | | 106 | @NiklasRosenstein |
| Feature |
smart-processor: now looks for a `@doc:fmt:` string in the docstring, which can be used to override the style that is used in case the automatically detected style is incorrect | | | @NiklasRosenstein |
| Docs |
The Pydoc-Markdown documentation is now available on Read the Docs (https://pydoc-markdown.readthedocs.io/en/latest/) | | | @NiklasRosenstein |
| Feature |
api: Add new `Builder` interface that is used with the new `--build` and `--site-dir` options | | | @NiklasRosenstein |
| Feature |
mkdocs: Implement `Builder` interface for `MkDocsRenderer` | | | @NiklasRosenstein |
| Feature |
hugo: Implement `Builder` interface for `HugoRenderer` | | | @NiklasRosenstein |
| Feature |
cli: Add new `--build` and `--site-dir` options as well as `--bootstrap readthedocs` | | | @NiklasRosenstein |
| Fix |
mkdocs: Fix error in MkDocs navigation generation if a page has no `source` and no `contents` | | | @NiklasRosenstein |
| Improvement |
mkdocs: generated `mkdocs.yml` now uses forward slashes for filenames on Windows system to increase portability | | 129 | @NiklasRosenstein |
| Feature |
add new `$.hooks.pre-render` and `$.hooks.post-render` options | | 112 | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Improvement |
cli: rename `--watch-and-serve` option to `--server` | | | @NiklasRosenstein |
| Improvement |
cli: watch and serve mainloop now reloads the config file and does not open the browser another time if it was already opened once. | | | @NiklasRosenstein |
| Fix |
cli: fix `pydoc-markdown.yml` generated with `--bootstrap` | | 118 | @NiklasRosenstein |
| Improvement |
markdown: * change default for `header_level_by_type` (`2` to `1` for modules, `3` to `2` for classes).
* change default for `descriptive_class_title` (`false` to `true`)
| | | @NiklasRosenstein |
| Feature |
markdown: added `content_directory` option (replaces hardcoded default `docs` value, defaults to `content` now) | | | @NiklasRosenstein |
| Improvement |
markdown: renamed `clean_docs_directory_on_render` to `clean_render` and change the default from `true` to `false`. | | | @NiklasRosenstein |
| Improvement |
mkdocs: `mkdocs_config` option can now be set to `null` (the renderer will the refrain
from writing a `mkdocs.yml` file into the output directory).
| | | @NiklasRosenstein |
| Fix |
python: fix assignments with annotations being ignored by the parser | | 115 | @NiklasRosenstein |
| Type | Description | PR | Issues | Author |
| Feature |
cli: added `--version` option | | | @NiklasRosenstein |
| Feature |
cli: added `-p,--package` option (which overrides `PythonLoader.packages`) | | | @NiklasRosenstein |
| Feature |
utils: added `pydoc_markdown.utils.page` module | | | @NiklasRosenstein |
| Feature |
cli: added `RenderSession` class to `pydoc_markdown.main` module which makes the cli logic easier to maintain and re-use. | | | @NiklasRosenstein |
| Feature |
markdown: added hidden `MarkdownRenderer.fp` option | | | @NiklasRosenstein |
| Feature |
python: added `PythonLoader.packages` option | | | @NiklasRosenstein |
| Improvement |
python: changed behavior of `PythonLoader.modules` option (it will not only load the module that was explicitly specified and exclude any sub-modules, if applicable). | | | @NiklasRosenstein |
| Improvement |
cli: dynamically lookup `MarkdownRenderer` configuration from the renderer to support renderers other than `MarkdownRenderer` and `MkdocsRenderer` that supply a `markdown` field that is an instance of `MarkdownRenderer` (so they can be used with `--render-toc` as well). | | | @NiklasRosenstein |