
    Wg%t                     f   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZmZ h dZej'                  dD  ch c]  } d| z   	 c}        ej'                  h d	       ej'                  h d
       h dZdhZdhZeez  ez  ez  Ze dZ G d d      Z G d d      Zyc c} w )    N)utils)YfData)quote_summary_valid_modules
_BASE_URL__QUERY1_URL_)YFDataExceptionYFException>   opendayLowvolumedayHigh
volume24HrcurrentPricepreviousClose)DayHighDayLowOpenPreviousClosePriceVolumeregularMarket>   52WeekChangefiftyDayAveragefiftyTwoWeekLowfiftyTwoWeekHighfiftyTwoWeekChangetwoHundredDayAverage>   averageVolumeaverageVolume10daysaverageDailyVolume10Day>   currencyexchange	quoteTypeexchangeTimezoneNameexchangeTimezoneShortName	marketCapsymbolz/v10/finance/quoteSummaryc                      e Zd Zd&dZd Zd Zd Zd&dZd Zd Z	d	 Z
d
 Zd Zd'dZd(dZd Zd Zd Zd Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z ed        Z!ed         Z"ed!        Z#ed"        Z$ed#        Z%ed$        Z&ed%        Z'y))FastInfoNc                    || _         || _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        g d}|ddgz  }|g dz  }|dgz  }|dgz  }|g dz  }|g dz  }|D cg c]	  }d	|vs| }}|D cg c]	  }d	|v s| }}|D ci c]  }|t5        j6                  |       c}| _        | j8                  j;                         D ci c]  \  }}||
 c}}| _        t?        |tA        | j8                  jC                               z         | _"        t?        | jD                  |z         | _#        y c c}w c c}w c c}w c c}}w )
N)r!   
quote_typer"   timezoneshares
market_cap)
last_priceprevious_closer
   day_highday_lowregular_market_previous_closelast_volume)fifty_day_averagetwo_hundred_day_averageten_day_average_volumethree_month_average_volume)	year_highyear_lowyear_change_)$_tkrproxy
_prices_1y_prices_1wk_1h_prepost_prices_1wk_1h_reg_md	_currency_quote_type	_exchange	_timezone_shares_mcap_open	_day_high_day_low_last_price_last_volume_prev_close_reg_prev_close_50d_day_average_200d_day_average
_year_high	_year_low_year_change_10d_avg_vol_3mo_avg_volr   snake_case_2_camelCase_sc_to_cc_keyitems_cc_to_sc_keysortedlistvalues_public_keys_keys)selftickerBaseObjectr>   _propertiesk	base_keyssc_keysvs           J/var/www/html/venv/lib/python3.12/site-packages/yfinance/scrapers/quote.py__init__zFastInfo.__init__   s   $	
&*#"&

 # $!%   
 I,//VV788&?? !,<1s!|Q<	<)6SAX166JQRQa!=!=a!@@R/3/A/A/G/G/IJtq!adJ"9tD4F4F4M4M4O/P#PQD--78
 =6RJs$   '	F91F9;	F>F>GGc                     | j                   S Nr^   r`   s    rg   keyszFastInfo.keysY   s           c                 J    | j                   D cg c]	  }|| |   f c}S c c}w rj   rk   r`   rc   s     rg   rY   zFastInfo.items\   s$    &*&7&78DG888s    c                 F    | j                   D cg c]  }| |   	 c}S c c}w rj   rk   rp   s     rg   r]   zFastInfo.values_   s     !%!2!23AQ333s   c                 n    || j                         v r"|| j                  v r| j                  |   }| |   S |S rj   )rm   rZ   )r`   keydefaults      rg   getzFastInfo.getb   s=    $))+d(((((-9rn   c                     t        |t              st        d      || j                  vrt        d| d      || j                  v r| j                  |   }t        | |      S )Nzkey must be a string'z*' not valid key. Examine 'FastInfo.keys()')
isinstancestrKeyErrorr_   rZ   getattrrp   s     rg   __getitem__zFastInfo.__getitem__i   sd    !S!122DJJQqc!KLMM"""""1%AtQrn   c                 &    || j                         v S rj   )rm   rp   s     rg   __contains__zFastInfo.__contains__r   s    DIIKrn   c                 4    t        | j                               S rj   )iterrm   rl   s    rg   __iter__zFastInfo.__iter__u   s    DIIK  rn   c                 :    dt        | j                               z   S )Nzlazy-loading dict with keys = )ry   rm   rl   s    rg   __str__zFastInfo.__str__x   s    /#diik2BBBrn   c                 "    | j                         S rj   )r   rl   s    rg   __repr__zFastInfo.__repr__{   s    ||~rn   c                 z    t        j                  | j                         D ci c]  }|| |   
 c}|      S c c}w )N)indent)jsondumpsrm   )r`   r   rc   s      rg   toJSONzFastInfo.toJSON~   s/    zztyy{;!1d1g:;FKK;s   8c                 >   | j                   | j                  j                  ddd| j                        | _         | j                  j	                  | j                        | _        	 | j
                  d   }t        j                  |d   d   d	d
      j                  | j                        | _
        t        j                  |d   d   d	d
      j                  | j                        | _        | j                  j                  d      | _        | j                   j                  r| j                   S t        j                   j#                         j                  | j                        j%                         }|}|t'        j(                  d      z   t+        j,                  d      z
  }|r(| j/                         r|t+        j,                  d      z  }| j                   j0                  t3        |      t3        |       S # t        $ r d | _
        d | _        d | _         w xY w)N1yFT)periodauto_adjustkeepnar>   r>   currentTradingPeriodregularstarts)unitutcendD   days1d)r?   r=   historyr>   get_history_metadatarB   pdto_datetime
tz_convertr,   _today_open_today_closeceil_today_midnight	Exceptionempty	Timestamputcnowdatedatetime	timedeltar   _interval_to_timedelta_exchange_open_nowlocry   )r`   fullDaysOnlyctpdnowd1d0s         rg   _get_1y_priceszFastInfo._get_1y_prices   s   ??""ii//tW[cgcmcm/nDOyy55DJJ5GDH	hh56#%>>#i.2IPSY]#^#i#ijnjwjw#x $&NN3y>%3HsX\$]$h$himiviv$w!'+'8'8'='=c'B$ ??  ??"||""$//>CCE8%%1--1M1Md1SSD335%..t44B""3r73r733  #' $(!'+$	s   (B'G< < Hc                     | j                   /| j                  j                  dddd| j                        | _         | j                   S )N5d1hFTr   intervalr   prepostr>   )r@   r=   r   r>   rl   s    rg   _get_1wk_1h_prepost_pricesz#FastInfo._get_1wk_1h_prepost_prices   sU    &&.*.))*;*;4RVdisw  @D  @J  @J*;  +KD'***rn   c                     | j                   /| j                  j                  dddd| j                        | _         | j                   S )Nr   r   Fr   )rA   r=   r   r>   rl   s    rg   _get_1wk_1h_reg_priceszFastInfo._get_1wk_1h_reg_prices   sT    ""*&*ii&7&7td`eot  }A  }G  }G&7  'HD#&&&rn   c                     | j                   | j                   S | j                          | j                  j                  | j                        | _         | j                   S )Nr   )rB   r   r=   r   r>   rl   s    rg   _get_exchange_metadatazFastInfo._get_exchange_metadata   sG    8888O9911

1Cxxrn   c                    t         j                  j                         }| j                          | j	                         j
                  d   t        j                  d      z   }|t        j                  d      z  }||k  }|S )Nr   r      )minutes)r   r   r   r   r   indexr   r   )r`   tlast_day_cutoffrs       rg   r   zFastInfo._exchange_open_now   sr    LL!##% --/55b9H<N<NTU<VV8--b99 rn   c                     | j                   | j                   S | j                  j                  | j                        }|d   | _         | j                   S )Nr   r!   )rC   r=   r   r>   r`   mds     rg   r!   zFastInfo.currency   sF    >>%>>!YY++$**+=J~~rn   c                     | j                   | j                   S | j                  j                  | j                        }|d   | _         | j                   S )Nr   instrumentType)rD   r=   r   r>   r   s     rg   r+   zFastInfo.quote_type   sO    '###YY++$**+=./rn   c                 z    | j                   | j                   S | j                         d   | _         | j                   S )NexchangeName)rE   r   rl   s    rg   r"   zFastInfo.exchange   s5    >>%>>!446~F~~rn   c                 z    | j                   | j                   S | j                         d   | _         | j                   S )Nr$   )rF   r   rl   s    rg   r,   zFastInfo.timezone   s6    >>%>>!4467MN~~rn   c                    | j                   | j                   S | j                  j                  t        j                  j                         j                         t        j                  d      z
  | j                        }|It        |t        j                        r||j                  d      }t        |j                  d         | _         | j                   S )Ni$  r   )r   r>   r   r   )rG   r=   get_shares_fullr   r   r   r   	Timedeltar>   rx   	DataFramecolumnsintiloc)r`   r-   s     rg   r-   zFastInfo.shares   s    <<#<<**1D1D1F1K1K1Mbll`cNd1dlplvlv*w &",,/q 12v{{2/DL||rn   c                    | j                   | j                   S | j                         }|j                  r*| j                         }d|v r
|d   | _         | j                   S t	        |d   j
                  d         | _         t        j                  | j                         r| j                         }d|v r
|d   | _         | j                   S )NregularMarketPriceCloser   )rL   r   r   r   floatr   _npisnan)r`   pricesr   s      rg   r/   zFastInfo.last_price   s    '###$$&<<,,.B#r)#%&:#;    %VG_%9%9"%=>Dyy))*002'2-')*>'?D$rn   c                 l   | j                   | j                   S | j                         }d}|j                  rd}nl|dg   j                  |j                  j
                        j                         }|j                  d   dk  rd}n t        |d   j                  d         | _         |r| j                  j                   d}| j                  j                  j                  J|| j                  j                  j                  v r(| j                  j                  j                  |   | _         | j                   S )NFTr   r      r   )rN   r   r   groupbyr   r   lastshaper   r   r=   info_quote_retired_info)r`   r   failrc   s       rg   r0   zFastInfo.previous_close  s    '###002<<DWI&..v||/@/@AFFHF||A" #()=)=b)A#B IINNAyy--9a499CSCSCaCa>a#'99#3#3#A#A!#D rn   c                    | j                   | j                   S | j                         }|j                  d   dk(  rG| j                         }|dg   j	                  |j
                  j                        j                         }|j                  d   dk  r| j                  j                   d}| j                  j                  j                  J|| j                  j                  j                  v r(| j                  j                  j                  |   | _         | j                   S t        |d   j                  d         | _         | j                   S )Nr   r   r   r   regularMarketPreviousCloser   )rO   r   r   r   r   r   r   r   r=   r   r   r   r   r   )r`   r   rc   s      rg   r3   z&FastInfo.regular_market_previous_close  s   +'''$$&<<?a 002FWI&..v||/@/@AFFHF<<?Q IINN,Ayy--9a499CSCSCaCa>a'+yy'7'7'E'Ea'H$ ### $))=)=b)A#BD ###rn   c                 4   | j                   | j                   S | j                         }|j                  rd | _         | j                   S t        |d   j                  d         | _         t        j                  | j                         rd | _         | j                   S )Nr   r   )rI   r   r   r   r   r   r   r`   r   s     rg   r
   zFastInfo.open4  s|    ::!::$$&<<DJ
 zz vf~22267DJyy$!
zzrn   c                 4   | j                   | j                   S | j                         }|j                  rd | _         | j                   S t        |d   j                  d         | _         t        j                  | j                         rd | _         | j                   S )NHighr   )rJ   r   r   r   r   r   r   r   s     rg   r1   zFastInfo.day_highA  s|    >>%>>!$$&<<!DN
 ~~ #6&>#6#6r#:;DNyy(!%~~rn   c                 4   | j                   | j                   S | j                         }|j                  rd | _         | j                   S t        |d   j                  d         | _         t        j                  | j                         rd | _         | j                   S )NLowr   )rK   r   r   r   r   r   r   r   s     rg   r2   zFastInfo.day_lowN  s|    ==$== $$&<< DM
 }} "&-"4"4R"89DMyy' $}}rn   c                     | j                   | j                   S | j                         }|j                  rd nt        |d   j                  d         | _         | j                   S )Nr   r   )rM   r   r   r   r   r   s     rg   r4   zFastInfo.last_volume[  sZ    ($$$$$&$*LLDc&:J:O:OPR:S6T   rn   c                 B   | j                   | j                   S | j                  d      }|j                  rd | _         | j                   S |j                  d   }|dz
  }|}|dk  rd}t	        |d   j
                  || j                               | _         | j                   S )NTr   r   2   r   )rP   r   r   r   r   r   meanr`   r   nabs        rg   r5   zFastInfo.fifty_day_averagec  s      ,((($$$$7<<$(D! $$$ QA"AA1u$)&/*>*>q*C*H*H*J$KD!$$$rn   c                 B   | j                   | j                   S | j                  d      }|j                  rd | _         | j                   S |j                  d   }|dz
  }|}|dk  rd}t	        |d   j
                  || j                               | _         | j                   S )NTr   r      r   )rQ   r   r   r   r   r   r   r   s        rg   r6   z FastInfo.two_hundred_day_averageu  s    !!-)))$$$$7<<%)D" %%% QA#AA1u%*6'?+?+?!+D+I+I+K%LD"%%%rn   c                 B   | j                   | j                   S | j                  d      }|j                  rd | _         | j                   S |j                  d   }|dz
  }|}|dk  rd}t	        |d   j
                  || j                               | _         | j                   S )NTr   r   
   r   )rU   r   r   r   r   r   r   r   s        rg   r7   zFastInfo.ten_day_average_volume  s    ($$$$$$$7<< $D     QA"AA1u #F8$4$9$9!A$>$C$C$E FD   rn   c                    | j                   | j                   S | j                  d      }|j                  rd | _         | j                   S |j                  d   }|t	        j
                  d      z
  t	        j
                  d      z   }t        |j                  ||df   j                               | _         | j                   S )NTr   r   3mor   r   )	rV   r   r   r   r   r   r   r   r   )r`   r   dt1dt0s       rg   r8   z#FastInfo.three_month_average_volume  s    ($$$$$$$7<< $D    	 ,,r"C44U;;e>Z>Z[_>``C #FJJs3w/@$A$F$F$H ID   rn   c                     | j                   | j                   S | j                  d      }|j                  r| j                  d      }t        |d   j	                               | _         | j                   S )NTr   Fr   )rR   r   r   r   maxr   s     rg   r9   zFastInfo.year_high  sf    ??&??"$$$$7<<((e(<Fv 2 2 45rn   c                     | j                   | j                   S | j                  d      }|j                  r| j                  d      }t        |d   j	                               | _         | j                   S )NTr   Fr   )rS   r   r   r   minr   s     rg   r:   zFastInfo.year_low  sf    >>%>>!$$$$7<<((e(<Fve}0023~~rn   c                 @   | j                   | j                   S | j                  d      }|j                  d   dk\  rW|d   j                  d   |d   j                  d   z
  |d   j                  d   z  | _         t	        | j                         | _         | j                   S )NTr   r   r   r   r   )rT   r   r   r   r   r   s     rg   r;   zFastInfo.year_change  s    ($$$$$$$7<<?a!'!5!5b!9F7O<P<PQR<S!SW]^eWfWkWklmWn nD %d&7&7 8D   rn   c                 ,   | j                   | j                   S 	 | j                  }|| j                  j
                   d}| j                  j                  j                  J|| j                  j                  j                  v r(| j                  j                  j                  |   | _         | j                   S t        || j                  z        | _         | j                   S # t        $ r+}dt        |      v rd }ndt        |      v rd }n Y d }~d }~ww xY w)NzCannot retrieve share countzfailed to decrypt Yahoor&   )
rH   r-   r   ry   r=   r   r   r   r   r/   )r`   r-   erc   s       rg   r.   zFastInfo.market_cap  s    ::!::	[[F > IINNAyy--9a499CSCSCaCa>a!YY--;;A>
 zz v78DJzz%  	,A6*c!f4	s   C 	D(!DDrj   )   )F)(__name__
__module____qualname__rh   rm   rY   r]   ru   r|   r~   r   r   r   r   r   r   r   r   r   propertyr!   r+   r"   r,   r-   r/   r0   r3   r
   r1   r2   r4   r5   r6   r7   r8   r9   r:   r;   r.    rn   rg   r)   r)      s   99x!94  !CL44+
'
.                     . $ $* 
 
 
 
 
 
 ! ! % %" & &$ ! !" ! !     ! !  rn   r)   c                      e Zd ZddedefdZedefd       Zede	j                  fd       Zede	j                  fd       Zede	j                  fd	       Zedefd
       Zedefd       Zed        ZdefdZd Zd Zd Zd Zd Zy)QuoteNdatar'   c                     || _         || _        || _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d| _
        d| _        d| _        y )NF)_data_symbolr>   _infor   _sustainability_recommendations_upgrades_downgrades	_calendar_sec_filings_already_scraped_already_fetched_already_fetched_complementary)r`   r  r'   r>   s       rg   rh   zQuote.__init__  se    


!# $$(!  % %.3+rn   returnc                     | j                   6| j                  | j                         | j                  | j                         | j                   S rj   )r  _fetch_infor>   _fetch_complementaryrl   s    rg   r   z
Quote.info  s:    ::TZZ(%%djj1zzrn   c                 J   | j                   k| j                  | j                  dg      }|%t        j                         | _         | j                   S 	 |d   d   d   }t        j                  |      | _         | j                   S # t
        t        f$ r t        d|       w xY w)N	esgScoresmodulesquoteSummaryresultr   2Failed to parse json response from Yahoo Finance: )r  _fetchr>   r   r   rz   
IndexErrorr   r`   r'  r  s      rg   sustainabilityzQuote.sustainability  s    '[[k][CF~')||~$ ###i!.1(;A>D (*||D'9$### !*- i),^_e^f*ghhis   B B"c                 V   | j                   q| j                  | j                  dg      }|%t        j                         | _         | j                   S 	 |d   d   d   d   d   }t        j                  |      | _         | j                   S # t
        t        f$ r t        d|       w xY w)NrecommendationTrendr$  r&  r'  r   trendr(  )r  r)  r>   r   r   rz   r*  r   r+  s      rg   recommendationszQuote.recommendations  s      ([[6K5L[MF~(*% $$$i!.1(;A>?TUV]^D )+T(:%$$$ !*- i),^_e^f*ghhis   B
 
B(c                 b   | j                   | j                  | j                  dg      }|%t        j                         | _         | j                   S 	 |d   d   d   d   d   }t        |      dk(  rt        d| j                         t        j                  |      }|j                  dd	d
dddd       |j                  dd       t        j                  |j                  d      |_        || _         | j                   S | j                   S # t        t        f$ r t        d|       w xY w)NupgradeDowngradeHistoryr$  r&  r'  r   r   z'No upgrade/downgrade history found for 	GradeDateFirmToGrade	FromGradeAction)epochGradeDatefirmtoGrade	fromGradeactionT)r   inplace)r=  r   )r   r(  )r  r)  r>   r   r   lenr   r  rename	set_indexr   r   rz   r*  )r`   r'  r  dfs       rg   upgrades_downgradeszQuote.upgrades_downgrades  sH   $$,[[6O5P[QF~,.LLN) (((
i!.1(;A>?XYZcdD4yA~-0WX\XdXdWe.fggd+BIIfaj  zE  QY  'Z  dhI  iLLdL;!~~bhhSABH02D- (((t((( !*- i),^_e^f*ghhis   B%D D.c                 R    | j                   | j                          | j                   S rj   )r  _fetch_calendarrl   s    rg   calendarzQuote.calendar1  s"    >>!  "~~rn   c                 h    | j                   | j                         }|i n|| _         | j                   S rj   )r  _fetch_sec_filings)r`   fs     rg   sec_filingszQuote.sec_filings7  s6    $'')A&'iQD   rn   c                      t         S rj   )r   r  rn   rg   valid_moduleszQuote.valid_modules>  s    **rn   r%  c                 &   t        |t              st        d      dj                  |D cg c]  }|t        v s| c}      }t        |      dk(  rt        d      |dd| j                  d}	 | j                  j                  t        d| j                   z   | j                  j                  ||	      }|S c c}w # t        j                  j                  $ r6}t        j                         j!                  t#        |             Y d }~y d }~ww xY w)
NzMShould provide a list of modules, see available modules using `valid_modules`,r   zFNo valid modules provided, see available modules using `valid_modules`zfinance.yahoo.comfalse)r%  
corsDomain	formattedr'   /user_agent_headersparamsr>   )rx   r\   r	   joinr   r>  r  r  get_raw_json_QUOTE_SUMMARY_URL_rS  requests
exceptions	HTTPErrorr   get_yf_loggererrorry   )r`   r>   r%  mparams_dictr'  r  s          rg   r)  zQuote._fetchB  s   '4(mnn((wS!!7R2RASTw<1fgg")9L[bnrnznz{	ZZ,,-@Qt||nCU-Ujnjtjt  kH  kH  Q\  di,  jF  T "",, 	!''A/	s#   B8B8/AB= =D,DDc                 F   | j                   dd}	 | j                  j                  t         d| j                  j                  ||      }|S # t
        j                  j                  $ r6}t        j                         j                  t        |             Y d }~y d }~ww xY w)NrN  )symbolsrP  z/v7/finance/quote?rR  )r  r  rV  r   rS  rX  rY  rZ  r   r[  r\  ry   )r`   r>   r^  r'  r  s        rg   _fetch_additional_infozQuote._fetch_additional_infoQ  s    "&,,WE	ZZ,,~=O-P@D

@]@]4?u - NF  "",, 	!''A/	s   :A B *,BB c           	           j                   ry d _         g d} j                  ||      }|j                   j                  |             |i  _        y i }dD ]}  }||v st        ||   d         dkD  s j                  ||   d   d   d<   t         fd|j                  |i       j                  dg       D        d       }|sm|j                  |        i }|j                         D ]J  \  }}	t        |	t              r-|	j                         D ]  \  }
}|	|
d	k(  r|d
k(  rdn|||
<    C|	F|	||<   L |}fd|j                         D 	ci c]  \  }}	| ||	       c}	} _        y c c}	}w )NT)financialDatar#   defaultKeyStatisticsassetProfilesummaryDetailr$  )r&  quoteResponser'  r   r'   c              3   F   K   | ]  }|d    j                   k(  r|  yw)r'   N)r  ).0r   r`   s     rg   	<genexpr>z$Quote._fetch_info.<locals>.<genexpr>l  s(      7dH~5  7s   !maxAger   iQ c           	         t        |t              rd|v rd|v r| dv r|d   }|S |d   }|S t        |t              r|D cg c]  } d |       }}|S t        |t              r,|j                         D  ci c]  \  } }|  | |       }} }|S t        |t              r|j                  dd      }|S |}|S c c}w c c}} w )Nrawfmt>   postMarketTimeregularMarketTime     )rx   dictr\   rY   ry   replace)rc   rf   v2x_formats       rg   rw  z"Quote._fetch_info.<locals>._format  s    !T"uzeqj!"&M!MQuX I TUUZS[ I At$0121gdA&22 I At$34779=41aaA&==
 I	 As#YYvs+ I I 3=s    B87B=)r  r)  updatera  r  r>  r  nextru   rY   rx   rs  )r`   r>   r%  r'  query1_infoquote
query_infoprocessed_inforc   rf   k1v1rw  s   `           @rg   r   zQuote._fetch_info\  s      $iUG4d11%89>DJ6 		3E3ve}X'>#?!#C7;||uh'*84!7fjj&;&?&?"&M 7

 &&z2		3 %%' 		&DAq !T"ggi YFB~68HnqUVXr*Y $%q!		& %	 4?3D3D3FG41aaA&G
Gs   E3c                    | j                   ry d| _         | j                  |       | j                  y dh}|rd| j                   d| j                   }|D ]
  }|d|z   z  } t        j
                  j                         j                  d      t        j                  d      z
  }t        |j                               }t        j
                  j                         j                  d      }t        |j                               }|d	| d
| z  }| j                  j                  ||      j                  }t!        j"                  |      }|j%                  d      xs |j%                  d      }	|	d   t'        dt)        |	d         z         |D ]9  }|	d   d   }
||
v r|
|   d   d   d   | j                  |<   +d | j*                  |<   ; y y )NTtrailingPegRatiozRhttps://query1.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/z?symbol=z&type=r      r   z	&period1=z	&period2=)urlr>   
timeseriesfinancer\  r(  r'  r   r   reportedValuerm  )r  r   r  r  r   r   r   floorr   r   r   	timestampr   r  	cache_gettextr   loadsru   r	   ry   r   )r`   r>   rm   r  rc   r   r   json_str	json_datajson_resultkeydicts              rg   r!  zQuote._fetch_complementary  s   ...2+ 	:: ##. ggkgsgsftt|  ~B  ~J  ~J  }K  LC $x!|#$ LL'')//4x7I7Ix7XXE)*E,,%%',,S1Ccmmo&CYugYse44Czz++5+AFFH

8,I#--5Qy9QK7#/!"VY\]hip]qYr"rss (%h/2<$+AJrN?$CE$JDJJqM#'DIIaL(M rn   c                 .   | j                  | j                  dg      }|i | _        y 	 t               | _        |d   d   d   d   }d|v r=t        j                  j                  |d         j                         | j                  d<   d|v r=t        j                  j                  |d         j                         | j                  d	<   |j                  d
      }||j                  dg       D cg c]/  }t        j                  j                  |      j                         1 c}| j                  d<   |j                  dd       | j                  d<   |j                  dd       | j                  d<   |j                  dd       | j                  d<   |j                  dd       | j                  d<   |j                  dd       | j                  d<   |j                  dd       | j                  d<   y y c c}w # t        t        f$ r t        d|       w xY w)NcalendarEventsr$  r&  r'  r   dividendDatezDividend DateexDividendDatezEx-Dividend DateearningsearningsDatezEarnings DateearningsHighzEarnings HighearningsLowzEarnings LowearningsAveragezEarnings AveragerevenueHighzRevenue High
revenueLowzRevenue LowrevenueAveragezRevenue Averager(  )r)  r>   r  rs  r   fromtimestampr   ru   rz   r*  r   )r`   r'  _eventsr  ds        rg   rD  zQuote._fetch_calendar  s   TZZ2B1CD>DN	a!VDN^,X6q9:JKG(2:2C2C2Q2QRYZhRi2j2o2o2q/7*5=5F5F5T5TU\]mUn5o5t5t5v12{{:.H#fnfrfr  tB  DF  gG  3Hab83D3D3R3RST3U3Z3Z3\  3H/2:,,~t2T/19mT1R~.5=\\BSUY5Z1219mT1R~.08\40P}-4<LLAQSW4X01 $ 3H *% 	a!$VW]V^"_``	as   CG6 14G1%C
G6 1G6 6Hc                 ,   | j                  | j                  dg      }|y |d   d   d   d   d   }|D ]W  }d|v r|d   D ci c]  }|d   |d	    c}|d<   t        j                  j                  |d
   d      j	                         |d
<   Y |S c c}w )N
secFilingsr$  r&  r'  r   filingsexhibitstyper  r   z%Y-%m-%d)r)  r>   r   strptimer   )r`   r'  r  rH  r  s        rg   rG  zQuote._fetch_sec_filings  s    TZZ,@>(215lCIN  	QAQ=>z] K61U8!3 K* ))221V9jINNPAfI	Q* ' !Ls   Brj   )r
  r  r  r   ry   rh   r  rs  r   r   r   r,  r0  rB  rE  rI  staticmethodrK  r\   r)  ra  r   r!  rD  rG  r  rn   rg   r  r    s    4V 4S 4" d   $ $ $ % % % )R\\ ) )& $  
 !T ! ! + +T 	6Hp7(ra8rn   r  )r   r   numpyr   pandasr   rX  yfinancer   yfinance.datar   yfinance.constr   r   r   yfinance.exceptionsr   r	   info_retired_keys_pricerx  info_retired_keys_exchangeinfo_retired_keys_marketCapinfo_retired_keys_symbolinfo_retired_keysrW  r)   r  )r   s   0rg   <module>r     s            P P <p    ;|}a 1} ~      X  Y   b cw *m $: +.HHKff  jB  B  $$=> I IX` `q  ~s   B.