+
    h                    h   a  0 t $ ^ RIHt ^ RIHt ^ RIt^RIHtHtH	t	 / t
R]R&   R]
R]	/R	 ltR
 tR# )    )annotations)AnyN)
DispatcherMethodDispatcherambiguity_warnzdict[str, Any]global_namespace	namespaceon_ambiguityc                2   a aa \        S4      oV VV3R lpV# )a  Dispatch function on the types of the inputs

Supports dispatch on all non-keyword arguments.

Collects implementations based on the function name.  Ignores namespaces.

If ambiguous type signatures occur a warning is raised when the function is
defined suggesting the additional method to break the ambiguity.

Examples
--------

>>> from sympy.multipledispatch import dispatch
>>> @dispatch(int)
... def f(x):
...     return x + 1

>>> @dispatch(float)
... def f(x): # noqa: F811
...     return x - 1

>>> f(3)
4
>>> f(3.0)
2.0

Specify an isolated namespace with the namespace keyword argument

>>> my_namespace = dict()
>>> @dispatch(int, namespace=my_namespace)
... def foo(x):
...     return x + 1

Dispatch on instance methods within classes

>>> class MyClass(object):
...     @dispatch(list)
...     def __init__(self, data):
...         self.data = data
...     @dispatch(int)
...     def __init__(self, datum): # noqa: F811
...         self.data = [datum]
c                ,  < V P                   p\        V 4      '       dD   \        P                  ! 4       P                  P
                  P                  V\        V4      4      pMVS9  d   \        V4      SV&   SV,          pVP                  SV SR 7       V# ))r
   )
__name__ismethodinspectcurrentframef_backf_localsgetr   r   add)funcname
dispatcherr	   r
   typess   &  =/usr/lib/python3/dist-packages/sympy/multipledispatch/core.py_dispatch.<locals>._;   s~    }}D>> --/66??CC &(J 9$",T"2	$"4Jud>    )tuple)r	   r
   r   r   s   ddj r   dispatchr      s    X %LE Hr   c                j    \         P                  ! V 4      pVP                  P                  RR4      RJ# )zIs func a method?

Note that this has to work as the method is defined but before the class is
defined.  At this stage methods look like functions.
selfN)r   	signature
parametersr   )r   r!   s   & r   r   r   L   s2     !!$'I##FD1==r   )__conditional_annotations__
__future__r   typingr   r   r   r   r   r   r   __annotations__r   r   )r#   s   @r   <module>r'      s?    " "   D D $& . %</ <n <~>r   