Changes in atelier, rstgen and sphinxfeed


Fixed #5562 (Sphinx warning “cannot cache unpickable configuration value”). rstgen.sphinxconf.configure() now sets suppress_warnings to ['config.cache', 'image.nonlocal_uri'].


New command-line option inv prep --verbose. For temporary use in book as part of #5542 (Two VAT doctests fail because generated VAT numbers differ).


per_project caused an argh.assembling.ArgumentNameMappingError with newer versions of argh because there had been some breaking changes


New variable default_branch.


It is now possible to have a README.rst that is not getting overwritten by inv bd (more precisely by by inv readme, which is triggered by by inv bd): when your long_description starts with "====", then inv readme won’t care about overwriting your README.rst.


New function rstgen.sphinxconf.sigal_image.parse_image_spec() will be used also by the [image] memo command in Lino.


When specifying --start or --after to the inv prep command, you must now give only the last part of the project name. Instead of saying inv prep -a lino_book.projects.cosi5 you must now say inv prep -a cosi5.


The sigal_image directive has a new format “tiny”.


atelier.invlib.tasks.run_in_demo_projects(), when called with bare=True, (inconsistently) returned None when there were no demo projects.


Release to pypi: rstgen.


The inv test command now calls doctest with REPORT_ONLY_FIRST_FAILURE.


Fixed a bug that caused PosixPath has no attribute ‘format’

Release to pypi


test_command: now runs python -m unittest discover -s tests only when a directory named tests exists. Because under certain circumstances (Python 3.10?) unittest discover also searches the whole PYTHONPATH for a package named tests and that’s not what we want to happen.


Release to PyPI: atelier


The inv prep command now accepts a new option --after.


Fix NameError("name 'lng' is not defined")

Release to PyPI: rstgen


The inv prep command now runs less verbosely. It prints the output of each subprocess only when it failed. The inv install command has a new command line interface.


New attribute atelier.projects.Project.published and a method atelier.projects.Project.set_published().

Fixed #4558 (sphinxfeed links don’t work when use_dirhtml is true). This also required changes in our branch of sphinxfeed, which now depends on rstgen.

sigal_image now uses height 10em instead of width 30% for specifying the size of thumbnail images.


Miscellaneous bugfixes and optimizations after 2022-05-24

Released atelier and rstgen to PyPI.


Move some utility functions from atelier.utils to rstgen.utils (because we don’t want makehelp on a Lino production site to depend on atelier): dict_py2, list_py2, tuple_py2, rmu and sixprint

Release to PyPI.

Also move atelier.sphinxconf to rstgen.sphinxconf.

Release to PyPI.


Add a new button template languages-button.html for insipid theme.

Release to PyPI.


Try a quick workaround for supporting language ‘et’ by modifying docutils.languages.LanguageImporter.packages (didn’t work).

Release to PyPI.


The sigal_image directive with format thumb now sets the width of the image to “30%” instead of “280pt”. Because “280pt” didn’t yield a good result on a mobile device.


Bugfix: The count didn’t restart at 1 for each new document.


New role count.

Removed the link to source code of a module in the autodoc API (because in Sphinx 4.4 it caused warnings like …lino/lino/ of lino:25: WARNING: hardcoded link ‘…/master/lino/’ could be replaced by an extlink (try using ‘(source lino/’ instead) )

Release to PyPI : atelier 1.1.41


The refstothis directive now supports multiple targets.


New config setting multiple_blog_entries_per_day.

New config setting rsync_command.


The inv pd command now uses the –omit-dir-times option of rsync.


Added a new command inv update-fixtures and a new config key fixtures_updater.


Added an option --batch for inv release.


Added two new flags on inv install of the form inv install --list (which installs the required python packages and also list and writes them into requirements-install.txt) and inv install --list-only (the later is self explanatory).


Release to PyPI : atelier 1.1.40


Fixed a misbehaviour that caused atelier to fail with Sphinx 4: avoid extlinks with an empty url template.


Bugfix: atelier.projects.Project.get_xconfig(): ignored the hard-coded default values for projects with a main_module that was installed from PyPI (i.e. without a file).

Release to PyPI: atelier 1.1.39


rstgen.sphinxconf.configure() no longer imposes a hard-coded theme. When you set html_theme before calling configure, then it fills default values to html_theme_options for four themes (insipid, alabaster, pydata and rtd). The default value is insipid.


Fix a packaging issue that caused sphinx build warnings “html_static_path entry ‘…/site-packages/atelier/sphinxconf/static’ does not exist” when atelier was not installed from source code.

Release to PyPI: atelier 1.1.38


Miscellaneous changes since 2021-05-03 regarding the documentation framework. Add dependency to gitpython. See git history for details.

The rstgen.sphinxconf.configure() now adds the ‘sphinx.ext.autodoc’ and ‘sphinx.ext.autosummary’ extensions only when the project’s SETUP_INFO contains a ‘name’ key. It’s a good thing to avoid loading autodoc when it is not needed, but this didn’t fix my problem.

Release to PyPI: atelier 1.1.37


Release to PyPI: atelier 1.1.36


The per_project command is now packaged using entry_points (no longer using scripts). One advantage is that it doesn’t break when atelier is installed from a clone using pip install -e and the version number changes. The srcref_url is no longer used.

Release to PyPI: atelier 1.1.35

Fix failure when public_url is unknown.


Oops, the templates were not included in the 1.1.32 and 1.1.33 pip packages.

Release to PyPI: atelier 1.1.33 and 1.1.34


New project setting make_docs_command.

Release to PyPI: atelier 1.1.32


Calling rstgen.sphinxconf.configure() in a Sphinx file now also supports usage of selectable_languages, and the insipid theme is now activated.

Release to PyPI: atelier 1.1.31


When selectable_languages is given, inv bd will now automatically loop over the source directories. Removed the configuration setting build_docs_command because it is no longer needed.

The inv check command now detects more inconsistencies.


Release to pypi: atelier 1.1.30.


Calling rstgen.sphinxconf.configure() in a Sphinx file now also adds the project’s SETUP_INFO to the html_context.


Calling rstgen.sphinxconf.configure() in a Sphinx file now also sets atelier.current_project. New project config option selectable_languages. Miscellaneous internal optimizations. New experiemental command inv check to detect certain types of configuration errors.


Bugfix: After creating a new blog entry with inv blog, it didn’t touch the year index file. Note that you still need to manually touch the file that contains your blogger_latest directive in order to have the new blog entry get listed there.


Added a new directive blogger_latest in

Moved from GitHub to GitLab. New project home page is

Release version 1.1.29 to PyPI.


Fixed AttributeError: ‘PosixPath’ object has no attribute ‘set_times’.


atelier.test.make_docs_suite() now supports multiple exclude patterns.

rstgen now also uses pathlib instead of unipath.


New configuration setting build_docs_command. New directive cards. Change unipath to pathlib. Remove unipath dependency. Improve support for long language codes.

Release version 1.1.28 to PyPI.


New command-line option –dirty for per_project to show only projects with a dirty git status.

The inv clean command no longer asks for every individual .pyc file, just one OK to remove <count> __pycache__ directories?