cnhkmcp 2.0.2__py3-none-any.whl → 2.0.4__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.
@@ -1134,7 +1134,7 @@ def get_datasets(
1134
1134
  region: str = "USA",
1135
1135
  delay: int = 1,
1136
1136
  universe: str = "TOP3000",
1137
- theme: str = "false",
1137
+ theme: str = "ALL",
1138
1138
  ) -> pd.DataFrame:
1139
1139
  """
1140
1140
  Retrieve available datasets based on specified parameters.
@@ -1145,18 +1145,39 @@ def get_datasets(
1145
1145
  region (str, optional): The region. Defaults to "USA".
1146
1146
  delay (int, optional): The delay. Defaults to 1.
1147
1147
  universe (str, optional): The universe. Defaults to "TOP3000".
1148
- theme (str, optional): The theme. Defaults to "false".
1148
+ theme (str, optional): The theme. Defaults to "ALL".
1149
1149
 
1150
1150
  Returns:
1151
1151
  pandas.DataFrame: A DataFrame containing information about available datasets.
1152
1152
  """
1153
- url = (
1154
- brain_api_url
1155
- + "/data-sets?"
1156
- + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1157
- )
1158
- result = s.get(url)
1159
- datasets_df = pd.DataFrame(result.json()["results"])
1153
+ if theme == "ALL":
1154
+ # Fetch both theme=false and theme=true
1155
+ url_false = (
1156
+ brain_api_url
1157
+ + "/data-sets?"
1158
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=false"
1159
+ )
1160
+ result_false = s.get(url_false)
1161
+ df_false = pd.DataFrame(result_false.json()["results"])
1162
+
1163
+ url_true = (
1164
+ brain_api_url
1165
+ + "/data-sets?"
1166
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=true"
1167
+ )
1168
+ result_true = s.get(url_true)
1169
+ df_true = pd.DataFrame(result_true.json()["results"])
1170
+
1171
+ datasets_df = pd.concat([df_false, df_true], ignore_index=True)
1172
+ else:
1173
+ url = (
1174
+ brain_api_url
1175
+ + "/data-sets?"
1176
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1177
+ )
1178
+ result = s.get(url)
1179
+ datasets_df = pd.DataFrame(result.json()["results"])
1180
+
1160
1181
  datasets_df = expand_dict_columns(datasets_df)
1161
1182
  return datasets_df
1162
1183
 
@@ -1134,7 +1134,7 @@ def get_datasets(
1134
1134
  region: str = "USA",
1135
1135
  delay: int = 1,
1136
1136
  universe: str = "TOP3000",
1137
- theme: str = "false",
1137
+ theme: str = "ALL",
1138
1138
  ) -> pd.DataFrame:
1139
1139
  """
1140
1140
  Retrieve available datasets based on specified parameters.
@@ -1145,18 +1145,39 @@ def get_datasets(
1145
1145
  region (str, optional): The region. Defaults to "USA".
1146
1146
  delay (int, optional): The delay. Defaults to 1.
1147
1147
  universe (str, optional): The universe. Defaults to "TOP3000".
1148
- theme (str, optional): The theme. Defaults to "false".
1148
+ theme (str, optional): The theme. Defaults to "ALL".
1149
1149
 
1150
1150
  Returns:
1151
1151
  pandas.DataFrame: A DataFrame containing information about available datasets.
1152
1152
  """
1153
- url = (
1154
- brain_api_url
1155
- + "/data-sets?"
1156
- + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1157
- )
1158
- result = s.get(url)
1159
- datasets_df = pd.DataFrame(result.json()["results"])
1153
+ if theme == "ALL":
1154
+ # Fetch both theme=false and theme=true
1155
+ url_false = (
1156
+ brain_api_url
1157
+ + "/data-sets?"
1158
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=false"
1159
+ )
1160
+ result_false = s.get(url_false)
1161
+ df_false = pd.DataFrame(result_false.json()["results"])
1162
+
1163
+ url_true = (
1164
+ brain_api_url
1165
+ + "/data-sets?"
1166
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=true"
1167
+ )
1168
+ result_true = s.get(url_true)
1169
+ df_true = pd.DataFrame(result_true.json()["results"])
1170
+
1171
+ datasets_df = pd.concat([df_false, df_true], ignore_index=True)
1172
+ else:
1173
+ url = (
1174
+ brain_api_url
1175
+ + "/data-sets?"
1176
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1177
+ )
1178
+ result = s.get(url)
1179
+ datasets_df = pd.DataFrame(result.json()["results"])
1180
+
1160
1181
  datasets_df = expand_dict_columns(datasets_df)
1161
1182
  return datasets_df
1162
1183
 
@@ -1134,7 +1134,7 @@ def get_datasets(
1134
1134
  region: str = "USA",
1135
1135
  delay: int = 1,
1136
1136
  universe: str = "TOP3000",
1137
- theme: str = "false",
1137
+ theme: str = "ALL",
1138
1138
  ) -> pd.DataFrame:
1139
1139
  """
1140
1140
  Retrieve available datasets based on specified parameters.
@@ -1145,18 +1145,39 @@ def get_datasets(
1145
1145
  region (str, optional): The region. Defaults to "USA".
1146
1146
  delay (int, optional): The delay. Defaults to 1.
1147
1147
  universe (str, optional): The universe. Defaults to "TOP3000".
1148
- theme (str, optional): The theme. Defaults to "false".
1148
+ theme (str, optional): The theme. Defaults to "ALL".
1149
1149
 
1150
1150
  Returns:
1151
1151
  pandas.DataFrame: A DataFrame containing information about available datasets.
1152
1152
  """
1153
- url = (
1154
- brain_api_url
1155
- + "/data-sets?"
1156
- + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1157
- )
1158
- result = s.get(url)
1159
- datasets_df = pd.DataFrame(result.json()["results"])
1153
+ if theme == "ALL":
1154
+ # Fetch both theme=false and theme=true
1155
+ url_false = (
1156
+ brain_api_url
1157
+ + "/data-sets?"
1158
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=false"
1159
+ )
1160
+ result_false = s.get(url_false)
1161
+ df_false = pd.DataFrame(result_false.json()["results"])
1162
+
1163
+ url_true = (
1164
+ brain_api_url
1165
+ + "/data-sets?"
1166
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=true"
1167
+ )
1168
+ result_true = s.get(url_true)
1169
+ df_true = pd.DataFrame(result_true.json()["results"])
1170
+
1171
+ datasets_df = pd.concat([df_false, df_true], ignore_index=True)
1172
+ else:
1173
+ url = (
1174
+ brain_api_url
1175
+ + "/data-sets?"
1176
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1177
+ )
1178
+ result = s.get(url)
1179
+ datasets_df = pd.DataFrame(result.json()["results"])
1180
+
1160
1181
  datasets_df = expand_dict_columns(datasets_df)
1161
1182
  return datasets_df
1162
1183
 
@@ -189,7 +189,11 @@ def main():
189
189
  universe=universe
190
190
  )
191
191
  print(f"Retrieved {len(datasets_df)} datasets.")
192
- print(datasets_df[['id', 'name', 'category', 'subcategory']].head(10))
192
+ # print(datasets_df[['id', 'name', 'category', 'subcategory']].head(10))
193
+
194
+ # Print all datasets for user selection
195
+ pd.set_option('display.max_rows', None)
196
+ print(datasets_df[['id', 'name', 'category', 'subcategory']])
193
197
  except Exception as e:
194
198
  print(f"Failed to get datasets: {e}")
195
199
  return
@@ -1143,7 +1143,7 @@ def get_datasets(
1143
1143
  region: str = "USA",
1144
1144
  delay: int = 1,
1145
1145
  universe: str = "TOP3000",
1146
- theme: str = "false",
1146
+ theme: str = "ALL",
1147
1147
  ) -> pd.DataFrame:
1148
1148
  """
1149
1149
  Retrieve available datasets based on specified parameters.
@@ -1154,18 +1154,39 @@ def get_datasets(
1154
1154
  region (str, optional): The region. Defaults to "USA".
1155
1155
  delay (int, optional): The delay. Defaults to 1.
1156
1156
  universe (str, optional): The universe. Defaults to "TOP3000".
1157
- theme (str, optional): The theme. Defaults to "false".
1157
+ theme (str, optional): The theme. Defaults to "ALL".
1158
1158
 
1159
1159
  Returns:
1160
1160
  pandas.DataFrame: A DataFrame containing information about available datasets.
1161
1161
  """
1162
- url = (
1163
- brain_api_url
1164
- + "/data-sets?"
1165
- + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1166
- )
1167
- result = s.get(url)
1168
- datasets_df = pd.DataFrame(result.json()["results"])
1162
+ if theme == "ALL":
1163
+ # Fetch both theme=false and theme=true
1164
+ url_false = (
1165
+ brain_api_url
1166
+ + "/data-sets?"
1167
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=false"
1168
+ )
1169
+ result_false = s.get(url_false)
1170
+ df_false = pd.DataFrame(result_false.json()["results"])
1171
+
1172
+ url_true = (
1173
+ brain_api_url
1174
+ + "/data-sets?"
1175
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=true"
1176
+ )
1177
+ result_true = s.get(url_true)
1178
+ df_true = pd.DataFrame(result_true.json()["results"])
1179
+
1180
+ datasets_df = pd.concat([df_false, df_true], ignore_index=True)
1181
+ else:
1182
+ url = (
1183
+ brain_api_url
1184
+ + "/data-sets?"
1185
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1186
+ )
1187
+ result = s.get(url)
1188
+ datasets_df = pd.DataFrame(result.json()["results"])
1189
+
1169
1190
  datasets_df = expand_dict_columns(datasets_df)
1170
1191
  return datasets_df
1171
1192
 
@@ -1134,7 +1134,7 @@ def get_datasets(
1134
1134
  region: str = "USA",
1135
1135
  delay: int = 1,
1136
1136
  universe: str = "TOP3000",
1137
- theme: str = "false",
1137
+ theme: str = "ALL",
1138
1138
  ) -> pd.DataFrame:
1139
1139
  """
1140
1140
  Retrieve available datasets based on specified parameters.
@@ -1145,18 +1145,39 @@ def get_datasets(
1145
1145
  region (str, optional): The region. Defaults to "USA".
1146
1146
  delay (int, optional): The delay. Defaults to 1.
1147
1147
  universe (str, optional): The universe. Defaults to "TOP3000".
1148
- theme (str, optional): The theme. Defaults to "false".
1148
+ theme (str, optional): The theme. Defaults to "ALL".
1149
1149
 
1150
1150
  Returns:
1151
1151
  pandas.DataFrame: A DataFrame containing information about available datasets.
1152
1152
  """
1153
- url = (
1154
- brain_api_url
1155
- + "/data-sets?"
1156
- + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1157
- )
1158
- result = s.get(url)
1159
- datasets_df = pd.DataFrame(result.json()["results"])
1153
+ if theme == "ALL":
1154
+ # Fetch both theme=false and theme=true
1155
+ url_false = (
1156
+ brain_api_url
1157
+ + "/data-sets?"
1158
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=false"
1159
+ )
1160
+ result_false = s.get(url_false)
1161
+ df_false = pd.DataFrame(result_false.json()["results"])
1162
+
1163
+ url_true = (
1164
+ brain_api_url
1165
+ + "/data-sets?"
1166
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme=true"
1167
+ )
1168
+ result_true = s.get(url_true)
1169
+ df_true = pd.DataFrame(result_true.json()["results"])
1170
+
1171
+ datasets_df = pd.concat([df_false, df_true], ignore_index=True)
1172
+ else:
1173
+ url = (
1174
+ brain_api_url
1175
+ + "/data-sets?"
1176
+ + f"instrumentType={instrument_type}&region={region}&delay={str(delay)}&universe={universe}&theme={theme}"
1177
+ )
1178
+ result = s.get(url)
1179
+ datasets_df = pd.DataFrame(result.json()["results"])
1180
+
1160
1181
  datasets_df = expand_dict_columns(datasets_df)
1161
1182
  return datasets_df
1162
1183
 
@@ -2253,8 +2253,10 @@ def inspiration_datasets():
2253
2253
  )
2254
2254
  df = df[mask]
2255
2255
 
2256
- results = df.head(50).to_dict(orient='records')
2257
- return jsonify(results)
2256
+ # Return all results instead of limiting to 50
2257
+ # Use to_json to handle NaN values correctly (converts to null)
2258
+ json_str = df.to_json(orient='records', date_format='iso')
2259
+ return Response(json_str, mimetype='application/json')
2258
2260
  except Exception as e:
2259
2261
  return jsonify({'error': str(e)}), 500
2260
2262
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 2.0.2
3
+ Version: 2.0.4
4
4
  Summary: A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration
5
5
  Home-page: https://github.com/cnhk/cnhkmcp
6
6
  Author: CNHK
@@ -16,7 +16,7 @@ cnhkmcp/untracked/APP/.gitignore,sha256=oPCoVTNo82bhkN0c671LdjCpOTVpVhZI5NR75ztc
16
16
  cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md,sha256=b5xV74-_RtXq2K1EsYDwMukO6lxjJ4-lnOAEnTHpFS0,4706
17
17
  cnhkmcp/untracked/APP/README.md,sha256=vb7hmQX0sH5aFNBmDCN5szMSDHm1_h2VKY4UKCt0aMk,11676
18
18
  cnhkmcp/untracked/APP/ace.log,sha256=QGcTvXCEEfgl0hbnnbtDYB-pJbJwVREAXFnKD4OeSao,11029
19
- cnhkmcp/untracked/APP/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
19
+ cnhkmcp/untracked/APP/ace_lib.py,sha256=z-6PCt3z3gJ_2pO9-17dtKkiSfrXPLv-WE-Ff85fqiw,53749
20
20
  cnhkmcp/untracked/APP/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
21
21
  cnhkmcp/untracked/APP/mirror_config.txt,sha256=RL1jFYwcvDPkLd6tc_lqVcwjTLORWt5Qu0Ym_BTPaao,504
22
22
  cnhkmcp/untracked/APP/operaters.csv,sha256=g8m6z-u0x-CoqGFSp_g3UMyLJkdFLE5UwsNkueMH1yw,13610
@@ -27,10 +27,10 @@ cnhkmcp/untracked/APP/setup_tsinghua.bat,sha256=9dLWCaQTULf3d2LqiAlvQrA4wuM1dysG
27
27
  cnhkmcp/untracked/APP/setup_tsinghua.sh,sha256=mMDXTqCRIXtSHa_1pU0jCnNF-xajqfZDlUA72XpcAOk,1195
28
28
  cnhkmcp/untracked/APP/ssrn-3332513.pdf,sha256=GEwf1Srtk-fTvF03dhTEjXJstHBARIUg31k7s5kxS98,2082078
29
29
  cnhkmcp/untracked/APP/usage.md,sha256=lPpA6qqAMvVsm41ikbRR1ZWFcuPSgqhMXOUig52eZCI,16164
30
- cnhkmcp/untracked/APP/运行打开我.py,sha256=D3Jdme3MDlYjgQCefgS4YbufsMt6X_IZndj1s-fTVWg,97169
30
+ cnhkmcp/untracked/APP/运行打开我.py,sha256=1PAVgJktIr1dKMbMgcwZa1Jiu6Te6_0dudVv8D-jZBs,97338
31
31
  cnhkmcp/untracked/APP/Tranformer/Transformer.py,sha256=nvkDLv_untR-M_lAsvhpyvoyrkb8732JblB8MGeGjIA,111571
32
32
  cnhkmcp/untracked/APP/Tranformer/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- cnhkmcp/untracked/APP/Tranformer/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
33
+ cnhkmcp/untracked/APP/Tranformer/ace_lib.py,sha256=z-6PCt3z3gJ_2pO9-17dtKkiSfrXPLv-WE-Ff85fqiw,53749
34
34
  cnhkmcp/untracked/APP/Tranformer/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
35
35
  cnhkmcp/untracked/APP/Tranformer/parsetab.py,sha256=29clH5xFEmKpqzRvrLN89QE8JFJNYFhH-gEFR4y7448,7650
36
36
  cnhkmcp/untracked/APP/Tranformer/template_summary.txt,sha256=vNuvOWGxLu_JCsR_MkasOQaxuamuOenRKKiiYcfS50s,32616
@@ -48,12 +48,12 @@ cnhkmcp/untracked/APP/blueprints/inspiration_house.py,sha256=JsSoKyCfvxh8n0wpRqW
48
48
  cnhkmcp/untracked/APP/blueprints/paper_analysis.py,sha256=YVtQ22uiY8ZO-B2x4ckoyZ4olDtcxqsJrV0gPDX56A8,22247
49
49
  cnhkmcp/untracked/APP/custom_templates/templates.json,sha256=ARrpRsxGcUpC2iepS6j6A_0tdu_xUJTIyvLDb8uzL_E,48776
50
50
  cnhkmcp/untracked/APP/give_me_idea/BRAIN_Alpha_Template_Expert_SystemPrompt.md,sha256=y95Lr8AZ-CQ-axJBDJHixsqR2Ig6nWJhHItKJJU1ZCA,16376
51
- cnhkmcp/untracked/APP/give_me_idea/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
52
- cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py,sha256=rPOcxH3-JKa3T2AGo19nArSIhzMjQKEnf4LVRLZ84FI,8825
51
+ cnhkmcp/untracked/APP/give_me_idea/ace_lib.py,sha256=z-6PCt3z3gJ_2pO9-17dtKkiSfrXPLv-WE-Ff85fqiw,53749
52
+ cnhkmcp/untracked/APP/give_me_idea/alpha_data_specific_template_master.py,sha256=3RXg5vcwl-YpuMwRuv4TLr2DCOmxxA0Z3n2DgRAlf9s,9006
53
53
  cnhkmcp/untracked/APP/give_me_idea/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
54
54
  cnhkmcp/untracked/APP/give_me_idea/what_is_Alpha_template.md,sha256=QjwX0_b0DhhiNlo3ZwkIfXXSsJnk_FyjkZftyVwnCZ8,2317
55
55
  cnhkmcp/untracked/APP/hkSimulator/ace.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- cnhkmcp/untracked/APP/hkSimulator/ace_lib.py,sha256=v5i16oVc7o2ndacm7GPnq_RBc4D1NHgc8fQA2F_Y1oA,52669
56
+ cnhkmcp/untracked/APP/hkSimulator/ace_lib.py,sha256=2AM67BKth4foMWkCdsz1CkOrSophtEFs7iatWqP8CVo,53481
57
57
  cnhkmcp/untracked/APP/hkSimulator/autosim_20251205_145240.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  cnhkmcp/untracked/APP/hkSimulator/autosim_20251215_030103.log,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  cnhkmcp/untracked/APP/hkSimulator/autosimulator.py,sha256=JmhmboakiDDQetWmn8t0-k6dgbbm0T3i-W6imVwuuGA,18641
@@ -79,7 +79,7 @@ cnhkmcp/untracked/APP/templates/inspiration_house.html,sha256=oWTEjmR0FEniFvr5Na
79
79
  cnhkmcp/untracked/APP/templates/paper_analysis.html,sha256=vbDw4MAfmpFoXbef4roX6NKdto_a58RMIRi7Amr2P4M,4220
80
80
  cnhkmcp/untracked/APP/templates/simulator.html,sha256=dPAY-fT7oEDCW945ZLLPSUPoawF-TACnVKiqrGiaWkI,12589
81
81
  cnhkmcp/untracked/APP/templates/transformer_web.html,sha256=de5fNhtbdsMMyW5cygvvvW9vSJL81O2A_QPqTmr0usc,27513
82
- cnhkmcp/untracked/APP/缘分一道桥/ace_lib.py,sha256=2YbAhDldT5Jwdva-9LK-rqHVYQxtOLKLN0Z4jsfoazA,52937
82
+ cnhkmcp/untracked/APP/缘分一道桥/ace_lib.py,sha256=z-6PCt3z3gJ_2pO9-17dtKkiSfrXPLv-WE-Ff85fqiw,53749
83
83
  cnhkmcp/untracked/APP/缘分一道桥/brain_alpha_inspector.py,sha256=KjU6PNyD1Xfqqa0IGKM-VFH_p_4RKBzhmGQczM14KiM,24703
84
84
  cnhkmcp/untracked/APP/缘分一道桥/helpful_functions.py,sha256=VS-rh4T2CMWLFK4clI7-DYsnqwO5dx5L-rgL8U8BmT8,6622
85
85
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/forum_functions.py,sha256=VuyUaguA0OjJbVRN5Vy8UEFXSAviS3jhDSRWyyPOtfo,18975
@@ -87,9 +87,9 @@ cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这
87
87
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/user_config.json,sha256=_INn1X1qIsITrmEno-BRlQOAGm9wnNCw-6B333DEvnk,695
88
88
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/让AI读这个文档来学会下载浏览器.md,sha256=v5QPSMjRDh52ZjgC4h8QjImnaqlVRLjTHGxmGjTo36g,3396
89
89
  cnhkmcp/untracked/mcp文件论坛版2_如果原版启动不了浏览器就试这个/配置前运行我_安装必要依赖包.py,sha256=BnUyL5g6PaC62yEuS-8vcDSJ0oKu3k6jqQxi2jginuQ,6612
90
- cnhkmcp-2.0.2.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
91
- cnhkmcp-2.0.2.dist-info/METADATA,sha256=NeORB8hSSPmvhMVjk2QMXZ8mDefzbsvylV0duKMiIXo,5171
92
- cnhkmcp-2.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
93
- cnhkmcp-2.0.2.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
94
- cnhkmcp-2.0.2.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
95
- cnhkmcp-2.0.2.dist-info/RECORD,,
90
+ cnhkmcp-2.0.4.dist-info/licenses/LICENSE,sha256=QLxO2eNMnJQEdI_R1UV2AOD-IvuA8zVrkHWA4D9gtoc,1081
91
+ cnhkmcp-2.0.4.dist-info/METADATA,sha256=D6vOMGul7zmnK1eom0BEdUHKOp1E7bAd8aZLckaE4po,5171
92
+ cnhkmcp-2.0.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
93
+ cnhkmcp-2.0.4.dist-info/entry_points.txt,sha256=lTQieVyIvjhSMK4fT-XwnccY-JBC1H4vVQ3V9dDM-Pc,70
94
+ cnhkmcp-2.0.4.dist-info/top_level.txt,sha256=x--ibUcSgOS9Z_RWK2Qc-vfs7DaXQN-WMaaxEETJ1Bw,8
95
+ cnhkmcp-2.0.4.dist-info/RECORD,,