
    N j0                        S SK r S SKJr  S SKrS SKJr  S SKJr  S SKJ	r	  SSK
JrJr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJrJr  \ S3r\ S3rS SSSS.r0 SSS\" S\" S/ SQ5      \" SSS/5      /5      S._SSS\" S\" S SS!/5      \" S"S#S$/5      \" S%S&S'/5      \" S%S(S)/5      \" S S*S+/5      /5      S._S,SS-\" S\" SSS./5      \" S"S#S$/5      \" S%S&S'/5      \" S%S(S)/5      \" S S*S//5      /5      S._S0SS\" S\" S%S1S/5      \" S%SS/5      \" S"S2S3/5      \" S/ SQ5      /5      S._S4S*S\" S\" S"S#S$/5      \" S%S&S'/5      \" S S*S5/5      /5      S._S6SS S7S\" S\" S"S#S$/5      \" S S(S/5      \" S S8S9/5      /5      S:._S;SS\" S\" SS&S'/5      \" S/ SQ5      /5      S._S<SS\" S\" S=/ S>Q5      \" SS?S/5      \" S%SS/5      \" S/ SQ5      /5      S@._SASS\" S\" S=/ S>Q5      \" SS?S/5      \" S=/ SBQ5      \" S/ SQ5      /5      S._SCSSD\" S\" S/ SEQ5      \" S/ SFQ5      \" SSGSH/5      \" SSISJ/5      \" S/ SKQ5      \" S"SLSM/5      /5      S@._SNSSD\" S\" S/ SFQ5      \" SSGSH/5      \" SSISJ/5      \" S/ SKQ5      \" S"SOSP/5      \" S"SLSM/5      /5      S@._SQSSD\" S\" S"SOSR/5      \" S/ SFQ5      \" SSGSH/5      \" SSISJ/5      \" S"SLSM/5      /5      S@._SSSSD\" S\" S"SOST/5      \" S/ SFQ5      \" SSGSH/5      \" SSISJ/5      \" S"SLSM/5      /5      S@._SUSSD\" S\" S"SOSV/5      \" S/ SFQ5      \" SSGSH/5      \" SSISJ/5      \" S"SLSM/5      /5      S@._SWSS\" S\" S S(S/5      \" S/ SFQ5      \" S SGSX/5      \" S"SLSM/5      /5      S@._SYSS\" S\" S S(SZ/5      \" S/ SFQ5      \" S"S#S$/5      /5      S._S[S\S-\" S\" S"S#S$/5      \" S/ SFQ5      \" S S(SZ/5      /5      S._S\S-\" S\" S"S#S$/5      \" S"SOS3/5      /5      S.S\S-\" S\" S"S#S$/5      \" S/ S]Q5      /5      S.S^.Er\" S_\" \S`SaSb905              SlSc\\\\\4   Sd\Se\Sf\Sg\Sh\Si\Sj\4Sk jj5       rg)m    N)Union)dumps)_QUERY1_URL_)YfData   )dynamic_docstring'generate_list_table_from_dict_universal   )EquityQuery)	FundQuery)ETFQuery)	QueryBaser   r   r   z/v1/finance/screenerz/predefined/saved    guid)offsetcountuserId
userIdTypeaggressive_small_caps	eodvolumedescandzis-in)exchangeNMSNYQltzepsgrowth.lasttwelvemonths   )	sortFieldsortTypequeryday_gainerspercentchangeDESCgt   eqregionusgteintradaymarketcapi 5wintradayprice   	dayvolumei:  
day_losersASCg      i N  growth_technology_stocksz quarterlyrevenuegrowth.quarterlysector
Technologymost_activesi@KL most_shorted_stocksz,short_percentage_of_shares_outstanding.valueavgdailyvol3mi@ )r   r   r   r    r!   small_cap_gainersundervalued_growth_stocksbtwn)zperatio.lasttwelvemonthsr      pegratio_5y)r    r   r!   undervalued_large_caps)r+   l    d(	 l    h] conservative_foreign_fundsfundnetassets)categorynamezForeign Large ValuezForeign Large BlendzForeign Large GrowthzForeign Small/Mid GrowthzForeign Small/Mid BlendzForeign Small/Mid Value)performanceratingoverall   r-   initialinvestmenti annualreturnnavy1categoryrank2   )riskratingoverallr
   r   r&   r   NAShigh_yield_bondr?   High Yield Bondportfolio_anchorszLarge Blendsolid_large_growth_fundszLarge Growthsolid_midcap_growth_fundszMid-Cap Growthtop_mutual_fundsi  top_etfs_us
   top_performing_etfsannualreportnetexpenseratio)r?   zCorporate BondzEmerging Markets Bondz$Emerging-Markets Local-Currency BondrH   zIntermediate-Term BondzLong-Term BondzInflation-Protected BondzMultisector BondzNontraditional BondzShort-Term BondzUltrashort Bondz
World Bond)technology_etfs	bond_etfspredefined_screenersTzPredefined queries (Dec-2024))bulletstitler!   r   sizer   r   sortAscr   r   c	                 P   [        US9n	SSSSSSS.n
Ub  US
:  a  [        S5      eUb  US
:  a  [        S5      eUbF  [        U [        5      (       a1  [        U    nUS   n Uc  US   nUc  US   R                  5       S:H  n0 n
XX$XVUS.nSSSSS.nS	n[        U [        5      (       a  Ub)  [        R                  " S[        SS9  UnS	nUS   US'   US	 XS'   UR                  5        H  u  pUc  M
  XU'   M     U	R                  [        US9n UR                  5         UR%                  5       S    S!   S   $ [        U [&        5      (       a6  U
 H  nX;  d  X   b  M  X   X'   M     US"   (       a  S#OS$US'   US"	 UnXS'   O[        S%[)        U 5       S&35      eU c  [        S'5      e[        US   [*        5      (       a  S(US)'   O;[        US   [,        5      (       a  S*US)'   O[        US   [.        5      (       a  S+US)'   US   R1                  5       US'   [3        US,SS-9nU	R5                  [6        UUS.9nUR                  5         UR%                  5       S    S!   S   $ ! [        R                  R                  R                    a    U [        ;  a  [#        SU  S35        e f = f)/a  
Run a screen: predefined query, or custom query.

:Parameters:
    * Defaults only apply if query = EquityQuery, FundQuery, or ETFQuery
    query : str | Query:
        The query to execute, either name of predefined or custom query.
        For predefined list run yf.PREDEFINED_SCREENER_QUERIES.keys()
    offset : int
        The offset for the results. Default 0.
    size : int
        number of results to return. Default 100, maximum 250 (Yahoo)
        Use count instead for predefined queries.
    count : int
        number of results to return. Default 25, maximum 250 (Yahoo)
        Use size instead for custom queries.
    sortField : str
        field to sort by. Default "ticker"
    sortAsc : bool
        Sort ascending? Default False
    userId : str
        The user ID. Default empty.
    userIdType : str
        Type of user ID (e.g., "guid"). Default "guid".

Example: predefined query
    .. code-block:: python

        import yfinance as yf
        response = yf.screen("aggressive_small_caps")

Example: custom query
    .. code-block:: python

        import yfinance as yf
        from yfinance import EquityQuery
        q = EquityQuery('and', [
               EquityQuery('gt', ['percentchange', 3]), 
               EquityQuery('eq', ['region', 'us'])
        ])
        response = yf.screen(q, sortField = 'percentchange', sortAsc = True)

To access predefineds query code
    .. code-block:: python

        import yfinance as yf
        query = yf.PREDEFINED_SCREENER_QUERIES['aggressive_small_caps']

{predefined_screeners}
)sessionr   r   tickerFr   r   )r   r   r   rW   r   r   N   z.Yahoo limits query count to 250, reduce count.z,Yahoo limits query size to 250, reduce size.r!   r   r    asc)r   r   rV   r   rW   r   r   zfinance.yahoo.comfalsezen-USUS)
corsDomain	formattedlangr(   zQScreen 'size' argument is deprecated for predefined screens, set 'count' instead.r   )
stacklevelrV   r   scrIds)urlparamszyfinance.screen: 'z%' is probably not a predefined query.financeresultrW   r0   r$   z*Query must be type str or QueryBase, not ""zNo query providedEQUITY	quoteType
MUTUALFUNDETF),:)
separatorsensure_ascii)datare   )r   
ValueError
isinstancestrPREDEFINED_SCREENER_QUERIESlowerwarningswarnDeprecationWarningitemsget_PREDEFINED_URL_raise_for_status	curl_cffirequests
exceptions	HTTPErrorprintjsonr   typeEqyQyFndQyEtfQyto_dictr   post_SCREENER_URL_)r!   r   rV   r   r   rW   r   r   rY   _datadefaults
post_queryfieldsparams_dictkvresprq   responses                      k/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/yfinance/screener/screener.pyscreenr   ?   s    z 7#E H US[IJJD3JGHHj4407
7#";/I? ,224=Gah  KU  VF!47T[gklKJ% MMm  pB  OP  QED$VnF7Ov %H<<>CA}!"A " yy-kyB	!!#
 yy{9%h/22	E9	%	%A&)"3$K	  '-Y&7UVz9
#7 Ed5k]RSTUU},--*W%u--"*
;	Jw'	/	/".
;	Jw'	/	/"'
;$W-557Jw
GD zz.!%#.  0H ==?9%h/22K !!,,66 	77*5'1VWX	s   I" "AJ%)NNNNNNNN)r~   typingr   rw   r   r   yfinance.constr   yfinance.datar   utilsr   r	   r!   r   r   r   r   r   r   r   r   r|   !PREDEFINED_SCREENER_BODY_DEFAULTSru   rt   intboolr        r   <module>r      s       '   N ' % $ > > >!56$%%67  RV% !'+&%*55B\3]_dei  mI  KM  lN  `O  3P  &QR' F"557K+LeTX[ceiZjNkmrsx  |O  Q[  {\  n]  _d  ej  m|  ~  l@  _A  CH  IM  P[  ]b  Oc  Cd  +e  fg'
 5"557N+OQVW[^fhl]mQnpuv{  R  T^  ~_  q`  bg  hm  p  AB  oC  bD  FK  LP  S^  `e  Rf  Fg  +h  ij' [V).uuUEgikDl7motuz  ~Z  \^  }_  p`  bg  hl  ow  yE  nF  bG  IN  OV  Xr  Is  7t  *u!v' "55$7G+H%PUXkmwWxJy  |A  BF  IT  V]  H^  |_  +`  ab' B@n  |B%*55$?O3PRWX\_npq^rRsuz{  CR  TZ  B[  v\  3]  &^_' kf!&uuT<OPZ;[/\^cdk  nH  _I  /J  "KL'  V).uuVEh7ikpqu  yF  HI  xJ  lK  MR  SX  [w  y{  Z|  M}  D  EL  Nh  i  7j  *k"l'" ;6%*55Ad3eglmq  uB  DE  tF  hG  IN  OU  WG  IH  JO  PW  Ys  Jt  3u  &vw#'& !f/).uuW  Go  8p  rw  x  Ac  rd  fk  lp  sF  HN  rO  fP  RW  X\  _~  @B  ^C  RD  FK  LS  Us  Ft  v{  |@  CM  OT  BU  vV  7W  *X#Y''* 6!&uuW>`/achim  qD  FL  pM  dN  PU  VZ  ]|  ~@  \A  PB  DI  JQ  Sq  Dr  ty  z~  AO  Qb  @c  td  fk  lp  s}  D  rE  fF  /G  "HI+'. V!&uuTNM;Z/[]bcj  mO  ^P  RW  X\  _r  tz  ^{  R|  ~C  DH  Kj  ln  Jo  ~p  rw  x|  I  KP  ~Q  rR  /S  "TU/'2 F).uuTNTbCc7dfkls  vX  gY  [`  ae  h{  }C  gD  [E  GL  MQ  Ts  uw  Sx  Gy  {@  AE  HR  TY  GZ  {[  7\  *]!^3'6  V).uuTNTdCe7fhmnu  xZ  i[  ]b  cg  j}  E  iF  ]G  IN  OS  Vu  wy  Uz  I{  }B  CG  JT  V[  I\  }]  7^  *_"`7': F!&uuTOR;P/QSXY`  cE  TF  HM  NR  Uh  jn  To  Hp  rw  x|  I  KP  ~Q  rR  /S  "TU;'> F"557L+MuU\  _A  PB  DI  JN  QY  [_  P`  Da  +b  cd?'B (ERW%*55$?O3PRWX_  bD  SE  GL  MQ  Tc  eg  Sh  Gi  3j  &klC'F %Be!&uuTHd;K/LeTX[ikwZxNy.z!{};uuTHd3C'DeG  Vs  Gt  'u  vwK' R *,SToy}  Fe  -f  g  h! "X3%[)X=> X3X3X3 X3 	X3
 X3 X3 X3 hX3r   