
    Wg                     x    d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZ  G d d      Z G d d      Zy)	    N)utilsconst)YfData)YFExceptionYFNotImplementedErrorc                   p    e Zd Zd	dedefdZed
d       Zedefd       Z	ede
j                  fd       Zy)FundamentalsNdatasymbolc                     || _         || _        || _        d | _        d | _        d | _        d | _        d | _        d| _        t        ||      | _        y )NF)
_data_symbolproxy	_earnings_financials_shares_financials_data_fin_data_quote_basics_already_scraped
Financials)selfr
   r   r   s       Q/var/www/html/venv/lib/python3.12/site-packages/yfinance/scrapers/fundamentals.py__init__zFundamentals.__init__   sT    

 $#',$%dF3    returnc                     | j                   S N)r   r   s    r   
financialszFundamentals.financials   s    r   c                 8    t        j                  dt               y )Nzf'Ticker.earnings' is deprecated as not available via API. Look for "Net Income" in Ticker.income_stmt.)warningswarnDeprecationWarningr   s    r   earningszFundamentals.earnings   s      A  CU  	Vr   c                 H    | j                   t        d      | j                   S )Nshares)r   r   r   s    r   r&   zFundamentals.shares$   s!    <<'11||r   r   )r   r   )__name__
__module____qualname__r   strr   propertyr   dictr$   pd	DataFramer&    r   r   r	   r	      sc    4V 4S 4     $     r   r	   c                       e Zd ZdedefdZddej                  fdZddej                  fdZ	ddej                  fdZ
ej                  dd	       Zd
 Zddedej                  fdZy)r   r
   r   c                 J    || _         || _        i | _        i | _        i | _        y r   )r   r   _income_time_series_balance_sheet_time_series_cash_flow_time_series)r   r
   r   s      r   r   zFinancials.__init__,   s(    
#% *,'&(#r   Nr   c                 X    | j                   }||vr| j                  d||      ||<   ||   S )Nincome)r2   _fetch_time_seriesr   freqr   ress       r   get_income_time_seriesz!Financials.get_income_time_series3   s6    &&s?//$FCI4yr   c                 X    | j                   }||vr| j                  d||      ||<   ||   S )Nbalance-sheet)r3   r7   r8   s       r   get_balance_sheet_time_seriesz(Financials.get_balance_sheet_time_series9   s6    --s?//uMCI4yr   c                 X    | j                   }||vr| j                  d||      ||<   ||   S )N	cash-flow)r4   r7   r8   s       r   get_cash_flow_time_seriesz$Financials.get_cash_flow_time_series?   s6    ))s?//T5ICI4yr   c                    g d}g d}||vrt        d|       ||vrt        d|       |dk(  r|dvrt        d      	 | j                  |||      }||S 	 t        j                         S # t        $ rR}t        j                         j                  | j                   d| d	|        Y d }~t        j                         S d }~ww xY w)
N)r6   r=   r@   yearly	quarterlytrailingz'Illegal argument: name must be one of: z,Illegal argument: timescale must be one of: rF   )r6   r@   zSIllegal argument: frequency 'trailing' only available for cash-flow or income data.z: Failed to create z financials table for reason: )	
ValueError_create_financials_tabler   r   get_yf_loggererrorr   r-   r.   )r   name	timescaler   allowed_namesallowed_timescales	statementes           r   r7   zFinancials._fetch_time_seriesE   s     A@}$F}oVWW..KL^K_`aa
"t3J'J M N N	u55dIuMI$   % ||~  	u!''4<<.8KD6Qopqor(stt||~	us   A. .	C	75CC	c                 |    |dk(  rd}t         j                  |   }	 | j                  |||      S # t        $ r Y y w xY w)Nr6   r   )r   fundamentals_keysget_financials_time_series	Exception)r   rK   rL   r   keyss        r   rH   z#Financials._create_financials_table_   sK    8D&&t,	229dEJJ 		s   / 	;;rU   c                    dddd}||   }d| j                    d| j                    }|dz   dj                  |D cg c]  }||z   	 c}      z   }t        j                  d	d
d      }t        j                  j                         j                  d      }	|dt        |j                                dt        |	j                                z  }| j                  j                  ||      j                  }
t        j                  |
      }|d   d   }|D ]  }|d=  t               }i }|D ]9  }|j                         D ]$  }|dk(  r|j!                  ||          ||   ||<   & ; t#        t%        |            }t        j&                  |d      }t        j(                  |t%        |j                                     }|j+                         D ]Y  \  }}|t        j(                  ||g      }|D ci c]!  }t        j                  |d         |d   d   # c}|j,                  |<   [ |j.                  j0                  j3                  d|z   dd      |_        |j5                  |D cg c]  }||j.                  v s| c}      }|t#        |j6                  d         }|dk(  r|j8                  d d dgf   }|S c c}w c c}w c c}w ) NannualrE   rF   rC   zRhttps://query2.finance.yahoo.com/ws/fundamentals-timeseries/v1/finance/timeseries/z?symbol=z&type=,i        Dz	&period1=z	&period2=)urlr   
timeseriesresultmeta	timestamps)unit)columnsindexasOfDatereportedValueraw^ T)regex)reverser   )r   joindatetimer-   	Timestamputcnowceilintr`   r   	cache_gettextjsonloadssetrU   updatesortedlistto_datetimer.   itemslocrd   r*   replacereindexrc   iloc)r   rL   rU   r   timescale_translationts_url_basekr\   start_dtendjson_str	json_datadata_rawd
timestampsdata_unpackedxdatesdfvs                       r   rS   z%Financials.get_financials_time_seriesk   s   +3+[e f))4	 kkokwkwjx  yA  BF  BN  BN  AO  PH$sxx0M1Q0M'NN$$T2r2ll!!#((-3x11345Ys3==??S>TUU ::''Cu'=BBJJx(	\*84 	A&		
 U
 	,AVVX ,#%%ad+'(tM!$	,	, D,-
z4\\%tM4F4F4H/IJ!'') 	\DAqz\\%s;YZ[TUa
m4a6H6OO[BFF1I	\
 88<<''i4'H ZZD:qAM:;rzz401 #QCB	U 1N< \
 ;s   J=
2&K)K=K)rD   Nr   )r'   r(   r)   r   r*   r   r-   r.   r;   r>   rA   r   log_indent_decoratorr7   rH   ry   rS   r/   r   r   r   r   +   s{    )V )S )2<< ",, bll    2
0$ 0r|| 0r   r   )rm   rt   r!   pandasr-   yfinancer   r   yfinance.datar   yfinance.exceptionsr   r   r	   r   r/   r   r   <module>r      s1        !   B @p pr   