관리-도구
편집 파일: decorators.cpython-37.pyc
B ��Fdd � @ sd d Z ddlmZmZmZ ddlZddlmZmZ dd� Z dd d �Z ddd�Zdd d�Zddd�Z dS )a� Decorators for labeling and modifying behavior of test objects. Decorators that merely return a modified version of the original function object are straightforward. Decorators that return a new function object need to use :: nose.tools.make_decorator(original_function)(decorator) in returning the decorator, in order to preserve meta-data such as function name, setup and teardown functions and so on - see ``nose.tools`` for more information. � )�division�absolute_import�print_functionN� )�SkipTest�assert_warnsc C s d| _ | S )a� Label a test as 'slow'. The exact definition of a slow test is obviously both subjective and hardware-dependent, but in general any individual test that requires more than a second or two should be labeled as slow (the whole suite consits of thousands of tests, so even a second is significant). Parameters ---------- t : callable The test to label as slow. Returns ------- t : callable The decorated test `t`. Examples -------- The `numpy.testing` module includes ``import decorators as dec``. A test can be decorated as slow like this:: from numpy.testing import * @dec.slow def test_big(self): print('Big, slow test') T)�slow)�t� r �K/opt/alt/python37/lib64/python3.7/site-packages/numpy/testing/decorators.pyr s r Tc s � fdd�}|S )a� Signals to nose that this function is or is not a test. Parameters ---------- tf : bool If True, specifies that the decorated callable is a test. If False, specifies that the decorated callable is not a test. Default is True. Notes ----- This decorator can't use the nose namespace, because it can be called from a non-test module. See also ``istest`` and ``nottest`` in ``nose.tools``. Examples -------- `setastest` can be used in the following way:: from numpy.testing.decorators import setastest @setastest(False) def func_with_test_in_name(arg1, arg2): pass c s � | _ | S )N)Z__test__)r )�tfr r �set_testV s zsetastest.<locals>.set_testr )r r r )r r � setastest: s r c s � �fdd�}|S )a� Make function raise SkipTest exception if a given condition is true. If the condition is a callable, it is used at runtime to dynamically make the decision. This is useful for tests that may require costly imports, to delay the cost until the test suite is actually executed. Parameters ---------- skip_condition : bool or callable Flag to determine whether to skip the decorated test. msg : str, optional Message to give on raising a SkipTest exception. Default is None. Returns ------- decorator : function Decorator which, when applied to a function, causes SkipTest to be raised when `skip_condition` is True, and the function to be called normally otherwise. Notes ----- The decorator itself is decorated with the ``nose.tools.make_decorator`` function in order to transmit function name, and various other metadata. c s� dd l }t�tj�r"�fdd��n�fdd��ddd��� ���fdd�}� ���fd d �}|j�� �rn|}n|}|j�� �|�S )Nr c s � � S )Nr r )�skip_conditionr r �<lambda> � z0skipif.<locals>.skip_decorator.<locals>.<lambda>c s � S )Nr r )r r r r � r c S s |dkrd}n|}d| j |f S )z;Skip message with information about function being skipped.Nz"Test skipped due to test conditionzSkipping test: %s: %s)�__name__)�func�msg�outr r r �get_msg� s z/skipif.<locals>.skip_decorator.<locals>.get_msgc s$ �� rt �� ����n � | |�S dS )z"Skipper for normal test functions.N)r )�args�kwargs)�fr r �skip_valr r �skipper_func� s z4skipif.<locals>.skip_decorator.<locals>.skipper_funcc ? s4 �� rt �� ����nx� | |�D ] }|V q"W dS )zSkipper for test generators.N)r )r r �x)r r r r r r �skipper_gen� s z3skipif.<locals>.skip_decorator.<locals>.skipper_gen)N)�nose� isinstance�collections�Callable�util�isgenerator�tools�make_decorator)r r r r Zskipper)r r )r r r r �skip_decoratorx s zskipif.<locals>.skip_decoratorr )r r r&