[Python-Dev] Breaking undocumented API

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Mon Nov 8 23:35:53 CET 2010


On 09:57 pm, brett at python.org wrote:
>On Mon, Nov 8, 2010 at 13:45, <exarkun at twistedmatrix.com> wrote:
>>On 09:25 pm, brett at python.org wrote:
>>>>>>On Mon, Nov 8, 2010 at 13:03,  <exarkun at twistedmatrix.com> wrote:
>>>>>>>>On 07:58 pm, brett at python.org wrote:
>>>>>>>>>>>>I don't think a strict don't remove without deprecation policy is
>>>>>>workable.  For example, is trace.rx_blank constant part of the 
>>>>>>trace
>>>>>>module API that needs to be preserved indefinitely?  I don't even 
>>>>>>know
>>>>>>if it is possible to add a deprecation warning to it, but
>>>>>>CoverageResults._blank_re would certainly be a better place for 
>>>>>>it.
>>>>>>>>>>The deprecation policy obviously cannot apply to module-level
>>>>>attributes.
>>>>>>>>I'm not sure why this is.  Can you elaborate?
>>>>>>There is no way to directly trigger a DeprecationWarning for an
>>>attribute. We can still document it, but there is just no way to
>>>programmatically enforce it.
>>>>What about `deprecatedModuleAttribute`
>>(<http://twistedmatrix.com/documents/current/api/twisted.python.deprecate.html>)
>>or zope.deprecation
>>(<http://docs.zope.org/zope3/Book/deprecation/show.html>) which 
>>inspired it?
>>Just checked the code and it looks like it substitutes the module for
>some proxy object? To begin that break subclass checks. After that I
>don't know the ramifications without really digging into the
>ModuleType code.

That could be fixed if ModuleType allowed subclassing. :)
For what it's worth, no one has complained about problems caused by 
`deprecatedModuleAttribute`, but we've only been using it for about two 
and a half years.
Jean-Paul


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /