siat 3.7.24__py3-none-any.whl → 3.7.25__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/grafix.py CHANGED
@@ -243,7 +243,7 @@ def plot_line(df0,colname,collabel,ylabeltxt,titletxt,footnote,datatag=False, \
243
243
  x_end = df_end[colname].idxmin() # 末端值的x坐标
244
244
 
245
245
  #y1=str(int(y_end)) if y_end >= 100 else str(round(y_end,2))
246
- y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 10 else str(round(y_end,4))
246
+ y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 1 else str(round(y_end,3))
247
247
  plt.annotate(text=' '+y1,
248
248
  xy=(x_end, y_end),
249
249
  xytext=(x_end, y_end),fontsize=annotate_size)
@@ -1614,7 +1614,7 @@ def draw_lines(df0,y_label,x_label,axhline_value,axhline_label,title_txt, \
1614
1614
 
1615
1615
  if annotate_value: #在标记曲线名称的同时标记其末端数值
1616
1616
  #y1=str(int(y_end)) if y_end >= 100 else str(round(y_end,2))
1617
- y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 10 else str(round(y_end,3))
1617
+ y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 1 else str(round(y_end,3))
1618
1618
  plt.annotate(text=c+':'+y1,
1619
1619
  xy=(x_end, y_end),
1620
1620
  xytext=(x_end, y_end),fontsize=annotate_size,
@@ -1669,7 +1669,7 @@ def draw_lines(df0,y_label,x_label,axhline_value,axhline_label,title_txt, \
1669
1669
  x_end = df_end[c].idxmin() # 末端值的x坐标
1670
1670
 
1671
1671
  #y1=str(int(y_end)) if y_end >= 100 else str(round(y_end,2))
1672
- y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 10 else str(round(y_end,4))
1672
+ y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 1 else str(round(y_end,3))
1673
1673
  plt.annotate(text=' '+y1,
1674
1674
  xy=(x_end, y_end),
1675
1675
  xytext=(x_end, y_end),fontsize=annotate_size,
@@ -2004,7 +2004,7 @@ def draw_lines2(df0,y_label,x_label,axhline_value,axhline_label,title_txt, \
2004
2004
  x_end = df_end[c].idxmin() # 末端值的x坐标
2005
2005
 
2006
2006
  #y1=str(int(y_end)) if y_end >= 100 else str(round(y_end,2))
2007
- y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 10 else str(round(y_end,3))
2007
+ y1=str(round(y_end,2)) if abs(y_end) >= 100 else str(round(y_end,2)) if abs(y_end) >= 1 else str(round(y_end,3))
2008
2008
  plt.annotate(text=y1,
2009
2009
  xy=(x_end, y_end),
2010
2010
  xytext=(x_end, y_end),fontsize=annotate_size,
siat/stock_technical.py CHANGED
@@ -2485,30 +2485,49 @@ if __name__ =="__main__":
2485
2485
 
2486
2486
  def security_technical(ticker,technical=['MACD'],indicator='Close', \
2487
2487
  start='default',end='default', \
2488
- MA_days=[5,20],EMA_days=[5,20], \
2489
- MACD_fastperiod=12,MACD_slowperiod=26,MACD_signalperiod=9, \
2488
+ MA_days=[5,20],EMA_days=[5,20], \
2489
+ MACD_fastperiod=12,MACD_slowperiod=26,MACD_signalperiod=9, \
2490
2490
 
2491
- #RSI参数个数必须为3个,否则出错
2492
- RSI_days=[6,12,24],RSI_lines=[20,50,80], \
2493
- KDJ_days=[9,3,3],matypes=[0,0],KDJ_lines=[20,50,80], \
2494
- boll_days=20,boll_years=7, \
2491
+ #RSI参数个数必须为3个,否则出错
2492
+ RSI_days=[6,12,24],RSI_lines=[20,50,80], \
2493
+ KDJ_days=[9,3,3],matypes=[0,0],KDJ_lines=[20,50,80], \
2494
+ boll_days=20,boll_years=7, \
2495
2495
 
2496
- resample_freq='6H',smooth=True,linewidth=1.5, \
2497
- loc1='best',loc2='best', \
2498
- graph=['ALL'],printout=False, \
2499
- date_range=False,date_freq=False,annotate=False, \
2500
- ticker_type='auto',source='auto', \
2501
- price_line_color='red', \
2502
- facecolor='k'):
2496
+ resample_freq='6H',smooth=True,linewidth=1.5, \
2497
+ loc1='best',loc2='best', \
2498
+ graph=['ALL'],printout=False, \
2499
+ date_range=False,date_freq=False,annotate=False, \
2500
+ ticker_type='auto',source='auto', \
2501
+ price_line_color='red', \
2502
+ facecolor='k'):
2503
2503
 
2504
2504
  """
2505
- 功能:技术分析中的MACD/RSI/KDJ/布林带,支持教学演示,支持参数调节。
2505
+ ===========================================================================
2506
+ 功能:技术分析指标的深度分析,适用于MACD/RSI/KDJ/Bollinger,支持金叉/死叉分析等。
2506
2507
  支持的产品:全球股票,债券(限中国内地的上市债券),基金(支持中国和美国的上市基金)。
2508
+ 主要参数:
2507
2509
  ticker:证券代码
2508
- start/end:起止日期。支持简洁方式,仅需使用start指定近期的期间长度。
2509
- 简洁方式:mrw(近1周),l2w(近2周),l3w(近3周),mrm(近1个月),l2m(近2个月),
2510
- mrq(近3个月),mrh(近6个月),mry(近1年),l2y(近2年),l3y(近3年),
2511
- l5y(近5年),l8y(近8年),l10y(近10年),l20y(近20年),l30y(近30年),ytd(今年以来)
2510
+ technical:技术分析指标,仅支持'MACD'、'RSI'、'KDJ'、'Bollinger',可一次指定多个。
2511
+ start/end:起止日期。支持简洁方式,仅需使用start指定近期的期间长度。简洁方式如下:
2512
+ mrw(近1周),l2w(近2周),l3w(近3周),mrm(近1个月),l2m(近2个月),
2513
+ mrq(近3个月),mrh(近6个月),mry(近1年),l2y(近2年),l3y(近3年),
2514
+ l5y(近5年),l8y(近8年),l10y(近10年),l20y(近20年),l30y(近30年),
2515
+ ytd(今年以来)
2516
+ 技术分析指标的参数,可手动调节,默认如下:
2517
+ MACD_fastperiod=12,MACD_slowperiod=26,MACD_signalperiod=9
2518
+ MA_days=[5,20],EMA_days=[5,20]
2519
+ RSI_days=[6,12,24],RSI_lines=[20,50,80]
2520
+ KDJ_days=[9,3,3],matypes=[0,0],KDJ_lines=[20,50,80]
2521
+ boll_days=20,boll_years=7
2522
+ loc1/loc2:第1和第2图例的位置,默认'best'。如果发生重合或位置不合适,可手动调节。
2523
+ graph:显示的结果图,默认'ALL'。分析MACD时若只希望看到MACD图,可指定'MACD'。
2524
+ annotate:是否希望将图例标示在曲线末端,默认False,防止标示文字重叠。
2525
+ ticker_type:证券种类,默认'auto'。可强制指定股票'stock'、债券'bond'、基金'fund'。
2526
+ source:证券价格数据源,默认'auto'。若指定'yahoo'需要特别连接互联网。
2527
+ price_line_color:价格曲线颜色,默认'red'。
2528
+ facecolor:背景颜色,默认黑色。
2529
+ 注意:白色背景可能遮盖部分曲线,不建议;
2530
+ 黑色背景可能与布林带中线文字标示颜色冲突,可手动指定其他颜色,例如'whitesmoke'。
2512
2531
 
2513
2532
  其他说明:套壳函数security_MACD/RSI/KDJ/Bollinger
2514
2533
  """
@@ -2751,7 +2770,7 @@ def security_technical2(ticker,start='default',end='default',technical='MACD', \
2751
2770
  resample_freq='2H',smooth=True,linewidth=1.5, \
2752
2771
  date_range=False,date_freq=False, \
2753
2772
 
2754
- #启用
2773
+ #启用,替代loc1图例
2755
2774
  annotate=True, \
2756
2775
 
2757
2776
  #除了MACD外,其他指标均应为ALL
@@ -2770,21 +2789,82 @@ def security_technical2(ticker,start='default',end='default',technical='MACD', \
2770
2789
  marker_sizes=[30,120,250], \
2771
2790
  ):
2772
2791
  """
2773
- 功能:计算和绘制证券技术分析指标的简易图,仅供进一步探索使用,仅用于单个证券(股债基)
2774
-
2775
- 支持的技术分析指标:
2776
- OBV、SAR、VOL、PSY、ARBR、CR、EMV、TRIX、DMA、BIAS、CCI、W%R、ROC、DMI
2777
- 支持的其他指标:不如单独的指令功能强
2778
- MACD、RSI、KDJ、BOLL
2779
-
2780
- 关注的阈值:默认[0,25,50,75,100],attention_values=[0,25,50,75,100], 可以自定义。
2781
- 收盘价折线:默认红色虚线,price_line_color='red'
2792
+ ===========================================================================
2793
+ 功能:技术分析指标的短线德宏图,建议两个月内,适合观察日差价和价量关系变化,图示简洁。
2794
+ 主要参数:
2795
+ ticker:证券代码,除美股外需要交易所后缀,例如港股小米'01810.HK',美股苹果'AAPL'
2796
+ start:开始日期,格式YYYY-MM-DD,默认一个月前
2797
+ end:结束日期,格式与start相同,默认已收盘的最近交易日
2798
+ technical:技术分析指标,默认为MACD,单次仅可指定一个指标。支持的指标如下:
2799
+ Bollinger:布林带
2800
+ MACD:移动异同平均线
2801
+ RSI:相对强弱
2802
+ KDJ:随机指标
2803
+ OBV:能量潮
2804
+ SAR:抛物线/停损转向指标
2805
+ VOL:成交量指标
2806
+ ARBR:人气(AR)/意愿(BR)指标
2807
+ CR:中间意愿指标
2808
+ EMV:简易波动
2809
+ TRIX:三重指数平滑均线
2810
+ DMA:均线差
2811
+ BIAS:乖离率
2812
+ CCI:顺势指标
2813
+ W%R:威廉超买/超卖指标
2814
+ ROC:变动率
2815
+ DMI:动向指标
2816
+ PSY:心理线
2817
+ MFI:资金流向指标
2818
+ MOM:动量指标
2819
+ BETA:移动贝塔系数
2820
+ TSF:时间序列分析
2821
+ AD:集散指标
2822
+ MA:移动平均
2823
+ EMA:指数移动平均
2824
+
2825
+ RSI_days:默认[6,14]
2826
+ OBV_days:默认[5,10]
2827
+ MA_days:默认[5,20]
2828
+ EMA_days:默认[5,20];EMV_day:默认14:EMV_madays:默认[9]
2829
+ MACD_fastperiod:默认12;MACD_slowperiod:默认26;MACD_signalperiod:默认9
2830
+ KDJ_fastk_period:默认9;KDJ_slowk_period:默认5;KDJ_slowk_matype:默认1
2831
+ KDJ_slowd_period:默认5;KDJ_slowd_matype:默认1
2832
+ VOL_fastperiod:默认5;VOL_slowperiod:默认10
2833
+ PSY_days:默认[6,12]
2834
+ ARBR_days:默认[26]
2835
+ CR_day:默认30;CR_madays:默认[10,20,40,60]
2836
+ BULL_day:默认20;BULL_nbdevup:默认2;BULL_nbdevdn:默认2;BULL_matype:默认0
2837
+ DMA_fastperiod:默认10;DMA_slowperiod:默认50;DMA_madays:默认[10]
2838
+ TRIX_day:默认12;TRIX_madays:默认[20]
2839
+ BIAS_days:默认[6,12,24]
2840
+ CCI_days:默认[6,12]
2841
+ WR_days:默认[13,34,89]
2842
+ ROC_day:默认12;ROC_madays:默认[65,12,18]
2843
+ DMI_DIdays:默认7;DMI_ADXdays:默认6
2844
+ MFI_day:默认14;MFI_madays:默认[6]
2845
+ MOM_day:默认12;MOM_madays:默认6
2846
+ SAR_day:默认4;SAR_madays:默认[5,20]
2847
+ BETA_day:默认5;BETA_madays:默认[5,20]
2848
+ TSF_day:默认14;TSF_madays:默认[5,10]
2849
+ AD_madays:默认[]
2850
+
2851
+ more_details:显示指标本身,如果原来未显示的话。默认不显示
2852
+ attention_values:显示关注值水平线,每个技术指标可能不同,可使用列表自定义多个关注值
2853
+ ticker_type:证券类别,默认'auto'。如果识别错误,可强制指定'stock'、'bond'、'fund'
2854
+ source:证券价格来源,默认'auto'。特殊来源可自行指定
2855
+
2856
+ loc1:第1个图例的位置,默认'best'。当annotate=True时被替代
2857
+ loc2:第2个图例的位置,默认'best'。可手动指定9个位置,例如'upper left'左上角等
2858
+ facecolor:图形上下半区的背景颜色,默认['whitesmoke','papayawhip']
2859
+ attention_values:关注的阈值,默认[0,25,50,75,100], 可以自定义
2860
+
2861
+ 下列指标可以使用强化指令security_technical:MACD、RSI、KDJ、Bollinger
2782
2862
  """
2783
2863
  # 检查ta-lib是否安装,避免浪费后续的处理
2784
2864
  try:
2785
2865
  import talib
2786
2866
  except:
2787
- print(" #Error(security_technical2): lack of necessary package, talib")
2867
+ print(" #Error(security_technical2): lack of necessary package - talib")
2788
2868
  talib_install_method()
2789
2869
  return None
2790
2870
 
siat/translate.py CHANGED
@@ -935,7 +935,8 @@ def codetranslate0(code):
935
935
 
936
936
  ['005930.KS','三星电子'],
937
937
 
938
- ['TCS.NS','印度塔塔咨询'],['ULVR.UK','英国联合利华'],['LOR.DE','法国欧莱雅'],
938
+ ['TCS.NS','印度塔塔咨询'],['ULVR.UK','英国联合利华'],
939
+ ['LOR.DE','巴黎欧莱雅'],['OR.PA','巴黎欧莱雅'],
939
940
 
940
941
  ['002594.SZ','比亚迪A股'],['01211.HK','比亚迪港股'],['81211.HK','比亚迪港股(人民币)'],
941
942
  ['00700.HK','腾讯港股'],['80700.HK','腾讯港股(人民币)'],
@@ -1925,6 +1926,8 @@ def codetranslate1(code):
1925
1926
 
1926
1927
  ['CDI.PA','Dior(F)'],['DIO.F','Dior(F)'],['HMI.F','Hermes(F)'],
1927
1928
 
1929
+ ['LOR.DE','L\'Oréal'],['OR.PA','L\'Oréal'],
1930
+
1928
1931
  #股票:其他
1929
1932
  ['PG','P&G'],['KO','Coca Cola'],['PEP','Pepsi-Cola'],
1930
1933
  ['BRK.A','Berkshire A'],['BRK.B','Berkshire B'],['Berkshire','伯克希尔'],
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: siat
3
- Version: 3.7.24
3
+ Version: 3.7.25
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
@@ -8,15 +8,15 @@ Author-email: wdehong2000@163.com
8
8
  License: Copyright (C) WANG Dehong, 2024. For educational purpose only!
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: pandas-datareader
11
+ Requires-Dist: pandas_datareader
12
12
  Requires-Dist: yfinance
13
13
  Requires-Dist: tqdm
14
- Requires-Dist: plotly-express
14
+ Requires-Dist: plotly_express
15
15
  Requires-Dist: akshare
16
16
  Requires-Dist: urllib3
17
17
  Requires-Dist: mplfinance
18
18
  Requires-Dist: statsmodels
19
- Requires-Dist: yahoo-earnings-calendar
19
+ Requires-Dist: yahoo_earnings_calendar
20
20
  Requires-Dist: yahooquery
21
21
  Requires-Dist: pypinyin
22
22
  Requires-Dist: seaborn
@@ -33,12 +33,20 @@ Requires-Dist: graphviz
33
33
  Requires-Dist: luddite
34
34
  Requires-Dist: pendulum
35
35
  Requires-Dist: itables
36
- Requires-Dist: py-trans
36
+ Requires-Dist: py_trans
37
37
  Requires-Dist: bottleneck
38
38
  Requires-Dist: translate
39
39
  Requires-Dist: translators
40
40
  Requires-Dist: nbconvert
41
41
  Requires-Dist: playwright
42
+ Dynamic: author
43
+ Dynamic: author-email
44
+ Dynamic: description
45
+ Dynamic: description-content-type
46
+ Dynamic: home-page
47
+ Dynamic: license
48
+ Dynamic: requires-dist
49
+ Dynamic: summary
42
50
 
43
51
 
44
52
  # What is siat?
@@ -63,7 +63,7 @@ siat/future_china.py,sha256=F-HsIf2Op8Z22RzTjet1g8COzldgnMjFNSXsAkeGyWo,17595
63
63
  siat/future_china_test.py,sha256=BrSzmDVaOHki6rntOtosmRn-6dkfOBuLulJNqh7MOpc,1163
64
64
  siat/global_index_test.py,sha256=hnFp3wqqzzL-kAP8mgxDZ54Bd5Ijf6ENi5YJlGBgcXw,2402
65
65
  siat/google_authenticator.py,sha256=ZUbZR8OW0IAKDbcYtlqGqIpZdERpFor9NccFELxg9yI,1637
66
- siat/grafix.py,sha256=OJ7FYYvnd9V3zvycg_BKF65InLnUhGwdVdkJciD_8pk,110461
66
+ siat/grafix.py,sha256=-ewwyFBXP4qbe7HY9RGowtfC3zXb-DkByIdqMj2k_C0,110457
67
67
  siat/grafix_test.py,sha256=kXvcpLgQNO7wd30g_bWljLj5UH7bIVI0_dUtXbfiKR0,3150
68
68
  siat/holding_risk.py,sha256=G3wpaewAKF9CwEqRpr4khyuDu9SU2EGyQUHdk7cmHOA,30693
69
69
  siat/holding_risk_test.py,sha256=FRlw_9wFG98BYcg_cSj95HX5WZ1TvkGaOUdXD7-V86s,474
@@ -120,7 +120,7 @@ siat/stock_prices_kneighbors.py,sha256=WfZvo5EyeBsm-T37zDj7Sl9dPSRq5Bx4JxIJ9IUum
120
120
  siat/stock_prices_linear.py,sha256=-OUKRr27L2aStQgJSlJOrJ4gay_G7P-m-7t7cU2Yoqk,13991
121
121
  siat/stock_profile.py,sha256=B3eIwzEmiCqiCaxIlhfdEPsQBoW1PFOe1hkiY3mVF6Y,26038
122
122
  siat/stock_technical-20240620.py,sha256=A4x18mZgYSA8SSiDz4u_O3gd5oVRgbI6JIiBfFY0tVw,116013
123
- siat/stock_technical.py,sha256=VX6qSBotTOzXaX1XHyDz3KBYEHlaxcPdBIOacB8T9no,136309
123
+ siat/stock_technical.py,sha256=xzrWu_s-6kz34RxrNjSUasRI3WSirX_XKUDBJbgLCU0,140884
124
124
  siat/stock_test.py,sha256=E9YJAvOw1VEGJSDI4IZuEjl0tGoisOIlN-g9UqA_IZE,19475
125
125
  siat/stooq.py,sha256=SiRnSUu92pfzIZQ8N4Yo-9VOVSwUSqQE0wqXhF-4y9g,2493
126
126
  siat/temp.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
@@ -134,7 +134,7 @@ siat/transaction_test.py,sha256=Z8g1LJCN4-mnUByXMUMoFmN0t105cbmsz2QmvSuIkbU,1858
134
134
  siat/translate-20230125.py,sha256=NPPSXhT38s5t9fzMvl_fvi4ckSB73ThLmZetVI-xGdU,117953
135
135
  siat/translate-20230206.py,sha256=-vtI125WyaJhmPotOpDAmclt_XnYVaWU9ByLWZ6FyYE,118133
136
136
  siat/translate-20230215.py,sha256=TJgtPE3n8IjljmZ4Pefy8dmHoNdFF-1zpML6BhA9FKE,121657
137
- siat/translate.py,sha256=hZljXo8Wlee9DQPHnn6Pwt2shl1Ky-yuAIpmNDTdsHA,251884
137
+ siat/translate.py,sha256=RHBWBL_MLZS3txK_hTs8_VyUvVZmU862MYB-ZKeqYNY,251987
138
138
  siat/translate_20240606.py,sha256=63IyHWEU3Uz9mjwyuAX3fqY4nUMdwh0ICQAgmgPXP7Y,215121
139
139
  siat/translate_241003_keep.py,sha256=un7Fqe1v35MXsja5exZgjmLzrZtt66NARZIGlyFuGGU,218747
140
140
  siat/universal_test.py,sha256=CDAOffW1Rvs-TcNN5giWVvHMlch1w4dp-w5SIV9jXL0,3936
@@ -143,8 +143,8 @@ siat/valuation_china.py,sha256=CVp1IwIsF3Om0J29RGkyxZLt4n9Ug-ua_RKhLwL9fUQ,69624
143
143
  siat/valuation_market_china_test.py,sha256=gbJ0ioauuo4koTPH6WKUkqcXiQPafnbhU5eKJ6lpdLA,1571
144
144
  siat/var_model_validation.py,sha256=R0caWnuZarrRg9939hxh3vJIIpIyPfvelYmzFNZtPbo,14910
145
145
  siat/yf_name.py,sha256=laNKMTZ9hdenGX3IZ7G0a2RLBKEWtUQJFY9CWuk_fp8,24058
146
- siat-3.7.24.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
147
- siat-3.7.24.dist-info/METADATA,sha256=hBqKjbbQcLQQWREZYGZNHB5Ge5n1A-wdUI178kn2z6E,8117
148
- siat-3.7.24.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
149
- siat-3.7.24.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
150
- siat-3.7.24.dist-info/RECORD,,
146
+ siat-3.7.25.dist-info/LICENSE,sha256=NTEMMROY9_4U1szoKC3N2BLHcDd_o5uTgqdVH8tbApw,1071
147
+ siat-3.7.25.dist-info/METADATA,sha256=_SvLWhZRgnZNxBRP5z-3ZIsRKwd9pXO1GA4Gyi3rTg4,8294
148
+ siat-3.7.25.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
149
+ siat-3.7.25.dist-info/top_level.txt,sha256=r1cVyL7AIKqeAmEJjNR8FMT20OmEzufDstC2gv3NvEY,5
150
+ siat-3.7.25.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes