On Sun, Nov 22, 2009 at 5:19 PM, Florent Hivert
<florent.hiv...@univ-rouen.fr> wrote:
>      Hi there,
>
>> Regarding deprecation, we already hashed this out in a previous thread
>> quite some time ago.
>>
>>   * Use the official deprecation(...) function when deprecating a function.
>>
>>   * We can tell precisely what is deprecated and when by simply
>> looking at the source code and using the revision control system
>> and/or comments in the source code.  Thus it's completely unnecessary
>> bureaucracy to require people to open extra tickets just for this, as
>> was suggested elsewhere in this thread.
>>
>>   * After one year we are allowed to remove deprecated code, but we
>> only actually do so at major releases (e.g., 5.0, 6.0, 7.0 etc.)
>> Thus Sage-5.0 *will* remove deprecated code that was deprecated at
>> least a year ago.
>
> Speaking about deprecation, I posted a patch #7515 which does two things:
>
> 1 - Add an option called ``version`` do deprecation where you can put the
> information on since which version of sage this thing was deprecated:
>
>        sage: def bar():
>        ...    sage.misc.misc.deprecation("The function bar is removed.",
>        ...         'Sage Version 4.2, Release Date: 2009-10-24')
>        sage: bar()
>        doctest:...: DeprecationWarning: (Since Sage Version 4.2, Release 
> Date: 2009-10-24) The function bar is removed.
>
> Note: This does noting than gluing the two strings, but this prompt the writer
> of the function to insert this information at the right place. For backward
> compatibility, This is only optional.

That's a good idea, and will make it easier to remove deprecated code
after a given time limit.

>
> 2 - When renaming a function or method, you can use deprecated_function_alias
> or deprecated_method_alias to keep the function under the old name:
>
>        sage: from sage.misc.misc import deprecated_method_alias
>        sage: class cls(object):
>        ...      def new_meth(self): return 42
>        ...      old_meth = deprecated_method_alias(new_meth,
>        ...            'Sage Version 42.132, Release Date: 5123-04-01')
>        sage: cls().old_meth()
>        doctest:...: DeprecationWarning: (Since Sage Version 42.132, Release 
> Date: 5123-04-01) old_meth is deprecated. Please use new_meth instead.
>        42
>
> I thinks both idea might be helpful. Anyone against this design ? Or any
> better idea ? In particular, if someone has a better name for
> deprecated_method_alias and deprecated_function_alias (actually both are the
> same)...

I prefer  deprecated_function_alias if it also works on methods.

William

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to