Project documentation with Markdown.

Overview
Comments
  • Support theme localization (rework of #1778).

    Support theme localization (rework of #1778).

    This branch is an attempt to renew the efforts put by @anlau in #1778 in providing builtin theme localization support.

    mkdocs and readthedocs themes will support the 'locale' parameter which will use localized messages.po files to translate the theme templates.

    Contributors will thus be free to propose new messages.po for their own language.

    This PR proposes the 'en' (default) and 'fr' locales which should be compiled using : pybabel compile -d locales from the theme directory before they can be used.

    This code has also been tested and is compliant with the mkdocs-static-i18n plugin. The two of them combined provide a fully featured way to internationalize/localize your documentation.

    Update needed 
    opened by ultrabug 127
  • Plugin API.

    Plugin API.

    Hey Tom,

    I've worked on my own documentation generator for a while and used that but am in the process of upgrading it, so I wanted to see what was out there besides Sphinx (which is way to bloated). I came across this project and I really like the simplicity of it. One of the requirements I have for documentation is auto-module/class docs as a means to augment the prose style.

    I know you've already stated that you have no interest in that, but I was wondering if you'd be interested in allowing me to work with you on this project. I have all the code for generating docs that output a format like the ones used in Qt (http://qt-project.org/doc/qt-4.8/qdialog.html) from the python docs. I would propose simply adding a plugin architecture to mkdocs (similar to django/pyramid) that would allow a developer to run additional addons so as to not pollute the core of the project. Something like:

    site_name: my_site
    extensions:
           mkdocs_autodoc
    pages:
           - ['index.md', 'Introduction']
           - ['user-guide/creating.md', 'User Guide', 'Creating a new Marshmellow project']
           - ['autodoc:my_project', 'API', 'My Project']
    

    Where there would be a render hook that would dynamically generate the content from the my_project package as markdown files that could be then used and referenced from the prose style. I would be happy to work with you on the structure and provide the work I've been doing for the auto-class documentation as a plugin.

    Please let me know if this is something that you'd be interested in discussing, otherwise I may end up forking this project and implementing that as an option.

    Enhancement 
    opened by erichulser 88
  • Update Read The Docs theme with upstream

    Update Read The Docs theme with upstream

    The Upstream RTD theme has added some nice features for collapsing the navigation. You can see an example in pip Sphinx documentation. We have some users that could benifit from this, like GlusterFS, as they have many pages.

    As a side, I happen to think that it is a negative update for smaller projects so I could be tempted to make this optional. Perhaps with an extra: config value like "extra: collapsable_nav: True" which would be specific to this theme? It could either remove the feature totally or expand by default.

    Enhancement Theme-readthedocs 
    opened by d0ugal 68
  • Large search indexes can cause Lunr to freeze the page while it creates the index.

    Large search indexes can cause Lunr to freeze the page while it creates the index.

    When using readthedocs theme, search shows "no results" for a few seconds while search is being performed, and then results are loaded. However, few seconds are enough to convince the users nothing is found, and they move on.

    For example see: http://docs.datatorrent.com Try searching for "test" and you will see the following for a while:

    image

    Perhaps an indicator of search in progress can be added?

    Bug Plugin 
    opened by sashadt 56
  • Building hidden pages

    Building hidden pages

    Is it possible to tell mkdocs to build pages but not have them show up in the side bar? If it is possible, an example of how to do this in the documentation would be great.

    I asked this question here as well: https://groups.google.com/forum/#!topic/mkdocs/ILW9-SIdERs

    Enhancement 
    opened by jhamman 53
  • Display yaml properties in markdown

    Display yaml properties in markdown

    Summary

    It would be helpful to render yaml key-values in markdown.

    As now we have no convenient way to document for example configuration variables. These are common in technical documentation and displaying these variables as links is not really an option. Updating each document is time consuming comparing to the situation where we have these variables explicitly defined.

    Current problem

    If I change the development environment ip-address I need to go through all the documentation and update each document which refers to this ip-address.

    Example solution

    application-properties.yaml

    environment.development.ip: 127.0.0.1
    environment.development.port: 8000
    
    1. Connect to application server admin console and update the application.
    2. Test the application:
    $ curl  {{ environment.development.ip }} : {{ environment.development.port }} 
    

    would be rendered to:

    $ curl 127.0.0.1:8000
    

    Additional goals

    Additionally you could create an external yaml file which would have some or all the properties defined.

    Enhancement 
    opened by ghost 49
  • Include gh-import source in MkDocs to solve windows path issues.

    Include gh-import source in MkDocs to solve windows path issues.

    I wana publish my doc to a github page, i can't seem to get it to work with mkdocs gh-deploy but i know how to do with via

    Checking out the gh-pages branch and committing the site folder to GitHub.

    Bug 
    opened by w3guy 47
  • Reimplement livereload in a simpler and better way

    Reimplement livereload in a simpler and better way

    This discards the dependency on 'livereload' and 'tornado'. This implementation is based on stdlib http.server and is much smaller, while not being a downgrade in any way.

    This fixes #2061: multiple file changes no longer cause the site to repeatedly rebuild. It also makes reloads much more responsive; they're "instant" rather than being on a 1-second polling interval or such.

    I also was careful to keep backwards compatibility, including providing logging messages that feel just like the old ones.

    Each HTML page gets JavaScript injected into it (like before) but now, instead of connecting to WebSocket, it requests a long-polling endpoint, which blocks until a newer version ("epoch") of the site is available - then the page knows to reload itself. After a minute without events, the endpoint will just return the unchanged epoch (to avoid timeouts), then the page requests the same endpoint again. The "downtime" in between requests is not a problem because these are not events that need to be received in real time; the endpoint can instantly report that the latest version is newer than the one the page identified itself as.

    The reason to replace WebSocket isn't that it's bad or something, just that stdlib doesn't have it. But long-polling works completely fine here too.


    I am presenting this implementation here as part of the MkDocs repository itself. That is because this way people can try it easily, as well as review it easily, without external boilerplate. I also actually think that it would be good for MkDocs to have the flexibility provided by an inlined implementation. But if you think this should be made into a library, I'd be happy to provide that. In fact, I'll probably do that in any case. Just need a good name for it...

    opened by oprypin 42
  • Move builtin themes to external packages other than MkDocs and ReadTheDocs

    Move builtin themes to external packages other than MkDocs and ReadTheDocs

    This needs a few remaining things done:

    • [x] Fix the to theme issues https://github.com/mkdocs/mkdocs-bootswatch/issues/1 and https://github.com/mkdocs/mkdocs-bootstrap/issues/1
    • [x] Move MkDocs theme issues to the relevant repos
    • [x] Document how to make theme packages
    • [x] Add to the release notes
    Needs further review 
    opened by d0ugal 41
  • Search feature doesn't work off mkdocs master

    Search feature doesn't work off mkdocs master

    Reposting from https://groups.google.com/forum/#!msg/mkdocs/AmwN77dwcsE/oqxJ9YlyCSUJ

    I forked mkdocs from git master (in order to make some modifications, PR https://github.com/mkdocs/mkdocs/pull/752 pending), and search stopped working for me. It worked when using the released version of mkdocs; in both cases using Python 2.7.10 on OS X Yosemite.

    The error I get is

    [W 151117 14:26:20 web:1946] 404 GET /mkdocs/js/search-results-template.mustache (127.0.0.1) 5.50ms
    

    There is no additional info when running with debug on (mkdocs serve -v). On my docs site, there is no error message, only "Sorry, page not found" when trying to search for anything. The console shows:

    Failed to load resource: the server responded with a status of 404 (Not Found)  http://127.0.0.1:8000/mkdocs/js/search-results-template.mustache
    require.js:8 Uncaught Error: ./mkdocs/js/search-results-template.mustache HTTP status: 404
    

    Let me know if I can help debug this any better, thanks. Advice on a workaround would be great too, as I have to keep running mkdocs off master, and would like to have search.

    Bug 
    opened by dmehra 40
  • Enable GitHub Discussions for this Repository

    Enable GitHub Discussions for this Repository

    GitHub made their Discussions open Beta and I strongly believe that this repository could benefit from having this.

    Why? People like me feel kinda uncomfortable to use issues for asking basic questions regarding the software/tool in general and often don't like to use sites/services like IRC or similar. Having a discussion here would help us to more easily ask questions since it now would have a dedicated place for it and as an added bonus could be used as a nice collection of answers to questions someone might have.

    Needs design decision Process 
    opened by Andre601 36
  • Support .order file

    Support .order file

    Hi, do you have any plans to add or have seen an extension which adds support for .order file?

    I would love to move from azure wiki pages to mkdocs but don't want to manually create nav: section. https://learn.microsoft.com/en-us/azure/devops/project/wiki/wiki-file-structure?view=azure-devops#order-file

    The .order file defines the sequence of pages within the wiki. The following visual shows an example of a wiki TOC and it's corresponding .order file. The default hierarchy is in alphabetical sequence, however you can change this hierarchy in the .order file. For more information about how to reorder wiki pages, see Add and edit wiki pages, Reorder a wiki page.

    opened by rafalschmidt97 1
  • Feature: supress 0.0.0.0 dev_addr warning

    Feature: supress 0.0.0.0 dev_addr warning

    I am running mkdocs as docker:

    docker run --rm -t -p 8000:8000 -v $(PWD):/docs squidfunk/mkdocs-material
    

    However. I get the following error

    WARNING  -  Config value 'dev_addr': The use of the IP address '0.0.0.0' suggests a production environment or the use of a proxy to connect to the MkDocs server.
                However, the MkDocs' server is intended for local development purposes only. Please use a third party production-ready server instead.
    INFO     -  Building documentation...
    

    This error is reasonable when running the server in the host, but it is not reasonable when it is being run in a container, since in the default docker network, we must serve 0.0.0.0.

    In order to supress this warning, I had to run in host network, and override the default CMD (note that I use mkdocs-material/):

    docker run --rm -t -p 8000:8000 -v $(PWD):/docs --network host squidfunk/mkdocs-material serve --dev-addr=127.0.0.1:8000
    

    I think it would be useful to just add a configuration option or an environment variable which supresses that warning.

    opened by tomers 0
  • Add external links in default generated nav

    Add external links in default generated nav

    Added support for external link files to be included in automatic navigation generation.

    Closes #3074

    Implementation notes

    • Based on previous feedback, I kept some of the main syntax for the URL file but made the Windows inserted stuff optional (to still provide support for the windows bookmarks). The minimum configuration for the file (with a name following the pattern *.url) now looks like so:
    URL=https://example.org/example.html
    

    (or with a title)

    Title=Example Title
    URL=https://example.org/example.html
    
    • Titles will not be altered if provided in the file. If a title is not provided, then the file name will be processed just like md file titles and used (- and _ replaced with spaces and capitalized if they are lowercase).
    • Although the documentation doesn't explicitly state this, you could link a URL file in a configured nav object if you'd like. It will do the same as with the auto-generated nav, but won't override the nav configured title, if one is provided
    • Existing external link support (e.g. relative/absolute URL handling) should be preserved and unchanged from existing documentation.

    Unit tests have been updated and an external link file was added to the integration build.

    opened by bluenick2k17 0
  • Feature: Allow external links in automatically generated nav

    Feature: Allow external links in automatically generated nav

    Allow external links in automatically generated nav

    One problem statement that I've had with Mkdocs is that I do not have an ability to add external links to automatically generated navigation (when you don't provide a nav object in the configuration file). I'm interested to get feedback on adding this feature.

    If it would be desired, then I am happy to work on getting this implemented.

    Proposal

    The easiest solution I can think of would be to allow an additional kind of file in the site generation, *.url files. If a *.url file is found in the regular docs directory structure, then a link object will be added to the nav object with the title being the name of the file and the url being read from the file.

    Here is a small example directory structure:

    home/
    about/
    ├─ index.md
    ├─ My_Link.url
    

    Contents of My_Link.url (which should be a known format on Windows/Mac/Linux operating systems), and is the default for internet shortcuts on Windows:

    [InternetShortcut]
    URL=https://github.com
    
    opened by bluenick2k17 2
  • Update to rtd theme v1.1.1

    Update to rtd theme v1.1.1

    This PR brings RTD up to v1.1.1.

    Many of the upstream commits are for packaging and are not releated to mkdocs.

    Here is relevant notes from their changelog:

    Features

    • Nicer styles for https://github.com/readthedocs/sphinx_rtd_theme/pull/967
    • New styling for breadcrumbs https://github.com/readthedocs/sphinx_rtd_theme/pull/1073

    Fixes

    • Table cells with multiple paragraphs gets wrong formatting https://github.com/readthedocs/sphinx_rtd_theme/pull/1215
    • Definition lists rendered wrongly in api docs https://github.com/readthedocs/sphinx_rtd_theme/pull/1084
    • Citation not styled properly https://github.com/readthedocs/sphinx_rtd_theme/pull/1080
    • Long URLs did not wrap https://github.com/readthedocs/sphinx_rtd_theme/pull/1193
    • Fix wrapping bug on cross references https://github.com/readthedocs/sphinx_rtd_theme/issues/1369

    Upstream compare https://github.com/readthedocs/sphinx_rtd_theme/compare/1.0.0...1.1.1

    opened by Sparticuz 0
Releases(1.4.2)
  • 1.4.2(Nov 1, 2022)

    • Officially support Python 3.11 (#3020)

      Note: Simply upgrading to Python 3.11 can cut off 10-15% of your site's build time.

    • Support multiple instances of the same plugin (#3027)

      If a plugin is specified multiple times in the list under the plugins: config, that will create 2 (or more) instances of the plugin with their own config each.

      Previously this case was unforeseen and, as such, bugged.

      Now even though this works, by default a warning will appear from MkDocs anyway, unless the plugin adds a class variable supports_multiple_instances = True.

    • Bugfix (regression in 1.4.1): Don't error when a plugin puts a plain string into warnings (#3016)

    • Bugfix: Relative links will always render with a trailing slash (#3022)

      Previously under use_directory_urls, links from a sub-page to the main index page rendered as e.g. <a href="../.."> even though in all other cases the links look like <a href="../../">. This caused unwanted behavior on some combinations of Web browsers and servers. Now this special-case bug was removed.

    • Built-in "mkdocs" theme now also supports Norwegian language (#3024)

    • Plugin-related warnings look more readable (#3016)

    See commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.1(Oct 15, 2022)

    • Support theme-namespaced plugin loading (#2998)

      Plugins' entry points can be named as 'sometheme/someplugin'. That will have the following outcome:

      • If the current theme is 'sometheme', the plugin 'sometheme/someplugin' will always be preferred over 'someplugin'.
      • If the current theme isn't 'sometheme', the only way to use this plugin is by specifying plugins: [sometheme/someplugin].

      One can also specify plugins: ['/someplugin'] instead of plugins: ['someplugin'] to definitely avoid the theme-namespaced plugin.

    • Bugfix: mkdocs serve will work correctly with non-ASCII paths and redirects (#3001)

    • Windows: 'colorama' is now a dependency of MkDocs, to ensure colorful log output (#2987)

    • Plugin-related config options have more reliable validation and error reporting (#2997)

    • Translation sub-commands of setup.py were completely dropped. See documentation [1] [2] for their new replacements (#2990)

    • The 'mkdocs' package (wheel and source) is now produced by Hatch build system and pyproject.toml instead of setup.py (#2988)

    Other small improvements; see commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.4.0(Sep 27, 2022)

    Feature upgrades

    Hooks (#2978)

    The new hooks: config allows you to add plugin-like event handlers from local Python files, without needing to set up and install an actual plugin.

    See documentation.

    edit_uri flexibility (#2927)

    There is a new edit_uri_template: config.
    It works like edit_uri but more generally covers ways to construct an edit URL.
    See documentation.

    Additionally, the edit_uri functionality will now fully work even if repo_url is omitted (#2928)

    Upgrades for plugin developers

    Note: this release has big changes to the implementation of plugins and their configs. But, the intention is to have zero breaking changes in all reasonably common use cases. Or at the very least if a code fix is required, there should always be a way to stay compatible with older MkDocs versions. Please report if this release breaks something.

    Customize event order for plugin event handlers (#2973)

    Plugins can now choose to set a priority value for their event handlers. This can override the old behavior where for each event type, the handlers are called in the order that their plugins appear in the plugins config.

    If this is set, events with higher priority are called first. Events without a chosen priority get a default of 0. Events that have the same priority are ordered as they appear in the config.

    Recommended priority values: 100 "first", 50 "early", 0 "default", -50 "late", -100 "last".
    As different plugins discover more precise relations to each other, the values should be further tweaked.

    See documentation.

    New events that persist across builds in mkdocs serve (#2972)

    The new events are on_startup and on_shutdown. They run at the very beginning and very end of an mkdocs invocation.
    on_startup also receives information on how mkdocs was invoked (e.g. serve --dirtyreload).

    See documentation.

    Replace File.src_path to not deal with backslashes (#2930)

    The property src_path uses backslashes on Windows, which doesn't make sense as it's a virtual path.
    To not make a breaking change, there's no change to how this property is used, but now you should:

    • Use File.src_uri instead of File.src_path
    • and File.dest_uri instead of File.dest_path.

    These consistently use forward slashes, and are now the definitive source that MkDocs itself uses.

    See source code.

    As a related tip: you should also stop using os.path.* or pathlib.Path() to deal with these paths, and instead use posixpath.* or pathlib.PurePosixPath()

    MkDocs is type-annotated, ready for use with mypy (#2941, #2970)

    Type annotations for event handler methods (#2931)

    MkDocs' plugin event methods now have type annotations. You might have been adding annotations to events already, but now they will be validated to match the original.

    See source code and documentation.

    One big update is that now you should annotate method parameters more specifically as config: defaults.MkDocsConfig instead of config: base.Config. This not only makes it clear that it is the main config of MkDocs itself, but also provides type-safe access through attributes of the object (see next section).

    See source code and documentation.

    Rework ConfigOption schemas as class-based (#2962)

    When developing a plugin, the settings that it accepts used to be specified in the config_scheme variable on the plugin class.
    This approach is now soft-deprecated, and instead you should specify the config in a sub-class of base.Config.

    Old example:

    from mkdocs import plugins
    from mkdocs.config import base, config_options
    
    class MyPlugin(plugins.BasePlugin):
        config_scheme = (
            ('foo', config_options.Type(int)),
            ('bar', config_options.Type(str, default='')),
        )
    
        def on_page_markdown(self, markdown: str, *, config: base.Config, **kwargs):
            if self.config['foo'] < 5:
                if config['site_url'].startswith('http:'):
                    return markdown + self.config['baz']
    

    This code snippet actually has many mistakes but it will pass all type checks and silently run and even succeed in some cases.

    So, on to the new equivalent example, changed to new-style schema and attribute-based access:
    (Complaints from "mypy" added inline)

    from mkdocs import plugins
    from mkdocs.config import base, config_options as c
    
    class MyPluginConfig(base.Config):
        foo = c.Optional(c.Type(int))
        bar = c.Type(str, default='')
    
    class MyPlugin(plugins.BasePlugin[MyPluginConfig]):
        def on_page_markdown(self, markdown: str, *, config: base.MkDocsConfig, **kwargs):
            if self.config.foo < 5:  # Error, `foo` might be `None`, need to check first.
                if config.site_url.startswith('http:'):  # Error, MkDocs' `site_url` also might be `None`.
                    return markdown + self.config.baz  # Error, no such attribute `baz`!
    

    This lets you notice the errors from a static type checker before running the code and fix them as such:

    class MyPlugin(plugins.BasePlugin[MyPluginConfig]):
        def on_page_markdown(self, markdown: str, *, config: base.MkDocsConfig, **kwargs):
            if self.config.foo is not None and self.config.foo < 5:  # OK, `int < int` is valid.
                if (config.site_url or '').startswith('http:'):  # OK, `str.startswith(str)` is valid.
                    return markdown + self.config.bar  # OK, `str + str` is valid.
    

    See documentation.

    Also notice that we had to explicitly mark the config attribute foo as Optional.
    The new-style config has all attributes marked as required by default, and specifying required=False or required=True is not allowed!

    New: config_options.Optional (#2962)

    Wrapping something into Optional is conceptually similar to "I want the default to be None" -- and you have to express it like that, because writing default=None doesn't actually work.

    Breaking change: the method BaseConfigOption.is_required() was removed. Use .required instead. (#2938)
    And even the required property should be mostly unused now.
    For class-based configs, there's a new definition for whether an option is "required":

    • It has no default, and
    • It is not wrapped into config_options.Optional.

    New: config_options.ListOfItems (#2938)

    Defines a list of items that each must adhere to the same constraint. Kind of like a validated Type(list)

    Examples how to express a list of integers (with from mkdocs.config import config_options as c):

    Description | Code entry ----------- | ---------- Required to specify | foo = c.ListOfItems(c.Type(int)) Optional, default is [] | foo = c.ListOfItems(c.Type(int), default=[]) Optional, default is None | foo = c.Optional(c.ListOfItems(c.Type(int)))

    See more examples in documentation.

    Updated: config_options.SubConfig (#2807)

    SubConfig used to silently ignore all validation of its config options. Now you should pass validate=True to it or just use new class-based configs where this became the default.

    So, it can be used to validate a nested sub-dict with all keys pre-defined and value types strictly validated.

    See examples in documentation.

    Other changes to config options

    URL's default is now None instead of ''. This can still be checked for truthiness in the same way - if config.some_url: (#2962)

    FilesystemObject is no longer abstract and can be used directly, standing for "file or directory" with optional existence checking (#2938)

    Bug fixes:

    • Fix SubConfig, ConfigItems, MarkdownExtensions to not leak values across different instances (#2916, #2290)
    • SubConfig raises the correct kind of validation error without a stack trace (#2938)
    • Fix dot-separated redirect in config_options.Deprecated(moved_to) (#2963)

    Tweaked logic for handling ConfigOption.default (#2938)

    Deprecated config option classes: ConfigItems (#2983), OptionallyRequired (#2962), RepoURL (#2927)

    Theme updates

    • Styles of admonitions in "MkDocs" theme (#2981):

      • Update colors to increase contrast
      • Apply admonition styles also to <details> tag, to support Markdown extensions that provide it (pymdownx.details, callouts)
    • Built-in themes now also support these languages:

      • Russian (#2976)
      • Turkish (Turkey) (#2946)
      • Ukrainian (#2980)

    Future compatibility

    • extra_css: and extra_javascript: warn if a backslash \ is passed to them. (#2930, #2984)

    • Show DeprecationWarnings as INFO messages. (#2907)

      If any plugin or extension that you use relies on deprecated functionality of other libraries, it is at risk of breaking in the near future. Plugin developers should address these in a timely manner.

    • Avoid a dependency on importlib_metadata starting from Python 3.10 (#2959)

    • Drop support for Python 3.6 (#2948)

    Incompatible changes to public APIs

    • mkdocs.utils:
      • create_media_urls and normalize_url warn if a backslash \ is passed to them. (#2930)
      • is_markdown_file stops accepting case-insensitive variants such as .MD, which is how MkDocs build was already operating. (#2912)
      • Hard-deprecated: modified_time, reduce_list, get_html_path, get_url_path, is_html_file, is_template_file. (#2912)

    Miscellaneous

    • If a plugin adds paths to watch in LiveReloadServer, it can now unwatch them. (#2777)

    • Bugfix (regression in 1.2): Support listening on an IPv6 address in mkdocs serve. (#2951)

    Other small improvements; see commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Jul 19, 2022)

    • Pin Python-Markdown version to <3.4, thus excluding its latest release that breaks too many external extensions (#2893)

    • When a Markdown extension fails to load, print its name and traceback (#2894)

    • Bugfix for "readthedocs" theme (regression in 1.3.0): add missing space in breadcrumbs (#2810)

    • Bugfix: don't complain when a file "readme.md" (lowercase) exists, it's not recognized otherwise (#2852)

    • Built-in themes now also support these languages:

      • Italian (#2860)

    Other small improvements; see commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Mar 26, 2022)

    Feature upgrades

    • ReadTheDocs theme updated from v0.4.1 to v1.0.0 according to upstream (#2585)

      The most notable changes:

      • New option logo: Rather than displaying the site_name in the title, one can specify a path to an image to display instead.
      • New option anonymize_ip for Google Analytics.
      • Dependencies were upgraded: jQuery upgraded to 3.6.0, Modernizr.js dropped, and others.

      See documentation of config options for the theme

    • Built-in themes now also support these languages:

      • German (#2633)
      • Persian (Farsi) (#2787)
    • Support custom directories to watch when running mkdocs serve (#2642)

      MkDocs by default watches the docs directory and the config file. Now there is a way to add more directories to watch for changes, either via the YAML watch key or the command line flag --watch.

      Normally MkDocs never reaches into any other directories (so this feature shouldn't be necessary), but some plugins and extensions may do so.

      See documentation.

    • New --no-history option for gh_deploy (#2594)

      Allows to discard the history of commits when deploying, and instead replace it with one root commit

    Bug fixes

    • An XSS vulnerability when using the search function in built-in themes was fixed (#2791)

    • Setting the edit_uri option no longer erroneously adds a trailing slash to repo_url (#2733)

    Miscellaneous

    • Breaking change: the pages config option that was deprecated for a very long time now causes an error when used (#2652)

      To fix the error, just change from pages to nav.

    • Performance optimization: during startup of MkDocs, code and dependencies of other commands will not be imported (#2714)

      The most visible effect of this is that dependencies of mkdocs serve will not be imported when mkdocs build is used.

    • Recursively validate nav (#2680)

      Validation of the nested nav structure has been reworked to report errors early and reliably. Some edge cases have been declared invalid.

    Other small improvements; see commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.4(Mar 26, 2022)

    • Compatibility with Jinja2 3.1.0 (#2800)

      Due to a breaking change in Jinja2, MkDocs would crash with the message AttributeError: module 'jinja2' has no attribute 'contextfilter'

    Source code(tar.gz)
    Source code(zip)
  • 1.2.3(Oct 12, 2021)

    MkDocs 1.2.3 is a bugfix release for MkDocs 1.2.

    Aside: MkDocs has a new chat room on Gitter/Matrix. More details.

    Improvements:

    • Built-in themes now also support these languages:

      • Simplified Chinese (#2497)
      • Japanese (#2525)
      • Brazilian Portuguese (#2535)
      • Spanish (#2545, previously #2396)
    • Third-party plugins will take precedence over built-in plugins with the same name (#2591)

    • Bugfix: Fix ability to load translations for some languages: core support (#2565) and search plugin support with fallbacks (#2602)

    • Bugfix (regression in 1.2): Prevent directory traversal in the dev server (#2604)

    • Bugfix (regression in 1.2): Prevent webserver warnings from being treated as a build failure in strict mode (#2607)

    • Bugfix: Correctly print colorful messages in the terminal on Windows (#2606)

    • Bugfix: Python version 3.10 was displayed incorrectly in --version (#2618)

    Other small improvements; see commit log.

    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(Jul 18, 2021)

    MkDocs 1.2.2 is a bugfix release for MkDocs 1.2 -- make sure you've seen the "major" release notes as well.

    • Bugfix (regression in 1.2): Fix serving files/paths with Unicode characters (#2464)

    • Bugfix (regression in 1.2): Revert livereload file watching to use polling observer (#2477)

      This had to be done to reasonably support usages that span virtual filesystems such as non-native Docker and network mounts.

      This goes back to the polling approach, very similar to that was always used prior, meaning most of the same downsides with latency and CPU usage.

    • Revert from 1.2: Remove the requirement of a site_url config and the restriction on use_directory_urls (#2490)

    • Bugfix (regression in 1.2): Don't require trailing slash in the URL when serving a directory index in mkdocs serve server (#2507)

      Instead of showing a 404 error, detect if it's a directory and redirect to a path with a trailing slash added, like before.

    • Bugfix: Fix gh_deploy with config-file in the current directory (#2481)

    • Bugfix: Fix reversed breadcrumbs in "readthedocs" theme (#2179)

    • Allow "mkdocs.yaml" as the file name when '--config' is not passed (#2478)

    • Stop treating ";" as a special character in URLs: urlparse -> urlsplit (#2502)

    • Improve build performance for sites with many pages (partly already done in 1.2) (#2407)

    Source code(tar.gz)
    Source code(zip)
Markdown documentation generator from Google docstrings

mkgendocs A Python package for automatically generating documentation pages in markdown for Python source files by parsing Google style docstring. The

Davide Nunes 44 Dec 18, 2022
Your Project with Great Documentation.

Read Latest Documentation - Browse GitHub Code Repository The only thing worse than documentation never written, is documentation written but never di

Timothy Edmund Crosley 809 Dec 28, 2022
This is a small project written to help build documentation for projects in less time.

Documentation-Builder This is a small project written to help build documentation for projects in less time. About This project builds documentation f

Tom Jebbo 2 Jan 17, 2022
sphinx builder that outputs markdown files.

sphinx-markdown-builder sphinx builder that outputs markdown files Please ★ this repo if you found it useful ★ ★ ★ If you want frontmatter support ple

Clay Risser 144 Jan 6, 2023
MkDocs plugin for setting revision date from git per markdown file

mkdocs-git-revision-date-plugin MkDocs plugin that displays the last revision date of the current page of the documentation based on Git. The revision

Terry Zhao 48 Jan 6, 2023
Jupyter Notebooks as Markdown Documents, Julia, Python or R scripts

Have you always wished Jupyter notebooks were plain text documents? Wished you could edit them in your favorite IDE? And get clear and meaningful diff

Marc Wouts 5.7k Jan 4, 2023
Python syntax highlighted Markdown doctest.

phmdoctest 1.3.0 Introduction Python syntax highlighted Markdown doctest Command line program and Python library to test Python syntax highlighted cod

Mark Taylor 16 Aug 9, 2022
Rust Markdown Parsing Benchmarks

Rust Markdown Parsing Benchmarks This repo tries to assess Rust markdown parsing

Ed Page 1 Aug 24, 2022
Make posters from Markdown files.

MkPosters Create posters using Markdown. Supports icons, admonitions, and LaTeX mathematics. At the moment it is restricted to the specific layout of

Patrick Kidger 243 Dec 20, 2022
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

null 5.1k Jan 2, 2023
A curated list of awesome tools for Sphinx Python Documentation Generator

Awesome Sphinx (Python Documentation Generator) A curated list of awesome extra libraries, software and resources for Sphinx (Python Documentation Gen

Hyunjun Kim 831 Dec 27, 2022
API Documentation for Python Projects

API Documentation for Python Projects. Example pdoc -o ./html pdoc generates this website: pdoc.dev/docs. Installation pip install pdoc pdoc is compat

mitmproxy 1.4k Jan 7, 2023
Literate-style documentation generator.

888888b. 888 Y88b 888 888 888 d88P 888 888 .d8888b .d8888b .d88b. 8888888P" 888 888 d88P" d88P" d88""88b 888 888 888

Pycco 808 Dec 27, 2022
Main repository for the Sphinx documentation builder

Sphinx Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of mul

null 5.1k Jan 4, 2023
Watch a Sphinx directory and rebuild the documentation when a change is detected. Also includes a livereload enabled web server.

sphinx-autobuild Rebuild Sphinx documentation on changes, with live-reload in the browser. Installation sphinx-autobuild is available on PyPI. It can

Executable Books 440 Jan 6, 2023
:blue_book: Automatic documentation from sources, for MkDocs.

mkdocstrings Automatic documentation from sources, for MkDocs. Features Python handler features Requirements Installation Quick usage Features Languag

Timothée Mazzucotelli 1.1k Dec 31, 2022
Run `black` on python code blocks in documentation files

blacken-docs Run black on python code blocks in documentation files. install pip install blacken-docs usage blacken-docs provides a single executable

Anthony Sottile 460 Dec 23, 2022
:blue_book: Automatic documentation from sources, for MkDocs.

mkdocstrings Automatic documentation from sources, for MkDocs. Features - Python handler - Requirements - Installation - Quick usage Features Language

null 1.1k Jan 4, 2023
Seamlessly integrate pydantic models in your Sphinx documentation.

Seamlessly integrate pydantic models in your Sphinx documentation.

Franz Wöllert 71 Dec 26, 2022