Changelogs » Atelier

PyUp Safety actively tracks 232,000 Python packages for vulnerabilities and notifies you when to upgrade.



  Changed default of :envvar:`test_command` to "python -m unittest discover -s tests".
  :mod:`atelier.invlib.tasks` now changes the current working directory to the
  project's :attr:`root_dir` before launching :envvar:`test_command`.
  (canceled on 20191122) When a :xfile:`tox.ini` file exists, the :cmd:`inv test`
  command now sets an environment variable :envvar:`REQ_VERSION` to the value
  "local" when calling tox.
  We realized that Atelier must not use tox. Atelier is meant to run within one
  virtual environment, tox is being used "outside" of atelier.
  (canceled on 20191122) The command :cmd:`inv cov` now runs :cmd:`inv test` before actually running the




  (canceled on 20191122) :cmd:`inv test` now simply calls tox if a file :xfile:`tox.ini` exists. To use
  the new way of testing, existing projects should:
  - add a :file:`tox.ini` file
  - rename :file:`` to :file:``
  - Add :file:`.tox` to the :xfile:`.gitignore` file.




  :func:`atelier.sphinxconf.interproject.configure` now supports intersphinx links
  to pure documentation projects.
  :func:`atelier.sphinxconf.interproject.configure` didn't collect the
  intersphinx_mapping for packages that had an :envvar:`intersphinx_urls` but were
  installed via PyPI.
  Add sphinx to the install_requires.


  When building the doc, raise an clear exception if we can't import the required package.
  Released version 1.1.16.
  When you instantiate a :class:`atelier.sheller.Sheller` without specifying a
  directory, it now creates a temporary directory and all processes run there.
  Until now they ran in the current working directory, which is pretty
  Released version 1.1.15.
  We have now two config settings for :cmd:`inv prep`: :envvar:`prep_command` and
  :envvar:`demo_prep_command`. :envvar:`demo_prep_command` is what
  :envvar:`prep_command` was until now (i.e. a command to run in every demo
  project). :envvar:`prep_command` (default empty) is now a command to run in the
  project's root directory.  First use case is `getlino
  <>`__. Both settings are meant to be
  customized in the projects :xfile:`` file.
  Released version 1.1.14.
  The :cmd:`pp -l` command no longer shows the doctrees. If you want to see them,
  change ``SHOW_DOCTREES`` in :mod:`atelier.projects` to `True`. Showing the
  doctrees causes the command to need about 7 seconds instead of one second (in my
  environment) because it also imports the :xfile:`` file of every doctree.
  Renamed inv configure`` to :cmd:`inv install`
  The default value for the :envvar:`editor_command` setting is now taken from
  the :envvar:`EDITOR` environment variable.
  Added a new command ``inv configure`` (which later became :cmd:`inv install`).
  Released version 1.1.13.
  The :cmd:`inv release` command no longer creates a version branch by default.
  If you want a branch, you must now say ``--branch``.
  Added support for multilingual Sphinx sites. When the :xfile:`` file of
  a Sphinx doctree defines a variable :attr:`translated_languages` (which is
  expected to be a list of language codes), then :cmd:`inv mm` and :cmd:`inv bd`
  now act accordingly.  This works only if you previously did ``pip install
  sphinx-intl``. You should add yourself interlanguage links.  The simplest way
  is to write a template :xfile:`languages.html` and add it to your
  - :cmd:`per_project -l` now shows the title of each doctree
  - interproject no longer stops loading after current project when no explicit
  project list is given.
  Fixed a bug in :mod:`atelier.sphinxcontrib.interproject` which caused it to not
  correctly set `intersphinx_mapping
  when local builds are being used. Intersphinx data in builds of other local
  projects is now being used by default if it exists.  To simulate the situation
  on Travis where they never exist, set an environment variable
  :envvar:`ATELIER_IGNORE_LOCAL_BUILDS` to the string "yes".
  The ``notag`` option of :cmd:`inv release` was renamed to ``nobranch``.
  Added a ``--reverse`` option to :command:`pp`.
  You can now run a command in all projects in the reversed order of what is
  defined in your :xfile:`~/.atelier/`.
  This is important if you maintain several projects whose docs use intersphinx
  to refer to each other. In such a context you will use the ``--reverse`` option
  for commands like :command:`inv bd` and :command:`inv pd`. You can then run a
  full pp tour as follows::
  $ pp -rv inv clean -b bd pd
  $ pp inv prep test
  Rule of thumb : project a must come before project b if
  - code in a requires code in b to be installed
  - docs in a require intersphinx references to docs of b


  (20181124) The :envvar:`intersphinx_urls` can now be specified in
  :xfile:`` for projects without a :attr:`main_module`.


  (20181105) changed the syntax of :envvar:`demo_projects`: instead of
  specifying paths (relative to the project's :attr:`root_dir`) we now
  specify them as Python modules.
  (20181102) added an option --only (or -o) to :cmd:`inv bd` and
  :cmd:`inv pd` because in book we have now already 4 doctrees and
  sometimes you might want to build only one of them.


  (20181029) The :cmd:`inv release` command now creates a *branch*
  instead of a *tag* (:ticket:`2599` ).


  (20180901) : The :cmd:`inv release` command now also pushes the
  version tag.  Tag creation can be skipped by specifying the new
  argument ``--notag``.
  (20180821) Added support for Sphinx version is 1.8 or later.
  :func:`atelier.sphinxconf.configure` now checks the Sphinx version and
  sets the new `autodoc_default_options
  configuration value instead of the deprecated `autodoc_default_flags
  (if Sphinx is 1.8 or newer).
  The :cmd:`inv clean` command now also removes :xfile:`.eggs`
  directories and :xfile:`__pycache__` directories.
  The :class:`DjangoTemplateBridge` from :mod:`atelier.sphinxconf` was
  not used and has been removed.
  (20180806) : The context variable ``{prj}`` in :envvar:`sdist_dir`
  must not be the :attr:`project_name
  <atelier.projects.Project.project_name>` but ``SETUP_INFO['name']``.
  (20180803) : :envvar:`sdist_dir` now supports a string template with a
  single context variable: ``{prj}`` will be replaced by the
  :attr:`project_name <atelier.projects.Project.project_name>`
  :func:`atelier.invlib.tasks.show_pypi_status` has a new optional
  argument `severe`.  Default value is True (same behaviour as before),
  but the :cmd:`inv sdist` command now calls with `severe=False`.
  (20180521) Bugfix: When the :xfile:`~/.atelier/` file
  contained an invalid project name (i.e. it calls
  :func:`atelier.projects.add_project` with a `root_dir` that doesn't
  exist), the project was being added to the list, but :cmd:`pp -l`
  AttributeError: 'NoneType' object has no attribute 'configuration'
  Now this configuration error will already raise an exception when
  reading the :xfile:`~/.atelier/` file, making it easier to


  (20180510) :func:`get_project_info_from_mod
  <atelier.projects.get_project_info_from_mod>` didn't yet work in
  environments without a local :xfile:`` file.  Such projects
  have neither a :xfile:`` file not a :xfile:`` file,
  but at least they have a :attr:`main_package
  <atelier.projects.Project.main_package>` (and that's what `intersphinx
  <>`__ needs).
  This fixes :ticket:`2385` (intersphinx does not find the `objects.inv`
  for :ref:`atelier` on Travis).


  More internal optimizations.  Fixed a bug which caused problems in
  :cmd:`per_project` with reading the configuration.


  The test suite generated by :func:`atelier.test.make_docs_suite` is
  now sorted alphabeticallly in order to avoid surprises when some
  doctest inadvertantly modifies a demo database or some other
  Fixed a bug in :xfile:`per_project`: commands starting with ``git``
  (e.g. :cmd:`pp git st`) would fail with a traceback.
  More internal optimizations, e.g. the :attr:`config` of a project now
  always has all keys.


  Fixes some bugs that caused failures when building docs on Travis.
  Versions 1.1.0 through 1.1.4 were beta previews for this.
  Backwards-incompatible new syntax for :xfile:`` files:
  from atelier.invlib.ns import ns
  ns.setup_from_tasks(globals(), ...)
  from atelier.invlib import setup_from_tasks
  ns = setup_from_tasks(globals(), ...)


  - New function :func:`atelier.utils.isidentifier`


  Better support for Python 2-3 compatible doctests:
  - Added a new function :func:`atelier.utils.sixprint`.
  - :func:`atelier.utils.rmu` now honors Mike Orr's :class:`unipath.Path`
  objects which happen to print differently under Python 3.


  New optional parameter addenv for


  Better Python 3 support and increased test coverage.




  Several tasks in :mod:`atelier.invlib` used to call hard-coded
  `python`, but on certain CI environments the Python executable has
  another name. Replaced by :attr:`sys.executable`.


  Changed configuration API for demo_projects: I moved the definition of
  :envvar:`demo_projects` from Lino to :mod:`atelier.invlib` and changed
  the syntax: the itema of :envvar:`demo_projects` must now be directory
  names (and no longer names of Django settings modules).


  DocTestCase removes PYTHONPATH from environment. Fixes 1296.


  New functions :func:`atelier.utils.isiterable` and


  - Fixes some Python 3 issues.


  - A minor but backwards-incompatible optimization of the modules below
  :mod:`atelier.invlib` requires changes in the :xfile:`` file
  of every project which uses Atelier.


  - The :cmd:`inv ls` command has been replaced by a ``--list`` option
  to :cmd:`per_project`.  (:blogref:`20160814`)
  - :cmd:`inv sdist` now creates the archive file directly in
  `sdist_dir` and no longer in a subdir thereof (using the project
  - Worked on :cmd:`inv cov`.


  - Fixes :message:`TypeError: setup_from_tasks() got an unexpected
  keyword argument 'demo_projects'`. Thanks to Grigorij for reporting
  the problem.


  - Support the new `pyinvoke <>`__ version 0.13
  (`released 10 days ago <>`_).
  :mod:`atelier.invlib` now works with both versions. Thanks to James
  for reporting problem and solution.


  - First satisfying API and docs for :doc:`/invlib`


  - Most :cmd:`fab` commands now work as :cmd:`inv`.
  - Fixed a bug which caused :message:`TypeError:
  object.__new__(NotImplementedType) is not safe, use


  - New functions :func:`atelier.utils.dict_py2`,
  :func:`atelier.utils.list_py2` and :func:`atelier.utils.tuple_py2` are
  required for Lino's test suite.


  - New function :func:`atelier.utils.last_day_of_month`.


  - Subtle change in :attr:`docs_rsync_dest
  <atelier.fablib.env.docs_rsync_dest>`: until now it was not possible
  to specify a template without any placeholder (as the one in the
  example on
  - Started to replace fabric by invoke. This is not finished. For the
  moment you should continue to use the ``fab`` commands. But soon
  they will be replaced by ``inv`` commands.


  - :mod:`atelier.fablib` no longer tries to import
  `django.utils.importlib`. (Dropped support for Python 2.6)
  - Fixed :ticket:`553`. The :cmd:`fab bd` command failed to call
  :meth:`load_fabfile <atelier.projects.Project.load_fabfile>` when
  trying to write the `README.rst` file. This didn't disturb anybody
  until now because I have a :xfile:`~/.atelier/` file (and
  when you have such a file, all projects are automatically loaded,
  including :meth:`load_fabfile
  - Fixed :ticket:`533`. :cmd:`fab bd` failed when the repository was in
  a directory using a symbolic link because Python got hassled when
  importing the main module. :mod:`atelier.projects` now resolves the


  New setting :attr:`atelier.fablib.env.locale_dir`. Until now
  :command:`fab mm` always wrote the locale files into a subdirectory of
  the main module. Now a project can specify an arbitrary location. This
  was necessary for Django 1.7 where you cannot have plugins named
  `` if you also have a plugin whose full name is `foo`
  New function `atelier.rstgen.attrtable`.


  Importing :mod:`atelier` now automatically adds a codecs writer to
  `sys.stdout`.  As a consequence, :mod:`atelier.doctest_utf8` is no
  longer needed.


  Fixed a bug in :meth:`atelier.test.TestCase.run_subprocess` which
  could cause a subprocess to deadlock when it generated more output
  than the OS pipe buffer would swallow.
  :class:`JarBuilder <atelier.jarbuilder.JarBuilder>` is now in a
  separate module, the usage API is slightly changed. Signing with a
  timestamp is now optional, and the URL of the TSA can be configured.


  Getting Lino to build on Travis CI.  Once again I changed the whole
  system of declaring demo projects. The parameter to
  :func:`atelier.fablib.add_demo_project` must be a Django settings
  module, it cannot be a path.  And
  :func:`atelier.fablib.run_in_demo_projects` must set the current
  working directory to the :attr:`cache_dir
  <>`, not the :attr:`project_dir


  - Users of :mod:`atelier.fablib` who used "demo databases" (which we
  now call "Django demo projects", see
  :attr:`atelier.fablib.env.demo_projects`) must adapt their
  :xfile:`` as described in :blogref:`20150129`.
  - New configuration setting :attr:`atelier.fablib.env.editor_command`.


  Fixes a problem for generating the calendar view of a
  :rst:dir:`blogger_year`: the cell for December 29, 2014 was not
  clickable even when a blog entry existed.


  - :cmd:`fab blog` failed when the user had only :envvar:`VISUAL` but
  not :envvar:`EDITOR` set (:blogref:`20141227`).
  - :cmd:`fab blog` failed when the directory for the current year
  didn't yet exist.  Now it automatically wishes "Happy New Year",
  creates both the directory and the default :file:`index.rst` file
  for that year.
  - Removed :srcref:`scripts/` which has now `its own
  repository <>`_.
  - :srcref:`scripts/per_project` no longer stumbles over projects whose
  `revision_control_system` is None.


  - `fab_commands` can now be invoked from a subdirectory of the
  project's root. And :mod:`atelier.projects` now supports to work in
  undeclared projects even if there is a :xfile:`` file.
  - New method :meth:`shell_block
  - `fab docs` renamed to :cmd:`fab bd`, `fab pub` renamed to :cmd:`fab pd`


  This is a bugfix release for 0.0.6 which fixes one bug::
  [localhost] local: git tag -a 0.0.6 -m Release atelier 0.0.6.
  fatal: too many params


  - The :cmd:`fab release` now also does `git tag`.
  - The :cmd:`fab release` command now reminds me of the things to check
  before a release, communicates with PyPI and displays information
  about the last official release.
  - Improved the documentation.




  - Fixed `AttributeError: work_root` occuring when there was
  no `work_root` in user's :xfile:`.fabricrc` file.
  The `work_root` env setting is no longer used.
  - (:blogref:`20140117`) atelier now supports namespace packages
  (and thus the :cmd:`fab summary` fablib command no longer prints "old" and
  "new" version because that would require the Distribution object
  (returned from `pkg_resources.get_distribution`) which afaics makes
  problems for namespace packages.
  -   (:blogref:`20130623`)
  didn't yet support non-ascii characters.
  Now it does.
  Had to add a new module :mod:`atelier.doctest_utf8`
  for this.
  Because we need to run each doctest in a separate subprocess
  and because the command-line interface
  of `python -m doctest`  has no way to specify an encoding
  of the input file.
  - :func:`atelier.sphinxconf.configure` now
  automatically adds the intersphinx entries
  for projects managed in this atelier.
  - The `PROJECTS` variable in `/etc/atelier/` is now a list of
  importable Python module names, and their local path will be
  automatically extracted.
  No longer necessary to define a `PROJECTS_HOME`
  - `per_project` no longer inserts "fab" as first command.
  - Renamed `atelier.test.SubProcessTestCase` to `atelier.test.TestCase`.
  Moved Django-specific methods away to a new module


  - `atelier.test.SubProcessTestCase.run_docs_doctests`
  now activates the Site's default language for each testcase
  (when :mod:`north` is available)


  - This project was split out of
  `djangosite <>`_ in
  April 2013.
  See :blogref:`20130410`.