On 31 October 2010 10:09, Robert Bradshaw <[email protected]> wrote:
> On Sat, Oct 30, 2010 at 11:09 PM, Stefan Behnel <[email protected]> wrote:
>> Robert Bradshaw, 31.10.2010 04:34:
>>> On Sat, Oct 30, 2010 at 2:12 PM, Lisandro Dalcin wrote:
>>>> On 30 October 2010 22:16, Stefan Behnel wrote:
>>>>> a while ago, we had agreed that a "final" directive would be nice to have
>>>>> for cdef classes. I implemented the basics for that (i.e. "final" types 
>>>>> are
>>>>> no longer subclassable from Python), and I also added an "internal"
>>>>> directive that prevents a type from appearing in the module dict. So you
>>>>> can now write something like this for a type that you only use internally
>>>>> in your module:
>>>>>
>>>>>     @cython.final
>>>>>     @cython.internal
>>>>>     cdef class _MyInternalType:
>>>>>        ...
>>>>>
>>>>> http://trac.cython.org/cython_trac/ticket/263
>>>>> http://trac.cython.org/cython_trac/ticket/585
>>>>>
>>>>
>>>> Many thanks for this, Stefan!
>>
>> I'm as happy as you are.
>>
>>
>>>>> I think the "final" directive name was pretty much agreed on, but what
>>>>> about the "internal" directive? Any objections to that?
>>>>
>>>> Perhaps "private" ? I still prefer "internal".
>>>
>>> I'd lean towards "private" but that's not a strong preference.
>>
>> I may be mistaken, but it looks like we don't actually use "private"
>> anywhere in the language so far. I thought we did, but it currently seems
>> to be a purely internal visibility marker. So to me, "internal" makes as
>> much sense as "private".
>>
>> Robert, if you want me to change it, just say so clearly. ;)
>>
>>
>>  > I also
>>  > don't think such a feature is strictly necessary and complicates the
>>  > language, but wouldn't stand in its way if I'm the only one.
>>
>> I just wrote a patch for lxml.etree that adds one or both of the decorators
>> where they make sense. (I won't apply it right away as the next release is
>> hopefully closer than the next release of Cython, but I'll keep it around
>> for one of the next releases after Cython 0.13.1.)
>>
>> It turns out that out of the 117 extension types in lxml.etree, 39 would be
>> happy about at least one of the decorators: 30x final and 36x internal. So
>> almost every third class is an internal one. Most of them are context
>> classes that are passed through C in one way or another and that are used
>> by internal callback code. Pure implementation details that no user should
>> ever mess around with or even care about.
>
> What about using the
>
> [cdef] class A:
>    ...
>
> del A
>
> idiom that people use for pure Python?
>

I have to admit that this looks even simpler.


-- 
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to