Markata

Latest version: v0.9.0

Safety actively analyzes 707299 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

1.2

default light theme
color_bg_light = 'eefbfe'
color_bg_code_light = 'eefbfe'
color_text_light = '1f2022'
color_link_light = '47cbff'
color_accent_light = 'ffeb00'
overlay_brightness_light = '.95'


All New auto_description plugin

- Cache is busted on plugin change
- plugin is configurable
- plugin now has docs

auto_description Configuration

Open up your `markata.toml` file and add new entries for your
auto_descriptions. You can have multiple desriptions, each one will be named
after the key you give it in your config.

toml
[markata]
hooks=[
"markata.plugins.auto_description",
]

[markata.auto_description.description]
len=160
[markata.auto_description.long_description]
len=250
[markata.auto_description.super_description]
len=500


In the above we will end up with three different descritpions,
(`description`, `long_description`, and `super_description`) each will be the
first number of characters from the document as specified in the config.

auto_descriptions are no longer duplicated

4e299d6 fixes the dedupe issue that was in develop for a while and closes 24

0.9.0

- Feat: add skip plugin
- Fix: wikilinks uses a faster and more robust link lookup
- Feat: most plugins now only do work on posts not marked as skip
- Fix: wikilinks now give good error messages to show you which article is throwing the warning

Performance Improvements

Core Optimizations

- Added map cache with statistics tracking in Markata core
- Optimized template rendering with bytecode caching
- Parallelized markdown rendering and file loading
- Added configurable cache expiration times for different components

Component-specific Optimizations

- Updated auto_description to use markdown-it for better performance
- Improved date parsing with dateparser fallback
- Optimized post loading with bulk processing
- Modernized pydantic validators to use new field_validator syntax

0.8.2

- Fix: markata installs setuptools required by one dependency
- Fix: cleaup cli output
- Fix: speed up cli starup with some lazy imports
- Fix: all cache.adds were replaced with cache.set
- Fix: Updated to new typer format requiring name=
- Fix: teardown only runs if a the build process was started, i.e. some clis
will not need to teardown

0.8.1

Feeds have partials

The `feeds` plugin now has configurable `partial_template` that can be used to
render only the inside of the feeds page. This is indended to allow you to
load small feeds into a page with htmx.

Better Jinja Templates

Markata now fully supports jinja templates with a loader that will load from
your templates directory, the markata built-in templates, and from a
dynamically generated templates directory in your .markata.cache directory.

cli

You can list out your templates and configuration with the following command

bash
markata templates show


Variables

The following variables are available within jinja templates for post
templates. This is now consistent accross all three built in plugins that
render jinja templates.

post_template

- `__version__` - the version of markata
- `markata` - the markata instance
- `config` - the markata config
- `body` - the body of the post
- `post` - the current post object

feeds

Similarly from within rendering feeds.

- `__version__` - the version of markata
- `markata` - the markata instance
- `config` - the markata config
- `posts` - the list of posts
- `post` - a pseudo post object with title, slug, description, and date for template consistency
- `feed` - the current feed object

jinja_md

Similar to posts from within jinja_md to render a markdown post as a template.

- `__version__` - the version of markata
- `markata` - the markata instance
- `body` - the body of the post
- `config` - the markata config
- `post` - the current post object

Feeds cli

The feeds cli will help show which templates each feed will be using.

bash
❯ markata feeds show
Feeds 6
┏━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Feed ┃ posts ┃ config ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ project_gallery │ 2 │ DEFAULT_TITLE: All Posts │
│ │ │ title: Project Gallery │
│ │ │ slug: project-gallery │
│ │ │ name: project_gallery │
│ │ │ filter: 'project-gallery' in str(path) │
│ │ │ sort: title │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
│ docs │ 10 │ DEFAULT_TITLE: All Posts │
│ │ │ title: Documentation │
│ │ │ slug: docs │
│ │ │ name: docs │
│ │ │ filter: "markata" not in slug and "tests" not in slug and ... │
│ │ │ sort: slug │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
│ autodoc │ 17 │ DEFAULT_TITLE: All Posts │
│ │ │ title: AutoDoc Python Modules. │
│ │ │ slug: autodoc │
│ │ │ name: autodoc │
│ │ │ filter: "markata" in slug and "plugin" not in slug and "te... │
│ │ │ sort: slug │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
│ all │ 73 │ DEFAULT_TITLE: All Posts │
│ │ │ title: All Markata Modules │
│ │ │ slug: all │
│ │ │ name: all │
│ │ │ filter: True │
│ │ │ sort: date │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
│ core_modules │ 17 │ DEFAULT_TITLE: All Posts │
│ │ │ title: Markata Core Modules │
│ │ │ slug: core_modules │
│ │ │ name: core_modules │
│ │ │ filter: 'plugin' not in slug and 'test' not in slug and ti... │
│ │ │ sort: date │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
│ plugins │ 42 │ DEFAULT_TITLE: All Posts │
│ │ │ title: Markata Plugins │
│ │ │ slug: plugins │
│ │ │ name: plugins │
│ │ │ filter: 'plugin' in slug and 'test' not in slug │
│ │ │ sort: date │
│ │ │ reverse: False │
│ │ │ rss: True │
│ │ │ sitemap: True │
│ │ │ card_template: card.html │
│ │ │ template: feed.html │
│ │ │ rss_template: rss.xml │
│ │ │ sitemap_template: sitemap.xml │
│ │ │ xsl_template: rss.xsl │
│ │ │ │
└─────────────────┴───────┴───────────────────────────────────────────────────────────────┘

0.8.0

- pydantic support

Pydantic Support

Now plugins are configured through a pydantic Config object.

breaking changes

There are a number of breaking changes going into 0.8.0. Use caution when
upgrading.

glob config is now under markata.glob

diff
- [markata]
- glob_patterns = "pages/**/*.md"
+ [markata.glob]
+ glob_patterns = "pages/**/*.md"


Feeds are now a list

Feeds are now a list of Objects within the configuration that you choose from
whether its toml or yaml. Also templates_dir is now configurable, and once you
have a templates dir it is better to specify templates by name relative to your
templates_dir.

toml
[markata]
templates_dir = "pages/templates"

[markata.feeds.published]
template="archive_template.html"
card_template = "feed_card.html"
filter="date<=today and templateKey in ['blog-post', 'til'] and status.lower()=='published'"
sort="date"


> old

toml
[[markata.feeds.published]]
template="pages/templates/archive_template.html"
card_template = "pages/templates/feed_card.html"
filter="date<=today and templateKey in ['blog-post', 'til'] and status.lower()=='published'"
sort="date"


> new

markata.summary.filter_count is now a list

The old way was to set up a dict, where the keys were the name, now its a list
of Objects with an explicit name field.

toml
[markata.summary.filter_count.drafts]
filter="published == 'False'"
color='red'


> Old

toml
[[markata.summary.filter_count]]
name='drafts'
filter="published == 'False'"
color='red'

0.7.4

- Fix: Icon resize broken from PIL 10.0.0 release

Page 1 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.