:date: 2017-11-29
============================
Wednesday, November 29, 2017
============================
Coverage and Python 2/3 compatibility
=====================================
Toshio Kuratomi wrote a nice little recipe about `Better unittest
coverage stats: excluding code that only executes on Python 2/3
`__.
My summary:
With the following config in :xfile:`.coveragerc`::
[report]
exclude_lines=
pragma: no cover
pragma: no py${PYTEST_PYMAJVER} cover
we can write code like this::
if six.PY3: # pragma: no py2 cover
stdout = sys.stdout.buffer
else: # pragma: no py3 cover
stdout = sys.stdout
Locally modifying a choicelist
==============================
It is easy to locally extend a choicelist. Here is an example taken
from an :ref:`amici` production site.
In your local :xfile:`settings.py` file, define a custom
:attr:`user_types_module `::
...
class Site(Site):
user_types_module = 'mysite.user_types'
...
Then create a file :file:`user_types.py` with the following content::
from lino_amici.lib.amici.user_types import *
from lino_xl.lib.phones.choicelists import ContactDetailTypes, STD
add = ContactDetailTypes.add_item_instance
add(STD('080', "Eesti isikukood", "id_ee"))
add(STD('081', "Belgian NISS", "id_be"))