PyGObject 3.3.3 released

I released PyGObject 3.3.3.

The most notable changes are that you can now access methods (and other identifiers) which are Python keywords, PyGObject automatically escapes them now by appending a ‘_’. For example, you can now call myGdkWindow.raise_() or GLib.Thread.yield_() instead of having to resort to the previous workaround getattr(myGdkWindow, 'raise')().

This version also restores the deprecated get_data() and set_data() methods. They were never really meant to be used from Python programs, they can potentially mess up your program and cause crashes, and do not give you anything that regular Python object properties would not already provide in a much safer way (i. e. just write my_obj.foo = 'bar' instead of my_obj.set_data('foo', 'bar')). Apparently some software projects are using them, so they will now raise a deprecation warning and be removed for the GNOME 3.8 cycle instead.

Thanks to all contributors!

Complete list of changes:

  • Remove obsolete release-tag make target (Martin Pitt)
    • Do not do any python calls when GObjects are destroyed after the python interpreter has been finalized (Simon Schampijer) (#678046)
      • Do not change constructor-only “type” Window property (Martin Pitt) (#678510)
        • Escape identifiers which are Python keywords (Martin Pitt) (#676746)
          • Fix code for PEP-8 violations detected by the latest pep8 checker. (Martin Pitt)
            • Fix crash in GLib.find_program_in_path() (Martin Pitt) (#678119)
              • Revert “Do not bind gobject_get_data() and gobject_set_data()” (Martin Pitt) (#641944)
                • GVariant: Raise proper TypeError on invalid tuple input (David Keijser) (#678317)
                Update:Just released 3.3.3.1 to fix a regresssion from the keyword escaping patch. It also escaped enum and flags names, but as they are translated to upper case they are never keywords.