← Back to team overview

touch-packages team mailing list archive

[Bug 1333512] Re: Failing to import module breaks logging configurability and adds noise

 

This bug was fixed in the package pygobject - 3.12.0-1ubuntu1

---------------
pygobject (3.12.0-1ubuntu1) trusty-proposed; urgency=medium

  * Add 00upstream-importerror-logging.patch: Raise ImportError when importing
    modules not found in repository, instead of logging to stderr. The former
    matches the behaviour of "import" in general, and the latter breaks the
    possibility of configuring "logging" in your program, as any call to
    basicConfig() would happen after the import statements. (LP: #1333512)
 -- Martin Pitt <martin.pitt@xxxxxxxxxx>   Wed, 25 Jun 2014 08:14:43 +0200

** Changed in: pygobject (Ubuntu Trusty)
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to pygobject in Ubuntu.
https://bugs.launchpad.net/bugs/1333512

Title:
  Failing to import module breaks logging configurability and adds noise

Status in Python bindings for GObject:
  Fix Released
Status in “pygobject” package in Ubuntu:
  Fix Released
Status in “pygobject” source package in Trusty:
  Fix Released
Status in “pygobject” source package in Utopic:
  Fix Released

Bug description:
  When failing to import a module the gi.repository import.py module logs an error with `logging.error(..)` causing a logging handler to be added.
  This basically breaks the ability to configure the logging as it happens so early (i.e. at the import stage before an authors code is executed).

  To reproduce/Example:

  Run this script: http://pastebin.ubuntu.com/7698632/

  Expected outcome:
  No output to stdout or stderr and the text "log message" in the file "/tmp/example.log

  Actual outcome:
  No log file, and this text output to stderr:
    ERROR:root:Could not find any typelib for rubbish
    ERROR:root:log message

  Upstream fix:
  https://git.gnome.org/browse/pygobject/commit/?id=ac8b59e

  Regression potential:
  - The behaviour of raising ImportError on a nonexisting name does not change, but its text changes.
    Old: ImportError: cannot import name 'foo'
    New: ImportError: cannot import name foo, introspection typelib not found

    It's unlikely, however theoretically possible that a program matches
  on the precise error message.

  - It's theoretically possible that a program watches for the logged
  error message and ignores the ImportError. However, that would be
  extremely bad design, un-Pythonic and brittle as the logging
  format/destination can be changed arbitrarily.

  In summary the regression potential is very low.

  
  Ubuntu Version:
  Description:	Ubuntu 14.04 LTS
  Release:	14.04

  Package Version:
  python3-gi 3.12.0-1

To manage notifications about this bug go to:
https://bugs.launchpad.net/pygobject/+bug/1333512/+subscriptions