[Python-Dev] Re: Are we ready to start cleaning up deprecated stuff?

2019-11-27 Thread Brett Cannon
Gregory P. Smith wrote:
> On Wed, Nov 27, 2019 at 10:15 AM Brett Cannon br...@python.org wrote:
> > Gregory P. Smith wrote:
> > On Tue, Nov 26, 2019 at 12:00 PM Brett Cannon
> > br...@python.org wrote:
> > Python 3.9 is going to be the first release
> > which
> > will exist without any
> > Python 2.7 overlap. Does this mean we are ready to start removing
> > things
> > that have been deprecated since at least Python 3.7? PEP 4 says we
> > are in
> > the clear for modules,
> > but I figured I would double-check as questions of cleaning up
> > individual
> > functions that have been deprecated for a very long time are now
> > starting
> > to come up (e.g. https://bugs.python.org/issue38916).
> > If it has been through a usual deprecation cycle (in the past that was
> > two
> > releases... with 3.9's now accelerated schedule does it count as a full
> > release for that purpose?  if not, three releases is always good) it
> > seems
> > fair to consider removal.
> > The only thing that would make me say "hold off" on a specific removal is
> > if removing it will cause pain for people still dealing with a mixed 2.7
> > and 3.x codebase.  ie: If it is an old API from the 2.x era and there is
> > no
> > easy way to accomplish the equivalent of that deprecation in 2.7 and 3.9+
> > without contortions I'd hold it just a little longer, until 3.10 or 3.11,
> > But what's an acceptable contortion? Some might say something that can't
> > be done with a search-and-replace is too much while others wouldn't.
> > Anything a lib2to3 fixer could be written for.  it probably isn't worth
> trying to define this without a list of practical examples.  has anyone
> collected a list of things we deprecated but have yet to remove?  I
> anticipate we may wind up in "oh yeah, just remove it all already"
> territory and this discussion will be moot. :)
> > unless the existence of the deprecated thing is a
> > large maintenance burden
> > rather than just an annoyance.
> > Unfortunately that's hard to measure. For instance, the array.fromstring()
> > deprecation that triggered this is probably fine to just leave, but if
> > someone submits a PR to tweak the docs, the burden of that code suddenly
> > went up. There's also the cost to users who import array, do a
> > dir(array), see fromstring(), and then start coding with it to find out
> > later it's deprecated when they run their code (we all know people _should_
> > read docs first, but I'm sure we are all guilty of having not done it as
> > well 😄). Once again, potentially small, but it also adds up across all
> > Python developers (which is probably is past 10,000,000 people).
> > The fact that all code is a shared resource/burden and everything has a
> > cognitive cost to it even if it's just to choose to ignore a PR that
> > touches deprecated code is why I'm asking about this. I think I will start
> > a separate thread on this that's not tied to Python 2.7.
> > By "large maintenance burden" I was specifically thinking of "the code
> existing in the CPython codebase is preventing other nice refactorings and
> redesigns from being done".  Anytime a long deprecated thing gets in the
> way of such work, we should feel free to go ahead and remove it.
> I guess I'm advocating for not going on a deprecation rampage and removing
> all things we said would be gone by date $X unless there is a need.
> Changing our policy to always do them by date $X would also be reasonable.

I started a separate thread proposing that exact idea.

> We could even come up with some post-release automation to auto-file bugs
> reminding us remove deprecated things after deprecation-release-1 is out.
> (we could require those get filed at deprecation time, but humans are good
> at humaning and may forget to do that, plus we don't have N+3 release tags
> for future release blockers to be filed in our bug tracker)

In my other thread I'm proposing a function to handle this which would change a 
DeprecationWarning to an actual exception once the removal version was reached 
so tests would start failing if it was left in.
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/44AYRD5HGQLPZTXHSW4GGM4X32MBR2J6/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Are we ready to start cleaning up deprecated stuff?

2019-11-27 Thread Gregory P. Smith
On Wed, Nov 27, 2019 at 10:15 AM Brett Cannon  wrote:

> Gregory P. Smith wrote:
> > On Tue, Nov 26, 2019 at 12:00 PM Brett Cannon br...@python.org wrote:
> > > Python 3.9 is going to be the first release which
> > > will exist without any
> > > Python 2.7 overlap. Does this mean we are ready to start removing
> things
> > > that have been deprecated since at least Python 3.7? PEP 4 says we
> > > are in
> > > the clear for modules,
> > > but I figured I would double-check as questions of cleaning up
> individual
> > > functions that have been deprecated for a very long time are now
> starting
> > > to come up (e.g. https://bugs.python.org/issue38916).
> > > If it has been through a usual deprecation cycle (in the past that was
> two
> > releases... with 3.9's now accelerated schedule does it count as a full
> > release for that purpose?  if not, three releases is always good) it
> seems
> > fair to consider removal.
> > The only thing that would make me say "hold off" on a specific removal is
> > if removing it will cause pain for people still dealing with a mixed 2.7
> > and 3.x codebase.  ie: If it is an old API from the 2.x era and there is
> no
> > easy way to accomplish the equivalent of that deprecation in 2.7 and 3.9+
> > without contortions I'd hold it just a little longer, until 3.10 or 3.11,
>
> But what's an acceptable contortion? Some might say something that can't
> be done with a search-and-replace is too much while others wouldn't.
>

Anything a lib2to3 fixer could be written for.  it probably isn't worth
trying to define this without a list of practical examples.  has anyone
collected a list of things we deprecated but have yet to remove?  I
anticipate we may wind up in "oh yeah, just remove it all already"
territory and this discussion will be moot. :)

> unless the existence of the deprecated thing is a large maintenance burden
> > rather than just an annoyance.
>
> Unfortunately that's hard to measure. For instance, the array.fromstring()
> deprecation that triggered this is probably fine to just leave, but if
> someone submits a PR to tweak the docs, the burden of that code suddenly
> went up. There's also the cost to users who import array, do a
> `dir(array)`, see fromstring(), and then start coding with it to find out
> later it's deprecated when they run their code (we all know people _should_
> read docs first, but I'm sure we are all guilty of having not done it as
> well 😄). Once again, potentially small, but it also adds up across all
> Python developers (which is probably is past 10,000,000 people).
>
> The fact that all code is a shared resource/burden and everything has a
> cognitive cost to it even if it's just to choose to ignore a PR that
> touches deprecated code is why I'm asking about this. I think I will start
> a separate thread on this that's not tied to Python 2.7.
>

By "large maintenance burden" I was specifically thinking of "the code
existing in the CPython codebase is preventing other nice refactorings and
redesigns from being done".  Anytime a long deprecated thing gets in the
way of such work, we should feel free to go ahead and remove it.

I guess I'm advocating for not going on a deprecation rampage and removing
all things we said would be gone by date $X unless there is a need.
Changing our policy to always do them by date $X would also be reasonable.

We could even come up with some post-release automation to auto-file bugs
reminding us remove deprecated things after deprecation-release-1 is out.
(we could require those get filed at deprecation time, but humans are good
at humaning and may forget to do that, plus we don't have N+3 release tags
for future release blockers to be filed in our bug tracker)

-gps


> ___
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-le...@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/KDDIHOJIHSAKNKJIYCOJM5ZELVFAQGFH/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/DRH3PXRQITWDTX73RJGSNNNMGFKJAOKC/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Are we ready to start cleaning up deprecated stuff?

2019-11-27 Thread Brett Cannon
Gregory P. Smith wrote:
> On Tue, Nov 26, 2019 at 12:00 PM Brett Cannon br...@python.org wrote:
> > Python 3.9 is going to be the first release which
> > will exist without any
> > Python 2.7 overlap. Does this mean we are ready to start removing things
> > that have been deprecated since at least Python 3.7? PEP 4 says we
> > are in
> > the clear for modules,
> > but I figured I would double-check as questions of cleaning up individual
> > functions that have been deprecated for a very long time are now starting
> > to come up (e.g. https://bugs.python.org/issue38916).
> > If it has been through a usual deprecation cycle (in the past that was two
> releases... with 3.9's now accelerated schedule does it count as a full
> release for that purpose?  if not, three releases is always good) it seems
> fair to consider removal.
> The only thing that would make me say "hold off" on a specific removal is
> if removing it will cause pain for people still dealing with a mixed 2.7
> and 3.x codebase.  ie: If it is an old API from the 2.x era and there is no
> easy way to accomplish the equivalent of that deprecation in 2.7 and 3.9+
> without contortions I'd hold it just a little longer, until 3.10 or 3.11,

But what's an acceptable contortion? Some might say something that can't be 
done with a search-and-replace is too much while others wouldn't.

> unless the existence of the deprecated thing is a large maintenance burden
> rather than just an annoyance.

Unfortunately that's hard to measure. For instance, the array.fromstring() 
deprecation that triggered this is probably fine to just leave, but if someone 
submits a PR to tweak the docs, the burden of that code suddenly went up. 
There's also the cost to users who import array, do a `dir(array)`, see 
fromstring(), and then start coding with it to find out later it's deprecated 
when they run their code (we all know people _should_ read docs first, but I'm 
sure we are all guilty of having not done it as well 😄). Once again, 
potentially small, but it also adds up across all Python developers (which is 
probably is past 10,000,000 people).

The fact that all code is a shared resource/burden and everything has a 
cognitive cost to it even if it's just to choose to ignore a PR that touches 
deprecated code is why I'm asking about this. I think I will start a separate 
thread on this that's not tied to Python 2.7.
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/KDDIHOJIHSAKNKJIYCOJM5ZELVFAQGFH/
Code of Conduct: http://python.org/psf/codeofconduct/


[Python-Dev] Re: Are we ready to start cleaning up deprecated stuff?

2019-11-26 Thread Gregory P. Smith
On Tue, Nov 26, 2019 at 12:00 PM Brett Cannon  wrote:

> Python 3.9 is going to be the first release which will exist without any
> Python 2.7 overlap. Does this mean we are ready to start removing things
> that have been deprecated since at least Python 3.7? PEP 4 says [we are in
> the clear for modules](
> https://www.python.org/dev/peps/pep-0004/#for-modules-existing-in-both-python-2-7-and-python-3-5),
> but I figured I would double-check as questions of cleaning up individual
> functions that have been deprecated for a very long time are now starting
> to come up (e.g. https://bugs.python.org/issue38916).
>

If it has been through a usual deprecation cycle (in the past that was two
releases... with 3.9's now accelerated schedule does it count as a full
release for that purpose?  if not, three releases is always good) it seems
fair to consider removal.

The only thing that would make me say "hold off" on a specific removal is
if removing it will cause pain for people still dealing with a mixed 2.7
and 3.x codebase.  ie: If it is an old API from the 2.x era and there is no
easy way to accomplish the equivalent of that deprecation in 2.7 and 3.9+
without contortions I'd hold it just a little longer, until 3.10 or 3.11,
unless the existence of the deprecated thing is a large maintenance burden
rather than just an annoyance.

-gps
___
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/IVWSS7C26MXUTPLOT3E6ASDNZQQ2YBD2/
Code of Conduct: http://python.org/psf/codeofconduct/