siat 3.7.29__py3-none-any.whl → 3.8.1__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/translate.py CHANGED
@@ -4646,6 +4646,8 @@ if __name__ == '__main__':
4646
4646
  text='Accounts Receivable Net of Sales Allowance'
4647
4647
  text='Accounts Payable'
4648
4648
 
4649
+ text='经济形势分析:China, in Trillions'
4650
+
4649
4651
  language_detect=True
4650
4652
  language_engine=['google','baidu','bing']
4651
4653
 
@@ -4661,11 +4663,26 @@ if __name__ == '__main__':
4661
4663
  lang_auto2(engtext2)
4662
4664
 
4663
4665
 
4664
- def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bing','sogou']):
4666
+ def auto_translate(text,translate=False,language_engine=['bing','sogou','alibaba','google']):
4667
+ """
4668
+ ===========================================================================
4669
+ 功能:基于translate决定是否翻译text
4670
+
4671
+ 注意:可以通过调整language_engine更换翻译引擎,不同的翻译引擎更有特色
4672
+ 谷歌的翻译引擎总体质量较好,但对财经术语的翻译较差
4673
+ 阿里巴巴的翻译引擎对长句翻译不错,但翻译结果不稳定,对同一术语的翻译不稳定
4674
+ 搜狗的翻译引擎处理中英文混合时容易出错
4675
+ """
4676
+ new_text=text
4677
+ if translate:
4678
+ new_text=lang_auto2(text,language_engine=language_engine)
4679
+ return new_text
4680
+
4681
+ def lang_auto2(text,language_detect=True,language_engine=['bing','alibaba','google','sogou']):
4665
4682
  '''转换字符串text至当前语言环境,基于translators,可指定翻译服务器,准确度更高'''
4666
4683
 
4667
4684
  import translators as ts
4668
-
4685
+ """
4669
4686
  lang_env=check_language()
4670
4687
 
4671
4688
  if language_detect:
@@ -4674,16 +4691,51 @@ def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bi
4674
4691
  #字符串语言与当前环境语言相同,无需翻译,节省运行时间
4675
4692
  if lang_env==lang_text:
4676
4693
  return text
4694
+ """
4695
+ # 检查翻译方向
4696
+ lang_env=check_language()
4697
+ if lang_env in ['English']:
4698
+ target_lang="en"
4699
+ source_lang="zh"
4700
+ else:
4701
+ target_lang="zh"
4702
+ source_lang="en"
4703
+
4704
+ if isinstance(language_engine,str):
4705
+ language_engine=[language_engine]
4677
4706
 
4678
4707
  success=False
4708
+ for le in language_engine:
4709
+ try:
4710
+ translation = ts.translate_text(text, \
4711
+ from_language=source_lang,to_language=target_lang, \
4712
+ translator=le)
4713
+
4714
+ # 去掉中文中的所有空格
4715
+ if target_lang=="zh":
4716
+ translation = translation.replace(' ','')
4717
+
4718
+ success=True
4719
+ break
4720
+ except:
4721
+ continue
4722
+
4723
+ """
4679
4724
  if lang_env=='Chinese':
4680
4725
  #translator支持baidu/bing/google
4681
- if isinstance(language_engine,str):
4682
- language_engine=[language_engine]
4683
4726
 
4684
4727
  for le in language_engine:
4685
4728
  try:
4686
4729
  translation = ts.translate_text(text,from_language='en',to_language='zh', translator=le)
4730
+
4731
+ # 应对搜狗引擎中英文混合时可能的翻译错乱
4732
+ if le in ['sogou']:
4733
+ lang_text=detect_language(translation)
4734
+ if lang_text != lang_env:
4735
+ text=translation
4736
+ translation = ts.translate_text(text,from_language='en',to_language='zh', translator=le)
4737
+ # 去掉中文中的所有空格
4738
+ translation = translation.replace(' ','')
4687
4739
  success=True
4688
4740
  break
4689
4741
  except:
@@ -4698,6 +4750,7 @@ def lang_auto2(text,language_detect=True,language_engine=['alibaba','google','bi
4698
4750
  continue
4699
4751
  else:
4700
4752
  return text
4753
+ """
4701
4754
 
4702
4755
  if not success:
4703
4756
  translation = text
@@ -4725,13 +4778,22 @@ def detect_language(text):
4725
4778
 
4726
4779
  if total_count == 0:
4727
4780
  result='Unknown'
4728
-
4781
+
4782
+ """
4729
4783
  if chinese_count > english_count:
4730
4784
  result='Chinese'
4731
4785
  elif english_count > chinese_count:
4732
4786
  result='English'
4733
4787
  else:
4734
4788
  result='Both'
4789
+ """
4790
+ if chinese_count==0 and english_count>0:
4791
+ result='English'
4792
+ if chinese_count>0 and english_count==0:
4793
+ result='Chinese'
4794
+ if chinese_count>0 and english_count>0:
4795
+ result='Both'
4796
+
4735
4797
 
4736
4798
  return result
4737
4799
 
@@ -4865,6 +4927,219 @@ def words_split_yahoo(text,split_improve=True):
4865
4927
 
4866
4928
  return text_new3
4867
4929
 
4930
+ #==============================================================================
4931
+ if __name__ == '__main__':
4932
+ text="经济趋势分析:GDP PPP (constant international $)"
4933
+
4934
+ source_lang="en"
4935
+ target_lang="zh"
4936
+ content_tip="宏观经济学与金融学"
4937
+ content_tip="美国上市公司财务报表"
4938
+ content_tip="香港上市公司财务报表"
4939
+
4940
+ def kimi_translate(text, source_lang="zh", target_lang="en", \
4941
+ domain_tip="宏观经济学与金融学", \
4942
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
4943
+ special_tip="仅翻译文本,不翻译专业术语缩写词,不附带原文,不解释内容"):
4944
+ """
4945
+ ===========================================================================
4946
+ 功能:使用 Kimi API 进行翻译。
4947
+ :param api_key: Kimi API 密钥
4948
+ :param text: 要翻译的文本
4949
+ :param source_lang: 源语言,默认为自动检测
4950
+ :param target_lang: 目标语言,默认为英文
4951
+ :return: 翻译结果
4952
+ """
4953
+
4954
+ if target_lang=="en":
4955
+ target_lang="英文"
4956
+ source_lang="中文"
4957
+ else:
4958
+ target_lang="中文"
4959
+ source_lang="英文"
4960
+
4961
+ import requests
4962
+ # 如果api_key失效,可重新申请,或付费购买
4963
+ api_key='sk-BMuqBuuYr6Hh6Ihi1SL2Vbfr7B3868QQSbTVExgalMpoYfA3'
4964
+
4965
+ url = "https://api.moonshot.cn/v1/chat/completions" # Kimi API 的 URL
4966
+ headers = {
4967
+ "Content-Type": "application/json",
4968
+ "Authorization": f"Bearer {api_key}"
4969
+ }
4970
+
4971
+ payload = {
4972
+ "model": "moonshot-v1-8k",
4973
+ "messages": [
4974
+ {
4975
+ "role": "system",
4976
+ "content": f"将以下{domain_tip}文本从{source_lang}翻译为{target_lang},{terminology_tip},{special_tip}:"
4977
+ },
4978
+ {
4979
+ "role": "user",
4980
+ "content": text
4981
+ }
4982
+ ]
4983
+ }
4984
+
4985
+ response = requests.post(url, json=payload, headers=headers)
4986
+ if response.status_code == 200:
4987
+ result = response.json()
4988
+ return result["choices"][0]["message"]["content"]
4989
+ else:
4990
+ """
4991
+ import time; time.sleep(3)
4992
+ # 再试一次
4993
+ response = requests.post(url, json=payload, headers=headers)
4994
+ if response.status_code == 200:
4995
+ result = response.json()
4996
+ return result["choices"][0]["message"]["content"]
4997
+ else:
4998
+ return f"Error: {response.status_code}"
4999
+ """
5000
+ return f"Error: {response.status_code}"
5001
+
5002
+
5003
+ if __name__ == '__main__':
5004
+ text = "这是一段需要翻译的中文文本。"
5005
+ kimi_translate(text, source_lang="zh", target_lang="en")
5006
+
5007
+ text = "经济趋势分析:Japan, in Trillions"
5008
+ text = "GDP PPP (constant LCU)"
5009
+ text = "Broad money (% of GDP)"
5010
+ kimi_translate(text, source_lang="en", target_lang="zh",content_tip="宏观经济学与金融学")
5011
+
5012
+ #翻译财报项目:将需要翻译的短语集合在一起,一次性调用翻译,可提高效率,之后再拆分使用
5013
+ #最好使用句号分割,避免AI联系上下文进行翻译
5014
+ text = "DilutedEPS.Debt Service Coverage.ROIC.periodType.BasicEPS.Equity Multiplier.Treasury Shares Number"
5015
+ text="Total Equity And Minority Interest.Total non Current Liabilities Net of Minority Interest"
5016
+
5017
+ kimi_translate(text, source_lang="en", target_lang="zh",domain_tip="雅虎财经财务报表")
5018
+
5019
+ #==============================================================================
5020
+ if __name__ == '__main__':
5021
+ # 英译中
5022
+ text_list=["GDP PPP (constant international $)","Broad money"]
5023
+ source_lang="en"; target_lang="zh"
5024
+ domain_tip="宏观经济学与金融学"
5025
+ terminology_tip="特别注意专业术语内涵翻译的专业性"
5026
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"
5027
+
5028
+ translate_list(text_list,source_lang, target_lang)
5029
+
5030
+ # 英译中
5031
+ text_list=["投资收益率","投资风险"]
5032
+ source_lang="zh"; target_lang="en"
5033
+
5034
+ translate_list(text_list,source_lang, target_lang)
5035
+
5036
+ def translate_list(text_list=["GDP PPP","Broad money"],source_lang="auto", target_lang="en", \
5037
+ domain_tip="宏观经济学与金融学", \
5038
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
5039
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"):
5040
+ """
5041
+ ===========================================================================
5042
+ 功能:翻译列表中的内容,并按原顺序输出翻译后的列表
5043
+ 主要参数:
5044
+
5045
+ """
5046
+ # 检查列表是否为空
5047
+ if len(text_list)==0: return text_list
5048
+
5049
+ # 将列表合成为长字符串,使用句点做分隔符
5050
+ text=''; first=True
5051
+ separator_en='.'; separator_zh='。'
5052
+ for t in text_list:
5053
+ if first:
5054
+ text=t
5055
+ first=False
5056
+ else:
5057
+ text=text+separator_en+t
5058
+
5059
+ # 一次性翻译
5060
+ translated=kimi_translate(text, source_lang=source_lang, target_lang=target_lang, \
5061
+ domain_tip=domain_tip, \
5062
+ terminology_tip=terminology_tip, \
5063
+ special_tip=special_tip)
5064
+
5065
+ import re
5066
+ if target_lang=='zh':
5067
+ # 拆分:第1步
5068
+ text1=re.split(r'\n|。',translated)
5069
+
5070
+ # 拆分:第2步
5071
+ text2=[]
5072
+ for t in text1:
5073
+ t1=t.split(':')
5074
+ t2=t1[0]
5075
+ """
5076
+ if len(t1)==1: t2=t1[0]
5077
+ else: t2=t1[1]
5078
+ """
5079
+ text2=text2+[t2]
5080
+
5081
+ if target_lang=='en':
5082
+ # 拆分:第1步
5083
+ text1=translated.split('.')
5084
+
5085
+ # 拆分:第2步
5086
+ text2=[]
5087
+ for t in text1:
5088
+ t1=t.split(':')
5089
+ t2=t1[0]
5090
+ """
5091
+ if len(t1)==1: t2=t1[0]
5092
+ else: t2=t1[1]
5093
+ """
5094
+ text2=text2+[t2]
5095
+
5096
+
5097
+ return text2
5098
+
5099
+
5100
+ #==============================================================================
5101
+ if __name__ == '__main__':
5102
+ text="经济趋势分析:GDP PPP (constant international $)"
5103
+ text="经济趋势分析:GDP PPP"
5104
+ text="经济趋势分析:Japan"
5105
+
5106
+ auto_translate2(text,translate=True)
5107
+
5108
+ def auto_translate2(text,translate=False, \
5109
+ domain_tip="经济学与金融学", \
5110
+ terminology_tip="特别注意专业术语内涵翻译的专业性", \
5111
+ special_tip="特别注意只翻译文本即可,不用附带原文,不用解释内容"):
5112
+ """
5113
+ ===========================================================================
5114
+ 功能:基于translate决定是否翻译text
5115
+
5116
+ 注意:可以通过调整_tip改善翻译质量
5117
+ """
5118
+ if not translate: return text
5119
+
5120
+ # 检查翻译方向
5121
+ lang_env=check_language()
5122
+ if lang_env in ['English']:
5123
+ target_lang="en"
5124
+ source_lang="zh"
5125
+ else:
5126
+ target_lang="zh"
5127
+ source_lang="en"
5128
+
5129
+ new_text=text
5130
+ if translate:
5131
+ new_text=kimi_translate(text, source_lang=source_lang, target_lang=target_lang, \
5132
+ domain_tip=domain_tip, \
5133
+ terminology_tip=terminology_tip, \
5134
+ special_tip=special_tip)
5135
+
5136
+ if 'Error' in new_text or '429' in new_text:
5137
+ new_text=auto_translate(text,translate=True)
5138
+
5139
+ return new_text
5140
+
5141
+ #==============================================================================
5142
+ #==============================================================================
4868
5143
  #==============================================================================
4869
5144
  #==============================================================================
4870
5145
  #==============================================================================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: siat
3
- Version: 3.7.29
3
+ Version: 3.8.1
4
4
  Summary: Securities Investment Analysis Tools (siat)
5
5
  Home-page: https://pypi.org/project/siat/
6
6
  Author: Prof. WANG Dehong, International Business School, Beijing Foreign Studies University
@@ -1,7 +1,7 @@
1
1
  siat/__init__ -20240701.py,sha256=gP5uajXnJesnH5SL0ZPwq_Qhv59AG1bs4qwZv26Fo2Y,2894
2
2
  siat/__init__.py,sha256=N2D1ydfh_lejim0z6eQR17utNF7-5lk04c1esGO71_E,2223
3
3
  siat/__init__.py.backup_20250214.py,sha256=pIo4CV3lNPKIhitmhIh_6aAfZrmzQWGNDcEnvZ7GXoc,3216
4
- siat/allin.py,sha256=x1QC29PUBUYiA6IAbQKbRvtxIEUOBx8dy5k7zh1ABT4,2970
4
+ siat/allin.py,sha256=9xwa97S6KPHXGuqDtyN9b6Y4lCSM1VdBqpFBrlRvV8I,3001
5
5
  siat/alpha_vantage_test.py,sha256=tKr-vmuFH3CZAqwmISz6jzjPHzV1JJl3sPfZdz8aTfM,747
6
6
  siat/assets_liquidity.py,sha256=o_UZdLs693uNWPEQB2OzxDH0mdWimOmq4qe_vx1pue0,28987
7
7
  siat/assets_liquidity_test.py,sha256=UWk6HIUlizU7LQZ890fGx8LwU1jMMrIZswg8cFUJWZ8,1285
@@ -19,7 +19,7 @@ siat/capm_beta.py,sha256=cxXdRVBQBllhbfz1LeTJAIWvyRYhW54nhtNUXv4HwS0,29063
19
19
  siat/capm_beta2.py,sha256=-ZYYp1HK7SkfTR3vBKZ0QVC4Q_tbST2O4MGbX_V77J0,32031
20
20
  siat/capm_beta_test.py,sha256=ImR0c5mc4hIl714XmHztdl7qg8v1E2lycKyiqnFj6qs,1745
21
21
  siat/cmat_commons.py,sha256=Nj9Kf0alywaztVoMVeVVL_EZk5jRERJy8R8kBw88_Tg,38116
22
- siat/common.py,sha256=IkeZU6i-F0cv7pnrMtZjYUegk1B2jaD_ULmLD_SJZv0,179357
22
+ siat/common.py,sha256=Qum_mU7AbjA_7VLH7P8EeqpIB2UwVfYxB8XNHuOHseo,180273
23
23
  siat/compare_cross.py,sha256=3iP9TH2h3w27F2ARZc7FjKcErYCzWRc-TPiymOyoVtw,24171
24
24
  siat/compare_cross_test.py,sha256=xra5XYmQGEtfIZL2h-GssdH2hLdFIhG3eoCrkDrL3gY,3473
25
25
  siat/concepts_iwencai.py,sha256=m1YEDtECRT6FqtzlKm91pt2I9d3Z_XoP59BtWdRdu8I,3061
@@ -30,6 +30,7 @@ siat/cryptocurrency_test.py,sha256=3AikTNJ7j-HwLGLIYEfyXZ3bLVuLeru9mwiwHQi2SdA,2
30
30
  siat/derivative.py,sha256=qV8n09799eqLc26ojR6vN5n_X-xd7rGwdYjgq-wBih8,41483
31
31
  siat/economy-20230125.py,sha256=vxZZlPnLkh7SpGMVEPLwxjt0yYLSVmdZrO-s2NYLyoM,73848
32
32
  siat/economy.py,sha256=BFVQDxOTbuizyumpCgpZIauH6sqnwUXebpqRMmQCzys,84198
33
+ siat/economy2.py,sha256=hZJUvavyX6RQxmmrsjMMKCSlnwdHLwNhLSUkBTLitko,37491
33
34
  siat/economy_test.py,sha256=6vjNlPz7W125pJb7simCddobSEp3jmLIMvVkLRZ7zW8,13339
34
35
  siat/esg.py,sha256=GMhaonIKtvOK83rhpQUH5aJt2OL3HQBSVfD__Yw-0oo,19040
35
36
  siat/esg_test.py,sha256=Z9m6GUt8O7oHZSEG9aDYpGdvvrv2AiRJdHTiU6jqmZ0,2944
@@ -63,7 +64,7 @@ siat/future_china.py,sha256=F-HsIf2Op8Z22RzTjet1g8COzldgnMjFNSXsAkeGyWo,17595
63
64
  siat/future_china_test.py,sha256=BrSzmDVaOHki6rntOtosmRn-6dkfOBuLulJNqh7MOpc,1163
64
65
  siat/global_index_test.py,sha256=hnFp3wqqzzL-kAP8mgxDZ54Bd5Ijf6ENi5YJlGBgcXw,2402
65
66
  siat/google_authenticator.py,sha256=ZUbZR8OW0IAKDbcYtlqGqIpZdERpFor9NccFELxg9yI,1637
66
- siat/grafix.py,sha256=-ewwyFBXP4qbe7HY9RGowtfC3zXb-DkByIdqMj2k_C0,110457
67
+ siat/grafix.py,sha256=GECIZoILBtzV6zf7J8MTHMs0Iy25okbwvuIIPY-vOuc,115280
67
68
  siat/grafix_test.py,sha256=kXvcpLgQNO7wd30g_bWljLj5UH7bIVI0_dUtXbfiKR0,3150
68
69
  siat/holding_risk.py,sha256=G3wpaewAKF9CwEqRpr4khyuDu9SU2EGyQUHdk7cmHOA,30693
69
70
  siat/holding_risk_test.py,sha256=FRlw_9wFG98BYcg_cSj95HX5WZ1TvkGaOUdXD7-V86s,474
@@ -108,7 +109,7 @@ siat/security_trend2-20240620.py,sha256=QVnEcb7AyVbO77jVqfFsJffGXrX8pgJ9xCfoAKmW
108
109
  siat/security_trend2.py,sha256=Pp2a2HtiVa1P1S1hW8DfMcXcbbnAsvkL7rlTdct67AQ,30242
109
110
  siat/setup.py,sha256=up65rQGLmTBkhtaMLowjoQXYmIsnycnm4g1SYmeQS6o,1335
110
111
  siat/shenwan index history test.py,sha256=JCVAzOSEldHalhSFa3pqD8JI_8_djPMQOxpkuYU-Esg,1418
111
- siat/stock.py,sha256=JT_sq-9B8A25fzTh7rSj5-NnO2IlGbI_7O47ZZu9Dk0,159068
112
+ siat/stock.py,sha256=NPy2zPVMZtblY66VY2hAb9YNy7xQFjyP0YjcfWrb9_w,159068
112
113
  siat/stock_advice_linear.py,sha256=-twT7IGP-NEplkL1WPSACcNJjggRB2j4mlAQCkzOAuo,31655
113
114
  siat/stock_base.py,sha256=uISvbRyOGy8p9QREA96CVydgflBkn5L3OXOGKl8oanc,1312
114
115
  siat/stock_china.py,sha256=85Ggb21E2mrCYMdSSTTrkoyyLGXMK2V-BtlweHomSRg,93460
@@ -134,7 +135,7 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
134
135
  siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
135
136
  siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
136
137
  siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
137
- siat/translate.py,sha256=lIT0MO9QwhGaHipDK0p7_evOJN3e5wwKlCqv8Vebvto,251987
138
+ siat/translate.py,sha256=Xg5lq_rwKKrt8Ysz84LhwLu276KYl1-Nfqq84jRfl7w,262241
138
139
  siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
139
140
  siat/translate_241003_keep.py,sha256=un7Fqe1v35MXsja5exZgjmLzrZtt66NARZIGlyFuGGU,218747
140
141
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
@@ -143,8 +144,8 @@ siat/valuation_china.py,sha256=CVp1IwIsF3Om0J29RGkyxZLt4n9Ug-ua_RKhLwL9fUQ,69624
143
144
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
144
145
  siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
145
146
  siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
146
- siat-3.7.29.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
147
- siat-3.7.29.dist-info/METADATA,sha256=fOU35G2D0BocknrWdcxbCMUJcVPpHVV9cEyhfK9H1nk,8321
148
- siat-3.7.29.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
149
- siat-3.7.29.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
150
- siat-3.7.29.dist-info/RECORD,,
147
+ siat-3.8.1.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
148
+ siat-3.8.1.dist-info/METADATA,sha256=ofydAqYklStHxKyPE6-Eo-P5QjT4IAvsHBt5E9Ogupg,8320
149
+ siat-3.8.1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
150
+ siat-3.8.1.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
151
+ siat-3.8.1.dist-info/RECORD,,
File without changes
File without changes