Variables
Supported with Zensical >= 0.0.40
How to define own variables is described in the chapter Zensical Documentation: Macros.
Own variables
The variables are defined in the module data/variables.py or the YAML file data/variables.yml.
- Author: Manfred Rosenboom
- Version: 1.0
- Zensical: 0.1.0
Built-in template variables
- Python: 3.15.2
- System: Linux
- System Version: 7.0.0-1019-azure
- Now: 2026-11-06 10:03:31.471503
Git metadata
Git: {'status': True, 'date': datetime.datetime(2026, 11, 6, 11, 1, 56, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))), 'short_commit': '31209b0', 'commit': '31209b0abdeb86aa20b4ebb337973ba589bf5295', 'tag': '', 'short_tag': '', 'author': 'Manfred Rosenboom', 'author_email': 'maroph@pm.me', 'committer': 'Manfred Rosenboom', 'committer_email': 'maroph@pm.me', 'date_ISO': '2026-11-06T11:01:56+01:00', 'message': 'Upgrade to Zensical 0.1.0, extends build.bash', 'raw': 'commit 31209b0abdeb86aa20b4ebb337973ba589bf5295\nAuthor: Manfred Rosenboom maroph@pm.me\nDate: Fri Nov 6 11:01:56 2026 +0100\n\n Upgrade to Zensical 0.1.0, extends build.bash', 'root_dir': '/home/runner/work/zensical_sample/zensical_sample'}
Built-in template variable macros_info
Macros Plugin Environment
General List
All available variables and filters within the macros plugin:
| Variable | Type | Content |
|---|---|---|
| author | str | 'Manfred Rosenboom' |
| config | dict | config_warnings = [], copyright = 'Copyright © 2025-2026 CC-BY 4.0 by Manfred Rosenboom \nChange cookie settings\n', dev_addr = 'localhost:8000', docs_dir = 'docs', draft_docs = None, edit_uri = 'edit/main/docs', edit_uri_template = None, exclude_docs = '!.nojekyll\n!.well-known\n', extra = {'generator': True, 'social': [{'icon': 'fontawesome/brands/github', 'link': 'https://github.com/maroph', 'name': 'github.com/maroph'}, {'icon': 'fontawesome/brands/mastodon', 'link': 'https://mastodon.social/@maroph', 'name': 'mastodon.social/@maroph'}], 'consent': {'title': 'Cookie consent', 'description': " We use cookies to recognize your repeated visits and preferences, as well\n as to measure the effectiveness of our documentation and whether users\n find what they're searching for. With your consent, you're helping us to\n make our documentation better.\n", 'actions': ['accept', 'reject', 'manage']}, 'polyfills': []}, extra_css = ['assets/extra/css/extra.css'], extra_javascript = [], extra_templates = [], markdown_extensions = [ ', 'excluderivate':rue, 'showull_naspace': False, 'onmplicit_namesceackag: 'warn'}}, 'minify': {'config': {'enabled': True, 'minifytml': True'minifys': False, 'minifyss': False, 'htmlminpts': {'reveommen': True, 'removempty_space': lse, 'remove_all_empty_space': False, 'reduce_empty_attributes': True, 'reduce_boolean_attributes': False, 'remove_optional_attribute_quotes': True, 'convert_charrefs': True, 'keep_pre': False, 'pre_tags': ['pre', 'textarea'], 'pre_attr': 'pre'}, 'minify_inline_js': False, 'minify_inline_css': False, 'cache_safe': False, 'js_files': [], 'css_files': []}}, 'literate_nav': {'config': {'enabled': False, 'nav_file': 'SUMMARY.md', 'implicit_index': False, 'tab_length': 4, 'markdown_extensions': [], 'mdx_configs': {}}}, 'awesome_nav': {'config': {'enabled': False, 'filename': '.nav.yml', 'logs': {'nav_override': None, 'root_title': None, 'root_hide': None, 'no_matches': None}}}, 'nav_weight': {'config': {'enabled': False, 'section_renamed': False, 'index_weight': -10, 'warning': True, 'reverse': False, 'headless_included': False, 'default_page_weight': 0}}, 'offline': {'config': {'enabled': False}}}, plugins_hash = 16467924340234153029, remote_branch = 'gh-pages', remote_name = 'origin', repo_name = 'maroph/zensical_sample', repo_url = 'https://github.com/maroph/zensical_sample', root_dir = '/home/runner/work/zensical_sample/zensical_sample', site_author = 'Manfred Rosenboom>', site_description = "My Zensical sample site, using the features I'm mainly interested in.\n", site_dir = 'site', site_name = 'Zensical Sample Site', site_url = 'https://maroph.github.io/zensical_sample/', strict = False, template_hash = 2923785779725867609, theme = {'font': False, 'favicon': 'assets/great_wave_off_kanagawa_circle_64x64.png', 'logo': 'assets/great_wave_off_kanagawa_circle_251x251.png', 'language': 'en', 'direction': 'ltr', 'features': ['announce.dismiss', 'content.action.edit', 'content.action.view', 'content.code.annotate', 'content.code.copy', 'content.code.select', 'content.footnote.tooltips', 'content.tabs.link', 'content.tooltips', 'header.autohide', 'navigation.expand', 'navigation.footer', 'navigation.indexes', 'navigation.instant', 'navigation.instant.prefetch', 'navigation.path', 'navigation.prune', 'navigation.sections', 'navigation.tabs', 'navigation.tabs.sticky', 'navigation.top', 'navigation.tracking', 'search.highlight', 'toc.follow'], 'palette': [{'scheme': 'default', 'media': '(prefers-color-scheme: light)', 'toggle': {'icon': 'lucide/sun', 'name': 'Switch to dark mode'}, 'primary': None, 'accent': None}, {'scheme': 'slate', 'media': '(prefers-color-scheme: dark)', 'toggle': {'icon': 'lucide/moon', 'name': 'Switch to light mode'}, 'primary': None, 'accent': None}], 'icon': {'repo': 'fontawesome/brands/github', 'edit': 'material/pencil', 'view': 'material/eye', 'previous': 'fontawesome/solid/angle-left', 'next': 'fontawesome/solid/angle-right', 'logo_explicit': False, 'annotation': None, 'tag': {}, 'blog': {'back': 'lucide/arrow-left', 'date': 'lucide/calendar-days', 'date_updated': 'lucide/calendar-clock', 'categories': 'lucide/library', 'readtime': 'lucide/clock'}, 'logo': 'lucide/book-open', 'top': 'lucide/circle-arrow-up', 'share': 'lucide/share-2', 'menu': 'lucide/menu', 'alternate': 'lucide/languages', 'search': 'lucide/search', 'close': 'lucide/x', 'admonition': {}}, 'custom_dir': None, 'font_explicit': True, 'name': None, 'variant': 'modern', 'static_templates': ['404.html', 'sitemap.xml']}, theme_dirs = ['/opt/hostedtoolcache/Python/3.15.2/x64/lib/python3.15/site-packages/zensical_ui/templates'], use_directory_urls = False, validation = {'unresolved_references': False, 'unresolved_footnotes': False, 'unused_definitions': False, 'unused_footnotes': False, 'shadowed_definitions': False, 'shadowed_footnotes': False, 'invalid_links': True, 'invalid_link_anchors': True, 'absolute_links_relative_to_docs': False}, watch = [], watched_files = [('/home/runner/work/zensical_sample/zensical_sample/data/variables.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/.nojekyll', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/.well-known/security.txt', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/128px-Feed-icon.svg.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/cc-by_88x31.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/extra/css/extra.css', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/extra/css/jetbrains-mono-v18-latin_latin-ext-regular.woff2', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/great_wave_off_kanagawa_circle_251x251.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/great_wave_off_kanagawa_circle_64x64.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/.authors.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/.meta.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/index.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/posts/first_post.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/index.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/info/about.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/info/license.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/config.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/exec.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/get_started.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/markdown.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/variables.md', 1793959393)] |
| consent | _MacroVariables | actions = ['accept', 'reject', 'manage'], description = " We use cookies to recognize your repeated visits and preferences, as well\n as to measure the effectiveness of our documentation and whether users\n find what they're searching for. With your consent, you're helping us to\n make our documentation better.\n", title = 'Cookie consent' |
| context | function | (obj) Display macros context (single object or all context). |
| cycler | type | (items) Cycle through values by yield them one at a time, then restarting |
| dict | type | dict() -> new empty dictionary |
| environment | dict | jinja2_version = '3.1.6', macros_plugin_version = '1.3.7', mkdocs_version = '1.6.1', python_version = '3.15.2', system = 'Linux', system_version = '7.0.0-1019-azure' |
| extra | dict | consent = {'title': 'Cookie consent', 'description': " We use cookies to recognize your repeated visits and preferences, as well\n as to measure the effectiveness of our documentation and whether users\n find what they're searching for. With your consent, you're helping us to\n make our documentation better.\n", 'actions': ['accept', 'reject', 'manage']}, generator = True, polyfills = [], social = [{'icon': 'fontawesome/brands/github', 'link': 'https://github.com/maroph', 'name': 'github.com/maroph'}, {'icon': 'fontawesome/brands/mastodon', 'link': 'https://mastodon.social/@maroph', 'name': 'mastodon.social/@maroph'}] |
| files | list | [] |
| filters | dict | add_indentation [function], convert_to_md_table [function], fix_url [function], pretty [function] |
| filters_builtin | dict | abs [builtin_function_or_method], attr [function], batch [function], capitalize [function], center [function], count [builtin_function_or_method], d [function], default [function], dictsort [function], e [function], escape [function], filesizeformat [function], first [function], float [function], forceescape [function], format [function], groupby [function], indent [function], int [function], items [function], join [function], last [function], length [builtin_function_or_method], list [function], lower [function], map [function], max [function], min [function], pprint [function], random [function], reject [function], rejectattr [function], replace [function], reverse [function], round [function], safe [function], select [function], selectattr [function], slice [function], sort [function], string [function], striptags [function], sum [function], title [function], tojson [function], trim [function], truncate [function], unique [function], upper [function], urlencode [function], urlize [function], wordcount [function], wordwrap [function], xmlattr [function] |
| generator | bool | True |
| git | dict | author = 'Manfred Rosenboom', author_email = 'maroph@pm.me', commit = '31209b0abdeb86aa20b4ebb337973ba589bf5295', committer = 'Manfred Rosenboom', committer_email = 'maroph@pm.me', date [datetime], date_ISO = '2026-11-06T11:01:56+01:00', message = 'Upgrade to Zensical 0.1.0, extends build.bash', raw = 'commit 31209b0abdeb86aa20b4ebb337973ba589bf5295\nAuthor: Manfred Rosenboom maroph@pm.me\nDate: Fri Nov 6 11:01:56 2026 +0100\n\n Upgrade to Zensical 0.1.0, extends build.bash', root_dir = '/home/runner/work/zensical_sample/zensical_sample', short_commit = '31209b0', short_tag = '', status = True, tag = '' |
| joiner | type | (sep) A joining helper for templates. |
| lipsum | function | (n, html, min, max) Generate some lorem ipsum for the template. |
| macros | dict | context [function], macros_info [function], now [function], pd_read_csv [function], pd_read_excel [function], pd_read_feather [function], pd_read_fwf [function], pd_read_json [function], pd_read_table [function], pd_read_yaml [function], read_csv [function], read_excel [function], read_feather [function], read_fwf [function], read_json [function], read_raw [function], read_table [function], read_yaml [function] |
| macros_info | function | Display info about the macros environment, for debugging purposes. |
| namespace | type | (args, kwargs) A namespace object that can hold arbitrary attributes. It may be |
| navigation | list | [] |
| now | function | Return current datetime (datetime.now()). |
| page | Page | |
| pd_read_csv | function | |
| pd_read_excel | function | |
| pd_read_feather | function | |
| pd_read_fwf | function | |
| pd_read_json | function | |
| pd_read_table | function | |
| pd_read_yaml | function | |
| plugin | dict | force_render_paths = '', include_dir = '', include_yaml = ['data/variables.yml'], j2_block_end_string = '%}', j2_block_start_string = '{%', j2_comment_end_string = '#}', j2_comment_start_string = '{#', j2_extensions = [], j2_variable_end_string = '}}', j2_variable_start_string = '{{', module_name = 'main', modules = [], on_error_fail = True, on_undefined = 'strict', render_by_default = True, verbose = False |
| polyfills | _MacroList | [] |
| range | type | range(stop) -> range object |
| read_csv | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_excel | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_feather | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_fwf | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_json | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_raw | function | |
| read_table | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_yaml | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| social | _MacroList | [{'icon': 'fontawesome/brands/github', 'link': 'https://github.com/maroph', 'name': 'github.com/maroph'}, {'icon': 'fontawesome/brands/mastodon', 'link': 'https://mastodon.social/@maroph', 'name': 'mastodon.social/@maroph'}] |
| version | str | '1.0' |
| zensical_version | str | '0.1.0' |
Config Information
Standard configuration information. Do not try to modify.
e.g. {{ config.docs_dir }}
See also the MkDocs documentation on the config object.
| Variable | Type | Content |
|---|---|---|
| config_warnings | list | [] |
| copyright | str | 'Copyright © 2025-2026 CC-BY 4.0 by Manfred Rosenboom \nChange cookie settings\n' |
| dev_addr | str | 'localhost:8000' |
| docs_dir | str | 'docs' |
| draft_docs | NoneType | None |
| edit_uri | str | 'edit/main/docs' |
| edit_uri_template | NoneType | None |
| exclude_docs | str | '!.nojekyll\n!.well-known\n' |
| extra | dict | consent = {'title': 'Cookie consent', 'description': " We use cookies to recognize your repeated visits and preferences, as well\n as to measure the effectiveness of our documentation and whether users\n find what they're searching for. With your consent, you're helping us to\n make our documentation better.\n", 'actions': ['accept', 'reject', 'manage']}, generator = True, polyfills = [], social = [{'icon': 'fontawesome/brands/github', 'link': 'https://github.com/maroph', 'name': 'github.com/maroph'}, {'icon': 'fontawesome/brands/mastodon', 'link': 'https://mastodon.social/@maroph', 'name': 'mastodon.social/@maroph'}] |
| extra_css | list | ['assets/extra/css/extra.css'] |
| extra_javascript | list | [] |
| extra_templates | list | [] |
| markdown_extensions | list | [ |
| mdx_configs | dict | attr_list = {}, pymdownx.emoji = {'emoji_index': |
| mdx_configs_hash | int | 7915939333288663981 |
| nav | list | [{'title': 'Home', 'url': 'index.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': True, 'active': False}, {'title': 'Zensical', 'url': None, 'canonical_url': None, 'meta': None, 'children': [{'title': 'Config', 'url': 'zensical/config.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}, {'title': 'Get started', 'url': 'zensical/get_started.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}, {'title': 'Markdown in 5min', 'url': 'zensical/markdown.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}, {'title': 'Markdown Exec', 'url': 'zensical/exec.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}, {'title': 'Variables', 'url': 'zensical/variables.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}], 'is_index': False, 'active': False}, {'title': 'Blog', 'url': None, 'canonical_url': None, 'meta': None, 'children': [{'title': 'Blog', 'url': 'blog/index.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': True, 'active': False}], 'is_index': False, 'active': False}, {'title': 'Info', 'url': None, 'canonical_url': None, 'meta': None, 'children': [{'title': 'About', 'url': 'info/about.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}, {'title': 'License', 'url': 'info/license.md', 'canonical_url': None, 'meta': None, 'children': [], 'is_index': False, 'active': False}], 'is_index': False, 'active': False}] |
| not_in_nav | NoneType | None |
| plugins | dict | api_autonav = {'config': {'enabled': False, 'modules': [], 'module_options': {}, 'exclude': [], 'nav_section_title': 'API Reference', 'api_root_uri': 'reference', 'nav_item_prefix': '', 'exclude_private': True, 'show_full_namespace': False, 'on_implicit_namespace_package': 'warn'}}, autoapi = {'config': {'enabled': False, 'autoapi_dir': '.', 'autoapi_file_patterns': ['.py', '.pyi'], 'autoapi_ignore': [], 'autoapi_keep_files': False, 'autoapi_generate_api_docs': True, 'autoapi_add_nav_entry': True, 'autoapi_root': 'autoapi', 'handler': 'python'}}, awesome_nav = {'config': {'enabled': False, 'filename': '.nav.yml', 'logs': {'nav_override': None, 'root_title': None, 'root_hide': None, 'no_matches': None}}}, blogs = {'config': [{'name': 'blog', 'config': {'enabled': True, 'authors': True, 'blog_dir': 'blog', 'blog_toc': True, 'draft': False, 'draft_on_serve': False, 'draft_if_future_date': False, 'pagination': True, 'pagination_per_page': 10, 'pagination_url_format': 'page/{page}', 'post_date_format': 'MMMM dd, yyyy H:mm', 'pagination_if_single_page': False, 'post_excerpt': 'optional', 'post_excerpt_separator': '', 'post_readtime': False, 'archive': True, 'archive_name': 'Archive', 'archive_date_format': 'yyyy', 'archive_url_date_format': 'yyyy', 'archive_url_format': 'archive/{date}', 'archive_pagination': False, 'archive_toc': True, 'categories': False}}]}, exclude = {'config': {'enabled': False, 'glob': [], 'regex': []}}, literate_nav = {'config': {'enabled': False, 'nav_file': 'SUMMARY.md', 'implicit_index': False, 'tab_length': 4, 'markdown_extensions': [], 'mdx_configs': {}}}, llmstxt = {'config': {'enabled': False, 'autoclean': True, 'base_url': None, 'markdown_description': None, 'full_output': None, 'sections': []}}, macros = {'config': {'enabled': True, 'include_yaml': ['data/variables.yml'], 'on_undefined': 'strict', 'on_error_fail': True}}, markdown-exec = {'config': {}}, meta = {'config': {'enabled': True, 'meta_file': '.meta.yml'}}, minify = {'config': {'enabled': True, 'minify_html': True, 'minify_js': False, 'minify_css': False, 'htmlmin_opts': {'remove_comments': True, 'remove_empty_space': False, 'remove_all_empty_space': False, 'reduce_empty_attributes': True, 'reduce_boolean_attributes': False, 'remove_optional_attribute_quotes': True, 'convert_charrefs': True, 'keep_pre': False, 'pre_tags': ['pre', 'textarea'], 'pre_attr': 'pre'}, 'minify_inline_js': False, 'minify_inline_css': False, 'cache_safe': False, 'js_files': [], 'css_files': []}}, nav_weight = {'config': {'enabled': False, 'section_renamed': False, 'index_weight': -10, 'warning': True, 'reverse': False, 'headless_included': False, 'default_page_weight': 0}}, offline = {'config': {'enabled': False}}, optimize = {'config': []}, privacy = {'config': [{'name': 'privacy', 'config': {'enabled': True, 'concurrency': 3, 'cache': True, 'cache_dir': '.cache/plugin/privacy', 'log': True, 'log_level': 'info', 'assets': True, 'assets_fetch': True, 'assets_fetch_dir': 'assets/external', 'assets_include': [], 'assets_exclude': [], 'assets_expr_map': {}, 'links': True, 'links_attr_map': {}, 'links_noopener': True}}]}, redirects = {'config': {'enabled': False, 'redirect_maps': {}}}, rss = {'config': [{'name': 'rss', 'config': {'enabled': True, 'match_path': 'blog/posts/.*', 'abstract_chars_count': 160, 'abstract_delimiter': '', 'date_from_meta': {'as_creation': 'date', 'as_update': 'git', 'datetime_format': '%Y-%m-%d %H:%M', 'default_time': '12:00', 'default_timezone': 'Europe/Berlin'}, 'feed_description': 'My Zensical Sample Blog', 'feeds_filenames': {'json_created': 'feed_created.json', 'json_updated': 'feed_updated.json', 'rss_created': 'feed_created.xml', 'rss_updated': 'feed_updated.xml'}, 'feed_title': 'Blog', 'feed_ttl': 1440, 'image': 'assets/128px-Feed-icon.svg.png', 'json_feed_enabled': False, 'length': 10, 'pretty_print': True, 'rss_feed_enabled': True, 'stylesheet': 'auto', 'use_git': True, 'categories': [], 'comments_path': None, 'url_parameters': [], 'use_material_blog': True}}]}, search = {'config': {'enabled': True, 'separator': '[\s\-_,:!=\\\\"`/]+|\.(?!\d)'}}, social = {'config': []}, tags = |
| plugins_hash | int | 16467924340234153029 |
| remote_branch | str | 'gh-pages' |
| remote_name | str | 'origin' |
| repo_name | str | 'maroph/zensical_sample' |
| repo_url | str | 'https://github.com/maroph/zensical_sample' |
| root_dir | str | '/home/runner/work/zensical_sample/zensical_sample' |
| site_author | str | 'Manfred Rosenboom>' |
| site_description | str | "My Zensical sample site, using the features I'm mainly interested in.\n" |
| site_dir | str | 'site' |
| site_name | str | 'Zensical Sample Site' |
| site_url | str | 'https://maroph.github.io/zensical_sample/' |
| strict | bool | False |
| template_hash | int | 2923785779725867609 |
| theme | dict | custom_dir = None, direction = 'ltr', favicon = 'assets/great_wave_off_kanagawa_circle_64x64.png', features = ['announce.dismiss', 'content.action.edit', 'content.action.view', 'content.code.annotate', 'content.code.copy', 'content.code.select', 'content.footnote.tooltips', 'content.tabs.link', 'content.tooltips', 'header.autohide', 'navigation.expand', 'navigation.footer', 'navigation.indexes', 'navigation.instant', 'navigation.instant.prefetch', 'navigation.path', 'navigation.prune', 'navigation.sections', 'navigation.tabs', 'navigation.tabs.sticky', 'navigation.top', 'navigation.tracking', 'search.highlight', 'toc.follow'], font = False, font_explicit = True, icon = {'repo': 'fontawesome/brands/github', 'edit': 'material/pencil', 'view': 'material/eye', 'previous': 'fontawesome/solid/angle-left', 'next': 'fontawesome/solid/angle-right', 'logo_explicit': False, 'annotation': None, 'tag': {}, 'blog': {'back': 'lucide/arrow-left', 'date': 'lucide/calendar-days', 'date_updated': 'lucide/calendar-clock', 'categories': 'lucide/library', 'readtime': 'lucide/clock'}, 'logo': 'lucide/book-open', 'top': 'lucide/circle-arrow-up', 'share': 'lucide/share-2', 'menu': 'lucide/menu', 'alternate': 'lucide/languages', 'search': 'lucide/search', 'close': 'lucide/x', 'admonition': {}}, language = 'en', logo = 'assets/great_wave_off_kanagawa_circle_251x251.png', name = None, palette = [{'scheme': 'default', 'media': '(prefers-color-scheme: light)', 'toggle': {'icon': 'lucide/sun', 'name': 'Switch to dark mode'}, 'primary': None, 'accent': None}, {'scheme': 'slate', 'media': '(prefers-color-scheme: dark)', 'toggle': {'icon': 'lucide/moon', 'name': 'Switch to light mode'}, 'primary': None, 'accent': None}], static_templates = ['404.html', 'sitemap.xml'], variant = 'modern' |
| theme_dirs | list | ['/opt/hostedtoolcache/Python/3.15.2/x64/lib/python3.15/site-packages/zensical_ui/templates'] |
| use_directory_urls | bool | False |
| validation | dict | absolute_links_relative_to_docs = False, invalid_link_anchors = True, invalid_links = True, shadowed_definitions = False, shadowed_footnotes = False, unresolved_footnotes = False, unresolved_references = False, unused_definitions = False, unused_footnotes = False |
| watch | list | [] |
| watched_files | list | [('/home/runner/work/zensical_sample/zensical_sample/data/variables.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/.nojekyll', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/.well-known/security.txt', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/128px-Feed-icon.svg.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/cc-by_88x31.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/extra/css/extra.css', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/extra/css/jetbrains-mono-v18-latin_latin-ext-regular.woff2', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/great_wave_off_kanagawa_circle_251x251.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/assets/great_wave_off_kanagawa_circle_64x64.png', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/.authors.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/.meta.yml', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/index.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/blog/posts/first_post.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/index.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/info/about.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/info/license.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/config.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/exec.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/get_started.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/markdown.md', 1793959393), ('/home/runner/work/zensical_sample/zensical_sample/docs/zensical/variables.md', 1793959393)] |
Macros
These macros have been defined programmatically for this environment (module or pluglets).
| Variable | Type | Content |
|---|---|---|
| context | function | (obj) Display macros context (single object or all context). |
| macros_info | function | Display info about the macros environment, for debugging purposes. |
| now | function | Return current datetime (datetime.now()). |
| pd_read_csv | function | |
| pd_read_excel | function | |
| pd_read_feather | function | |
| pd_read_fwf | function | |
| pd_read_json | function | |
| pd_read_table | function | |
| pd_read_yaml | function | |
| read_csv | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_excel | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_feather | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_fwf | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_json | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_raw | function | |
| read_table | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
| read_yaml | function | (args, kwargs) Read data using pandas and convert it to a Markdown table. Keyword arguments are split and passed to the relevant pandas reader as well as dataframes' to_markdown() method. |
Git Information
Information available on the last commit and the git repository containing the documentation project:
e.g. {{ git.message }}
| Variable | Type | Content |
|---|---|---|
| author | str | 'Manfred Rosenboom' |
| author_email | str | 'maroph@pm.me' |
| commit | str | '31209b0abdeb86aa20b4ebb337973ba589bf5295' |
| committer | str | 'Manfred Rosenboom' |
| committer_email | str | 'maroph@pm.me' |
| date | datetime | datetime.datetime(2026, 11, 6, 11, 1, 56, tzinfo=datetime.timezone(datetime.timedelta(seconds=3600))) |
| date_ISO | str | '2026-11-06T11:01:56+01:00' |
| message | str | 'Upgrade to Zensical 0.1.0, extends build.bash' |
| raw | str | 'commit 31209b0abdeb86aa20b4ebb337973ba589bf5295\nAuthor: Manfred Rosenboom maroph@pm.me\nDate: Fri Nov 6 11:01:56 2026 +0100\n\n Upgrade to Zensical 0.1.0, extends build.bash' |
| root_dir | str | '/home/runner/work/zensical_sample/zensical_sample' |
| short_commit | str | '31209b0' |
| short_tag | str | '' |
| status | bool | True |
| tag | str | '' |
Page Attributes
Provided by MkDocs. These attributes change for every page (the attributes shown are for this page).
e.g. {{ page.title }}
See also the MkDocs documentation on the page object.
| Variable | Type | Content |
|---|---|---|
| meta | dict | |
| path | str | 'zensical/variables.md' |
| title | str | 'Variables' |
| url | str | 'zensical/variables.html' |
To have all titles of all pages, use:
{% for page in navigation.pages %}
- {{ page.title }}
{% endfor %}
Plugin Filters
These filters are provided as a standard by the macros plugin.
| Variable | Type | Content |
|---|---|---|
| add_indentation | function | (text, spaces, tabs) Indent text using spaces or tabs. |
| convert_to_md_table | function | (df, kwargs) Convert a pandas dataframe to a Markdown table. |
| fix_url | function | |
| pretty | function |
Builtin Jinja2 Filters
These filters are provided by Jinja2 as a standard.
See also the Jinja2 documentation on builtin filters.
| Variable | Type | Content |
|---|---|---|
| abs | builtin_function_or_method | (number) Return the absolute value of the argument. |
| attr | function | (environment, obj, name) Get an attribute of an object. foo\|attr("bar") works like |
| batch | function | (value, linecount, fill_with) A filter that batches items. It works pretty much like slice |
| capitalize | function | (s) Capitalize a value. The first character will be uppercase, all others |
| center | function | (value, width) Centers the value in a field of a given width. |
| count | builtin_function_or_method | (obj) Return the number of items in a container. |
| d | function | (value, default_value, boolean) If the value is undefined it will return the passed default value, |
| default | function | (value, default_value, boolean) If the value is undefined it will return the passed default value, |
| dictsort | function | (value, case_sensitive, by, reverse) Sort a dict and yield (key, value) pairs. Python dicts may not |
| e | function | (s) Replace the characters &, <, >, ', and " in |
| escape | function | (s) Replace the characters &, <, >, ', and " in |
| filesizeformat | function | (value, binary) Format the value like a 'human-readable' file size (i.e. 13 kB, |
| first | function | (environment, seq) Return the first item of a sequence. |
| float | function | (value, default) Convert the value into a floating point number. If the |
| forceescape | function | (value) Enforce HTML escaping. This will probably double escape variables. |
| format | function | (value, args, kwargs) Apply the given values to a printf-style_ format string, like |
| groupby | function | (environment, value, attribute, default, case_sensitive) Group a sequence of objects by an attribute using Python's |
| indent | function | (s, width, first, blank) Return a copy of the string with each line indented by 4 spaces. The |
| int | function | (value, default, base) Convert the value into an integer. If the |
| items | function | (value) Return an iterator over the (key, value) items of a mapping. |
| join | function | (eval_ctx, value, d, attribute) Return a string which is the concatenation of the strings in the |
| last | function | (environment, seq) Return the last item of a sequence. |
| length | builtin_function_or_method | (obj) Return the number of items in a container. |
| list | function | (value) Convert the value into a list. If it was a string the returned list |
| lower | function | (s) Convert a value to lowercase. |
| map | function | (context, value, args, kwargs) Applies a filter on a sequence of objects or looks up an attribute. |
| max | function | (environment, value, case_sensitive, attribute) Return the largest item from the sequence. |
| min | function | (environment, value, case_sensitive, attribute) Return the smallest item from the sequence. |
| pprint | function | (value) Pretty print a variable. Useful for debugging. |
| random | function | (context, seq) Return a random item from the sequence. |
| reject | function | (context, value, args, kwargs) Filters a sequence of objects by applying a test to each object, |
| rejectattr | function | (context, value, args, kwargs) Filters a sequence of objects by applying a test to the specified |
| replace | function | (eval_ctx, s, old, new, count) Return a copy of the value with all occurrences of a substring |
| reverse | function | (value) Reverse the object or return an iterator that iterates over it the other |
| round | function | (value, precision, method) Round the number to a given precision. The first |
| safe | function | (value) Mark the value as safe which means that in an environment with automatic |
| select | function | (context, value, args, kwargs) Filters a sequence of objects by applying a test to each object, |
| selectattr | function | (context, value, args, kwargs) Filters a sequence of objects by applying a test to the specified |
| slice | function | (value, slices, fill_with) Slice an iterator and return a list of lists containing |
| sort | function | (environment, value, reverse, case_sensitive, attribute) Sort an iterable using Python's :func: sorted. |
| string | function | (s) Convert an object to a string if it isn't already. This preserves |
| striptags | function | (value) Strip SGML/XML tags and replace adjacent whitespace by one space. |
| sum | function | (environment, iterable, attribute, start) Returns the sum of a sequence of numbers plus the value of parameter |
| title | function | (s) Return a titlecased version of the value. I.e. words will start with |
| tojson | function | (eval_ctx, value, indent) Serialize an object to a string of JSON, and mark it safe to |
| trim | function | (value, chars) Strip leading and trailing characters, by default whitespace. |
| truncate | function | (env, s, length, killwords, end, leeway) Return a truncated copy of the string. The length is specified |
| unique | function | (environment, value, case_sensitive, attribute) Returns a list of unique items from the given iterable. |
| upper | function | (s) Convert a value to uppercase. |
| urlencode | function | (value) Quote data for use in a URL path or query using UTF-8. |
| urlize | function | (eval_ctx, value, trim_url_limit, nofollow, target, rel, extra_schemes) Convert URLs in text into clickable links. |
| wordcount | function | (s) Count the words in that string. |
| wordwrap | function | (environment, s, width, break_long_words, wrapstring, break_on_hyphens) Wrap a string to the given width. Existing newlines are treated |
| xmlattr | function | (eval_ctx, d, autospace) Create an SGML/XML attribute string based on the items in a dict. |