mangoautomation 1.0.44__py3-none-any.whl → 1.0.47__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.

Potentially problematic release.


This version of mangoautomation might be problematic. Click here for more details.

@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  import sys
@@ -10,7 +10,7 @@ from typing import Optional
10
10
 
11
11
  from playwright._impl._errors import TargetClosedError, Error
12
12
 
13
- from mangotools.assertion import PublicAssertion
13
+ from mangotools.assertion import MangoAssertion
14
14
  from mangotools.decorator import async_retry
15
15
  from mangotools.enums import StatusEnum
16
16
  from ..enums import ElementOperationEnum, DriveTypeEnum
@@ -221,7 +221,7 @@ class AsyncElement(AsyncWebDevice, AndroidDriver):
221
221
  if is_ass:
222
222
  if callable(getattr(AsyncWebAssertion, self.element_model.ope_key, None)):
223
223
  i.v = loc
224
- elif callable(getattr(PublicAssertion, self.element_model.ope_key, None)):
224
+ elif callable(getattr(MangoAssertion(), self.element_model.ope_key, None)):
225
225
  i.v = self.element_result_model.element_text
226
226
  else:
227
227
  i.v = loc
@@ -10,7 +10,7 @@ from typing import Optional
10
10
  import time
11
11
  from playwright._impl._errors import TargetClosedError, Error
12
12
 
13
- from mangotools.assertion import PublicAssertion
13
+ from mangotools.assertion import MangoAssertion
14
14
  from mangotools.decorator import sync_retry
15
15
  from mangotools.enums import StatusEnum
16
16
  from ..enums import ElementOperationEnum, DriveTypeEnum
@@ -221,7 +221,7 @@ class SyncElement(SyncWebDevice, AndroidDriver):
221
221
  if is_ass:
222
222
  if callable(getattr(SyncWebAssertion, self.element_model.ope_key, None)):
223
223
  i.v = loc
224
- elif callable(getattr(PublicAssertion, self.element_model.ope_key, None)):
224
+ elif callable(getattr(MangoAssertion(), self.element_model.ope_key, None)):
225
225
  i.v = self.element_result_model.element_text
226
226
  else:
227
227
  i.v = loc
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
 
@@ -7,8 +8,7 @@ from uiautomator2 import UiObject, UiObjectNotFoundError
7
8
  from uiautomator2.exceptions import XPathElementNotFoundError
8
9
  from uiautomator2.xpath import XPathSelector
9
10
 
10
- from mangotools.assertion import PublicAssertion
11
- from mangotools.assertion import SqlAssertion
11
+ from mangotools.assertion import MangoAssertion
12
12
  from ..android._application import AndroidApplication
13
13
  from ..android._assertion import AndroidAssertion
14
14
  from ..android._customization import AndroidCustomization
@@ -65,28 +65,17 @@ class AndroidDriver(AndroidPage,
65
65
 
66
66
  def a_assertion_element(self, name, ope_key, ope_value):
67
67
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
68
-
69
68
  is_method = callable(getattr(AndroidAssertion(self.base_data), ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
-
72
- if is_method or is_method_public:
73
- if ope_value['value'] is None:
74
- raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
69
+ if is_method and ope_value.get('actual') is None:
70
+ raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
75
71
 
76
72
  try:
77
73
  if is_method:
78
74
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
79
75
  Mango.s_e(AndroidAssertion(self.base_data), ope_key, ope_value)
80
- elif is_method_public:
81
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
82
- Mango.s_e(PublicAssertion, ope_key, ope_value)
83
76
  else:
84
- if self.base_data.mysql_connect is not None:
85
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
86
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
87
- SqlAssertion.sql_is_equal(**ope_value)
88
- else:
89
- raise MangoAutomationError(*ERROR_MSG_0019)
77
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
78
+ MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value)
90
79
  except AssertionError as error:
91
80
  self.base_data.log.error(f'安卓自动化失败-1,类型:{type(error)},失败详情:{error}')
92
81
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  import time
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  from uiautomator2 import UiObject
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 2023-09-09 23:17
4
5
  # @Author : 毛鹏
5
6
  import os.path
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
- # @Project: 芒果测试平台# @Description:
2
+ # @Project: 芒果测试平台
3
+ # @Description:
3
4
  # @Time : 03-09-09 3:17
4
5
  # @Author : 毛鹏
5
6
  from time import sleep
@@ -0,0 +1,5 @@
1
+ # -*- coding: utf-8 -*-
2
+ # @Project: 芒果测试平台
3
+ # @Description:
4
+ # @Time : 2025-07-03 14:38
5
+ # @Author : 毛鹏
@@ -9,7 +9,7 @@ import traceback
9
9
  from playwright._impl._errors import TimeoutError, Error
10
10
  from playwright.async_api._generated import Locator
11
11
 
12
- from mangotools.assertion import PublicAssertion, SqlAssertion
12
+ from mangotools.assertion import MangoAssertion
13
13
  from mangotools.enums import StatusEnum
14
14
  from mangotools.mangos import Mango
15
15
  from ....enums import ElementExpEnum, ElementOperationEnum
@@ -67,7 +67,6 @@ class AsyncWebDevice(AsyncWebBrowser,
67
67
  async def web_assertion_element(self, name, ope_key, ope_value):
68
68
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
69
69
  is_method = callable(getattr(AsyncWebAssertion, ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
70
  try:
72
71
  if is_method:
73
72
  if ope_value.get('actual', None) is None:
@@ -75,16 +74,9 @@ class AsyncWebDevice(AsyncWebBrowser,
75
74
  raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
76
75
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
77
76
  await Mango.a_e(AsyncWebAssertion(self.base_data), ope_key, ope_value)
78
- elif is_method_public:
79
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
80
- Mango.s_e(PublicAssertion, ope_key, ope_value)
81
77
  else:
82
- if self.base_data.mysql_connect is not None:
83
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
84
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
85
- await SqlAssertion.sql_is_equal(**ope_value)
86
- else:
87
- raise MangoAutomationError(*ERROR_MSG_0019)
78
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
79
+ MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value)
88
80
  except AssertionError as error:
89
81
  self.base_data.log.debug(f'WEB自动化断言失败-1,类型:{type(error)},失败详情:{error}')
90
82
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -124,7 +116,7 @@ class AsyncWebDevice(AsyncWebBrowser,
124
116
  try:
125
117
  count = await locator.count()
126
118
  except Error as error:
127
- self.base_data.log.error(
119
+ self.base_data.log.debug(
128
120
  f'WEB自动化查找元素失败-2,类型:{type(error)},失败详情:{error},失败明细:{traceback.format_exc()}')
129
121
  raise MangoAutomationError(*ERROR_MSG_0041, )
130
122
  if count > 0:
@@ -9,7 +9,7 @@ import traceback
9
9
  from playwright._impl._errors import TimeoutError, Error
10
10
  from playwright.sync_api._generated import Locator
11
11
 
12
- from mangotools.assertion import PublicAssertion, SqlAssertion
12
+ from mangotools.assertion import MangoAssertion
13
13
  from mangotools.enums import StatusEnum
14
14
  from mangotools.mangos import Mango
15
15
  from ....enums import ElementExpEnum
@@ -67,23 +67,15 @@ class SyncWebDevice(SyncWebBrowser,
67
67
  def web_assertion_element(self, name, ope_key, ope_value):
68
68
  self.base_data.log.debug(f'断言元素,名称:{name},key:{ope_key},value:{ope_value}')
69
69
  is_method = callable(getattr(SyncWebAssertion, ope_key, None))
70
- is_method_public = callable(getattr(PublicAssertion, ope_key, None))
71
70
  try:
72
71
  if is_method:
73
72
  if ope_value.get('actual', None) is None:
74
73
  raise MangoAutomationError(*ERROR_MSG_0031, value=(name,))
75
74
  self.base_data.log.debug(f'开始断言-1,方法:{ope_key},断言值:{ope_value}')
76
75
  Mango.s_e(SyncWebAssertion(self.base_data), ope_key, ope_value)
77
- elif is_method_public:
78
- self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
79
- Mango.s_e(PublicAssertion, ope_key, ope_value)
80
76
  else:
81
- if self.base_data.mysql_connect is not None:
82
- SqlAssertion.mysql_obj = self.base_data.mysql_connect
83
- self.base_data.log.debug(f'开始断言-3,方法:sql相等端游,实际值:{ope_value}')
84
- SqlAssertion.sql_is_equal(**ope_value)
85
- else:
86
- raise MangoAutomationError(*ERROR_MSG_0019)
77
+ self.base_data.log.debug(f'开始断言-2,方法:{ope_key},断言值:{ope_value}')
78
+ MangoAssertion(self.base_data.mysql_connect).ass(ope_key, ope_value)
87
79
  except AssertionError as error:
88
80
  self.base_data.log.debug(f'WEB自动化断言失败-1,类型:{type(error)},失败详情:{error}')
89
81
  raise MangoAutomationError(*ERROR_MSG_0017, value=error.args)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mangoautomation
3
- Version: 1.0.44
3
+ Version: 1.0.47
4
4
  Summary: 测试工具
5
5
  Home-page: https://gitee.com/mao-peng/testkit
6
6
  Author: 毛鹏
@@ -12,7 +12,7 @@ Requires-Dist: pydantic ==2.9.2
12
12
  Requires-Dist: playwright ==1.43.0
13
13
  Requires-Dist: uiautomation ==2.0.20
14
14
  Requires-Dist: uiautomator2 ==3.2.5
15
- Requires-Dist: mangotools >=1.0.28
15
+ Requires-Dist: mangotools >=1.1.14
16
16
  Requires-Dist: adbutils ~=2.8.9
17
17
  Requires-Dist: uiautodev ==0.9.0
18
18
 
@@ -5,24 +5,25 @@ mangoautomation/enums/_ui_enum.py,sha256=rdkejsyc4ogZbyNfZcp1q0V0bDPo14vg0A6or6S
5
5
  mangoautomation/exceptions/__init__.py,sha256=dXtRZSuYg3e_lwYUKYvYjtxTKHITdbi2l9XkHk9DpfY,374
6
6
  mangoautomation/exceptions/_error_msg.py,sha256=GrB9crXQMNlq1Ng8a7RsuKfDHDhXglu_CQ_62lhj_iQ,5437
7
7
  mangoautomation/exceptions/_exceptions.py,sha256=BiyST1QPivpfIOuKn1gKhpXOyBv6gfip_KvlQuu8ctw,385
8
- mangoautomation/models/__init__.py,sha256=XdqEQNfIw7mcnmv3ZgWPJyFwQvap5Cu2ZMKcIK4wn9M,416
8
+ mangoautomation/models/__init__.py,sha256=Vc0MADLdIY2TkWelDeXdvLlg3QbVF5U8pc_-1UyWsNU,418
9
9
  mangoautomation/models/_ui_model.py,sha256=IGophozQMO-NQjM_DPdlwud484yfWQw1CRwbDWjI3Vs,1446
10
10
  mangoautomation/tools/__init__.py,sha256=cc6zpsEdp3JiIx7HfOz-Vob7oTIIFzsuxDLgl20har4,443
11
11
  mangoautomation/tools/_mate.py,sha256=9lk_EJnAX_OyXbe5WacyHkkcEr2ScBgasl6eUnlklWA,405
12
12
  mangoautomation/tools/_uiautodev.py,sha256=RMOQMXse744xwUDb1_l7qDv9mUiqZt1Gm5sbB-nlgDk,1388
13
13
  mangoautomation/uidrive/__init__.py,sha256=Tk_gh4Qg2qnewEGxa-7Id4fkQLY3fvQE4X7JB0BEscY,577
14
- mangoautomation/uidrive/_async_element.py,sha256=gXHsUxZxmiYvUNq8RqPP3UGupOscTvz_mD7xI2qapRA,13424
14
+ mangoautomation/uidrive/_async_element.py,sha256=al5j4bw8OcBo2Prb8gHTzbtf3KYL-Tr5fPoRUuOlEoY,13424
15
15
  mangoautomation/uidrive/_base_data.py,sha256=ur2Ts40MAhOYXb0vGVXZdSwEVCI3Csri9I9f1pw1r4Y,3766
16
16
  mangoautomation/uidrive/_driver_object.py,sha256=Re8j6VLHKfwW2VFdi-1XFRuix8tRBLcHYRBLVF6CApE,1962
17
- mangoautomation/uidrive/_sync_element.py,sha256=s9wb_RUCDcyONhRghe5T0I7zpTfvzRK3DhlxmT_DyVk,13242
18
- mangoautomation/uidrive/android/__init__.py,sha256=P8Qa1tuTLBlRhRrTmH7fGwTIo8TDgorRHSfZC2EQA4w,5999
19
- mangoautomation/uidrive/android/_application.py,sha256=Cj7-oDPmqF-PMirRZgjt5xy_nqmUmRIZWt_VJ8EoKTE,2798
20
- mangoautomation/uidrive/android/_assertion.py,sha256=Rnf0ZSbegczxj1oKoCKe-__oLs9ugzIG_KlJbO_w0vI,3629
17
+ mangoautomation/uidrive/_sync_element.py,sha256=e67DngrDdJyug5nT-Gf1fcTAHAM-0lVmvrAHOhgfwjQ,13242
18
+ mangoautomation/uidrive/android/__init__.py,sha256=iHOagkrAlt4kyUgtbzGH-nfxTwNL7sf-S5zjBhKlxCU,5422
19
+ mangoautomation/uidrive/android/_application.py,sha256=EeEM0MPtOPeYeKx92mtMFWqGpCRmri-D_CzXvPt13RA,2800
20
+ mangoautomation/uidrive/android/_assertion.py,sha256=IytUBalJwOQNwwVFaL-Di79-TBFbBs5pnoCVqqptZQg,3631
21
21
  mangoautomation/uidrive/android/_customization.py,sha256=pCLMmruozOyCJQZWAYupxxKqpWmZyCYsfSBw3XW7vf0,381
22
- mangoautomation/uidrive/android/_element.py,sha256=pLtiAfskhlMdemy4KogdiDB_AKlB_j1MvD5M5pIE3eU,6987
23
- mangoautomation/uidrive/android/_equipment.py,sha256=v-QgBxZMGr--ZV6HpttopsChOWTCNRCObVYVVomDNR8,5123
22
+ mangoautomation/uidrive/android/_element.py,sha256=lOrQyQhOoJ2LrbiQ9t0wxH7LcpwZgyDxU0iUuKaSjRo,6989
23
+ mangoautomation/uidrive/android/_equipment.py,sha256=WRaXLf4DuVzxG8TL5c4lHam6hZo_jsWwitYQUun3Srk,5125
24
24
  mangoautomation/uidrive/android/_new_android.py,sha256=UHj2DaNBfgvnJxYIzmUNc3gqTIRXxL_5kxEDQVbzWNw,1637
25
25
  mangoautomation/uidrive/android/_page.py,sha256=cOPKlIucf-rqtpm9AkpZtAnDd9QGvJRGLXS15kPVhIM,4454
26
+ mangoautomation/uidrive/ios/__init__.py,sha256=SdxI8e5AOoAb8JTaDoMkObezIluJ50nm2b6zeDHv1PI,125
26
27
  mangoautomation/uidrive/pc/__init__.py,sha256=gp3T9C5bSA78dv1AgWXeB9yQQi6q5Tkd0NedCencGWo,2275
27
28
  mangoautomation/uidrive/pc/assertion.py,sha256=mH25hZ2i4T8kA1F2loW_nuPJ-Hb0z1pwILTJqkwwpLA,125
28
29
  mangoautomation/uidrive/pc/customization.py,sha256=hHf66ImrVxFlGtONrWSHUDrYjmWFc4ANJ883TIrJFG8,239
@@ -30,7 +31,7 @@ mangoautomation/uidrive/pc/element.py,sha256=LdlWHhvXsaHH6jTp6nNrF81OWPtx81dct4y
30
31
  mangoautomation/uidrive/pc/input_device.py,sha256=F6ZqKja3XkJww66x3l9Idha3R19D832J-5TfiKWmUso,353
31
32
  mangoautomation/uidrive/pc/new_windows.py,sha256=lETHZa7cW8Z0iUShzgVTRxqivkYaOo8WIE58q_8KYfQ,2338
32
33
  mangoautomation/uidrive/web/__init__.py,sha256=MgTklzty_SvX4UemCnqJuViq3cIjUgAjFoEtP-mcDWw,123
33
- mangoautomation/uidrive/web/async_web/__init__.py,sha256=yPFdY-fQhAZt9HfLUdxcyyELyVTDVUeLLoI9quhsel0,8833
34
+ mangoautomation/uidrive/web/async_web/__init__.py,sha256=RLP0BgpzJcDIQzQ4mAEiwJ4ZlB6gbbdxNYbpWBHhIv8,8317
34
35
  mangoautomation/uidrive/web/async_web/_assertion.py,sha256=8cLYPe3pP6FrcjDZoFOphP7psgoJJMozq0Z_BDGNXCo,11859
35
36
  mangoautomation/uidrive/web/async_web/_browser.py,sha256=39YroURzagpq0HoEn1RZnNf1KDKXIgWpKSvp5L_Yut0,5286
36
37
  mangoautomation/uidrive/web/async_web/_customization.py,sha256=uw6p9uLHLXglgSkH4qjDl1v0iGlaNjvf8LljRH5cAHU,347
@@ -38,7 +39,7 @@ mangoautomation/uidrive/web/async_web/_element.py,sha256=btIkX2nlic17sgSbXtNZ8h5
38
39
  mangoautomation/uidrive/web/async_web/_input_device.py,sha256=sMAMHb_8QyPx3pKci0gRDQc2O7h1OYMGyA7fCWl81iM,3288
39
40
  mangoautomation/uidrive/web/async_web/_new_browser.py,sha256=gKjrbDQwDON-Omd2QFKdzMHYLxWd0L_cdM_tXYNz5TI,5597
40
41
  mangoautomation/uidrive/web/async_web/_page.py,sha256=TCYf79qQdVBBTTNq2COZFJVcLCgg5Ksu9lMgmQPVInU,2147
41
- mangoautomation/uidrive/web/sync_web/__init__.py,sha256=wCYW7V-32Zpw7C8m6zLoxb8niLNopVVBvA-zJBS7e9M,8387
42
+ mangoautomation/uidrive/web/sync_web/__init__.py,sha256=ZKwzsX4cJFBhouc6Su-vHRN1bm9Qu_xK1tcMfXC22nY,7877
42
43
  mangoautomation/uidrive/web/sync_web/_assertion.py,sha256=zZ4_4WiBQFSRwAh0P0JANa5z-ozbNTh3bnUqcZBti9s,11424
43
44
  mangoautomation/uidrive/web/sync_web/_browser.py,sha256=c7xHkIIFPawlzcVkGjwqeKfWAM--87wEJb3V3Ysi29w,5146
44
45
  mangoautomation/uidrive/web/sync_web/_customization.py,sha256=E_pfI8gKd0O6r4huJIvA6hoW-X9fSDVL4zEUqhHgxwE,355
@@ -49,8 +50,8 @@ mangoautomation/uidrive/web/sync_web/_page.py,sha256=MNekcL7o5YXEloeuvi3YrpOZxGh
49
50
  tests/__init__.py,sha256=UhCNFqiVjxdh4CXESNo4oE7qfjpYYVkeHbSE5-7LGDY,125
50
51
  tests/test_ui_and.py,sha256=4k0_3bx_k2KbZifeRWGK65sxtdiPUOjkNzZ5oxjrc18,672
51
52
  tests/test_ui_web.py,sha256=MFaUN8O5qKOMMgyk2eelhKZsYcSJm0Do6pCgsdBZEH4,2765
52
- mangoautomation-1.0.44.dist-info/LICENSE,sha256=03WP-mgFmo8ofRYDe1HVDQUEUKQZ2q6P6Q-2A4c-46A,1085
53
- mangoautomation-1.0.44.dist-info/METADATA,sha256=yQzTLzpQM2qvT1WXJFH3sI-fdcMBPzyFcKj1E9shD7Y,660
54
- mangoautomation-1.0.44.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
55
- mangoautomation-1.0.44.dist-info/top_level.txt,sha256=g-uCmjvEODG8WFbmwbGM0-G0zHntHv8ZsS0PQRaMGtE,22
56
- mangoautomation-1.0.44.dist-info/RECORD,,
53
+ mangoautomation-1.0.47.dist-info/LICENSE,sha256=03WP-mgFmo8ofRYDe1HVDQUEUKQZ2q6P6Q-2A4c-46A,1085
54
+ mangoautomation-1.0.47.dist-info/METADATA,sha256=h7ku_P8za_BDUfEK1Ubabo20BjEjerwM9w42tqRAneA,660
55
+ mangoautomation-1.0.47.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
56
+ mangoautomation-1.0.47.dist-info/top_level.txt,sha256=g-uCmjvEODG8WFbmwbGM0-G0zHntHv8ZsS0PQRaMGtE,22
57
+ mangoautomation-1.0.47.dist-info/RECORD,,