Release history#
4.9.1 - 2023-11-15#
Ensure
tzdata
dependency is installed on Windows
4.9.0 - 2023-11-12#
Upgrade code to new minimum supported Python version: 3.8
Settings support for
pathlib.Path
(#2758)Use Furo as Sphinx documentation theme (#3023)
Default to 100 articles maximum in feeds (#3127)
Add
period_archives common context
variable (#3148)Use
watchfiles
as the file-watching backend (#3151)Add GitHub Actions workflow for GitHub Pages (#3189)
Allow dataclasses in settings (#3204)
Switch build tool to PDM instead of Setuptools/Poetry (#3220)
Provide a
plugin_enabled
Jinja test for themes (#3235)Preserve connection order in Blinker (#3238)
Remove social icons from default
notmyidea
theme (#3240)Remove unreliable
WRITE_SELECTED
feature (#3243)Importer: Report broken embedded video links when importing from Tumblr (#3177)
Importer: Remove newline addition when iterating Photo post types (#3178)
Importer: Force timestamp conversion in Tumblr importer to be UTC with offset (#3221)
Importer: Use tempfile for intermediate HTML file for Pandoc (#3221)
Switch linters to Ruff (#3223)
4.8.0 - 2022-07-11#
4.7.2 - 2022-02-09#
4.7.1 - 2021-10-12#
Extend rich logging to server component (#2927)
Fix an issue where metadata flagged to be discarded was being cached (#2926)
Adjust suffix in server to allow redirection when needed (#2931)
Add MIME types for web fonts (#2929)
Distribute sample data used to run tests (#2935)
Add Python 3.10 to test matrix
4.7.0 - 2021-10-01#
Improve default theme rendering on mobile and other small screen devices (#2914)
Add support for hidden articles (#2866)
Improve word count behavior when generating summary CJK & other locales (#2864)
Add progress spinner during generation (#2869) and richer logging (#2897), both via Rich
Invoke tasks
serve
andlivereload
now auto-open a web browser pointing to the locally-served web site (#2764)Support some date format codes used by ISO dates (#2902)
Document how to add a new writer (#2901)
4.6.0 - 2021-03-23#
4.5.4 - 2021-01-04#
Replace plugin definitions in settings with string representations after registering, so they can be cached correctly (#2828).
4.5.3 - 2020-12-01#
Fix a mistake made in PR #2821
4.5.2 - 2020-11-22#
Improve logging of generators and writer loaders
4.5.1 - 2020-11-02#
4.5.0 - 2020-08-20#
Add namespace plugin support; list plugins via
pelican-plugins
commandOverride settings via
-e
/--extra-settings
CLI option flagsAdd settings for custom Jinja globals and tests
Customize article summary ellipsis via
SUMMARY_END_SUFFIX
settingCustomize Typogrify dash handling via new
TYPOGRIFY_DASHES
settingSupport Unicode when generating slugs
Support Asciidoc
.adoc
file generation in Pelican importerImprove user experience when
pelican --listen
web server is quitImprove Invoke tasks template
Include tests in source distributions
Switch CI from Travis to GitHub Actions
Remove support for Python 2.7
4.2.0 - 2019-10-17#
Support inline SVGs; don’t treat titles in SVGs as HTML titles
Add category to feeds (in addition to tags)
Improve content metadata field docs
Add docs for including other Markdown/reST files in content
4.1.3 - 2019-10-09#
Fix quick-start docs regarding
pelican --listen
Set default listen address to 127.0.0.1
Add extra/optional Markdown dependency to setup.py
Use correct SSH port syntax for rsync in tasks.py
Place all deprecated settings handling together
Add related project URLs for display on PyPI
Skip some tests on Windows that can’t pass due to filesystem differences
4.1.2 - 2019-09-23#
Fix pelican.settings.load_source to avoid caching issues - PR #2621
4.1.1 - 2019-08-23#
Add AutoPub to auto-publish releases on PR merge
Add CSS classes for reStructuredText figures
Pass
argv
to Pelicanmain
entrypointSet default content status to a blank string rather than
None
4.1.0 - 2019-07-14#
Live browser reload upon changed files (provided via Invoke task)
Add
pyproject.toml
, managed by PoetrySupport for invoking
python -m pelican
Add relative source path attribute to content
Allow directories in
EXTRA_PATH_METADATA
Add
all_articles
variable to period pages (for recent posts functionality)Improve debug mode output
Remove blank or duplicate summaries from Atom feed
Fix bugs in pagination, pelican-import, pelican-quickstart, and feed importer
4.0.1 (2018-11-30)#
Refactor
pelican.server
loggingFix bug in which all static files were processed as “draft”
Bug fixes for Invoke/Makefile automation, Importer, and other miscellanea
If upgrading from 3.7.x or earlier, please note that slug-related settings in
4.0+ use {slug}
and/or {lang}
rather than %s
. If %s
-style
settings are encountered, Pelican will emit a warning and fall back to the
default setting. Some user-submitted themes might try to format setting values
but fail upon site build with a TypeError
. In such cases, the theme needs
to be updated. For example, instead of TAG_FEED_ATOM|format(tag.slug)
, use
TAG_FEED_ATOM.format(slug=tag.slug)
4.0.0 (2018-11-13)#
Replace
develop_server.sh
script withpelican --listen
Improved copy/link behavior for large static files (e.g., videos)
New
{static}
syntax to link to static content; content linked to by{static}
and{attach}
is automatically copied over even if not inSTATIC_PATHS
Pages can now have
draft
statusShow current settings via new
--print-settings
flagAll settings for slugs now use
{slug}
and/or{lang}
rather than%s
. If%s
-style settings are encountered, Pelican will emit a warning and fallback to the default setting.New signals:
feed_generated
andpage_generated_write_page
Replace Fabric with Invoke and
fabfile.py
template withtasks.py
Replace
PAGINATED_DIRECT_TEMPLATES
byPAGINATED_TEMPLATES
, extending control over pagination to all templates and making page size variableReplace
SLUG_SUBSTITUTIONS
(and friends) bySLUG_REGEX_SUBSTITUTIONS
for more finegrained control'{base_name}'
value inPAGINATION_PATTERNS
setting no longer strips'bar'
from'foo/bar.html'
(unless'bar' == 'index'
).ARTICLE_ORDER_BY
andPAGE_ORDER_BY
now also affect 1) category, tag and author pages 2) feeds 3) draft and hidden articles and pagesNew
ARTICLE_TRANSLATION_ID
andPAGE_TRANSLATION_ID
settings to specify metadata attributes used to identify/disable translationsMake the HTML reader parse multiple occurrences of metadata tags as a list
New Blogger XML backup importer
Wordpress importer now updates file links to point to local copies if the files were downloaded with
--wp-attach
.Importer no longer inserts extra newlines, to prevent breaking of HTML attributes.
Pelican server now prioritises
foo.html
andfoo/index.html
overfoo/
when resolvingfoo
.
3.7.1 (2017-01-10)#
Fix locale issues in Quickstart script
Specify encoding for README and CHANGELOG in setup.py
3.7.0 (2016-12-12)#
Atom feeds output
<content>
in addition to<summary>
Atom feeds use
<published>
for the original publication date and<updated>
for modificationsSimplify Atom feed ID generation and support URL fragments
Produce category feeds with category-specific titles
RSS feeds now default to summary instead of full content; set
RSS_FEED_SUMMARY_ONLY = False
to revert to previous behaviorReplace
MD_EXTENSIONS
withMARKDOWN
settingReplace
JINJA_EXTENSIONS
with more-robustJINJA_ENVIRONMENT
settingImprove summary truncation logic to handle special characters and tags that span multiple lines, using HTML parser instead of regular expressions
Include summary when looking for intra-site link substitutions
Link to authors and index via
{author}name
and{index}
syntaxOverride widget names via
LINKS_WIDGET_NAME
andSOCIAL_WIDGET_NAME
Add
INDEX_SAVE_AS
option to override defaultindex.html
valueRemove
PAGES
context variable for themes in favor ofpages
SLUG_SUBSTITUTIONS
now accepts 3-tuple elements, allowing URL slugs to contain non-alphanumeric charactersTag and category slugs can be controlled with greater precision using the
TAG_SUBSTITUTIONS
andCATEGORY_SUBSTITUTIONS
settingsAuthor slugs can be controlled with greater precision using the
AUTHOR_SUBSTITUTIONS
settingDEFAULT_DATE
can be defined as a stringUse
mtime
instead ofctime
whenDEFAULT_DATE = 'fs'
Add
--fatal=errors|warnings
option for use with continuous integrationWhen using generator-level caching, ensure previously-cached files are processed instead of just new files.
Add Python and Pelican version information to debug output
Improve compatibility with Python 3.5
Comply with and enforce PEP8 guidelines
Replace tables in settings documentation with
data::
directives
3.6.3 (2015-08-14)#
Fix permissions issue in release tarball
3.6.2 (2015-08-01)#
Fix installation errors related to Unicode in tests
Don’t show pagination in
notmyidea
theme if there’s only one pageMake hidden pages available in context
Improve URLWrapper comparison
3.6.0 (2015-06-15)#
Disable caching by default in order to prevent potential confusion
Improve caching behavior, replacing
pickle
withcpickle
Allow Markdown or reST content in metadata fields other than
summary
Support semicolon-separated author/tag lists
Improve flexibility of article sorting
Add
--relative-urls
argumentSupport devserver listening on addresses other than localhost
Unify HTTP server handlers to
pelican.server
throughoutHandle intra-site links to draft posts
Move
tag_cloud
from core to pluginLoad default theme’s external resources via HTTPS
Import drafts from WordPress XML
Improve support for Windows users
Enhance logging and test suite
Clean up and refactor codebase
New signals:
all_generators_finalized
andpage_writer_finalized
3.5.0 (2014-11-04)#
Introduce
ARTICLE_ORDER_BY
andPAGE_ORDER_BY
settings to control the order of articles and pages.Include time zone information in dates rendered in templates.
Expose the reader name in the metadata for articles and pages.
Add the ability to store static files along with content in the same directory as articles and pages using
{attach}
in the path.Prevent Pelican from raising an exception when there are duplicate pieces of metadata in a Markdown file.
Introduce the
TYPOGRIFY_IGNORE_TAGS
setting to add HTML tags to be ignored by Typogrify.Add the ability to use
-
in date formats to strip leading zeros. For example,%-d/%-m/%y
will now result in the date9/8/12
.Ensure feed generation is correctly disabled during quickstart configuration.
Fix
PAGE_EXCLUDES
andARTICLE_EXCLUDES
from incorrectly matching sub-directories.Introduce
STATIC_EXCLUDE
setting to add static file excludes.Fix an issue when using
PAGINATION_PATTERNS
whileRELATIVE_URLS
is enabled.Fix feed generation causing links to use the wrong language for month names when using other locales.
Fix an issue where the authors list in the simple template wasn’t correctly formatted.
Fix an issue when parsing non-string URLs from settings.
Improve consistency of debug and warning messages.
3.4.0 (2014-07-01)#
Speed up content generation via new caching mechanism
Add selective post generation (instead of always building entire site)
Many documentation improvements, including switching to prettier RtD theme
Add support for multiple content and plugin paths
Add
:modified:
metadata field to complement:date:
. Used to specify the last date and time an article was updated independently from the date and time it was published.Add support for multiple authors via new
:authors:
metadata fieldWatch for changes in static directories when in auto-regeneration mode
Add filters to limit log output when desired
Add language support to drafts
Add
SLUGIFY_SOURCE
setting to control how post slugs are generatedFix many issues relating to locale and encoding
Apply Typogrify filter to post summary
Preserve file metadata (e.g. time stamps) when copying static files to output
Move AsciiDoc support from Pelican core into separate plugin
Produce inline links instead of reference-style links when importing content
Improve handling of
IGNORE_FILES
setting behaviorProperly escape symbol characters in tag names (e.g.,
C++
)Minor tweaks for Python 3.4 compatibility
Add several new signals
3.3.0 (2013-09-24)#
Drop Python 3.2 support in favor of Python 3.3
Add
Fabfile
so Fabric can be used for workflow automation instead of MakeOUTPUT_RETENTION
setting can be used to preserve metadata (e.g., VCS data such as.hg
and.git
) from being removed from output directoryTumblr import
Improve logic and consistency when cleaning output folder
Improve documentation versioning and release automation
Improve pagination flexibility
Rename signals for better consistency (some plugins may need to be updated)
Move metadata extraction from generators to readers; metadata extraction no longer article-specific
Deprecate
FILES_TO_COPY
in favor ofSTATIC_PATHS
andEXTRA_PATH_METADATA
Summaries in Markdown posts no longer include footnotes
Remove unnecessary whitespace in output via
lstrip_blocks
Jinja parameterMove PDF generation from core to plugin
Replace
MARKUP
setting withREADERS
Add warning if img tag is missing
alt
attributeAdd support for
{}
in relative links syntax, besides||
Add support for
{tag}
and{category}
relative linksAdd a
content_written
signal
3.2.1 and 3.2.2#
Facilitate inclusion in FreeBSD Ports Collection
3.2 (2013-04-24)#
Support for Python 3!
Override page save-to location from meta-data (enables using a static page as the site’s home page, for example)
Time period archives (per-year, per-month, and per-day archives of posts)
Posterous blog import
Improve WordPress blog import
Migrate plugins to separate repository
Improve HTML parser
Provide ability to show or hide categories from menu using
DISPLAY_CATEGORIES_ON_MENU
optionAuto-regeneration can be told to ignore files via
IGNORE_FILES
settingImprove post-generation feedback to user
For multilingual posts, use meta-data to designate which is the original and which is the translation
Add
.mdown
to list of supported Markdown file extensionsDocument-relative URL generation (
RELATIVE_URLS
) is now off by default
3.1 (2012-12-04)#
Importer now stores slugs within files by default. This can be disabled with the
--disable-slugs
option.Improve handling of links to intra-site resources
Ensure WordPress import adds paragraphs for all types of line endings in post content
Decode HTML entities within WordPress post titles on import
Improve appearance of LinkedIn icon in default theme
Add GitHub and Google+ social icons support in default theme
Optimize social icons
Add
FEED_ALL_ATOM
andFEED_ALL_RSS
to generate feeds containing all posts regardless of their languageSplit
TRANSLATION_FEED
intoTRANSLATION_FEED_ATOM
andTRANSLATION_FEED_RSS
Different feeds can now be enabled/disabled individually
Allow for blank author: if
AUTHOR
setting is not set, author won’t default to${USER}
anymore, and a post won’t contain any author information if the post author is emptyMove LESS and Webassets support from Pelican core to plugin
The
DEFAULT_DATE
setting now defaults toNone
, which means that articles won’t be generated unless date metadata is specifiedAdd
FILENAME_METADATA
setting to support metadata extraction from filenameAdd
gzip_cache
plugin to compress common text files into a.gz
file within the same directory as the original file, preventing the server (e.g. Nginx) from having to compress files during an HTTP callAdd support for AsciiDoc-formatted content
Add
USE_FOLDER_AS_CATEGORY
setting so that feature can be toggled on/offSupport arbitrary Jinja template files
Restore basic functional tests
New signals:
generator_init
,get_generators
, andarticle_generate_preread
3.0 (2012-08-08)#
Refactored the way URLs are handled
Improved the English documentation
Fixed packaging using
setuptools
entrypointsAdded
typogrify
supportAdded a way to disable feed generation
Added support for
DIRECT_TEMPLATES
Allow multiple extensions for content files
Added LESS support
Improved the import script
Added functional tests
Rsync support in the generated Makefile
Improved feed support (easily pluggable with Feedburner for instance)
Added support for
abbr
in reSTFixed a bunch of bugs :-)
2.8 (2012-02-28)#
Dotclear importer
Allow the usage of Markdown extensions
Themes are now easily extensible
Don’t output pagination information if there is only one page
Add a page per author, with all their articles
Improved the test suite
Made the themes easier to extend
Removed Skribit support
Added a
pelican-quickstart
scriptFixed timezone-related issues
Added some scripts for Windows support
Date can be specified in seconds
Never fail when generating posts (skip and continue)
Allow the use of future dates
Support having different timezones per language
Enhanced the documentation
2.7 (2011-06-11)#
Use
logging
rather than echoing to stdoutSupport custom Jinja filters
Compatibility with Python 2.5
Added a theme manager
Packaged for Debian
Added draft support
2.6 (2011-03-08)#
Changes in the output directory structure
Makes templates easier to work with / create
Added RSS support (was Atom-only)
Added tag support for the feeds
Enhance the documentation
Added another theme (brownstone)
Added translations
Added a way to use cleaner URLs with a rewrite url module (or equivalent)
Added a tag cloud
Added an autoreloading feature: the blog is automatically regenerated each time a modification is detected
Translate the documentation into French
Import a blog from an RSS feed
Pagination support
Added Skribit support
2.5 (2010-11-20)#
Import from WordPress
Added some new themes (martyalchin / wide-notmyidea)
First bug report!
Linkedin support
Added a FAQ
Google Analytics support
Twitter support
Use relative URLs, not static ones
2.4 (2010-11-06)#
Minor themes changes
Add Disqus support (so we have comments)
Another code refactoring
Added config settings about pages
Blog entries can also be generated in PDF
2.3 (2010-10-31)#
Markdown support
2.2 (2010-10-30)#
Prettify output
Manages static pages as well
2.1 (2010-10-30)#
Make notmyidea the default theme
2.0 (2010-10-30)#
Refactoring to be more extensible
Change into the setting variables
1.2 (2010-09-28)#
Added a debug option
Added per-category feeds
Use filesystem to get dates if no metadata is provided
Add Pygments support
1.1 (2010-08-19)#
First working version