It's actually the pre-decoration class, since the cell is initialised before the class is passed to the first decorator. I agree it's a little weird, but I did try to describe it accurately in the new docs.

--
Sent from my phone, thus the relative brevity :)

On Jun 5, 2012 7:52 AM, "PJ Eby" <pje@telecommunity.com> wrote:
On Sun, May 20, 2012 at 4:38 AM, Nick Coghlan <ncoghlan@gmail.com> wrote:
When writing the docs for types.new_class(), I discovered that the
description of the class creation process in the language reference
was not only hard to follow, it was actually *incorrect* when it came
to describing the algorithm for determining the correct metaclass.

I rewrote the offending section of the language reference to both
describe the correct algorithm, and hopefully also to be easier to
read. Once people have had a chance to review the changes in the 3.3
docs, I'll backport the update to 3.2.

Previous docs: http://docs.python.org/py3k/reference/datamodel.html#customizing-class-creation
Updated docs: http://docs.python.org/dev/reference/datamodel.html#customizing-class-creation

This is only sort-of-related, but while reviewing the above, the bit about __class__ caught my eye and brought this question to mind: how do class decorators interact with __class__?  Specifically, what happens (or more to the point, is *supposed* to happen and documented as such) if a class decorator returns a different class object?

PEP 3135 doesn't address this, AFAICT.  It refers only to "the class", but doesn't say whether this is the class-as-returned-by-decorator or original defined class.  (ISTM that it should be the decorated class, since otherwise this would be different behavior compared to code that explicitly named the class.)

(Oh, and the rewrite looked good!)