# Monday, July 25, 2016¶

## Bugfix: running commands with options per_project¶

When running a command on all projects using per_project, then it was no longer possible to run commands with arguments. For example:

$pp inv ci --today 20160724 usage: per_project [-h] [-s START] [-u UNTIL] [cmd [cmd ...]] per_project: error: unrecognized arguments: --today 20160724  This was a case for nargs=argparse.REMAINDER. ## Help texts¶ Ticket #985. starts to give first visible results. I am still discovering the general workflow. I fixed a design flaw: there was only one target per project doctree, but e.g. the doctree of The Lino Book must write a help_texts.py file to both lino.modlib.lino_startup and lino_xl.lib.xl. I realized that it must not be a builder but a perfectly normal extension which just listens to the html builder and writes its files when that builder finishes. I renamed the lino.sphinxcontrib.help_text_builder module into lino.sphinxcontrib.help_texts_extractor I removed the inv bh command since it is no longer needed. The help_texts.py is automatically created at the end of inv bd (though only when all documents have been parsed during that build, i.e. only after inv clean) A last thing to observe is project interdependency: since the help texts for lino and xl are being updated only when book is being built, there might be side effects for the projects in between. That is, I cannot simply run: $ pp inv clean bd pd prep test


But must split them at least into these:

$pp inv clean bd pd$ pp inv prep test


The most time-consuming part of this ticket is of course yet to do: convert existing code so that it uses the new feature.

## Developer’s Guide¶

Grigorij reported more problems in Writing your own Python fixtures.

The examples in this document were indeed very outdated and failed completely. I invested 3 hourse to give it a profound review, moved it to a directory on its own and added test cases. Actually the filename “dumpy” should also change.

## AttributeError: ‘module’ object has no attribute ‘chdir’¶

Build 439 fails on drone.io with the following error:

$python --version Python 2.7.3$ pip --version
pip 1.4.1 from /home/ubuntu/virtualenv/python2.7/lib/python2.7/site-packages (python 2.7)
$pip install -U setuptools Downloading/unpacking setuptools from https://pypi.python.org/packages/0a/f0/904432438dda1b4ed33c668392756bb45ae25a945458dd34d8215e68bdd7/setuptools-25.0.1.zip#md5=ce37e9e9f395a97fcf3ce3f1babb1f98 Running setup.py egg_info for package setuptools Traceback (most recent call last): File "<string>", line 16, in <module> File "/home/ubuntu/virtualenv/python2.7/build/setuptools/setup.py", line 194, in <module> here and os.path.chdir(here) AttributeError: 'module' object has no attribute 'chdir' Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 16, in <module> File "/home/ubuntu/virtualenv/python2.7/build/setuptools/setup.py", line 194, in <module> here and os.path.chdir(here) AttributeError: 'module' object has no attribute 'chdir'  The same command on my machine works fine: $ pip install -U setuptools
Collecting setuptools