Backwards-incompatible changes ============================== LazyObject ---------- ``LazyObject`` is an undocumented utility class used for lazily wrapping other objects of unknown type. In Django 1.1 and earlier, it handled introspection in a non-standard way, depending on wrapped objects implementing a public method ``get_all_members()``. Since this could easily lead to name clashes, it has been changed to use the standard method, involving ``__members__`` and ``__dir__()``. If you used ``LazyObject`` in your own code, and implemented the ``get_all_members()`` method for wrapped objects, you need to make the following changes: * If your class does not have special requirements for introspection (i.e. you have not implemented ``__getattr__()`` or other methods that allow for attributes not discoverable by normal mechanisms), you can simply remove the ``get_all_members()`` method. The default implementation on ``LazyObject`` will do the right thing. * If you have more complex requirements for introspection, first rename the ``get_all_members()`` method to ``__dir__()``. This is the standard method, from Python 2.6 onwards, for supporting introspection. If you are require support for Python < 2.6, add the following code to the class:: __members__ = property(lambda self: self.__dir__())