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
  • Lost edit icon in mkdocs 1.4.2

    Lost edit icon in mkdocs 1.4.2

    Hi and many thanks for this very useful package.

    In last mkdocs version (1.4.2) the edit icon (pencil) disappeared. I tested back with mkdocs 1.4.1, the edit icon is there on top right of each page.

    The config on which I tested includes repo_url and edit_uri and my repo_url is starting by https://gitlab.com.

    opened by floriandeboissieu 0
  •  Warn when a plugin takes too long to build for live reload

    Warn when a plugin takes too long to build for live reload

    Description

    Live reload should be as fast as possible. It would be a good idea to time the different plugins at different stages of page building, so that a warning is issued if a plugin takes too long.

    Use Cases

    Mostly with large sites, and with a few heavy plugins. It would be useful which one is the slowest to replace it.

    Screenshots / Mockups

    WARNING  -  It seems that plugin aaa-bbb-plugin took 2.5 seconds to build a.md, this might slow down live reloads.
    
    opened by Emmanuel-Messulam 0
  • fix: do not warn when

    fix: do not warn when "!include" used in mkdocs.yaml

    My mkdocs.yaml has

    ---
    nav:
    - Reference:
      - Foo: foo.md
      - API: '!include ./api_mkdocs.yml'
    

    Running mkdocs build --strict results in the warning

    WARNING  -  A relative path to '!include ./api_mkdocs.yml' is included in the 'nav' configuration, which is not found in the documentation files
    

    api_mkdocs.yml is present and is later included in the navigation correctly. I'd like to suppress this error for all !include. I'm using this library as a pre-commit hook as implemented here. So this warning is causing my hook to fail.

    opened by davidxia 1
  • Customizing themes to avoid GDPR issues

    Customizing themes to avoid GDPR issues

    I guess this is more of a heads-up for those who don't know (or have chosen to ignore the issue), but resources like webfonts, CDN JS, CDN CSS, and so on doesn't float very well with GDPR.

    I ran into this when I started to put up a sample site to showcase MkDocs at Öppet Moln, a website in Swedish talking about open source alternatives. So I'm doing custom versions of some standard themes and download the required .js and .css files from their CDN and serving them locally.

    For the built-in/default/pre-packaged themes, it may be a good idea to do this (serve locally), to make it more GDPR friendly out of the box.

    opened by joho1968 0
  • Update documentation about packaging theme to use modern tools

    Update documentation about packaging theme to use modern tools

    The documentation about packaging theme refers to somewhat outdated tools and practices.

    I was wondering if you could update the documentation to use pyproject.toml and perhaps setup.cfg: https://packaging.python.org/en/latest/tutorials/packaging-projects/

    I have an example pyproject.toml file:

    [build-system]
    requires = ["setuptools"]
    build-backend = "setuptools.build_meta"
    

    And example setup.cfg:

    [metadata]
    name = mkdocs-<theme-name>
    version = attr: <theme_name>.__version__
    author = 
    author_email = 
    url = 
    description =  
    long_description = file: README.md
    long_description_content_type = text/markdown
    keywords = mkdocs
    license = MIT
    classifiers =
        Programming Language :: Python :: 3
        License :: OSI Approved :: MIT License
        Operating System :: OS Independent
    
    [options]
    packages = find:
    include_package_data = True
    zip_safe=False
    install_requires =
    	mkdocs-<theme-parent>
    
    [options.entry_points]
    mkdocs.themes =
    	<theme_name> = <theme_name>
    
    [options.extras_require]
    docs =
    	markdown-include
    	mkdocs
    
    [options.package_data]
    <theme_name> =
        *.html
         mkdocs_theme.yml
    
    opened by sumau 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)
Hobby Project. A Python Library to create and generate static web pages using just python.

PyWeb ??️ ?? Current Release: 0.1 A Hobby Project ?? PyWeb is a small Library to generate customized static web pages using python. Aimed for new deve

Abhinav Sinha 2 Nov 18, 2021
Project documentation with Markdown.

MkDocs Project documentation with Markdown. View the MkDocs documentation. Project release notes. Visit the MkDocs wiki for community resources, inclu

MkDocs 15.6k Jan 5, 2023
Project documentation with Markdown.

MkDocs Project documentation with Markdown. View the MkDocs documentation. Project release notes. Visit the MkDocs wiki for community resources, inclu

MkDocs 15.6k Jan 2, 2023
Provides syntax for Python-Markdown which allows for the inclusion of the contents of other Markdown documents.

Markdown-Include This is an extension to Python-Markdown which provides an "include" function, similar to that found in LaTeX (and also the C pre-proc

Chris MacMackin 85 Dec 30, 2022
Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files

Mdformat is an opinionated Markdown formatter that can be used to enforce a consistent style in Markdown files. Mdformat is a Unix-style command-line tool as well as a Python library.

Executable Books 180 Jan 6, 2023
A markdown lexer and parser which gives the programmer atomic control over markdown parsing to html.

A markdown lexer and parser which gives the programmer atomic control over markdown parsing to html.

stonepresto 4 Aug 13, 2022
📖 Generate markdown API documentation from Google-style Python docstring. The lazy alternative to Sphinx.

lazydocs Generate markdown API documentation for Google-style Python docstring. Getting Started • Features • Documentation • Support • Contribution •

Machine Learning Tooling 118 Dec 31, 2022
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
An online markdown resume template project, based on pywebio

An online markdown resume template project, based on pywebio

极简XksA 5 Nov 10, 2022
Bootstraparse is a personal project started with a specific goal in mind: creating static html pages for direct display from a markdown-like file

Bootstraparse is a personal project started with a specific goal in mind: creating static html pages for direct display from a markdown-like file

null 1 Jun 15, 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
A fast yet powerful Python Markdown parser with renderers and plugins.

Mistune v2 A fast yet powerful Python Markdown parser with renderers and plugins. NOTE: This is the re-designed v2 of mistune. Check v1 branch for ear

Hsiaoming Yang 2.2k Jan 4, 2023
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 30, 2022
Static site generator that supports Markdown and reST syntax. Powered by Python.

Pelican Pelican is a static site generator, written in Python. Write content in reStructuredText or Markdown using your editor of choice Includes a si

Pelican dev team 11.3k Jan 4, 2023
Convert HTML to Markdown-formatted text.

html2text html2text is a Python script that converts a page of HTML into clean, easy-to-read plain ASCII text. Better yet, that ASCII also happens to

Alireza Savand 1.3k Dec 31, 2022
A command line utility to export Google Keep notes to markdown.

Keep-Exporter A command line utility to export Google Keep notes to markdown files with metadata stored as a frontmatter header. Supports exporting: S

Nathan Beals 85 Dec 17, 2022
A Python implementation of John Gruber’s Markdown with Extension support.

Python-Markdown This is a Python implementation of John Gruber's Markdown. It is almost completely compliant with the reference implementation, though

Python-Markdown 3.1k Dec 31, 2022
Static site generator that supports Markdown and reST syntax. Powered by Python.

Pelican Pelican is a static site generator, written in Python. Write content in reStructuredText or Markdown using your editor of choice Includes a si

Pelican dev team 11.3k Jan 5, 2023
Extensions for Python Markdown

PyMdown Extensions Extensions for Python Markdown. Documentation Extension documentation is found here: https://facelessuser.github.io/pymdown-extensi

Isaac Muse 685 Jan 1, 2023