[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-26 Thread Marco Sulla


Marco Sulla  added the comment:

> I also distinctly remember seeing code (and writing such code myself) that 
> performs computation on timeouts and does not care if the end value goes 
> below 0.

This is not a good statistics. Frankly we can't measure the impact of the 
change from these considerations. And furthermore, `asyncio.sleep()` is used 
often, testing and mocking apart? I doubt it.

> we always try to have a very good explanation "why" we want to bother 
> ourselves and users to break backwards compat.

Coherence and unhide mistakes are *very* strong points.

That said, I'm not so much interested in practice. Do as you wish. The problem 
is I always considered Python a very elegant programming language, and this 
behavior is not elegant at all. But, hey, amen.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-26 Thread Marco Sulla


Change by Marco Sulla :


--
resolution: not a bug -> rejected

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-25 Thread Yury Selivanov


Yury Selivanov  added the comment:

> Source?

I could not find a good source, sorry. I remember I had a complaint in uvloop 
to support negative timeouts, but I can't trace it. 

That said, I also distinctly remember seeing code (and writing such code 
myself) that performs computation on timeouts and does not care if the end 
value goes below 0.  It might be a weak data point but it's still a valid one.

> IMHO, deprecating and then removing support for negative argument in 
> `asyncio.sleep()` is very much less breaking compared to issues #36921 and 
> #36373 .

Breaking code/APIs always has a price and we always try to have a very good 
explanation "why" we want to bother ourselves and users to break backwards 
compat.  This one is not worth it IMHO.

We have more breaking API changes that are more substantial coming in future 
versions of asyncio. So I try to limit the impact by only breaking what's 
really necessary.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-23 Thread Marco Sulla


Marco Sulla  added the comment:

I see that many breaking changes was done in recent releases. I get only the 
ones for `asyncio` in Python 3.8:

https://bugs.python.org/issue36921
https://bugs.python.org/issue36373
https://bugs.python.org/issue34790
https://bugs.python.org/issue32528
https://bugs.python.org/issue34687
https://bugs.python.org/issue32314

So I suppose the ship isn't sailed yet.


Passing a negative number to a function that should sleep the task for x 
seconds is a mistake. And mistakes should never pass silently.

Furthermore, coherence matters. It's really confusing that two functions in two 
builtin modules that are quite identical have a different behavior.

IMHO, deprecating and then removing support for negative argument in 
`asyncio.sleep()` is very much less breaking compared to issues #36921 and 
#36373 .

--
type:  -> behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-20 Thread Marco Sulla


Marco Sulla  added the comment:

> I recall very many cases in third-party libraries and commercial applications

Source?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-20 Thread Yury Selivanov


Yury Selivanov  added the comment:

> The ship has sailed, this change breaks a lot of existing code without a 
> strong reason.

Yes.

It's a common thing to compute asyncio.sleep delay and sometimes it goes 
negative. The current behavior is part of our API now.

--
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-20 Thread Andrew Svetlov


Andrew Svetlov  added the comment:

The ship has sailed, this change breaks a lot of existing code without a strong 
reason.
I recall very many cases in third-party libraries and commercial applications 
where a negative argument for asyncio.sleep() is processed as asyncio.sleep(0) 
without failure.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue39698] asyncio.sleep() does not adhere to time.sleep() behavior for negative numbers

2020-02-20 Thread Marco Sulla


New submission from Marco Sulla :

Python 3.9.0a3+ (heads/master-dirty:f2ee21d858, Feb 19 2020, 23:19:22) 
[GCC 9.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> time.sleep(-1)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: sleep length must be non-negative
>>> import asyncio
>>> async def f():
... await asyncio.sleep(-1)
... print("no exception")
... 
>>> asyncio.run(f())
no exception

I think that also `asyncio.sleep()` should raise `ValueError` if the argument 
is less than zero.

--
components: asyncio
messages: 362314
nosy: Marco Sulla, asvetlov, yselivanov
priority: normal
severity: normal
status: open
title: asyncio.sleep() does not adhere to time.sleep() behavior for negative 
numbers
versions: Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com