================================== 20130411 (Thursday, 11 April 2013) ================================== One of the "details" which need work before Lino can become industrial is due to the fact that I invented the :lino:`"using" directory trick ` before Django's `staticfiles `_ became available (or before I discovered it). TODO: - Move :file:`/lino/lino/media` to :file:`/lino/lino/ui/static` - Replace "/media/" by "/static" in the relevant places (e.g. :mod:`lino.ui.urls`) - Have Lino manage the settings `STATIC_URL `_, `STATIC_ROOT `_ and `STATICFILES_DIRS `_ - Start using the `collectstatic `_ and `findstatic `_ commands. - Adapt documentation. UnicodeDecodeError in Python 2.6 standard logging ------------------------------------------------- I sometimes see the following traceback in my `error.log`:: [Wed Apr 10 16:18:12 2013] [error] Traceback (most recent call last): [Wed Apr 10 16:18:12 2013] [error] File "/usr/lib/python2.6/logging/__init__.py", line 776, in emit [Wed Apr 10 16:18:12 2013] [error] msg = self.format(record) [Wed Apr 10 16:18:12 2013] [error] File "/usr/lib/python2.6/logging/__init__.py", line 654, in format [Wed Apr 10 16:18:12 2013] [error] return fmt.format(record) [Wed Apr 10 16:18:12 2013] [error] File "/usr/lib/python2.6/logging/__init__.py", line 436, in format [Wed Apr 10 16:18:12 2013] [error] record.message = record.getMessage() [Wed Apr 10 16:18:12 2013] [error] File "/usr/lib/python2.6/logging/__init__.py", line 306, in getMessage [Wed Apr 10 16:18:12 2013] [error] msg = msg % self.args [Wed Apr 10 16:18:12 2013] [error] UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 45: ordinal not in range(128) Okay, there's probably some bug in my code which asks to log a non-unicode string with non-ascii characters. But where? The traceback unfortunately gives no hint about this. I tried to reproduce this error using things like:: # -*- coding: UTF-8 -*- import logging logging.warning('Watch out!') logging.warning('Watch out, %s!', "Mike") logging.warning('Regarde, %s!', "Jürgen") No success. I then edited the `/usr/lib/python2.6/logging/__init__.py`, line 306:: if self.args: msg = msg % self.args Changed the above to:: if self.args: try: msg = msg % self.args except UnicodeDecodeError,e: raise UnicodeDecodeError("Failed to decode %r" % self.args) So now I hope that when it happens again I can at least see what it was trying to decode... TypeError: 'NoneType' object is not iterable -------------------------------------------- Another bug due to recent changes (pluggable UI) occured only in a multi-threaded situation:: Traceback (most recent call last): File "/usr/local/pythonenv/demo/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 255, in __call__ response = self.get_response(request) File "/usr/local/pythonenv/demo/lib/python2.6/site-packages/django/core/handlers/base.py", line 178, in get_response response = self.handle_uncaught_exception(request, resolver, sys.exc_info()) File "/usr/local/pythonenv/demo/lib/python2.6/site-packages/django/core/handlers/base.py", line 220, in handle_uncaught_exception if resolver.urlconf_module is None: File "/usr/local/pythonenv/demo/lib/python2.6/site-packages/django/core/urlresolvers.py", line 342, in urlconf_module self._urlconf_module = import_module(self.urlconf_name) File "/usr/local/pythonenv/demo/lib/python2.6/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "/home/luc/hgwork/lino/lino/ui/urls.py", line 55, in settings.SITE.ui.setup_ui_plugin() File "/home/luc/hgwork/lino/lino/ui/ui.py", line 163, in setup_ui_plugin for res in actors.actors_list: TypeError: 'NoneType' object is not iterable Test suite for Lino-Welfare --------------------------- Converted the last test suite (Lino-Welfare) to the new system using `setup.py test` instead of `fab test`. Note: It was a mistake to implement these tests using fab because (1) it was not possible to run only individual tests (an important thing when you are working on a particular test case) and (2) it was not the standard method and thus not visible to tools who run a test suite of a package automatically. OTOH I'm still grateful to fabric who helped me discover these testing methods. A command to test them all -------------------------- And now finally: I wrote a bash command `rt` (for "run tests") which runs the test suites of all my projects at once. When no suite fails, it says:: All tests passed (for projects atelier site north lino welfare) Congratulations! Currently they are five, but there will be more. Similar commands `mad` ("make all docs") and `all_ci`. And now I can go to sleep :-)