B [] @sddlmZmZmZddlZddlZddlZddlZddlZddl m Z m Z m Z ddl mZddlmZmZmZddlZddlmZmZddd d d d d dddddg Zdd ZddZGdddeZddZdd ZddZddZ d6ddZ!dd Z"da#da$d7d"d#Z%ej&fd$d%Z'ed!dd&ej&d!fd'd Z(ed!ej&fd(dZ)ia*e+d)ej,Z-ed!d8d,dZ.d-d.Z/d/d0Z0Gd1d2d2eZ1d3dZ2d4d5Z3dS)9)divisionabsolute_importprint_functionN) issubclass_ issubsctype issubdtype) set_module)ndarrayufuncasarray) getargspec formatargspecrrr deprecatedeprecate_with_doc get_includeinfosourcewholookfor byte_bounds safe_evalcCsVddl}|jdkr.tjtj|jdd}n$ddlm}tjtj|jd}|S)a Return the directory that contains the NumPy \*.h header files. Extension modules that need to compile against NumPy should use this function to locate the appropriate include directory. Notes ----- When using ``distutils``, for example in ``setup.py``. :: import numpy as np ... Extension('extension_name', ... include_dirs=[np.get_include()]) ... rNcoreinclude) numpyZ show_configospathjoindirname__file__ numpy.corer)rdrr!2/tmp/pip-install-svzetoqp/numpy/numpy/lib/utils.pyrs   cCs ||_|S)N)__name__)funcnamer!r!r"_set_function_name5sr&c@s"eZdZdZdddZddZdS) _Deprecatez Decorator class to deprecate old functions. Refer to `deprecate` for details. See Also -------- deprecate NcCs||_||_||_dS)N)old_namenew_namemessage)selfr(r)r*r!r!r"__init__Fsz_Deprecate.__init__csn|j}|j}|j}|dkr@y j}Wntk r>j}YnX|dkrRd|n d||f|dk rrd|7fdd}t||}j}|dkr}n|d} t | dd} | d r| d |}nRt | dd} x4| ddD]$} t | | krP| t | d7} qW|| d}d |g}||_y j } Wntk r\YnX|j | |S) z: Decorator call. Refer to ``decorate``. Nz`%s` is deprecated!z%`%s` is deprecated, use `%s` instead! cstjtdd||S)z1`arrayrange` is deprecated, use `arange` instead!) stacklevel)warningswarnDeprecationWarning)argskwds)depdocr$r!r"newfuncbsz$_Deprecate.__call__..newfuncr z )r(r)r*r#AttributeErrorr&__doc__ expandtabssplit _get_indentlstriplenr__dict__update)r+r$r3kwargsr(r)r*r6doclinesindentskipliner r!)r5r$r"__call__KsJ          z_Deprecate.__call__)NNN)r# __module__ __qualname__r:r,rHr!r!r!r"r':s  r'cCsHtj}x.|D]&}t|}|r t|t||}q W|tjkrDd}|S)zU Determines the leading whitespace that could be removed from all the lines. r)sysmaxsizer?r>min)rDrErGcontentr!r!r"r=s   r=cOs4|r&|d}|dd}t|||St||SdS)a Issues a DeprecationWarning, adds warning to `old_name`'s docstring, rebinds ``old_name.__name__`` and returns the new function object. This function may also be used as a decorator. Parameters ---------- func : function The function to be deprecated. old_name : str, optional The name of the function to be deprecated. Default is None, in which case the name of `func` is used. new_name : str, optional The new name for the function. Default is None, in which case the deprecation message is that `old_name` is deprecated. If given, the deprecation message is that `old_name` is deprecated and `new_name` should be used instead. message : str, optional Additional explanation of the deprecation. Displayed in the docstring after the warning. Returns ------- old_func : function The deprecated function. Examples -------- Note that ``olduint`` returns a value after printing Deprecation Warning: >>> olduint = np.deprecate(np.uint) DeprecationWarning: `uint64` is deprecated! # may vary >>> olduint(6) 6 rr7N)r')r3rBfnr!r!r"rs , cCs t|dS)N)r*)r')msgr!r!r"rQc Cs|j}|dd}|d}|d}t|jj}|}}|dkrN||j|7}nJx@t||D]2\}} | dkr|||d| 7}qZ||d| 7}qZW||7}||fS)a# Returns pointers to the end-points of an array. Parameters ---------- a : ndarray Input array. It must conform to the Python-side of the array interface. Returns ------- (low, high) : tuple of 2 integers The first integer is the first byte of the array, the second integer is just past the last byte of the array. If `a` is not contiguous it will not use every byte between the (`low`, `high`) values. Examples -------- >>> I = np.eye(2, dtype='f'); I.dtype dtype('float32') >>> low, high = np.byte_bounds(I) >>> high - low == I.size*I.itemsize True >>> I = np.eye(2); I.dtype dtype('float64') >>> low, high = np.byte_bounds(I) >>> high - low == I.size*I.itemsize True datarstridesshapeNr7)Z__array_interface__r dtypeitemsizesizezip) aZaiZa_dataZastridesZashapeZbytes_aZa_lowZa_highrUZstrider!r!r"rs   c CsP|dkrtj}|j}g}i}x|D]}t||tr*||}t|}||krn|d||}d}n|||<|}d}dt t |j } t |j } | || | |jj|gq*Wd} d} d} d}xtt|D]|}||}| t|dkrt|d} | t|dkrt|d} | t|dkr8t|d} |dr|t|d7}qWt|dkrtd| }td| }td| }d |d |d |d f}t|d d t|d d xtt|D]t}||}td|dd |t|dd|dd |t|dd |dd |t|dd |dfqWtd|dS)a% Print the NumPy arrays in the given dictionary. If there is no dictionary passed in or `vardict` is None then returns NumPy arrays in the globals() dictionary (all NumPy arrays in the namespace). Parameters ---------- vardict : dict, optional A dictionary possibly containing ndarrays. Default is globals(). Returns ------- out : None Returns 'None'. Notes ----- Prints out the name, shape, bytes and type of all of the ndarrays present in `vardict`. Examples -------- >>> a = np.arange(10) >>> b = np.ones(20) >>> np.who() Name Shape Bytes Type =========================================================== a 10 80 int64 b 20 160 float64 Upper bound on total bytes = 240 >>> d = {'x': np.arange(2.0), 'y': np.arange(3.0), 'txt': 'Some str', ... 'idx':5} >>> np.who(d) Name Shape Bytes Type =========================================================== x 2 16 float64 y 3 24 float64 Upper bound on total bytes = 40 Nz (%s)rr7z x r. zName %s Shape %s Bytes %s Typer8r-=z%s %s %s %s %s %s %sz' Upper bound on total bytes = %d)rK _getframef_back f_globalskeys isinstancer idrmapstrrUnbytesappendrVr%ranger?intmaxprint)vardictframeZstacacher%varZidvnamestroriginalZshapestrZbytestrZmaxnameZmaxshapeZmaxbyteZ totalbyteskvalZsp1Zsp2Zsp3Zprvalr!r!r"rs^,             c Cst|}|}|}d}||}xp|D]h}||kr6d} n|} |t|t| }||kr|dt|}|dd|d|}q$|| |}q$W|S)Nz, r7z, r8r.)r?r<) r% argumentswidthZ firstwidthrtZnewstrZsepstrarglistargumentZaddstrr!r!r" _split_lineps  r{rcCst|ttg}|j|ji}|jg}|jg}xvt|dkr>P|d}xX|D]L}t||t j rR||j}||krR||j}| || ||||<qRWq0W||fS)Nr) __import__globalslocalsr#r@r?poprcrdtypes ModuleTyperi)moduleZthedictZdictlistZ totraverseZthisdictxmodnameZmoddictr!r!r" _makenamedicts"       rc Csxd}d}dd}t|dt|}t|d|}|j}|jj}td||dtd|j|dtd ||dtd |j|dtd ||jj |dtd ||jj |dtd |jj |dtdt |j jj|f|dtdd|d|dkrtd|tj|f|dd} nH|dkr2td||f|dtjdk} ntd||f|dtjdk} td|| |dtd|j|ddS)aOProvide information about ndarray obj. Parameters ---------- obj : ndarray Must be ndarray, not checked. output Where printed output goes. Notes ----- Copied over from the numarray module prior to its removal. Adapted somewhat as only numpy is an option now. Called by info. rvcSs|S)Nr!)rr!r!r"rQrRz_info.. __class__r#zclass: )filezshape: z strides: z itemsize: z aligned: z contiguous: z fortran: zdata pointer: %s%sz byteorder: r8)endr)|r]z%s%s%sF>z%sbig%sbigz %slittle%slittlez byteswap: ztype: %sN)getattrtyperTrV byteorderrmrUrWflagsZaligned contiguousZfortranhexctypesZ_as_parameter_valuerK) objoutputextraZticZbpclsnmrTendianZbyteswapr!r!r"_infos8     rLc Cslddl}ddl}t|ds$t|dr,|j}nt|dr<|j}|dkrPttnt|trjt||dnt|t rTt dkrt |\a a d}g}xt D]}ylt ||} t | |krtd||dn6|t | td ||dt| td ||d|d 7}Wqtk rYqXqW|dkr@td ||dntd ||dn||r|j} tt|} t| | |krt| | |} n| | } td| d|dt|||dn||rZ|j} d} yZt|dr2tt|jj} | d} t| d kr2d| d | d <d| d d} Wntk rJYnXt| | |krlt| | |} n| | } td| d|d||}|dkrt|drt||j|dnt|||d||}|gkrhtd|dxd|D]\}|ddkr qt||d}|dk r<| ||p4d\}}td||f|dqWnt!j"ddkrt|t#j$rtd|j%j|dt|dt|drtt|j&j} | d} t| d krd| d | d <d| d d} nd} t|drd|j'} nd} t| | |kr,t| | |} n| | } td| d|d||j&}|dk rrt||j&|dt|||dnt|||dn|(|rJ|j} tt|j} | d} t| d krd| d | d <d| d d} nd} t| | |krt| | |} n| | } td| d|dt|||dnt|drht|||ddS)a Get help information for a function, class, or module. Parameters ---------- object : object or str, optional Input object or name to get information about. If `object` is a numpy object, its docstring is given. If it is a string, available modules are searched for matching objects. If None, information about `info` itself is returned. maxwidth : int, optional Printing width. output : file like object, optional File like object that the output is written to, default is ``stdout``. The object has to be opened in 'w' or 'a' mode. toplevel : str, optional Start search at this level. See Also -------- source, lookfor Notes ----- When used interactively with an object, ``np.info(obj)`` is equivalent to ``help(obj)`` on the Python prompt or ``obj?`` on the IPython prompt. Examples -------- >>> np.info(np.polyval) # doctest: +SKIP polyval(p, x) Evaluate the polynomial p at x. ... When using a string for `object` it is possible to get multiple results. >>> np.info('fft') # doctest: +SKIP *** Found in numpy *** Core FFT routines ... *** Found in numpy.fft *** fft(a, n=None, axis=-1) ... *** Repeat reference found in numpy.fft.fftpack *** *** Total of 3 references found. *** rNZ_ppimport_importer_ppimport_module_ppimport_attr)rz+ *** Repeat reference found in %s *** )rz *** Found in %s ***-r7zHelp for %s not found.z+ *** Total of %d references found. ***r8r-z()r,z, (z Methods: _Nonez %s -- %sr_zInstance of class: rHr%z%szr:))pydocinspecthasattrrrrrdr rrg _namedictr _dictlistrermriKeyError isfunctionr#r r r?r{getdocisclassr,__func__r<r ExceptionZ allmethodsrZsplitdocrK version_inforZ InstanceTyperrHr%ismethod)objectZmaxwidthrtoplevelrrZnumfoundZobjlistrrrr%rwZargstrryZdoc1methodsmethZthisobjZmethstrotherrCr!r!r"rs4                                        cCsZddl}y,td|||dt|||dWn tk rTtd|dYnXdS)a Print or write to a file the source code for a NumPy object. The source code is only returned for objects written in Python. Many functions and classes are defined in C and will therefore not return useful information. Parameters ---------- object : numpy object Input object. This can be any object (function, class, module, ...). output : file object, optional If `output` not supplied then source code is printed to screen (sys.stdout). File object must be created with either write 'w' or append 'a' modes. See Also -------- lookfor, info Examples -------- >>> np.source(np.interp) #doctest: +SKIP In file: /usr/lib/python2.6/dist-packages/numpy/lib/function_base.py def interp(x, xp, fp, left=None, right=None): """.... (full docstring printed)""" if isinstance(x, (float, int, number)): return compiled_interp([x], xp, fp, left, right).item() else: return compiled_interp(x, xp, fp, left, right) The source code is only returned for objects written in Python. >>> np.source(np.array) #doctest: +SKIP Not available for this object. rNz In file: %s )rzNot available for this object.)rrm getsourcefile getsourcer)rrrr!r!r"rs )z[a-z0-9_]+\(.*[,=].*\)TFc sddl}t|||g}t|s0dSxZD]N\}\}} } | dkrRq:d} |} xD]} | | krdd} PqdW| r:||q:Wdddddfd d fd d }|j|d dd}|dt |g}x|dddD]}|\} } }dd| dD}y(|d }t |r@|d }Wnt k r\d}YnX|d||fqW|s|d|dk r|d|n4t |dkr|}|d|ntd|dS)a Do a keyword search on docstrings. A list of objects that matched the search is displayed, sorted by relevance. All given keywords need to be found in the docstring for it to be returned as a result, but the order does not matter. Parameters ---------- what : str String containing words to look for. module : str or list, optional Name of module(s) whose docstrings to go through. import_modules : bool, optional Whether to import sub-modules in packages. Default is True. regenerate : bool, optional Whether to re-generate the docstring cache. Default is False. output : file-like, optional File-like object to write the output to. If omitted, use a pager. See Also -------- source, info Notes ----- Relevance is determined only roughly, by checking if the keywords occur in the function name, at the start of a docstring, etc. Examples -------- >>> np.lookfor('binary representation') # doctest: +SKIP Search results for 'binary representation' ------------------------------------------ numpy.binary_repr Return the binary representation of the input number as a string. numpy.core.setup_common.long_double_representation Given a binary dump as given by GNU od -b, look for long double numpy.base_repr Return a string representation of a number in the given base system. ... rN)rrTFii)r$classrrcsd}d|ddd|tfddD7}|tfddD7}|t d7}||d7}|d  d 7}|t| d d 7}|S) Nrr-r_csg|]}|krdqS)r!).0w) first_docr!r" +sz.lookfor..relevance..csg|]}|krdqS)r!)rr)r%r!r"r-sr^i.r\di) rlowerstripr<sumr?getcountrl)r%Zdocstrkindindexr)kind_relevancewhats)rr%r" relevance's zlookfor..relevancecs|f|S)Nr!)rZ)rprr!r"relevance_value7sz lookfor..relevance_value)keyzSearch results for '%s'r8rcSsg|]}|r|qSr!)r)rrGr!r!r"rAszlookfor..r-r7rvz %s %szNothing found.r\)r_lookfor_generate_cachergrr<itemsrisortrr?r_function_signature_research IndexErrorwriteZgetpagerrm)whatrimport_modules regeneraterrfoundr%Z docstringrrokrCrrs help_textixZdoclinesrZpagerr!)rprrrr"rsT/         c Csddl}tjddkr$ddlm}n ddlm}|dkrt | D] \}}| %d| |f|fqfWnt| drd} y|'| }Wnt"k rd}YnX|dk r|| |f|| <qW|S)a Generate docstring cache for given module. Parameters ---------- module : str, None, module Module for which to generate docstring cache import_modules : bool Whether to import sub-modules in packages. regenerate : bool Re-generate the docstring cache Returns ------- cache : dict {obj_full_name: (docstring, kind, index), ...} Docstring cache for the module, either cached one (regenerate=False) or newly generated. rNr_)StringIOrTr7rr__path__z __init__.pyz.pyr,z%s.%sr#rIrrrHr$)(rrKriorrdrgr| ImportErrormoduleslisttuplerArre_lookfor_cachesr#rismodule__all__r9rrrlistdirrrisfileendswithstdoutstderr BaseException _getmembersr NameError startswithr rirr)rrrrrrpmodseenrstackr%itemrZ_allpthZmod_pathZthis_pyZinit_pyZ to_importZ old_stdoutZ old_stderrnvZ item_namemod_namerCr!r!r"rYs                           rcsFddl}y|}Wn*tk r@fddtD}YnX|S)Nrcs$g|]}t|r|t|fqSr!)rr)rr)rr!r"rsz_getmembers..)r getmembersrdir)rrmembersr!)rr"rs rc@sxeZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZdS)SafeEvalz Object to evaluate constant string expressions. This includes strings with lists, dicts and tuples using the abstract syntax tree created by ``compiler.parse``. .. deprecated:: 1.10.0 See Also -------- safe_eval cCstjdtdddS)Nz3SafeEval is deprecated in 1.10 and will be removed.r.)r/)r0r1r2)r+r!r!r"r, szSafeEval.__init__cCs"|j}t|d|j|j}||S)Nvisit)rrr#default)r+noderrr!r!r"rszSafeEval.visitcCstd|jdS)Nz Unsupported source construct: %s) SyntaxErrorr)r+rr!r!r"rszSafeEval.defaultcCs ||jS)N)rbody)r+rr!r!r"visitExpressionszSafeEval.visitExpressioncCs|jS)N)r)r+rr!r!r"visitNumszSafeEval.visitNumcCs|jS)N)r)r+rr!r!r"visitStrszSafeEval.visitStrcCs|jS)N)r)r+rr!r!r" visitBytes"szSafeEval.visitBytesc s tfddt|j|jDS)Ncs$g|]\}}||fqSr!)r)rrtr)r+r!r"r&sz&SafeEval.visitDict..)dictrYrcvalues)r+rkwr!)r+r" visitDict%s zSafeEval.visitDictcstfdd|jDS)Ncsg|]}|qSr!)r)ri)r+r!r"r*sz'SafeEval.visitTuple..)relts)r+rr!)r+r" visitTuple)szSafeEval.visitTuplecsfdd|jDS)Ncsg|]}|qSr!)r)rr )r+r!r"r-sz&SafeEval.visitList..)r )r+rr!)r+r" visitList,szSafeEval.visitListcCsRddl}t|j|jr$||j St|j|jr@||j Std|jdS)NrzUnknown unary op: %r)astrdopZUAddrZoperandZUSubr)r+rrr!r!r" visitUnaryOp/s zSafeEval.visitUnaryOpcCs<|jdkrdS|jdkrdS|jdkr*dStd|jdS)NFalseFTrueTrzUnknown name: %s)rer)r+rr!r!r" visitName8s   zSafeEval.visitNamecCs|jS)N)r)r+rr!r!r"visitNameConstantBszSafeEval.visitNameConstantN)r#rIrJr:r,rrrrrrr r r rrrr!r!r!r"rs   rcCsddl}||S)a Protected string evaluation. Evaluate a string containing a Python literal expression without allowing the execution of arbitrary non-literal code. Parameters ---------- source : str The string to evaluate. Returns ------- obj : object The result of evaluating `source`. Raises ------ SyntaxError If the code has invalid Python syntax, or if it contains non-literal code. Examples -------- >>> np.safe_eval('1') 1 >>> np.safe_eval('[1, 2, 3]') [1, 2, 3] >>> np.safe_eval('{"foo": ("bar", 10.0)}') {'foo': ('bar', 10.0)} >>> np.safe_eval('import os') Traceback (most recent call last): ... SyntaxError: invalid syntax >>> np.safe_eval('open("/home/user/.ssh/id_dsa").read()') Traceback (most recent call last): ... ValueError: malformed node or string: <_ast.Call object at 0x...> rN)r literal_eval)rrr!r!r"rFs,cCs|jdkr|St||d}t|d}tj|r@|d}|jdkr|dkr|dk rr|j tj |d<|}q|j tj }nt | dkrtj ||<|S)aj Utility function to check median result from data for NaN values at the end and return NaN in that case. Input result can also be a MaskedArray. Parameters ---------- data : array Input data to median function result : Array or MaskedArray Result of median function axis : {int, sequence of int, None}, optional Axis or axes along which the median was computed. out : ndarray, optional Output array in which to place the result. Returns ------- median : scalar or ndarray Median or NaN in axes which contained NaN in the input. rr).rFTN.) rXnpZmoveaxisisnanmaZ isMaskedArrayZfilledndimrVrnanZ count_nonzeroZravel)rSresultZaxisoutrr!r!r"_median_nancheckvs     r)N)r)NTFN)4 __future__rrrrrKrrer0Znumpy.core.numerictypesrrrZnumpy.core.overridesrrr r r rrZ numpy.compatr r rrr&rr'r=rrrrr{rrrrrrrrcompileIrrrrrrrr!r!r!r"sT   K49 i 3N3  I0