Yeah, I like the idea, including the part about just changing the
namespace instead of the name.

I think @deprecated is still relevant.  My suggested API for it will
have to be extended for this case.  But don't worry about that, as it
hasn't even been implemented yet (unless you want to implement it!).
For now, you should just manually explain it in the deprecation
message.

Aaron Meurer

On Tue, Jan 10, 2012 at 11:33 AM, [email protected]
<[email protected]> wrote:
> OK, unless there are arguments against this, I'll add the needed issues to
> the issue tracker and start working on this.
>
>
> On 10 January 2012 19:31, Vladimir Perić <[email protected]> wrote:
>>
>> On Tue, Jan 10, 2012 at 7:16 PM, [email protected]
>> <[email protected]> wrote:
>> > The first proposition by Vladimir sounds good and is almost the same as
>> > the
>> > one discussed. The difference is the following: for him the differences
>> > in
>> > old/new modules is the name of the plotting class. For me the name is
>> > the
>> > same, "Plot", but the paths are different. I think it's a good idea to
>> > have
>> > different names. So I propose the following:
>> >
>> > sympy+1 : NewPlot (points to newplot.Plot), Plot (deprecated, points to
>> > pygletplot.PygletPlot which is the old Plot)
>> > sympy+2: NewPlot (deprecated), Plot (which was newplot.Plot), PygletPlot
>> > rests in pygletplot if someone prefers it
>> > sympy+3: NewPlot gets deleted. Plot is the class from my module,
>> > PygletPlot
>> > rests in pygletplot if someone prefers it
>>
>> This sounds good to me. Our release schedule is slow enough, but if we
>> get faster suddenly we can always support it for more versions. In
>> particular, I think it might be a good idea to shift the second two
>> steps to sympy+3 and sympy+4, respectively (so there's even more time
>> for users to switch, and more time for us to fix up the API if
>> needed).
>>
>> >
>> > Or we test for a few months the new plotting module in git and break the
>> > api
>> > without deprecation. It's probably a bad idea.
>> >
>> > I'll wait for the opinion of our BDsFL :)
>> >
>> >
>> > On 10 January 2012 18:56, Vladimir Perić <[email protected]> wrote:
>> >>
>> >> On Tue, Jan 10, 2012 at 5:46 PM, [email protected]
>> >> <[email protected]> wrote:
>> >> > Thanks for the details.
>> >> >
>> >> > There is still a small problem. The class Plot won't be removed from
>> >> > sympy.
>> >> > It will be replaced by another class with different api and the old
>> >> > class
>> >> > will be moved to a submodule. Should I still use @deprecated?
>> >> >
>> >> > Or maybe you are against this type of deprecation (replacing and
>> >> > moving)? My
>> >> > opinion is that it's the right way to do it, but it was discussed
>> >> > only a
>> >> > bit.
>> >>
>> >> You are right, this is a somewhat different situation. However, Plot
>> >> is really important and we need to have both implementations in
>> >> parallel (at least for a while). Not having any experience in such
>> >> matters, this is how I would handle it:
>> >>
>> >> 1) Implement new Plot as PlotNew or whatever
>> >> 2) Deprecate Plot and say it should be replaced by PlotNew, but not
>> >> change anything; also say the module will continue to live as PlotOld
>> >> (some versions later)
>> >> 3) Move Plot to PlotOld, mark it as deprecated; move PlotNew to Plot,
>> >> and "deprecate" PlotNew in favor of Plot
>> >> (some more versions later)
>> >> 4) Finally remove PlotOld and the redirect from PlotNew to Plot
>> >>
>> >> In my mind this gives the smoothest "upgrade" path for users: nothing
>> >> will suddenly fail (which would happen if you just move Plot to
>> >> PlotOld and add the new Plot in-place), and the users will know that
>> >> they will have to change things (but actually, they'll have to change
>> >> two times -> once to PlotNew, and once when PlotNew finally gets
>> >> removed in favor of Plot).
>> >>
>> >> The other solution is like we now plan to do it: move Plot to PlotOld,
>> >> drop the new Plot as Plot, remove PlotOld sometime in the future. It's
>> >> simpler, but it will cause immediate breakage with the new version
>> >> (albeit easily flexible). I guess this solution is better if we are
>> >> sure the new Plot module is rock solid, but I'm just not sure we can
>> >> give it such thorough testing.
>> >>
>> >> Or I'm just overthinking it all. :)
>> >>
>> >> >
>> >> >
>> >> > On 10 January 2012 11:13, Vladimir Perić <[email protected]>
>> >> > wrote:
>> >> >>
>> >> >> On Tue, Jan 10, 2012 at 11:05 AM, Aaron Meurer <[email protected]>
>> >> >> wrote:
>> >> >> > We recently implemented SymPyDeprecationWarning in
>> >> >> > sympy.core.compatibility.  This is preferred over just a normal
>> >> >> > DeprecationWarning, as it will show up in isympy regardless of
>> >> >> > Python
>> >> >> > version (later versions of Python disable DeprecationWarning by
>> >> >> > default). You can use the @deprecated decorator in
>> >> >> > sympy.core.decorators, which will use this.
>> >> >> >
>> >> >> > This still needs work, by the way.  We should standardize it in
>> >> >> > the
>> >> >> > warning and decorator to put in a version number where the feature
>> >> >> > will be removed, and automatically generate a deprecation string
>> >> >> > based
>> >> >> > on that.  Something along the lines of
>> >> >> >
>> >> >> > @deprecated(last_version='0.7.4', use_instead='other thing',
>> >> >> > see_also="http://code.google.com/p/sympy/issues/detail?id=NNN";)
>> >> >> > def myfunc(...):
>> >> >> >
>> >> >> > which would produce, SymPyDeprecationWarning("The function myfunc
>> >> >> > is
>> >> >> > deprecated, and will be removed after version 0.7.4 (you are
>> >> >> > currently
>> >> >> > using 0.7.1-git). Use other thing instead.  See
>> >> >> > http://code.google.com/p/sympy/issues/detail?id=NNNN.";).
>> >> >>
>> >> >> I agree with all this. If I get the chance, I'll work on it. There's
>> >> >> an issue for this:
>> >> >>
>> >> >> https://code.google.com/p/sympy/issues/detail?id=2142
>> >> >>
>> >> >> As Aaron says in the issue, it would be really nice to have this
>> >> >> before the next release.
>> >> >>
>> >> >> >
>> >> >> > Also, the corresponding issue (NNNN) would get the
>> >> >> > Milestone-Release0.7.5 tag so that we remember to remove it before
>> >> >> > that release.
>> >> >> >
>> >> >> > Aaron Meurer
>> >> >> >
>> >> >> > On Mon, Jan 9, 2012 at 3:33 PM, [email protected]
>> >> >> > <[email protected]> wrote:
>> >> >> >> Some time ago I started working on a new plotting module. With
>> >> >> >> GCI
>> >> >> >> and
>> >> >> >> the
>> >> >> >> exams at the end of the semester the work has stalled. There is
>> >> >> >> only
>> >> >> >> a
>> >> >> >> small
>> >> >> >> number of issues that I must address before the module is ready
>> >> >> >> for
>> >> >> >> review
>> >> >> >> but one of them is the deprecation warning for the old plotting
>> >> >> >> module.
>> >> >> >> Of
>> >> >> >> course the old module will not be deleted. But it will be placed
>> >> >> >> in
>> >> >> >> a
>> >> >> >> subfolder and the import statement used for it will change
>> >> >> >> somewhere
>> >> >> >> in
>> >> >> >> 0.7.3 or 4. At least that was the consensus some time ago (all
>> >> >> >> this
>> >> >> >> will be
>> >> >> >> detailed in the commit message so it can be discussed later).
>> >> >> >>
>> >> >> >> But at the moment I must implement a deprecation warning on
>> >> >> >> import
>> >> >> >> of
>> >> >> >> the
>> >> >> >> old module. Can someone of the core devs explain to me the
>> >> >> >> methodology
>> >> >> >> that
>> >> >> >> you usually use in this case? Deprecation cycles, subclasses of
>> >> >> >> Warning
>> >> >> >> and
>> >> >> >> so on... Or is it up to me to create a subclass of Warning. Is
>> >> >> >> there
>> >> >> >> a
>> >> >> >> special place to document this (in addition to the release
>> >> >> >> notes)?
>> >> >> >>
>> >> >> >> Stefan
>> >> >> >>
>> >> >> >> --
>> >> >> >> You received this message because you are subscribed to the
>> >> >> >> Google
>> >> >> >> Groups
>> >> >> >> "sympy" group.
>> >> >> >> To post to this group, send email to [email protected].
>> >> >> >> To unsubscribe from this group, send email to
>> >> >> >> [email protected].
>> >> >> >> For more options, visit this group at
>> >> >> >> http://groups.google.com/group/sympy?hl=en.
>> >> >> >
>> >> >> > --
>> >> >> > You received this message because you are subscribed to the Google
>> >> >> > Groups "sympy" group.
>> >> >> > To post to this group, send email to [email protected].
>> >> >> > To unsubscribe from this group, send email to
>> >> >> > [email protected].
>> >> >> > For more options, visit this group at
>> >> >> > http://groups.google.com/group/sympy?hl=en.
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Vladimir Perić
>> >> >>
>> >> >> --
>> >> >> You received this message because you are subscribed to the Google
>> >> >> Groups
>> >> >> "sympy" group.
>> >> >> To post to this group, send email to [email protected].
>> >> >> To unsubscribe from this group, send email to
>> >> >> [email protected].
>> >> >> For more options, visit this group at
>> >> >> http://groups.google.com/group/sympy?hl=en.
>> >> >>
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "sympy" group.
>> >> > To post to this group, send email to [email protected].
>> >> > To unsubscribe from this group, send email to
>> >> > [email protected].
>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/sympy?hl=en.
>> >>
>> >>
>> >>
>> >> --
>> >> Vladimir Perić
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> >> Groups
>> >> "sympy" group.
>> >> To post to this group, send email to [email protected].
>> >> To unsubscribe from this group, send email to
>> >> [email protected].
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/sympy?hl=en.
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "sympy" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/sympy?hl=en.
>>
>>
>>
>> --
>> Vladimir Perić
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/sympy?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to