siat 2.10.6__py3-none-any.whl → 2.10.12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- siat/__init__.py +2 -1
- siat/common.py +43 -0
- siat/financials2.py +54 -32
- siat/financials_china.py +43 -12
- {siat-2.10.6.dist-info → siat-2.10.12.dist-info}/METADATA +1 -1
- {siat-2.10.6.dist-info → siat-2.10.12.dist-info}/RECORD +8 -8
- {siat-2.10.6.dist-info → siat-2.10.12.dist-info}/WHEEL +0 -0
- {siat-2.10.6.dist-info → siat-2.10.12.dist-info}/top_level.txt +0 -0
siat/__init__.py
CHANGED
@@ -16,13 +16,14 @@ from siat.allin import *
|
|
16
16
|
from IPython.core.interactiveshell import InteractiveShell
|
17
17
|
InteractiveShell.ast_node_interactivity='all'
|
18
18
|
#==============================================================================
|
19
|
+
# 检查是否存在新版本
|
19
20
|
import pkg_resources
|
20
21
|
current_version=pkg_resources.get_distribution("siat").version
|
21
22
|
import luddite
|
22
23
|
latest_version=luddite.get_version_pypi("siat")
|
23
24
|
|
24
25
|
if latest_version != current_version:
|
25
|
-
print("
|
26
|
+
print("Welcome to Security Investment Analysis Toolkit (siat)")
|
26
27
|
print("The siat version in your computer is",current_version,"\b, latest version is",latest_version,'\n')
|
27
28
|
print("*** If you expect to upgrade siat, use the instruction below in a command window:")
|
28
29
|
print(" pip install siat --upgrade")
|
siat/common.py
CHANGED
@@ -2218,4 +2218,47 @@ def change_recommend_stars(stars_current,change='+'):
|
|
2218
2218
|
|
2219
2219
|
|
2220
2220
|
#==============================================================================
|
2221
|
+
if __name__=='__main__':
|
2222
|
+
symbol='---'
|
2223
|
+
exclude_collist=['c1']
|
2224
|
+
|
2225
|
+
import pandas as pd
|
2226
|
+
df=pd.DataFrame({'c1':[10,11,12],'c2':['---',110,'---'],'c3':['---',1100,'---']})
|
2227
|
+
df_filter_row(df,exclude_collist=['c1'],symbol='---')
|
2228
|
+
|
2229
|
+
def df_filter_row(df,exclude_collist=[],symbol=''):
|
2230
|
+
"""
|
2231
|
+
功能:删除df中的全部行,如果该行除去exclude_collist外其全部列的1值均为symbol
|
2232
|
+
"""
|
2233
|
+
# 若为空直接返回
|
2234
|
+
if len(df)==0:
|
2235
|
+
return df
|
2236
|
+
|
2237
|
+
# 找出需要判断的列列表
|
2238
|
+
collist=list(df)
|
2239
|
+
for e in exclude_collist:
|
2240
|
+
collist.remove(e)
|
2241
|
+
|
2242
|
+
# 逐行打是否为symbol标记
|
2243
|
+
df2=df.copy()
|
2244
|
+
df2['EmptyRow']=True # 假定所有行都符合条件
|
2245
|
+
for index,row in df2.iterrows():
|
2246
|
+
for c in collist:
|
2247
|
+
#if row[c] not in [symbol,' ',0]:
|
2248
|
+
if row[c] not in [symbol]:
|
2249
|
+
df2.loc[index,'EmptyRow']=False
|
2250
|
+
|
2251
|
+
# 删除符合条件的行
|
2252
|
+
df3=df2[df2['EmptyRow']==False]
|
2253
|
+
df3.drop('EmptyRow',axis=1,inplace=True)
|
2254
|
+
|
2255
|
+
return df3
|
2256
|
+
|
2257
|
+
|
2258
|
+
|
2259
|
+
#==============================================================================
|
2260
|
+
#==============================================================================
|
2261
|
+
#==============================================================================
|
2262
|
+
#==============================================================================
|
2263
|
+
#==============================================================================
|
2221
2264
|
|
siat/financials2.py
CHANGED
@@ -133,7 +133,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
133
133
|
if isinstance(tickers,list): tickers=tickers[0]
|
134
134
|
else:
|
135
135
|
print(" #Warning(fs_analysis_china): must be one ticker or first ticker in a list for",tickers)
|
136
|
-
return
|
136
|
+
return None
|
137
137
|
|
138
138
|
# 检查category
|
139
139
|
category_list=['profile','officers','market_rates','dividend','stock_split','fin_rates','risk_general','risk_esg']
|
@@ -150,7 +150,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
150
150
|
else:
|
151
151
|
info=get_stock_profile(ticker,info_type=category)
|
152
152
|
|
153
|
-
return
|
153
|
+
return info
|
154
154
|
|
155
155
|
elif ('balance' in analysis_type1) or ('sheet' in analysis_type1) \
|
156
156
|
or ('asset' in analysis_type1) or ('liability' in analysis_type1):
|
@@ -159,7 +159,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
159
159
|
if isinstance(tickers,list): tickers=tickers[0]
|
160
160
|
else:
|
161
161
|
print(" #Warning(fs_analysis_china): must be one ticker or first ticker in a list for",tickers)
|
162
|
-
return
|
162
|
+
return None
|
163
163
|
|
164
164
|
# 分析资产负债表
|
165
165
|
fsdf=get_balance_sheet(symbol=tickers)
|
@@ -230,15 +230,19 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
230
230
|
collist=list(fsdf4)
|
231
231
|
fsdf4['Item']=fsdf4.index
|
232
232
|
fsdf5=fsdf4[['Item']+collist]
|
233
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
233
234
|
|
234
235
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
235
|
-
print(
|
236
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
236
237
|
|
237
|
-
footnote1="***
|
238
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
238
239
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
239
240
|
print('\n',footnote1,'\n',footnote2)
|
241
|
+
|
242
|
+
return fsdf6
|
240
243
|
|
241
|
-
|
244
|
+
else:
|
245
|
+
return fsdf2
|
242
246
|
|
243
247
|
elif ('income' in analysis_type1) or ('cost' in analysis_type1) \
|
244
248
|
or ('expense' in analysis_type1) or ('earning' in analysis_type1):
|
@@ -247,7 +251,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
247
251
|
if isinstance(tickers,list): tickers=tickers[0]
|
248
252
|
else:
|
249
253
|
print(" #Warning(fs_analysis_china): must be one ticker or first ticker in a list for",tickers)
|
250
|
-
return
|
254
|
+
return None
|
251
255
|
|
252
256
|
# 分析利润表
|
253
257
|
fsdf=get_income_statements(symbol=tickers)
|
@@ -297,16 +301,19 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
297
301
|
|
298
302
|
collist=list(fsdf4)
|
299
303
|
fsdf4['Item']=fsdf4.index
|
300
|
-
fsdf5=fsdf4[['Item']+collist]
|
304
|
+
fsdf5=fsdf4[['Item']+collist]
|
305
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
301
306
|
|
302
307
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
303
|
-
print(
|
308
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
304
309
|
|
305
|
-
footnote1="***
|
310
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
306
311
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
307
312
|
print('\n',footnote1,'\n',footnote2)
|
313
|
+
|
314
|
+
return fsdf6
|
308
315
|
|
309
|
-
return
|
316
|
+
return fsdf2
|
310
317
|
|
311
318
|
elif ('cash' in analysis_type1) or ('flow' in analysis_type1):
|
312
319
|
# 股票需为单只股票,若为列表则仅取第一个
|
@@ -314,7 +321,7 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
314
321
|
if isinstance(tickers,list): tickers=tickers[0]
|
315
322
|
else:
|
316
323
|
print(" #Warning(fs_analysis_china): must be one ticker or first ticker in a list for",tickers)
|
317
|
-
return
|
324
|
+
return None
|
318
325
|
|
319
326
|
# 分析现金流量表
|
320
327
|
fsdf=get_cashflow_statements(symbol=tickers)
|
@@ -364,16 +371,19 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
364
371
|
|
365
372
|
collist=list(fsdf4)
|
366
373
|
fsdf4['Item']=fsdf4.index
|
367
|
-
fsdf5=fsdf4[['Item']+collist]
|
374
|
+
fsdf5=fsdf4[['Item']+collist]
|
375
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
368
376
|
|
369
377
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
370
|
-
print(
|
378
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
371
379
|
|
372
|
-
footnote1="***
|
380
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
373
381
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
374
382
|
print('\n',footnote1,'\n',footnote2)
|
375
383
|
|
376
|
-
|
384
|
+
return fsdf6
|
385
|
+
|
386
|
+
return fsdf2
|
377
387
|
|
378
388
|
elif ('summary' in analysis_type1):
|
379
389
|
|
@@ -463,15 +473,18 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
463
473
|
collist=list(fsdf4)
|
464
474
|
fsdf4['Item']=fsdf4.index
|
465
475
|
fsdf5=fsdf4[['Item']+collist]
|
476
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
466
477
|
|
467
478
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
468
|
-
print(
|
479
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
469
480
|
|
470
|
-
footnote1="***
|
481
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
471
482
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
472
483
|
print('\n',footnote1,'\n',footnote2)
|
484
|
+
|
485
|
+
return fsdf6
|
473
486
|
|
474
|
-
return
|
487
|
+
return fsdf2
|
475
488
|
|
476
489
|
# 股票可为股票列表(多只股票对比)
|
477
490
|
if isinstance(tickers,list):
|
@@ -539,15 +552,18 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
539
552
|
collist=list(fsdf4)
|
540
553
|
fsdf4['Item']=fsdf4.index
|
541
554
|
fsdf5=fsdf4[['Item']+collist]
|
555
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
542
556
|
|
543
557
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
544
|
-
print(
|
558
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
545
559
|
|
546
|
-
footnote1="***
|
560
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
547
561
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
548
562
|
print('\n',footnote1,'\n',footnote2)
|
563
|
+
|
564
|
+
return fsdf6
|
549
565
|
|
550
|
-
return
|
566
|
+
return fsdf2
|
551
567
|
|
552
568
|
elif ('indicator' in analysis_type1):
|
553
569
|
|
@@ -635,15 +651,18 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
635
651
|
collist=list(fsdf4)
|
636
652
|
fsdf4['Item']=fsdf4.index
|
637
653
|
fsdf5=fsdf4[['Item']+collist]
|
654
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
638
655
|
|
639
656
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
640
|
-
print(
|
657
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
641
658
|
|
642
|
-
footnote1="***
|
659
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
643
660
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
644
661
|
print('\n',footnote1,'\n',footnote2)
|
662
|
+
|
663
|
+
return fsdf6
|
645
664
|
|
646
|
-
return
|
665
|
+
return fsdf2
|
647
666
|
|
648
667
|
# 股票可为股票列表(多只股票对比)
|
649
668
|
if isinstance(tickers,list):
|
@@ -708,22 +727,25 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
708
727
|
collist=list(fsdf4)
|
709
728
|
fsdf4['Item']=fsdf4.index
|
710
729
|
fsdf5=fsdf4[['Item']+collist]
|
730
|
+
fsdf6=df_filter_row(fsdf5,exclude_collist=['Item'],symbol='---')
|
711
731
|
|
712
732
|
alignlist=['left']+['right']*(len(list(fsdf5))-1)
|
713
|
-
print(
|
733
|
+
print(fsdf6.to_markdown(tablefmt='plain',index=False,colalign=alignlist))
|
714
734
|
|
715
|
-
footnote1="***
|
735
|
+
footnote1="*** Amount unit: "+currency+" billion, exchange's local accounting standards"
|
716
736
|
footnote2="*** Data source: Yahoo Finance, "+todaydt
|
717
|
-
print('\n',footnote1,'\n',footnote2)
|
737
|
+
print('\n',footnote1,'\n',footnote2)
|
738
|
+
|
739
|
+
return fsdf6
|
718
740
|
|
719
|
-
return
|
741
|
+
return fsdf2
|
720
742
|
|
721
743
|
|
722
744
|
elif ('dupont' in analysis_type1) and (('identity' in analysis_type1) or ('analysis' in analysis_type1)):
|
723
745
|
# 股票需为股票列表
|
724
746
|
if not isinstance(tickers,list):
|
725
747
|
print(" #Warning(fs_analysis_china): must be a ticker list for",tickers)
|
726
|
-
return
|
748
|
+
return None
|
727
749
|
|
728
750
|
business_period=business_period.lower()
|
729
751
|
fsdf=pd.DataFrame()
|
@@ -816,11 +838,11 @@ def fs_analysis(tickers,fsdates=[],analysis_type='balance sheet', \
|
|
816
838
|
footnote2="Data source: Yahoo Finance, "+todaydt
|
817
839
|
print('\n',footnote1,'\b.',footnote2)
|
818
840
|
|
819
|
-
return
|
841
|
+
return df2
|
820
842
|
|
821
843
|
else: # analysis_type1
|
822
844
|
print(" #Warning(fs_analysis): sorry, no idea on what to do for",analysis_type)
|
823
|
-
return
|
845
|
+
return None
|
824
846
|
|
825
847
|
|
826
848
|
#==============================================================================
|
siat/financials_china.py
CHANGED
@@ -3704,34 +3704,44 @@ def get_fin_indicator_1ticker_china(ticker,fsdates):
|
|
3704
3704
|
for index,row in dft5.iterrows():
|
3705
3705
|
# 改变顺序要谨慎
|
3706
3706
|
if ('每股' in row['指标']) and (row['选项'] == ''):
|
3707
|
-
row['选项']='每股指标'
|
3707
|
+
#row['选项']='每股指标'
|
3708
|
+
dft5.loc[index,'选项']='每股指标'
|
3708
3709
|
|
3709
3710
|
if ('周转' in row['指标']) and (row['选项'] == ''):
|
3710
|
-
row['选项']='营运能力'
|
3711
|
+
#row['选项']='营运能力'
|
3712
|
+
dft5.loc[index,'选项']='营运能力'
|
3711
3713
|
|
3712
3714
|
if ('应收' in row['指标']) and (row['选项'] == ''):
|
3713
|
-
row['选项']='应收账款'
|
3715
|
+
#row['选项']='应收账款'
|
3716
|
+
dft5.loc[index,'选项']='应收账款'
|
3714
3717
|
|
3715
3718
|
if ('预付' in row['指标']) and (row['选项'] == ''):
|
3716
|
-
row['选项']='预付账款'
|
3719
|
+
#row['选项']='预付账款'
|
3720
|
+
dft5.loc[index,'选项']='预付账款'
|
3717
3721
|
|
3718
3722
|
if str_contain_any_substr(row['指标'],debtstrlist) and (row['选项'] == ''):
|
3719
|
-
row['选项']='偿债能力'
|
3723
|
+
#row['选项']='偿债能力'
|
3724
|
+
dft5.loc[index,'选项']='偿债能力'
|
3720
3725
|
|
3721
3726
|
if ('现金' in row['指标']) and (row['选项'] == ''):
|
3722
|
-
row['选项']='现金指标'
|
3727
|
+
#row['选项']='现金指标'
|
3728
|
+
dft5.loc[index,'选项']='现金指标'
|
3723
3729
|
|
3724
3730
|
if ('亿元' in row['指标']) and (row['选项'] == ''):
|
3725
|
-
row['选项']='规模指标'
|
3726
|
-
|
3731
|
+
#row['选项']='规模指标'
|
3732
|
+
dft5.loc[index,'选项']='规模指标'
|
3733
|
+
"""
|
3727
3734
|
if ('亿元' in row['指标']) and (row['选项'] == ''):
|
3728
|
-
row['选项']='规模指标'
|
3729
|
-
|
3735
|
+
#row['选项']='规模指标'
|
3736
|
+
dft5.loc[index,'选项']='规模指标'
|
3737
|
+
"""
|
3730
3738
|
if str_contain_any_substr(row['指标'],retstrlist) and (row['选项'] == ''):
|
3731
|
-
row['选项']='利润回报'
|
3739
|
+
#row['选项']='利润回报'
|
3740
|
+
dft5.loc[index,'选项']='利润回报'
|
3732
3741
|
|
3733
3742
|
if (row['选项'] == ''):
|
3734
|
-
row['选项']='其他指标'
|
3743
|
+
#row['选项']='其他指标'
|
3744
|
+
dft5.loc[index,'选项']='其他指标'
|
3735
3745
|
|
3736
3746
|
return dft5
|
3737
3747
|
|
@@ -3784,6 +3794,14 @@ if __name__=='__main__':
|
|
3784
3794
|
tickers=['000002.SZ','600048.SS','001979.SZ','600325.SS','000069.SZ','600383.SS','600895.SS','601155.SS']
|
3785
3795
|
fidf=compare_fin_indicator_china(tickers,fsdates)
|
3786
3796
|
|
3797
|
+
tickers='601615.SS'
|
3798
|
+
fsdates=['2022-12-31',
|
3799
|
+
'2021-12-31',
|
3800
|
+
'2020-12-31',
|
3801
|
+
'2019-12-31',
|
3802
|
+
'2018-12-31',
|
3803
|
+
]
|
3804
|
+
|
3787
3805
|
def compare_fin_indicator_china(tickers,fsdates):
|
3788
3806
|
"""
|
3789
3807
|
功能:分类别显示财报摘要中的指标
|
@@ -3994,6 +4012,13 @@ def compare_fin_indicator_china(tickers,fsdates):
|
|
3994
4012
|
'3. 固定资产净值率=(固定资产原值-累计折旧)/固定资产原值*100%,反映企业全部固定资产平均新旧程度 \n'+ \
|
3995
4013
|
'4. 资本固定化比率=非流动资产/净资产*100%,若超过100%,说明固定资产资金投入超过自身能力,易造成财务状况恶化。 \n',
|
3996
4014
|
}
|
4015
|
+
|
4016
|
+
# 标记选项类型
|
4017
|
+
typedict_keys=list(typedict.keys())
|
4018
|
+
for index,row in fsdf.iterrows():
|
4019
|
+
for k in typedict_keys:
|
4020
|
+
if row['指标'] in typedict[k]:
|
4021
|
+
fsdf.loc[index,'选项']=k
|
3997
4022
|
|
3998
4023
|
# 一只股票情形:多日期
|
3999
4024
|
if len(tickers_found) == 1:
|
@@ -4004,6 +4029,7 @@ def compare_fin_indicator_china(tickers,fsdates):
|
|
4004
4029
|
fsdf1=fsdf[fsdf['ticker']==ticker1]
|
4005
4030
|
for ty in typelist:
|
4006
4031
|
dft=fsdf1[fsdf1['选项']==ty]
|
4032
|
+
#dft=fsdf1[fsdf1['选项'].apply(lambda x: x in typedict[ty])]
|
4007
4033
|
#print(list(dft['指标']))
|
4008
4034
|
|
4009
4035
|
# 自定义排序
|
@@ -4027,6 +4053,11 @@ def compare_fin_indicator_china(tickers,fsdates):
|
|
4027
4053
|
print("\n***",ty+':')
|
4028
4054
|
colalign=['center','left']+['right']*(len(list(dft3)) - 1)
|
4029
4055
|
print(dft3.to_markdown(tablefmt='Simple',index=True,colalign=colalign))
|
4056
|
+
"""
|
4057
|
+
注意:若dft3为空,则会出现错误:list assignment index out of range
|
4058
|
+
无论如何修改colalign都没用
|
4059
|
+
"""
|
4060
|
+
|
4030
4061
|
print(notesdict[ty])
|
4031
4062
|
|
4032
4063
|
return dft3
|
@@ -1,4 +1,4 @@
|
|
1
|
-
siat/__init__.py,sha256=
|
1
|
+
siat/__init__.py,sha256=WcOl_oq7p3eXhWXoRc82MO-QS5DVjXn8J-c5TFrPdrc,2112
|
2
2
|
siat/allin.py,sha256=Myw0PYPpD-MPkinxj532RTJBZhqvp1KsvJS8s5EeO30,2390
|
3
3
|
siat/alpha_vantage_test.py,sha256=tKr-vmuFH3CZAqwmISz6jzjPHzV1JJl3sPfZdz8aTfM,747
|
4
4
|
siat/assets_liquidity.py,sha256=WEdxeENumZZZ7sFmwjDeX9rClHXGGHbnlrL2NMkgqnw,28808
|
@@ -15,7 +15,7 @@ siat/bond_test.py,sha256=yUOFw7ddGU-kb1rJdnsjkJWziDNgUR7OLDA7F7Ub91A,5246
|
|
15
15
|
siat/capm_beta.py,sha256=cqbmfM4mrq73Ub0bq5QjWJjmJHj9x7-dSqbmNxnEj7k,28946
|
16
16
|
siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
|
17
17
|
siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
|
18
|
-
siat/common.py,sha256=
|
18
|
+
siat/common.py,sha256=K5v9ULK35reQTH9V77_ac9oNBkYKX3bWbMRciJiRPmI,79072
|
19
19
|
siat/compare_cross.py,sha256=-MZzxmX8_9oFZ7X0IcR51w87EWwssbitiw-BcmHMFzQ,26228
|
20
20
|
siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
|
21
21
|
siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
|
@@ -37,8 +37,8 @@ siat/financial_statements.py,sha256=UbV6ju4jrYaFOvhUgcEuclBBo9gkmqDngdr_92nsFX0,
|
|
37
37
|
siat/financial_statements_test.py,sha256=FLhx8JD-tVVWSBGux6AMz1jioXX4U4bp9DmgFHYXb_w,716
|
38
38
|
siat/financials.py,sha256=6gSwc2VzJy_cAbK2imXEl3Kldw3mmT2Gm54JbK7x35I,78743
|
39
39
|
siat/financials2 - 副本.py,sha256=dKlNjIfKeoSy055fQ6E6TUj9HEoO5Ney9grD84J5kfk,14389
|
40
|
-
siat/financials2.py,sha256=
|
41
|
-
siat/financials_china.py,sha256=
|
40
|
+
siat/financials2.py,sha256=sEfa_JTwIp0SsJLtOsTTxiJZXwArfr9hYlaIsBRxc8E,35965
|
41
|
+
siat/financials_china.py,sha256=nUSPS4SDLP1RaOZF6uIvel8pFl3X_aBO_I0Opl1O8RI,177685
|
42
42
|
siat/financials_china2.py,sha256=EWDuSHQc6TMeU8mXV_LyLLI3URBU8WQYLEZ3obXyB6E,71864
|
43
43
|
siat/financials_china2_test.py,sha256=Erz5k4LyOplBBvYls2MypuqHpVNJ3daiLdyeJezNPu0,2722
|
44
44
|
siat/financials_china2_test2.py,sha256=C8CuYTMHN4Mhp-sTu-Bmg0zMXRCaYV6ezGDoYartRYQ,3507
|
@@ -123,7 +123,7 @@ siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
|
|
123
123
|
siat/valuation_china.py,sha256=SPJFU9J8WJhz_HOXgIAjoG8dZs1zSPS1BZxkjhA-D1w,52241
|
124
124
|
siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
|
125
125
|
siat/var_model_validation.py,sha256=zB_Skk_tmzIR15l6oAW3am4HBGVIG-eZ8gJhCdXZ8Qw,14859
|
126
|
-
siat-2.10.
|
127
|
-
siat-2.10.
|
128
|
-
siat-2.10.
|
129
|
-
siat-2.10.
|
126
|
+
siat-2.10.12.dist-info/METADATA,sha256=xmg78Xpf6IGBh5nuupO7-HCebsFLEPPf82OjjipMu7U,1354
|
127
|
+
siat-2.10.12.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
128
|
+
siat-2.10.12.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
|
129
|
+
siat-2.10.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|