Changes in atelier, rstgen and sphinxfeed


inv install no longer fails when the repository has no requirements.txt file.

New command inv pull pulls the latest changes, including those from upstream if there is one. Runs either “git pull” or “git fetch upstream” followed by “git merge upstream/master”.


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?