
    h,                     Z	   d dl Z d dlmZ d dlZd dlmZmZ d dlmZ ddl	m
Z
mZ ddlmZ dd	lmZ dd
lmZmZmZ e dZe dZd ddddZdd ed edg d           edddg          g          ddd ed edddg           eddd g           ed!d"d#g           ed!d$d%g           edd&d'g          g          ddd( ed eddd)g           eddd g           ed!d"d#g           ed!d$d%g           edd&d*g          g          ddd ed ed!d+dg           ed!ddg           edd,d-g           edg d          g          dd&d ed eddd g           ed!d"d#g           edd&d.g          g          ddd d/d ed eddd g           edd$dg           edd0d1g          g          d2dd ed edd"d#g           edg d          g          ddd ed ed3g d4           edd5dg           ed!ddg           edg d          g          d6dd ed ed3g d4           edd5dg           ed3g d7           edg d          g          ddd8 ed edg d9           edg d:           edd;d<g           edd=d>g           edg d?           edd@dAg          g          d6dd8 ed edg d:           edd;d<g           edd=d>g           edg d?           eddBdCg           edd@dAg          g          d6dd8 ed eddBdDg           edg d:           edd;d<g           edd=d>g           edd@dAg          g          d6dd8 ed eddBdEg           edg d:           edd;d<g           edd=d>g           edd@dAg          g          d6dd8 ed eddBdFg           edg d:           edd;d<g           edd=d>g           edd@dAg          g          d6dd ed edd$dg           edg d:           edd;dGg           edd@dAg          g          d6dHZ e
dI eedJdKL          i          ddddddddef	dMeeeef         dNedOedPedQedRedSedTefdU            ZdS )V    N)Union)_QUERY1_URL_
_SENTINEL_)YfData   )dynamic_docstring'generate_list_table_from_dict_universal   )EquityQuery)	FundQuery)	QueryBaser   r   z/v1/finance/screenerz/predefined/saved    guid)offsetcountuserId
userIdType	eodvolumedescandzis-in)exchangeNMSNYQltzepsgrowth.lasttwelvemonths   )	sortFieldsortTypequerypercentchangeDESCgt   eqregionusgteintradaymarketcapi 5wintradayprice   	dayvolumei:  ASCg      i N  z quarterlyrevenuegrowth.quarterlysector
Technologyi@KL z,short_percentage_of_shares_outstanding.valueavgdailyvol3mi@ )r   r   r   r   r   btwn)zperatio.lasttwelvemonthsr      pegratio_5y)r   r   r   )r(   l    d(	 l    h] 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   NASr4   zHigh Yield BondzLarge BlendzLarge GrowthzMid-Cap Growthi  )aggressive_small_capsday_gainers
day_losersgrowth_technology_stocksmost_activesmost_shorted_stockssmall_cap_gainersundervalued_growth_stocksundervalued_large_capsconservative_foreign_fundshigh_yield_bondportfolio_anchorssolid_large_growth_fundssolid_midcap_growth_fundstop_mutual_fundspredefined_screenersTzPredefined queries (Dec-2024))bulletstitler   r   sizer   r   sortAscr   r   c
                 0   |	t           ur.t          j        dt          d           t	          ||	          }
nt	          |          }
dddd	d
dd}||dk    rt          d          ||dk    rt          d          |Vt          | t                    rAt          |          }|d         } ||d         }||d         	                                dk    }i }|||||||d}ddddd}d}t          | t                    r|.t          j        dt          d           |}d}|d         |d<   |d= | |d<   |
                                D ]\  }}||||<   |
                    t          |          }	 |                                 n:# t          j        j        j        $ r | t          vrt%          d |  d!            w xY w|                                d"         d#         d         S t          | t(                    r6|D ]}||vs||         ||         ||<   |d$         rd%nd&|d<   |d$= |}| |d<   n t          d't+          |            d(          | t          d)          t          |d         t,                    rd*|d+<   n t          |d         t.                    rd,|d+<   |d                                         |d<   |
                    t4          ||-          }|                                 |                                d"         d#         d         S ).a  
    Run a screen: predefined query, or custom query.

    :Parameters:
        * Defaults only apply if query = EquityQuery or FundQuery
        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}
    z=Set proxy via new config function: yf.set_config(proxy=proxy)r   )
stacklevel)sessionproxy)rR   r   r   tickerFr   r   )r   r   r   rO   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   rN   r   rO   r   r   zfinance.yahoo.comfalsezen-USUS)
corsDomain	formattedlangr%   zQScreen 'size' argument is deprecated for predefined screens, set 'count' instead.rN   r   scrIds)urlparamszyfinance.screen: 'z%' is probably not a predefined query.financeresultrO   r,   r!   z*Query must be type str or QueryBase, not ""zNo query providedEQUITY	quoteType
MUTUALFUND)bodyr^   )r   warningswarnDeprecationWarningr   
ValueError
isinstancestrPREDEFINED_SCREENER_QUERIESloweritemsget_PREDEFINED_URL_raise_for_status	curl_cffirequests
exceptions	HTTPErrorprintjsonr   typeEqyQyFndQyto_dictpost_SCREENER_URL_)r   r   rN   r   r   rO   r   r   rR   rS   _datadefaults
post_queryfieldsparams_dictkvrespresponses                      X/var/www/html/marketdash/venv/lib/python3.11/site-packages/yfinance/screener/screener.pyscreenr   5   s   z JUWivwxxxxwe444w'''  H US[[IJJJD3JJGHHHj4407
7#";/I? ,2244=G9ahtz  KU  V  VF!47T[gkllKJ% $V Mm  pB  OP  Q  Q  Q  QED$VnF7Ov %H<<>> 	# 	#CAa}!"Ayy-kyBB	!!####!,6 	 	 	777W5WWWXXX	 yy{{9%h/22	E9	%	% V 	( 	(A&)"3$QKq	&,Y&7CUUVz9
#
7 Td5kkTTTUUU},---*W%u-- /"*
;	Jw'	/	/ /".
;$W-5577Jw zz.!+#.  0 0H ==??9%h/22s   2F 7F>)rr   typingr   rf   yfinance.constr   r   yfinance.datar   utilsr   r	   r   r   ry   r   rz   r   r}   rp   !PREDEFINED_SCREENER_BODY_DEFAULTSrl   rk   intboolr        r   <module>r      s              3 3 3 3 3 3 3 3             N N N N N N N N ' ' ' ' ' ' % % % % % % 4 4 4 4 4 4 4 4 4 4 666$777  RV% % !
 +6&%*U555B\B\B\3]3]_d_dei  mI  KM  lN  `O  `O  3P  &Q  &QR R /F"U5557K+L+LeeTX[ceiZjNkNkmrmrsx  |O  Q[  {\  n]  n]  _d  _d  ej  m|  ~  l@  _A  _A  CH  CH  IM  P[  ]b  Oc  Cd  Cd  +e  f  fg g.5"U5557N+O+OQVQVW[^fhl]mQnQnpupuv{  R  T^  ~_  q`  q`  bg  bg  hm  p  AB  oC  bD  bD  FK  FK  LP  S^  `e  Rf  Fg  Fg  +h  i  ij j-8V).uuuUEgikDl7m7mototuz  ~Z  \^  }_  p`  p`  bg  bg  hl  ow  yE  nF  bG  bG  IN  IN  OV  Xr  Xr  Xr  Is  Is  7t  *u  *u!v !v!,"U555$7G+H+H%%PUXkmwWxJyJy  |A  |A  BF  IT  V]  H^  |_  |_  +`  a  ab b$&@n  |B%*U555$?O3P3PRWRWX\_npq^rRsRsuzuz{  CR  TZ  B[  v\  v\  3]  &^  &^_ _&1f!&uuuT<OPZ;[/\/\^c^cdk  nH  nH  nH  _I  _I  /J  "K  "KL L-3).uuuVEhEhEh7i7ikpkpqu  yF  HI  xJ  lK  lK  MR  MR  SX  [w  y{  Z|  M}  M}  D  D  EL  Nh  Nh  Nh  i  i  7j  *k  *k"l "l+66%*U555AdAdAd3e3eglglmq  uB  DE  tF  hG  hG  IN  IN  OU  WG  WG  WG  IH  IH  JO  JO  PW  Ys  Ys  Ys  Jt  Jt  3u  &v  &vw w.4/).uuuW  Go  Go  Go  8p  8p  rw  rw  x  Ac  Ac  Ac  rd  rd  fk  fk  lp  sF  HN  rO  fP  fP  RW  RW  X\  _~  @B  ^C  RD  RD  FK  FK  LS  Us  Us  Us  Ft  Ft  v{  v{  |@  CM  OT  BU  vV  vV  7W  *X  *X#Y #Y#)!&uuuW>`>`>`/a/achchim  qD  FL  pM  dN  dN  PU  PU  VZ  ]|  ~@  \A  PB  PB  DI  DI  JQ  Sq  Sq  Sq  Dr  Dr  ty  ty  z~  AO  Qb  @c  td  td  fk  fk  lp  s}  D  rE  fF  fF  /G  "H  "HI I%+!&uuuTNM;Z/[/[]b]bcj  mO  mO  mO  ^P  ^P  RW  RW  X\  _r  tz  ^{  R|  R|  ~C  ~C  DH  Kj  ln  Jo  ~p  ~p  rw  rw  x|  I  KP  ~Q  rR  rR  /S  "T  "TU U,2).uuuTNTbCc7d7dfkfkls  vX  vX  vX  gY  gY  [`  [`  ae  h{  }C  gD  [E  [E  GL  GL  MQ  Ts  uw  Sx  Gy  Gy  {@  {@  AE  HR  TY  GZ  {[  {[  7\  *]  *]!^ !^-3).uuuTNTdCe7f7fhmhmnu  xZ  xZ  xZ  i[  i[  ]b  ]b  cg  j}  E  iF  ]G  ]G  IN  IN  OS  Vu  wy  Uz  I{  I{  }B  }B  CG  JT  V[  I\  }]  }]  7^  *_  *_"` "`$*!&uuuTOR;P/Q/QSXSXY`  cE  cE  cE  TF  TF  HM  HM  NR  Uh  jn  To  Hp  Hp  rw  rw  x|  I  KP  ~Q  rR  rR  /S  "T  "TU U;  B *,S,SToy}  Fe  -f  -f  -f  g  h  h! "JY3 Y3%[)34 Y3Y3Y3 Y3 	Y3
 Y3 Y3 Y3 Y3 Y3 h  hY3 Y3 Y3r   