Skip to content

Commit effaf55

Browse files
committed
Add a definition for randint function. Move definition of class ndarray from numpy_core_numerictypes_transform function to infer_numpy_ndarray which is used a inference_tip. Add a _looks_like_numpy_ndarray function. Deletion of the register_transform for linspace function because it is correctly inferred with the inference_tip function for ndarray
1 parent 35baf16 commit effaf55

File tree

1 file changed

+95
-94
lines changed

1 file changed

+95
-94
lines changed

astroid/brain/brain_numpy.py

Lines changed: 95 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ def permutation(x): return uninferable
4343
def poisson(lam=1.0, size=None): return uninferable
4444
def power(a, size=None): return uninferable
4545
def rand(*args): return uninferable
46-
def randint(low, high=None, size=None, dtype='l'): return uninferable
46+
def randint(low, high=None, size=None, dtype='l'):
47+
import numpy
48+
return numpy.ndarray((1,1))
4749
def randn(*args): return uninferable
4850
def random_integers(low, high=None, size=None): return uninferable
4951
def random_sample(size=None): return uninferable
@@ -273,87 +275,6 @@ def __init__(self, obj, align=False, copy=False):
273275
def newbyteorder(self, new_order='S'): return uninferable
274276
def __neg__(self): return uninferable
275277
276-
277-
class ndarray(object):
278-
def __init__(self, shape, dtype=float, buffer=None, offset=0,
279-
strides=None, order=None):
280-
self.T = None
281-
self.base = None
282-
self.ctypes = None
283-
self.data = None
284-
self.dtype = None
285-
self.flags = None
286-
self.flat = None
287-
self.imag = None
288-
self.itemsize = None
289-
self.nbytes = None
290-
self.ndim = None
291-
self.real = None
292-
self.shape = None
293-
self.size = None
294-
self.strides = None
295-
296-
def __neg__(self): return uninferable
297-
def __inv__(self): return uninferable
298-
def __invert__(self): return uninferable
299-
def all(self): return uninferable
300-
def any(self): return uninferable
301-
def argmax(self): return uninferable
302-
def argmin(self): return uninferable
303-
def argpartition(self): return uninferable
304-
def argsort(self): return uninferable
305-
def astype(self): return uninferable
306-
def byteswap(self): return uninferable
307-
def choose(self): return uninferable
308-
def clip(self): return uninferable
309-
def compress(self): return uninferable
310-
def conj(self): return uninferable
311-
def conjugate(self): return uninferable
312-
def copy(self): return uninferable
313-
def cumprod(self): return uninferable
314-
def cumsum(self): return uninferable
315-
def diagonal(self): return uninferable
316-
def dot(self): return uninferable
317-
def dump(self): return uninferable
318-
def dumps(self): return uninferable
319-
def fill(self): return uninferable
320-
def flatten(self): return uninferable
321-
def getfield(self): return uninferable
322-
def item(self): return uninferable
323-
def itemset(self): return uninferable
324-
def max(self): return uninferable
325-
def mean(self): return uninferable
326-
def min(self): return uninferable
327-
def newbyteorder(self): return uninferable
328-
def nonzero(self): return uninferable
329-
def partition(self): return uninferable
330-
def prod(self): return uninferable
331-
def ptp(self): return uninferable
332-
def put(self): return uninferable
333-
def ravel(self): return uninferable
334-
def repeat(self): return uninferable
335-
def reshape(self): return uninferable
336-
def resize(self): return uninferable
337-
def round(self): return uninferable
338-
def searchsorted(self): return uninferable
339-
def setfield(self): return uninferable
340-
def setflags(self): return uninferable
341-
def sort(self): return uninferable
342-
def squeeze(self): return uninferable
343-
def std(self): return uninferable
344-
def sum(self): return uninferable
345-
def swapaxes(self): return uninferable
346-
def take(self): return uninferable
347-
def tobytes(self): return uninferable
348-
def tofile(self): return uninferable
349-
def tolist(self): return uninferable
350-
def tostring(self): return uninferable
351-
def trace(self): return uninferable
352-
def transpose(self): return uninferable
353-
def var(self): return uninferable
354-
def view(self): return uninferable
355-
356-
357278
class busdaycalendar(object):
358279
def __init__(self, weekmask='1111100', holidays=None):
359280
self.holidays = None
@@ -547,25 +468,105 @@ def _replace_numpy_function_infer_call_result(node, context=None):
547468
node.infer_call_result = numpy_function_infer_call_result(node)
548469
return
549470

550-
551-
astroid.MANAGER.register_transform(
552-
astroid.FunctionDef,
553-
_replace_numpy_function_infer_call_result,
554-
functools.partial(
555-
_looks_like_numpy_function, "linspace", "numpy.core.function_base"
556-
),
557-
)
558-
559471
astroid.MANAGER.register_transform(
560472
astroid.FunctionDef,
561473
_replace_numpy_function_infer_call_result,
562474
functools.partial(_looks_like_numpy_function, "array", "numpy.core.records"),
563475
)
564476

477+
def infer_numpy_ndarray(node, context=None):
478+
ndarray = """
479+
class ndarray(object):
480+
def __init__(self, shape, dtype=float, buffer=None, offset=0,
481+
strides=None, order=None):
482+
self.T = None
483+
self.base = None
484+
self.ctypes = None
485+
self.data = None
486+
self.dtype = None
487+
self.flags = None
488+
self.flat = None
489+
self.imag = None
490+
self.itemsize = None
491+
self.nbytes = None
492+
self.ndim = None
493+
self.real = None
494+
self.shape = None
495+
self.size = None
496+
self.strides = None
497+
498+
def __neg__(self): return uninferable
499+
def __inv__(self): return uninferable
500+
def __invert__(self): return uninferable
501+
def all(self): return uninferable
502+
def any(self): return uninferable
503+
def argmax(self): return uninferable
504+
def argmin(self): return uninferable
505+
def argpartition(self): return uninferable
506+
def argsort(self): return uninferable
507+
def astype(self): return uninferable
508+
def byteswap(self): return uninferable
509+
def choose(self): return uninferable
510+
def clip(self): return uninferable
511+
def compress(self): return uninferable
512+
def conj(self): return uninferable
513+
def conjugate(self): return uninferable
514+
def copy(self): return uninferable
515+
def cumprod(self): return uninferable
516+
def cumsum(self): return uninferable
517+
def diagonal(self): return uninferable
518+
def dot(self): return uninferable
519+
def dump(self): return uninferable
520+
def dumps(self): return uninferable
521+
def fill(self): return uninferable
522+
def flatten(self): return uninferable
523+
def getfield(self): return uninferable
524+
def item(self): return uninferable
525+
def itemset(self): return uninferable
526+
def max(self): return uninferable
527+
def mean(self): return uninferable
528+
def min(self): return uninferable
529+
def newbyteorder(self): return uninferable
530+
def nonzero(self): return uninferable
531+
def partition(self): return uninferable
532+
def prod(self): return uninferable
533+
def ptp(self): return uninferable
534+
def put(self): return uninferable
535+
def ravel(self): return uninferable
536+
def repeat(self): return uninferable
537+
def reshape(self): return uninferable
538+
def resize(self): return uninferable
539+
def round(self): return uninferable
540+
def searchsorted(self): return uninferable
541+
def setfield(self): return uninferable
542+
def setflags(self): return uninferable
543+
def sort(self): return uninferable
544+
def squeeze(self): return uninferable
545+
def std(self): return uninferable
546+
def sum(self): return uninferable
547+
def swapaxes(self): return uninferable
548+
def take(self): return uninferable
549+
def tobytes(self): return uninferable
550+
def tofile(self): return uninferable
551+
def tolist(self): return uninferable
552+
def tostring(self): return uninferable
553+
def trace(self): return uninferable
554+
def transpose(self): return uninferable
555+
def var(self): return uninferable
556+
def view(self): return uninferable
557+
"""
558+
node = astroid.extract_node(ndarray)
559+
return node.infer(context=context)
560+
561+
def _looks_like_numpy_ndarray(node):
562+
if isinstance(node, astroid.Attribute) and node.attrname == 'ndarray':
563+
return True
564+
return False
565+
565566
astroid.MANAGER.register_transform(
566-
astroid.FunctionDef,
567-
_replace_numpy_function_infer_call_result,
568-
functools.partial(_looks_like_numpy_function, "zeros_like", "numpy.core.numeric"),
567+
astroid.Attribute,
568+
astroid.inference_tip(infer_numpy_ndarray),
569+
_looks_like_numpy_ndarray
569570
)
570571

571572
astroid.register_module_extender(

0 commit comments

Comments
 (0)