New submission from Matt Bogosian:

datetime.py is peppered with ``assert`` statements that are two restrictive. 
Specifically, ``isinstance(..., int)`` does not afford compatibility with 
alternate ``int``-like implementations (e.g., ``future.types.newint``). Some 
background:

* https://github.com/PythonCharmers/python-future/issues/187
* 
https://bitbucket.org/pypy/pypy/issues/2193/datetimetimedelta-chokes-on-seconds

In all cases that I can find, ``assert isinstance(..., int)`` is unnecessarily 
restrictive, since it is always followed by another ``assert`` which validates 
that the boundaries are far smaller than a Python 2 native `int` type. (See, 
e.g., `datetype.py at line 395 
<https://hg.python.org/cpython/file/ebec1a98ab81/Lib/datetime.py#l395>`__).

I propose replacing instances of ``assert isinstance(..., int)`` and ``assert 
isinstance(..., (int, long))`` with ``assert isinstance(..., 
numbers.Integral)`` akin to `this patch 
<https://bitbucket.org/pypy/pypy/pull-requests/361/fix-2193/diff>`__.

----------
components: Library (Lib)
messages: 255211
nosy: posita
priority: normal
severity: normal
status: open
title: Consider isinstance(..., numbers.Integral) instead of isinstance(..., 
int) or isinstance(..., (int, long)) in datetime.py
type: enhancement
versions: Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25714>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to