Format: application/x-python-code
⬇ Download File (8.5 KB)
   1  o
   2  
   3  ;'h�$�@s�UddlmZddlZddlZddlmZmZmZddlm	Z	m
   4  Z
   5  ddlmZm
   6  Z
   7  mZddlmZmZddlZddlZddlmZddlmZd	d
   8  lmZmZd	dlmZd	dlmZejd
   9  krfddl m!Z!da"de#d<da$de#d<da%dLdd�Z&e
  10  dMdd��Z'dNd#d$�Z(ej)d%d&�dOd*d+��Z*ej)d%d,�dPd0d1��Z+ej)d%d,�dQd4d5��Z,ej-d6e�d7�dRd8d9��Z.ej-dSd:d;��Z/ej-dTd<d=��Z0Gd>d?�d?�Z1ej-d@dA�dUdBdC��Z2ej-d@dA�dUdDdE��Z3ej-dVdHdI��Z4ej-dWdJdK��Z5dS)X�)�annotationsN)�Callable�	Generator�Iterator)�	ExitStack�contextmanager)�isasyncgenfunction�iscoroutinefunction�ismethod)�Any�cast)�
  11  SubRequest)�Exit�)�get_all_backends�get_async_backend)�iterate_exceptions)�
  12  TestRunner)��)�ExceptionGroupzTestRunner | None�_current_runnerzExitStack | None�
  13  _runner_stack�backend�object�return�tuple[str, dict[str, Any]]cCsft|t�r	|ifSt|t�r/t|�dkr/t|dt�r/t|dt�r/ttttttff|�Std��)N�rrz@anyio_backend must be either a string or tuple of (string, dict))�
  14  isinstance�str�tuple�len�dictrr�	TypeError)r�r$�IC:\Users\shubh\Videos\agent\nova\Lib\site-packages\anyio/pytest_plugin.py�extract_backend_and_optionss
  15  r&�backend_namer�backend_options�dict[str, Any]�Iterator[TestRunner]ccs��tdur.t|�}t�atj�d�dur"tj�|�}t�tjj	|�|p%i}t�
  16  |�|��atd7aztVWtd8atsMtdusCJ�t�
  17  �daadSdStd8atsctdus[J�t�
  18  �daaw�Nr)rrrr�sniffioZcurrent_async_library_cvar�get�set�callback�reset�
  19  enter_contextZcreate_test_runner�_runner_leases�close)r'r(Zasynclib�tokenr$r$r%�
  20  get_runner%s2����
  21  r5�configr�NonecCs|�dd�dS)N�markerszManyio: mark the (coroutine function) test to be run asynchronously via anyio.)Zaddinivalue_line)r6r$r$r%�pytest_configureCs�r9T)Zhookwrapper�
  22  fixturedef�request�Generator[Any]c#s��d���fdd	�}|j�t��st��rNd|jvrN||_|j}d|jv�s.|jd
  23  7_d|jv�s<|jd7_z
  24  dVW�|_||_S�|_||_wdVS)
  25  N�argsr�
  26  anyio_backendr;r
  27  �kwargsrc?s��|jrt��rt�j�t|j�ur�j�|j�}n�}t|�\}}�r(||d<�r.||d<t||��&}t|�rB|�	||�EdHn|�
  28  ||�VWd�dSWd�dS1s\wYdS)Nr>r;)�instancer
  29  �type�__self__�__func__�__get__r&r5rZrun_asyncgen_fixtureZrun_fixture)r>r;r=r?Z
  30  local_funcr'r(�runner��funcZhas_backend_argZhas_request_argr$r%�wrapperLs(����"�z%pytest_fixture_setup.<locals>.wrapper�r>�r;)
  31  r=rr>rr;r
  32  r?rrr)rGrr	Zfixturenames�argnames)r:r;rHZoriginal_argnamer$rFr%�pytest_fixture_setupJs$�
  33  �rL)Ztryfirst�	collector�name�objcCsv|�||�r5t|d�r|jjn|}t|�r7|�d�}t|dd�}|s+tdd�|D��r9tj	�
  34  d�|�dSdSdSdS)N�
  35  hypothesis�anyioZ
  36  pytestmarkr$css�|]}|jdkVqdS)rQN)rN)�.0�markerr$r$r%�	<genexpr>�s�z,pytest_pycollect_makeitem.<locals>.<genexpr>r>)Zistestfunction�hasattrrP�
  37  inner_testr	Zget_closest_marker�getattr�any�pytest�markZusefixtures)rMrNrOZ
  38  inner_funcrSZown_markersr$r$r%�pytest_pycollect_makeitem}s
  39  �r[�
  40  pyfuncitem�bool | Nonecsd���fdd�}|j�d�}|r�t|�\��t|jd�r3|jjj��j|jkr1t��r1||jj_dSt|j�r�|j��fd	d
  41  �|j	j
  42  D�}t����2}z	|�|j|�Wnt
  43  yt}zt|�D]
  44  }t|tttf�rn||�qa�d}~wwWd�dS1s�wYdSdS)
  45  Nr?rrr7cs<t����}|��|�Wd�dS1swYdS�N)r5�run_test)r?rE)r'r(�
  46  original_funcr$r%�run_with_hypothesis�s"�z/pytest_pyfunc_call.<locals>.run_with_hypothesisr>rPcsi|]}|�|�qSr$r$)rR�arg)�funcargsr$r%�
  47  <dictcomp>�sz&pytest_pyfunc_call.<locals>.<dictcomp>T)r?rrr7)rcr-r&rUrOrPrV�__qualname__r	Z_fixtureinforKr5r_rrrr�KeyboardInterrupt�
  48  SystemExit)r\rarZtestargsrEZexcgrp�excr$)r'r(rcr`r%�pytest_pyfunc_call�s<
  49  
  50  
  51  ����
  52  �
  53  �
  54  ri�module)�scope�paramscC�|jSr^)�paramrJr$r$r%r>��r>cCst|t�r|S|dS)Nr�rrrIr$r$r%�anyio_backend_name��
  55  rqcCst|t�riS|dSr+rprIr$r$r%�anyio_backend_options�rrrsc@s4eZdZdZddd�Zeddd	��Zdddd�Zd
  56  S)�FreePortFactoryaO
  57      Manages port generation based on specified socket kind, ensuring no duplicate
  58      ports are generated.
  59  
  60      This class provides functionality for generating available free ports on the
  61      system. It is initialized with a specific socket kind and can generate ports
  62      for given address families while avoiding reuse of previously generated ports.
  63  
  64      Users should not instantiate this class directly, but use the
  65      ``free_tcp_port_factory`` and ``free_udp_port_factory`` fixtures instead. For simple
  66      uses cases, ``free_tcp_port`` and ``free_udp_port`` can be used instead.
  67      �kind�socket.SocketKindrr7cCs||_tt�|_dSr^)�_kindr.�int�
  68  _generated)�selfrur$r$r%�__init__�szFreePortFactory.__init__cCrm)z�
  69          The type of socket connection (e.g., :data:`~socket.SOCK_STREAM` or
  70          :data:`~socket.SOCK_DGRAM`) used to bind for checking port availability
  71  
  72          )rw)rzr$r$r%ru�szFreePortFactory.kindN�family�socket.AddressFamily | Nonerxc
  73  Cs�|dur|g}n
  74  tjg}tjr|�tj�	d}t��P}|D]1}|�t�||j��}|tjkr1dnd}z	|�||f�Wn
  75  t	yFYnw|sO|�
  76  �d}q||jvrd|j�|�|Wd�SWd�n1snwYq)z�
  77          Return an unbound port for the given address family.
  78  
  79          :param family: if omitted, both IPv4 and IPv6 addresses will be tried
  80          :return: a port number
  81  
  82          NTrz::1z	127.0.0.1r)
  83  �socket�AF_INET�has_ipv6�append�AF_INET6rr1rw�bind�OSError�getsocknamery�add)rzr|Zfamilies�port�stack�sock�addrr$r$r%�__call__�s4��
  84  ���zFreePortFactory.__call__)rurvrr7)rrvr^)r|r}rrx)�__name__�
  85  __module__re�__doc__r{�propertyrur�r$r$r$r%rt�s
  86  
  87  rt�session)rkcC�
  88  ttj�Sr^)rtr~�SOCK_STREAMr$r$r$r%�free_tcp_port_factory��
  89  r�cCr�r^)rtr~�
  90  SOCK_DGRAMr$r$r$r%�free_udp_port_factoryr�r��Callable[[], int]rxcC�|�Sr^r$)r�r$r$r%�
  91  free_tcp_port	ror�cCr�r^r$)r�r$r$r%�
  92  free_udp_portror�)rrrr)r'rr(r)rr*)r6rrr7)r:rr;rrr<)rMrrNrrOrrr7)r\rrr])r;rrr)r>rrr)r>rrr))rrt)r�r�rrx)r�r�rrx)6�
  93  __future__rr~�sys�collections.abcrrr�
  94  contextlibrr�inspectrr	r
  95  �typingrrrYr,Z_pytest.fixturesr
  96  Z_pytest.outcomesrZ_core._eventlooprrZ_core._exceptionsr�abcr�version_infoZexceptiongrouprr�__annotations__rr2r&r5r9ZhookimplrLr[riZfixturer>rqrsrtr�r�r�r�r$r$r$r%�<module>sX
  97  
  98  
  99  
 100  
 101  
 102  2
 103  
 104  $
 105  =
 106