Coverage for fastapi / dependencies / models.py: 100%

132 statements  

« prev     ^ index     » next       coverage.py v7.13.3, created at 2026-02-12 18:15 +0000

1import inspect 1abcd

2import sys 1abcd

3from collections.abc import Callable 1abcd

4from dataclasses import dataclass, field 1abcd

5from functools import cached_property, partial 1abcd

6from typing import Any, Literal 1abcd

7 

8from fastapi._compat import ModelField 1abcd

9from fastapi.security.base import SecurityBase 1abcd

10from fastapi.types import DependencyCacheKey 1abcd

11 

12if sys.version_info >= (3, 13): # pragma: no cover 1abcd

13 from inspect import iscoroutinefunction 1ab

14else: # pragma: no cover 

15 from asyncio import iscoroutinefunction 1cd

16 

17 

18def _unwrapped_call(call: Callable[..., Any] | None) -> Any: 1abcd

19 if call is None: 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEb^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dafbf%hcfRcScTcS UcVcT WcU XcYcV ZcmeneoeAcF df! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%defff'hch(h: ; = ? @ [ ] ^ nj)h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvdgf,hhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifpejfqekfrelfsemftenfueofvepfweqfxerf-hsf.htf/huf:hvf;hwf=hxf?hyf@hzf[hAf]hBf^hCf_hDfyeoj`hEf{hFfMhzeNhOhPhQhAeRhGfBepjHfCeqj|hIf}hJfKfDeLfEeMfFeNfOf~hq aiPfbiQfRfci| YbZb0b1bdirjeiSffigie dhehfh'df TfhiiijiGekiUfliVfsjmiWftjniXfShujoiHeThUhYfpiZfIe) 0fghqihhriwdxd0c1c2c3c4c5c2b} 1f3b2f3f4f4 G 5 * b ydzdAd4b5b6b7bihjhkhlhmhnhohphqhFc(d)d*d+d,d-d5f6fsi7f6c7c8cW 9c!cX #cY $c%cZ 'cJeKeLeGcH 8f$ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^d9f!ftirhuiabbbcbdbebfbgbhbvjviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdId#fyi$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%fMe'fNe(fOe)fPe*fQe+fRe,fSe-fTe.fUe/fzi:fAi;fBi=fCi?fDi@fEi[fFi]fGi^fHi_fIi`fJi{fKi|fVewjLi}fMi~fVhWeWhXhYhZhXe0hagYexjbgZeyjNicgOidgeg0efg1egg2ehgigPiI x QijgRikglgSilb@b[b]b^bTizjUimgViWig shthuh_dh ngXiYiZi3e0iog1ipgAj2iqgBj3irg1hCj4i4e2h3hsg5itg5e+ ugvh6iwh7iJdKd(c)c*c+c,c-c_bmbvg`bwgxgyg6 J 7 , c d LdMdNd{b|b}b~bxhyhzhAhBhChDhEhFhLc`d{d|d}d~daezgAg8iBg.c/c:c0 ;c=c1 ?c2 @c[c3 ]c6e7e8eMcK Cg' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeDgEg9iGh!iobpbqbrbsbtbubvbDj#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVdFg'iGgy z A B C D hcicjckclcmcncocpcqcrcscybHg9eIg!eJg#eKg$eLg%eMg'eNg(eOg)ePg*eQg(iRg)iSg*iTg+iUg,iVg-iWg.iXg/iYg:iZg;i0g=i1g?i2g+eEj@i3g[i4g4h,e5h6h7h8h-e9h5g.eFj6g/eGj]i7g^i8g9g:e!g;e#g=e$g%g_iE `i'g{i(g)g|izbtcucvcwc}iHj~i*gajbji HhIhJhlej +gcjdjej?efj,ggj-gIjhj.gJjij/g!hKjjj@e#h$h:gkj;g[e- =gKhljLhmjWdXd^c_c`c{c|c}cxcAb?gyc@g[g]g8 L 9 .

20 return call # pragma: no cover 

21 unwrapped = inspect.unwrap(_impartial(call)) 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEb^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dafbf%hcfRcScTcS UcVcT WcU XcYcV ZcmeneoeAcF df! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%defff'hch(h: ; = ? @ [ ] ^ nj)h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvdgf,hhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifpejfqekfrelfsemftenfueofvepfweqfxerf-hsf.htf/huf:hvf;hwf=hxf?hyf@hzf[hAf]hBf^hCf_hDfyeoj`hEf{hFfMhzeNhOhPhQhAeRhGfBepjHfCeqj|hIf}hJfKfDeLfEeMfFeNfOf~hq aiPfbiQfRfci| YbZb0b1bdirjeiSffigie dhehfh'df TfhiiijiGekiUfliVfsjmiWftjniXfShujoiHeThUhYfpiZfIe) 0fghqihhriwdxd0c1c2c3c4c5c2b} 1f3b2f3f4f4 G 5 * b ydzdAd4b5b6b7bihjhkhlhmhnhohphqhFc(d)d*d+d,d-d5f6fsi7f6c7c8cW 9c!cX #cY $c%cZ 'cJeKeLeGcH 8f$ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^d9f!ftirhuiabbbcbdbebfbgbhbvjviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdId#fyi$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%fMe'fNe(fOe)fPe*fQe+fRe,fSe-fTe.fUe/fzi:fAi;fBi=fCi?fDi@fEi[fFi]fGi^fHi_fIi`fJi{fKi|fVewjLi}fMi~fVhWeWhXhYhZhXe0hagYexjbgZeyjNicgOidgeg0efg1egg2ehgigPiI x QijgRikglgSilb@b[b]b^bTizjUimgViWig shthuh_dh ngXiYiZi3e0iog1ipgAj2iqgBj3irg1hCj4i4e2h3hsg5itg5e+ ugvh6iwh7iJdKd(c)c*c+c,c-c_bmbvg`bwgxgyg6 J 7 , c d LdMdNd{b|b}b~bxhyhzhAhBhChDhEhFhLc`d{d|d}d~daezgAg8iBg.c/c:c0 ;c=c1 ?c2 @c[c3 ]c6e7e8eMcK Cg' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeDgEg9iGh!iobpbqbrbsbtbubvbDj#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVdFg'iGgy z A B C D hcicjckclcmcncocpcqcrcscybHg9eIg!eJg#eKg$eLg%eMg'eNg(eOg)ePg*eQg(iRg)iSg*iTg+iUg,iVg-iWg.iXg/iYg:iZg;i0g=i1g?i2g+eEj@i3g[i4g4h,e5h6h7h8h-e9h5g.eFj6g/eGj]i7g^i8g9g:e!g;e#g=e$g%g_iE `i'g{i(g)g|izbtcucvcwc}iHj~i*gajbji HhIhJhlej +gcjdjej?efj,ggj-gIjhj.gJjij/g!hKjjj@e#h$h:gkj;g[e- =gKhljLhmjWdXd^c_c`c{c|c}cxcAb?gyc@g[g]g8 L 9 .

22 return unwrapped 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEb^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dafbf%hcfRcScTcS UcVcT WcU XcYcV ZcmeneoeAcF df! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%defff'hch(h: ; = ? @ [ ] ^ nj)h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvdgf,hhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifpejfqekfrelfsemftenfueofvepfweqfxerf-hsf.htf/huf:hvf;hwf=hxf?hyf@hzf[hAf]hBf^hCf_hDfyeoj`hEf{hFfMhzeNhOhPhQhAeRhGfBepjHfCeqj|hIf}hJfKfDeLfEeMfFeNfOf~hq aiPfbiQfRfci| YbZb0b1bdirjeiSffigie dhehfh'df TfhiiijiGekiUfliVfsjmiWftjniXfShujoiHeThUhYfpiZfIe) 0fghqihhriwdxd0c1c2c3c4c5c2b} 1f3b2f3f4f4 G 5 * b ydzdAd4b5b6b7bihjhkhlhmhnhohphqhFc(d)d*d+d,d-d5f6fsi7f6c7c8cW 9c!cX #cY $c%cZ 'cJeKeLeGcH 8f$ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^d9f!ftirhuiabbbcbdbebfbgbhbvjviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdId#fyi$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%fMe'fNe(fOe)fPe*fQe+fRe,fSe-fTe.fUe/fzi:fAi;fBi=fCi?fDi@fEi[fFi]fGi^fHi_fIi`fJi{fKi|fVewjLi}fMi~fVhWeWhXhYhZhXe0hagYexjbgZeyjNicgOidgeg0efg1egg2ehgigPiI x QijgRikglgSilb@b[b]b^bTizjUimgViWig shthuh_dh ngXiYiZi3e0iog1ipgAj2iqgBj3irg1hCj4i4e2h3hsg5itg5e+ ugvh6iwh7iJdKd(c)c*c+c,c-c_bmbvg`bwgxgyg6 J 7 , c d LdMdNd{b|b}b~bxhyhzhAhBhChDhEhFhLc`d{d|d}d~daezgAg8iBg.c/c:c0 ;c=c1 ?c2 @c[c3 ]c6e7e8eMcK Cg' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeDgEg9iGh!iobpbqbrbsbtbubvbDj#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVdFg'iGgy z A B C D hcicjckclcmcncocpcqcrcscybHg9eIg!eJg#eKg$eLg%eMg'eNg(eOg)ePg*eQg(iRg)iSg*iTg+iUg,iVg-iWg.iXg/iYg:iZg;i0g=i1g?i2g+eEj@i3g[i4g4h,e5h6h7h8h-e9h5g.eFj6g/eGj]i7g^i8g9g:e!g;e#g=e$g%g_iE `i'g{i(g)g|izbtcucvcwc}iHj~i*gajbji HhIhJhlej +gcjdjej?efj,ggj-gIjhj.gJjij/g!hKjjj@e#h$h:gkj;g[e- =gKhljLhmjWdXd^c_c`c{c|c}cxcAb?gyc@g[g]g8 L 9 .

23 

24 

25def _impartial(func: Callable[..., Any]) -> Callable[..., Any]: 1abcd

26 while isinstance(func, partial): 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEb^g_g`g{g|g}g~gahbhLjMjNjOjzcPjQjRjSjTjUjVjWjXjYjZj0jYdZd0d1d2d3dafbf%hcf1j2jRcScTcS UcVcT WcU XcYcV Zc3j4jmeneoeAcF df! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%defff'hch5j(h6j: ; = ? @ [ ] ^ nj)h7j8j9j!j*h#j$jFbodpdGbHbIb_ ` JbKb+h%jLbqdfdrdsdgdtdudvdgf,hhf'jk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifpejfqekfrelfsemftenfueofvepfweqfxerf-hsf.htf/huf:hvf;hwf=hxf?hyf@hzf[hAf]hBf^hCf_hDfyeoj`hEf{hFfMhzeNhOhPhQhAeRhGfBepjHfCeqj|hIf}hJfKfDeLfEeMfFeNf(jOf~hq aiPfbiQfRf)j*j+jci,j-j.j/j:j;j| YbZb0b1b=jdirjeiSffi?j@jgie dhehfh'df Tfhi[j]j^j_jiijiGekiUfliVf`jsjmiWf{jtjniXfSh|jujoiHeThUh}jYfpiZfIe) 0fghqihhriwdxd~j0c1c2c3c4c5cak2b} 1f3b2f3f4f4 G 5 bk* b ydzdAd4b5b6b7bihjhkhlhmhnhohphqhckdkekfkFcgkhkikjkkklkmknkokpkqkrk(d)d*d+d,d-d5f6fsi7fsktk6c7c8cW 9c!cX #cY $c%cZ 'cukvkJeKeLeGcH 8f$ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^d9f!ftirhwkuixkabbbcbdbebfbgbhbvjviykzkAkBkwiCkDk8bBdCd9b!b#bibjb$b%bxiEk'bDdhdEdFdidGdHdId#fyi$fFkr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%fMe'fNe(fOe)fPe*fQe+fRe,fSe-fTe.fUe/fzi:fAi;fBi=fCi?fDi@fEi[fFi]fGi^fHi_fIi`fJi{fKi|fVewjLi}fMi~fVhWeWhXhYhZhXe0hagYexjbgZeyjNicgOidgeg0efg1egg2ehgGkigPiI x QijgRikglgHkIkJkSiKkLkMkNkOkPklb@b[b]b^bQkTizjUimgViRkSkWig shthuh_dh ngXiTkUkVkWkYiZi3e0iog1ipgXkAj2iqgYkBj3irg1hZkCj4i4e2h3h0ksg5itg5e+ ugvh6iwh7iJdKd1k(c)c*c+c,c-c2k_bmbvg`bwgxgyg6 J 7 3k, c d LdMdNd{b|b}b~bxhyhzhAhBhChDhEhFh4k5k6k7kLc8k9k!k#k$k%k'k(k)k*k+k,k`d{d|d}d~daezgAg8iBg-k.k.c/c:c0 ;c=c1 ?c2 @c[c3 ]c/k:k6e7e8eMcK Cg' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeDgEg9iGh;k!i=kobpbqbrbsbtbubvbDj#i?k@k[k]k$i^k_kacOdPdbcccdcwbxbecfc%i`kgcQdjdRdSdkdTdUdVdFg'iGg{ky z A B C D hcicjckclcmcncocpcqcrcscybHg9eIg!eJg#eKg$eLg%eMg'eNg(eOg)ePg*eQg(iRg)iSg*iTg+iUg,iVg-iWg.iXg/iYg:iZg;i0g=i1g?i2g+eEj@i3g[i4g4h,e5h6h7h8h-e9h5g.eFj6g/eGj]i7g^i8g9g:e!g;e#g=e$g|k%g_iE `i'g{i(g)g}k~kal|iblcldlelflglzbtcucvcwchl}iHj~i*gajiljlbji HhIhJhlej +gcjklllmlnldjej?efj,ggj-golIjhj.gplJjij/g!hqlKjjj@e#h$hrl:gkj;g[e- =gKhljLhmjWdXdsl^c_c`c{c|c}ctlxcAb?gyc@g[g]g8 L 9 ul.

27 func = func.func 2a Acb Gcc d Mc

28 return func 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEb^g_g`g{g|g}g~gahbhLjMjNjOjzcPjQjRjSjTjUjVjWjXjYjZj0jYdZd0d1d2d3dafbf%hcf1j2jRcScTcS UcVcT WcU XcYcV Zc3j4jmeneoeAcF df! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%defff'hch5j(h6j: ; = ? @ [ ] ^ nj)h7j8j9j!j*h#j$jFbodpdGbHbIb_ ` JbKb+h%jLbqdfdrdsdgdtdudvdgf,hhf'jk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifpejfqekfrelfsemftenfueofvepfweqfxerf-hsf.htf/huf:hvf;hwf=hxf?hyf@hzf[hAf]hBf^hCf_hDfyeoj`hEf{hFfMhzeNhOhPhQhAeRhGfBepjHfCeqj|hIf}hJfKfDeLfEeMfFeNf(jOf~hq aiPfbiQfRf)j*j+jci,j-j.j/j:j;j| YbZb0b1b=jdirjeiSffi?j@jgie dhehfh'df Tfhi[j]j^j_jiijiGekiUfliVf`jsjmiWf{jtjniXfSh|jujoiHeThUh}jYfpiZfIe) 0fghqihhriwdxd~j0c1c2c3c4c5cak2b} 1f3b2f3f4f4 G 5 bk* b ydzdAd4b5b6b7bihjhkhlhmhnhohphqhckdkekfkFcgkhkikjkkklkmknkokpkqkrk(d)d*d+d,d-d5f6fsi7fsktk6c7c8cW 9c!cX #cY $c%cZ 'cukvkJeKeLeGcH 8f$ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^d9f!ftirhwkuixkabbbcbdbebfbgbhbvjviykzkAkBkwiCkDk8bBdCd9b!b#bibjb$b%bxiEk'bDdhdEdFdidGdHdId#fyi$fFkr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%fMe'fNe(fOe)fPe*fQe+fRe,fSe-fTe.fUe/fzi:fAi;fBi=fCi?fDi@fEi[fFi]fGi^fHi_fIi`fJi{fKi|fVewjLi}fMi~fVhWeWhXhYhZhXe0hagYexjbgZeyjNicgOidgeg0efg1egg2ehgGkigPiI x QijgRikglgHkIkJkSiKkLkMkNkOkPklb@b[b]b^bQkTizjUimgViRkSkWig shthuh_dh ngXiTkUkVkWkYiZi3e0iog1ipgXkAj2iqgYkBj3irg1hZkCj4i4e2h3h0ksg5itg5e+ ugvh6iwh7iJdKd1k(c)c*c+c,c-c2k_bmbvg`bwgxgyg6 J 7 3k, c d LdMdNd{b|b}b~bxhyhzhAhBhChDhEhFh4k5k6k7kLc8k9k!k#k$k%k'k(k)k*k+k,k`d{d|d}d~daezgAg8iBg-k.k.c/c:c0 ;c=c1 ?c2 @c[c3 ]c/k:k6e7e8eMcK Cg' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeDgEg9iGh;k!i=kobpbqbrbsbtbubvbDj#i?k@k[k]k$i^k_kacOdPdbcccdcwbxbecfc%i`kgcQdjdRdSdkdTdUdVdFg'iGg{ky z A B C D hcicjckclcmcncocpcqcrcscybHg9eIg!eJg#eKg$eLg%eMg'eNg(eOg)ePg*eQg(iRg)iSg*iTg+iUg,iVg-iWg.iXg/iYg:iZg;i0g=i1g?i2g+eEj@i3g[i4g4h,e5h6h7h8h-e9h5g.eFj6g/eGj]i7g^i8g9g:e!g;e#g=e$g|k%g_iE `i'g{i(g)g}k~kal|iblcldlelflglzbtcucvcwchl}iHj~i*gajiljlbji HhIhJhlej +gcjklllmlnldjej?efj,ggj-golIjhj.gplJjij/g!hqlKjjj@e#h$hrl:gkj;g[e- =gKhljLhmjWdXdsl^c_c`c{c|c}ctlxcAb?gyc@g[g]g8 L 9 ul.

29 

30 

31@dataclass 1abcd

32class Dependant: 1abcd

33 path_params: list[ModelField] = field(default_factory=list) 1abcd

34 query_params: list[ModelField] = field(default_factory=list) 1abcd

35 header_params: list[ModelField] = field(default_factory=list) 1abcd

36 cookie_params: list[ModelField] = field(default_factory=list) 1abcd

37 body_params: list[ModelField] = field(default_factory=list) 1abcd

38 dependencies: list["Dependant"] = field(default_factory=list) 1abcd

39 name: str | None = None 1abcd

40 call: Callable[..., Any] | None = None 1abcd

41 request_param_name: str | None = None 1abcd

42 websocket_param_name: str | None = None 1abcd

43 http_connection_param_name: str | None = None 1abcd

44 response_param_name: str | None = None 1abcd

45 background_tasks_param_name: str | None = None 1abcd

46 security_scopes_param_name: str | None = None 1abcd

47 own_oauth_scopes: list[str] | None = None 1abcd

48 parent_oauth_scopes: list[str] | None = None 1abcd

49 use_cache: bool = True 1abcd

50 path: str | None = None 1abcd

51 scope: Literal["function", "request"] | None = None 1abcd

52 

53 @cached_property 1abcd

54 def oauth_scopes(self) -> list[str]: 1abcd

55 scopes = self.parent_oauth_scopes.copy() if self.parent_oauth_scopes else [] 2a ldmdndBbCbDbEb%hScTcS UcVcT WcU XcYcV ZcF ! # M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsi7c8cW 9c!cX #cY $c%cZ 'cH $ % O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

56 # This doesn't use a set to preserve order, just in case 

57 for scope in self.own_oauth_scopes or []: 2a ldmdndBbCbDbEb%hScTcS UcVcT WcU XcYcV ZcF ! # M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsi7c8cW 9c!cX #cY $c%cZ 'cH $ % O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

58 if scope not in scopes: 2a zeAeHeb WeXe4ec d ,e-e@e

59 scopes.append(scope) 1abcd

60 return scopes 2a ldmdndBbCbDbEb%hScTcS UcVcT WcU XcYcV ZcF ! # M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsi7c8cW 9c!cX #cY $c%cZ 'cH $ % O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

61 

62 @cached_property 1abcd

63 def cache_key(self) -> DependencyCacheKey: 1abcd

64 scopes_for_cache = ( 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

65 tuple(sorted(set(self.oauth_scopes or []))) if self._uses_scopes else () 

66 ) 

67 return ( 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

68 self.call, 

69 scopes_for_cache, 

70 self.computed_scope or "", 

71 ) 

72 

73 @cached_property 1abcd

74 def _uses_scopes(self) -> bool: 1abcd

75 if self.own_oauth_scopes: 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

76 return True 1abcd

77 if self.security_scopes_param_name is not None: 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

78 return True 1abcd

79 if self._is_security_scheme: 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

80 return True 1abcd

81 for sub_dep in self.dependencies: 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

82 if sub_dep._uses_scopes: 1aFMNklmnopqef4G5bHOPrstuvwIxgh6J7cdKQRyzABCDEij8L9

83 return True 1abcd

84 return False 2a ldmdndBbCbDbEbS T U V F M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

85 

86 @cached_property 1abcd

87 def _is_security_scheme(self) -> bool: 1abcd

88 if self.call is None: 2a ldmdndBbCbDbEb%hS T U V F M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsiW X Y Z H O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i0 1 2 3 K Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

89 return False # pragma: no cover 

90 unwrapped = _unwrapped_call(self.call) 2a ldmdndBbCbDbEb%hS T U V F M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsiW X Y Z H O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i0 1 2 3 K Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

91 return isinstance(unwrapped, SecurityBase) 2a ldmdndBbCbDbEb%hS T U V F M N 'h(h: ; = ? @ [ ] ^ )h*hFbodpdGbHbIb_ ` JbKb+hLbqdfdrdsdgdtdudvd,hk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~hq PfQfci| YbZb0b1bdieifigie f hiiijiUfVfWfXfHeYfZfqiriwdxd2b} 1f3b4 G 5 b ydzdAd4b5b6b7bsiW X Y Z H O P tiuiabbbcbdbebfbgbhbviwi8bBdCd9b!b#bibjb$b%bxi'bDdhdEdFdidGdHdIdyir s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkb%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggPiI x jgkgSilb@b[b]b^bTiUiViWig h XiYiZiogpgqgrg4esgtg6i7iJdKd_bmbvg`b6 J 7 c d LdMdNd{b|b}b~b8i0 1 2 3 K Q R 9i!iobpbqbrbsbtbubvb#i$iacOdPdbcccdcwbxbecfc%igcQdjdRdSdkdTdUdVd'iy z A B C D hcicjckclcmcncocpcqcrcscybHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g_iE 'g(g|izbtcucvcwc}i~iajbji j cjdjej,g-g.g/g@e:g;gljmjWdXdxcAb?gyc8 L 9

92 

93 # Mainly to get the type of SecurityBase, but it's the same self.call 

94 @cached_property 1abcd

95 def _security_scheme(self) -> SecurityBase: 1abcd

96 unwrapped = _unwrapped_call(self.call) 2ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMfPfQfUfVfWfXfHeYfZf1f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggjgkgogpgqgrg4esgtgvgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g'g(g,g-g.g/g@e:g;g?g

97 assert isinstance(unwrapped, SecurityBase) 2ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMfPfQfUfVfWfXfHeYfZf1f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggjgkgogpgqgrg4esgtgvgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g'g(g,g-g.g/g@e:g;g?g

98 return unwrapped 2ifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMfPfQfUfVfWfXfHeYfZf1f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggjgkgogpgqgrg4esgtgvgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#g'g(g,g-g.g/g@e:g;g?g

99 

100 @cached_property 1abcd

101 def _security_dependencies(self) -> list["Dependant"]: 1abcd

102 security_deps = [dep for dep in self.dependencies if dep._is_security_scheme] 2vlwlxlylzlAlBlClDlElFlGlHlIlJlKl%hLlMl'hNl(hOl: ; = ? @ [ ] ^ )hPlQl*hRlSlTlUlVlWlXlYlZl_ ` 0l+h1l2lfdgd,h3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l{ }lifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~l~hamPfbmcmdmemfmQfgmhmimjmcikmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCm| DmEmFmGmHmImJmKmLmMmNmOmPmQmdieifigihiiiRmSmTmUmVmWmXmYmZm0m1m2m3m4mji5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8nUfVfWfXfHeYfZf9n!n#nqiri$n%n'n(n)n*n} +n,n-n1f.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~nsiaoboticouidoabbbcbdbebfbgbhbvieofowigohoiojokolomonoooibjbpoxiqorohdidyisotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXokbYo%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggZoPi0ojg1o2o3o4o5okg6o7o8o9oSi!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o=o?o@o[olb]o^o_o`o{o|o}o~oapbpcpdpepfpTiUiViWiXiYigphpipjpkplpmpnpopppqprpsptpZiupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqogpgqgrg4esgtgyqzqAq6i7iBqCqDqEqFqGqmbHqIqJqvgKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq8i0q1q9i2q!i3qobpbqbrbsbtbubvb#i4q5q$i6q7q8q9q!q#q$q%q'qwbxb(q%i)q*qjdkd'i+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrybnrHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#gor_ipr'gqrrrsrtrur(gvrwrxryr|izrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrzbSrTrUrVrWrXrYrZr0r1r2r3r4r5r}i~iajbjcjdj6r7r8r9r!r#r$r%r'r(r)r*r+r,rej-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s,g-g.g/g@e:g;g;s=s?sljmj@s[s]s^s_s`sAb{s|s}s?g

103 return security_deps 2vlwlxlylzlAlBlClDlElFlGlHlIlJlKl%hLlMl'hNl(hOl: ; = ? @ [ ] ^ )hPlQl*hRlSlTlUlVlWlXlYlZl_ ` 0l+h1l2lfdgd,h3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l.l/l:l;l=l?l@l[l]l^l_l`l{l|l{ }lifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfzeAeGfHfIfJfKfLfMf~l~hamPfbmcmdmemfmQfgmhmimjmcikmlmmmnmompmqmrmsmtmumvmwmxmymzmAmBmCm| DmEmFmGmHmImJmKmLmMmNmOmPmQmdieifigihiiiRmSmTmUmVmWmXmYmZm0m1m2m3m4mji5m6m7m8m9m!m#m$m%m'm(m)m*m+m,m-m.m/m:m;m=m?m@m[m]m^m_m`m{m|m}m~manbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynznAnBnCnDnEnFnGnHnInJnKnLnMnNnOnPnQnRnSnTnUnVnWnXnYnZn0n1n2n3n4n5n6n7n8nUfVfWfXfHeYfZf9n!n#nqiri$n%n'n(n)n*n} +n,n-n1f.n/n:n;n=n?n@n[n]n^n_n`n{n|n}n~nsiaoboticouidoabbbcbdbebfbgbhbvieofowigohoiojokolomonoooibjbpoxiqorohdidyisotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXokbYo%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fWeXeagbgcgdgegfgggZoPi0ojg1o2o3o4o5okg6o7o8o9oSi!o#o$o%o'o(o)o*o+o,o-o.o/o:o;o=o?o@o[olb]o^o_o`o{o|o}o~oapbpcpdpepfpTiUiViWiXiYigphpipjpkplpmpnpopppqprpsptpZiupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqogpgqgrg4esgtgyqzqAq6i7iBqCqDqEqFqGqmbHqIqJqvgKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq8i0q1q9i2q!i3qobpbqbrbsbtbubvb#i4q5q$i6q7q8q9q!q#q$q%q'qwbxb(q%i)q*qjdkd'i+q,q-q.q/q:q;q=q?q@q[q]q^q_q`q{q|q}q~qarbrcrdrerfrgrhrirjrkrlrmrybnrHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g,e-e5g6g7g8g9g!g#gor_ipr'gqrrrsrtrur(gvrwrxryr|izrArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrzbSrTrUrVrWrXrYrZr0r1r2r3r4r5r}i~iajbjcjdj6r7r8r9r!r#r$r%r'r(r)r*r+r,rej-r.r/r:r;r=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPsQsRsSsTsUsVsWsXsYsZs0s1s2s3s4s5s6s7s8s9s!s#s$s%s's(s)s*s+s,s-s.s/s:s,g-g.g/g@e:g;g;s=s?sljmj@s[s]s^s_s`sAb{s|s}s?g

104 

105 @cached_property 1abcd

106 def is_gen_callable(self) -> bool: 1abcd

107 if self.call is None: 2a RcScTcS UcVcT WcU XcYcV ZcF ! # M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%dk l m n o p q e 'df ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^dr s t u v w I x g _dh + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( Q R NcbeceOcdeeefegehePcieddQcjeedkey z A B C D E i lej - ^c_c`c{c|c}c8 L 9 .

108 return False # pragma: no cover 

109 if inspect.isgeneratorfunction( 2a RcScTcS UcVcT WcU XcYcV ZcF ! # M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%dk l m n o p q e 'df ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^dr s t u v w I x g _dh + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( Q R NcbeceOcdeeefegehePcieddQcjeedkey z A B C D E i lej - ^c_c`c{c|c}c8 L 9 .

110 _impartial(self.call) 

111 ) or inspect.isgeneratorfunction(_unwrapped_call(self.call)): 

112 return True 2a M N Bc4d5dCc6d7d8d9d!dDc'db O P Hc.d/dIc:d;d=d?d@dJc_dc d Q R NcbeceOcdeeefegehePcle

113 if inspect.isclass(_unwrapped_call(self.call)): 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

114 return False 1abcd

115 dunder_call = getattr(_impartial(self.call), "__call__", None) # noqa: B004 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

116 if dunder_call is None: 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

117 return False # pragma: no cover 

118 if inspect.isgeneratorfunction( 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

119 _impartial(dunder_call) 

120 ) or inspect.isgeneratorfunction(_unwrapped_call(dunder_call)): 

121 return True 1abcd

122 dunder_unwrapped_call = getattr(_unwrapped_call(self.call), "__call__", None) # noqa: B004 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

123 if dunder_unwrapped_call is None: 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

124 return False # pragma: no cover 

125 if inspect.isgeneratorfunction( 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

126 _impartial(dunder_unwrapped_call) 

127 ) or inspect.isgeneratorfunction(_unwrapped_call(dunder_unwrapped_call)): 

128 return True 1abcd

129 return False 2a RcScTcS UcVcT WcU XcYcV ZcF ! # BcDc#d~cEc$dad%dk l m n o p q e f ) 0c1c2c3c4c5c4 G 5 * b 6c7c8cW 9c!cX #cY $c%cZ 'cH $ % HcJc[dbdKc]dcd^dr s t u v w I x g h + (c)c*c+c,c-c6 J 7 , c d .c/c:c0 ;c=c1 ?c2 @c[c3 ]cK ' ( NcPcieddQcjeedkey z A B C D E i j - ^c_c`c{c|c}c8 L 9 .

130 

131 @cached_property 1abcd

132 def is_async_gen_callable(self) -> bool: 1abcd

133 if self.call is None: 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%dchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^drhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

134 return False # pragma: no cover 

135 if inspect.isasyncgenfunction( 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc#d~cEc$dad%dchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJc[dbdKc]dcd^drhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcieddQcjeedkeGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

136 _impartial(self.call) 

137 ) or inspect.isasyncgenfunction(_unwrapped_call(self.call)): 

138 return True 2a / #d~cEc$dad%de f b ~ [dbdKc]dcd^dg h c d nbieddQcjeedkei j

139 if inspect.isclass(_unwrapped_call(self.call)): 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

140 return False 1abcd

141 dunder_call = getattr(_impartial(self.call), "__call__", None) # noqa: B004 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

142 if dunder_call is None: 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

143 return False # pragma: no cover 

144 if inspect.isasyncgenfunction( 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

145 _impartial(dunder_call) 

146 ) or inspect.isasyncgenfunction(_unwrapped_call(dunder_call)): 

147 return True 2a / b ~ c d nb

148 dunder_unwrapped_call = getattr(_unwrapped_call(self.call), "__call__", None) # noqa: B004 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

149 if dunder_unwrapped_call is None: 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

150 return False # pragma: no cover 

151 if inspect.isasyncgenfunction( 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

152 _impartial(dunder_unwrapped_call) 

153 ) or inspect.isasyncgenfunction(_unwrapped_call(dunder_unwrapped_call)): 

154 return True 1abcd

155 return False 2a ^g_g`g{g|g}g~gahbhzcYdZd0d1d2d3dRcScTcS UcVcT WcU XcYcV ZcAcF ! # / M N Bc4d5dCc6d7d8d9d!dDc~cadchk l m n o p q e dhehfh'df ) ghhh0c1c2c3c4c5c4 G 5 * b ihjhkhlhmhnhohphqhFc(d)d*d+d,d-d6c7c8cW 9c!cX #cY $c%cZ 'cGcH $ % ~ O P Hc.d/dIc:d;d=d?d@dJcbdcdrhr s t u v w I x g shthuh_dh + vhwh(c)c*c+c,c-c6 J 7 , c d xhyhzhAhBhChDhEhFhLc`d{d|d}d~dae.c/c:c0 ;c=c1 ?c2 @c[c3 ]cMcK ' ( nbQ R NcbeceOcdeeefegehePcddedGhy z A B C D E i HhIhJhlej - KhLh^c_c`c{c|c}c8 L 9 .

156 

157 @cached_property 1abcd

158 def is_coroutine_callable(self) -> bool: 1abcd

159 if self.call is None: 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEbLjMjNjOjzcPjQjRjSjTjUjVjWjXjYjZj0jYdZd0d1d2d3dafbfcf1j2jRcS T U V 3j4jmeneoeAcF df! # / M N CcEcefff5j6j: ; = ? @ [ ] ^ nj7j8j9j!j#j$jFbodpdGbHbIb_ ` JbKb%jLbqdfdrdsdgdtdudvdgfhf'jk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hyeoj`h{hMhNhOhPhQhRhBepjCeqj|h}hDeEeFeNf(jOfq aibiRf)j*j+j,j-j.j/j:j;j| YbZb0b1b=jrjSf?j@je f Tf[j]j^j_jGekili`jsjmi{jtjniSh|jujoiThUh}jpiIe) 0fwdxd~j0c1c2c3c4c5cak2b} 3b2f3f4fG bk* b ydzdAd4b5b6b7bckdkekfkFcgkhkikjkkklkmknkokpkqkrk(d)d*d+d,d-d5f6f7fsktk6cW X Y Z ukvkJeKeLeGcH 8f$ % ~ O P IcKc9f!fwkxkabbbcbdbebfbgbhbvjykzkAkBkCkDk8bBdCd9b!b#bibjb$b%bEk'bDdhdEdFdidGdHdId#f$fFkr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVewjLiMiVhWhXhYhZh0hYexjZeyjNiOi0e1e2ehgGkigI x QiRilgHkIkJkKkLkMkNkOkPklb@b[b]b^bQkzjmgRkSkg h ngTkUkVkWk3e0i1iXkAj2iYkBj3i1hZkCj4i2h3h0k5i5e+ ugJdKd1k(c)c*c+c,c-c2k_bmb`bwgxgygJ 3k, c d LdMdNd{b|b}b~b4k5k6k7kLc8k9k!k#k$k%k'k(k)k*k+k,k`d{d|d}d~daezgAgBg-k.k.c0 1 2 3 /k:k6e7e8eMcK Cg' ( nbQ R OcQcDgEg;k=kobpbqbrbsbtbubvbDj?k@k[k]k^k_kacOdPdbcccdcwbxbecfc`kgcQdjdRdSdkdTdUdVdFgGg{ky z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+eEj@i[i4h5h6h7h8h9h.eFj/eGj]i^i:e;e=e$g|k%gE `i{i)g}k~kalblcldlelflglzbtcucvcwchlHj*giljli j +gklllmlnl?efjgjolIjhjplJjij!hqlKjjj#h$hrlkj[e- =gWdXdsl^c_c`c{c|c}ctlxcAbyc@g[g]gL ul.

160 return False # pragma: no cover 

161 if inspect.isroutine(_impartial(self.call)) and iscoroutinefunction( 2a ]e^e_e`e{e|e}e~eldmdndBbCbDbEbLjMjNjOjzcPjQjRjSjTjUjVjWjXjYjZj0jYdZd0d1d2d3dafbfcf1j2jRcS T U V 3j4jmeneoeAcF df! # / M N CcEcefff5j6j: ; = ? @ [ ] ^ nj7j8j9j!j#j$jFbodpdGbHbIb_ ` JbKb%jLbqdfdrdsdgdtdudvdgfhf'jk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hyeoj`h{hMhNhOhPhQhRhBepjCeqj|h}hDeEeFeNf(jOfq aibiRf)j*j+j,j-j.j/j:j;j| YbZb0b1b=jrjSf?j@je f Tf[j]j^j_jGekili`jsjmi{jtjniSh|jujoiThUh}jpiIe) 0fwdxd~j0c1c2c3c4c5cak2b} 3b2f3f4fG bk* b ydzdAd4b5b6b7bckdkekfkFcgkhkikjkkklkmknkokpkqkrk(d)d*d+d,d-d5f6f7fsktk6cW X Y Z ukvkJeKeLeGcH 8f$ % ~ O P IcKc9f!fwkxkabbbcbdbebfbgbhbvjykzkAkBkCkDk8bBdCd9b!b#bibjb$b%bEk'bDdhdEdFdidGdHdId#f$fFkr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVewjLiMiVhWhXhYhZh0hYexjZeyjNiOi0e1e2ehgGkigI x QiRilgHkIkJkKkLkMkNkOkPklb@b[b]b^bQkzjmgRkSkg h ngTkUkVkWk3e0i1iXkAj2iYkBj3i1hZkCj4i2h3h0k5i5e+ ugJdKd1k(c)c*c+c,c-c2k_bmb`bwgxgygJ 3k, c d LdMdNd{b|b}b~b4k5k6k7kLc8k9k!k#k$k%k'k(k)k*k+k,k`d{d|d}d~daezgAgBg-k.k.c0 1 2 3 /k:k6e7e8eMcK Cg' ( nbQ R OcQcDgEg;k=kobpbqbrbsbtbubvbDj?k@k[k]k^k_kacOdPdbcccdcwbxbecfc`kgcQdjdRdSdkdTdUdVdFgGg{ky z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+eEj@i[i4h5h6h7h8h9h.eFj/eGj]i^i:e;e=e$g|k%gE `i{i)g}k~kalblcldlelflglzbtcucvcwchlHj*giljli j +gklllmlnl?efjgjolIjhjplJjij!hqlKjjj#h$hrlkj[e- =gWdXdsl^c_c`c{c|c}ctlxcAbyc@g[g]gL ul.

162 _impartial(self.call) 

163 ): 

164 return True 2a ldmdndLjMjNjOjzcPjQjRjSjTjUjVjWjXjYjZj0jYdZd0d1d2d3d1j2jRcS T U V 3j4jAcF / 5j6j7j8j9j!j#j$jodpd%jqdfdrdsdgdtdudvd'jMhNhOhPhQhRh(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_jGe`j{jSh|jThUh}jwdxd~j0c1c2c3c4c5cakG bkb ydzdAdckdkekfkFcgkhkikjkkklkmknkokpkqkrk(d)d*d+d,d-dsktk6cW X Y Z ukvkGcH ~ wkxkykzkAkBkCkDkBdCdEkDdhdEdFdidGdHdIdFkVhWhXhYhZh0hGkI HkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWk3eXkYk1hZk2h3h0kJdKd1k(c)c*c+c,c-c2kJ 3kc d LdMdNd4k5k6k7kLc8k9k!k#k$k%k'k(k)k*k+k,k`d{d|d}d~dae-k.k.c0 1 2 3 /k:kMcK nb;k=k?k@k[k]k^k_kOdPd`kQdjdRdSdkdTdUdVd{k4h5h6h7h8h9h|k}k~kalblcldlelflglhliljlklllmlnl?eolpl!hql#h$hrlWdXdsl^c_c`c{c|c}ctlL ul

165 if inspect.isroutine(_unwrapped_call(self.call)) and iscoroutinefunction( 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ njFbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hyeoj`h{hMhNhOhPhQhRhBepjCeqj|h}hDeEeFeNfOfq aibiRf| YbZb0b1brjSfe f TfGekilisjmitjniShujoiThUhpiIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhbvj8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVewjLiMiVhWhXhYhZh0hYexjZeyjNiOi0e1e2ehgigx QiRilglb@b[b]b^bzjmgg h ng3e0i1iAj2iBj3i1hCj4i2h3h5i5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbDjacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+eEj@i[i4h5h6h7h8h9h.eFj/eGj]i^i:e;e=e$g%gE `i{i)gzbtcucvcwcHj*gi j +g?efjgjIjhjJjij!hKjjj#h$hkj[e- =gxcAbyc@g[g]g.

166 _unwrapped_call(self.call) 

167 ): 

168 return True 2a / b ~ c d nb

169 if inspect.isclass(_unwrapped_call(self.call)): 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ njFbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hyeoj`h{hMhNhOhPhQhRhBepjCeqj|h}hDeEeFeNfOfq aibiRf| YbZb0b1brjSfe f TfGekilisjmitjniShujoiThUhpiIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhbvj8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVewjLiMiVhWhXhYhZh0hYexjZeyjNiOi0e1e2ehgigx QiRilglb@b[b]b^bzjmgg h ng3e0i1iAj2iBj3i1hCj4i2h3h5i5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbDjacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+eEj@i[i4h5h6h7h8h9h.eFj/eGj]i^i:e;e=e$g%gE `i{i)gzbtcucvcwcHj*gi j +g?efjgjIjhjJjij!hKjjj#h$hkj[e- =gxcAbyc@g[g]g.

170 return False 2zc/ njojpjqjrjsjtjujFc~ vjwjxjyjzjAjBjCjLcnbDjEjFjGjHjIjJjKj

171 dunder_call = getattr(_impartial(self.call), "__call__", None) # noqa: B004 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hye`h{hMhNhOhPhQhRhBeCe|h}hDeEeFeNfOfq aibiRf| YbZb0b1bSfe f TfGekiliminiShoiThUhpiIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVeLiMiVhWhXhYhZh0hYeZeNiOi0e1e2ehgigx QiRilglb@b[b]b^bmgg h ng3e0i1i2i3i1h4i2h3h5i5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+e@i[i4h5h6h7h8h9h.e/e]i^i:e;e=e$g%gE `i{i)gzbtcucvcwc*gi j +g?efjgjhjij!hjj#h$hkj[e- =gxcAbyc@g[g]g.

172 if dunder_call is None: 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hye`h{hMhNhOhPhQhRhBeCe|h}hDeEeFeNfOfq aibiRf| YbZb0b1bSfe f TfGekiliminiShoiThUhpiIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVeLiMiVhWhXhYhZh0hYeZeNiOi0e1e2ehgigx QiRilglb@b[b]b^bmgg h ng3e0i1i2i3i1h4i2h3h5i5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+e@i[i4h5h6h7h8h9h.e/e]i^i:e;e=e$g%gE `i{i)gzbtcucvcwc*gi j +g?efjgjhjij!hjj#h$hkj[e- =gxcAbyc@g[g]g.

173 return False # pragma: no cover 

174 if iscoroutinefunction(_impartial(dunder_call)) or iscoroutinefunction( 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hye`h{hMhNhOhPhQhRhBeCe|h}hDeEeFeNfOfq aibiRf| YbZb0b1bSfe f TfGekiliminiShoiThUhpiIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVeLiMiVhWhXhYhZh0hYeZeNiOi0e1e2ehgigx QiRilglb@b[b]b^bmgg h ng3e0i1i2i3i1h4i2h3h5i5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+e@i[i4h5h6h7h8h9h.e/e]i^i:e;e=e$g%gE `i{i)gzbtcucvcwc*gi j +g?efjgjhjij!hjj#h$hkj[e- =gxcAbyc@g[g]g.

175 _unwrapped_call(dunder_call) 

176 ): 

177 return True 2zcmeneoeAc/ peqereseteuevewexe-h.h/h:h;h=h?h@h[h]h^h_hye`h{hMhNhOhPhQhRhBeCe|h}hDeEeFeaibikiliminiShoiThUhpiIeFcJeKeLeGc~ MeNeOePeQeReSeTeUeziAiBiCiDiEiFiGiHiIiJiKiVeLiMiVhWhXhYhZh0hYeZeNiOi0e1e2eQiRi0i1i2i3i1h4i2h3h5i5eLc6e7e8eMcnb9e!e#e$e%e'e(e)e*e(i)i*i+i,i-i.i/i:i;i=i?i+e@i[i4h5h6h7h8h9h.e/e]i^i:e;e=e`i{ifjgjhjij!hjj#h$hkj[e

178 dunder_unwrapped_call = getattr(_unwrapped_call(self.call), "__call__", None) # noqa: B004 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexeyeBeCeDeEeFeNfOfq Rf| YbZb0b1bSfe f TfGeIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeVeYeZe0e1e2ehgigx lglb@b[b]b^bmgg h ng3e5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e+e.e/e:e;e=e$g%gE )gzbtcucvcwc*gi j +g?e[e- =gxcAbyc@g[g]g.

179 if dunder_unwrapped_call is None: 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexeyeBeCeDeEeFeNfOfq Rf| YbZb0b1bSfe f TfGeIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeVeYeZe0e1e2ehgigx lglb@b[b]b^bmgg h ng3e5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e+e.e/e:e;e=e$g%gE )gzbtcucvcwc*gi j +g?e[e- =gxcAbyc@g[g]g.

180 return False # pragma: no cover 

181 if iscoroutinefunction( 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexeyeBeCeDeEeFeNfOfq Rf| YbZb0b1bSfe f TfGeIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeVeYeZe0e1e2ehgigx lglb@b[b]b^bmgg h ng3e5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e+e.e/e:e;e=e$g%gE )gzbtcucvcwc*gi j +g?e[e- =gxcAbyc@g[g]g.

182 _impartial(dunder_unwrapped_call) 

183 ) or iscoroutinefunction(_unwrapped_call(dunder_unwrapped_call)): 

184 return True 2/ ~ nb

185 return False 2a ]e^e_e`e{e|e}e~eBbCbDbEbzcafbfcfmeneoeAcdf! # / M N CcEcefff: ; = ? @ [ ] ^ FbGbHbIb_ ` JbKbLbgfhfk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ peqereseteuevewexeyeBeCeDeEeFeNfOfq Rf| YbZb0b1bSfe f TfGeIe) 0f2b} 3b2f3f4f* b 4b5b6b7bFc5f6f7fJeKeLeGc8f$ % ~ O P IcKc9f!fabbbcbdbebfbgbhb8b9b!b#bibjb$b%b'b#f$fr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbMeNeOePeQeReSeTeUeVeYeZe0e1e2ehgigx lglb@b[b]b^bmgg h ng3e5e+ ug_bmb`bwgxgyg, c d {b|b}b~bLczgAgBg6e7e8eMcCg' ( nbQ R OcQcDgEgobpbqbrbsbtbubvbacbcccdcwbxbecfcgcFgGgy z A B C D hcicjckclcmcncocpcqcrcscyb9e!e#e$e%e'e(e)e*e+e.e/e:e;e=e$g%gE )gzbtcucvcwc*gi j +g?e[e- =gxcAbyc@g[g]g.

186 

187 @cached_property 1abcd

188 def computed_scope(self) -> str | None: 1abcd

189 if self.scope: 2a ldmdndBbCbDbEbS T U V F M N BcDc: ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bW X Y Z H O P HcJcabbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~b0 1 2 3 K Q R NcPcobpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

190 return self.scope 2a ldmdndBbCbDbEbF M N : ; = ? @ [ ] ^ FbodpdGbHbIb_ ` JbKbLbqdfdrdsdgdtdudvdk l m n o p MbNbObPbQbRbSbTbUbVbWbXb{ q | YbZb0b1be f wdxd2b} 3b4 G 5 b ydzdAd4b5b6b7bH O P abbbcbdbebfbgbhb8bBdCd9b!b#bibjb$b%b'bDdhdEdFdidGdHdIdr s t u v w (b)b*b+b,b-b.b/b:b;b=b?bkbI x lb@b[b]b^bg h JdKd_bmb`b6 J 7 c d LdMdNd{b|b}b~bK Q R obpbqbrbsbtbubvbacOdPdbcccdcwbxbecfcgcQdjdRdSdkdTdUdVdy z A B C D hcicjckclcmcncocpcqcrcscybE zbtcucvcwci j WdXdxcAbyc8 L 9

191 if self.is_gen_callable or self.is_async_gen_callable: 2a S T U V F BcDck l m n o p q e f 4 G 5 b W X Y Z H HcJcr s t u v w I x g h 6 J 7 c d 0 1 2 3 K NcPcy z A B C D E i j 8 L 9

192 return "request" 2a BcDce f b HcJcg h c d NcPci j

193 return None 1aSTUVFklmnopq4G5bWXYZHrstuvwIx6J7cd0123KyzABCDE8L9