cnhkmcp 1.4.6__tar.gz → 1.4.7__tar.gz

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.
Files changed (82) hide show
  1. {cnhkmcp-1.4.6/cnhkmcp.egg-info → cnhkmcp-1.4.7}/PKG-INFO +1 -1
  2. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/__init__.py +1 -1
  3. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252//350/256/251AI/350/257/273/350/277/231/344/270/252/346/226/207/346/241/243/346/235/245/345/255/246/344/274/232/344/270/213/350/275/275/346/265/217/350/247/210/345/231/250.md +8 -0
  4. {cnhkmcp-1.4.6/cnhkmcp/untracked → cnhkmcp-1.4.7/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252}//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py +30 -5
  5. {cnhkmcp-1.4.6/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252 → cnhkmcp-1.4.7/cnhkmcp/untracked}//351/205/215/347/275/256/345/211/215/350/277/220/350/241/214/346/210/221_/345/256/211/350/243/205/345/277/205/350/246/201/344/276/235/350/265/226/345/214/205.py +30 -5
  6. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7/cnhkmcp.egg-info}/PKG-INFO +1 -1
  7. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/setup.py +1 -1
  8. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/LICENSE +0 -0
  9. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/MANIFEST.in +0 -0
  10. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/README.md +0 -0
  11. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/.gitignore +0 -0
  12. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/MODULAR_STRUCTURE.md +0 -0
  13. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/README.md +0 -0
  14. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/__pycache__/app.cpython-313.pyc +0 -0
  15. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__init__.py +0 -0
  16. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/__init__.cpython-313.pyc +0 -0
  17. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/feature_engineering.cpython-313.pyc +0 -0
  18. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/idea_house.cpython-313.pyc +0 -0
  19. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/inspiration_house.cpython-313.pyc +0 -0
  20. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/paper_analysis.cpython-313.pyc +0 -0
  21. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/simulator.cpython-313.pyc +0 -0
  22. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/unified_tools.cpython-313.pyc +0 -0
  23. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/__pycache__/wqb_simulator.cpython-313.pyc +0 -0
  24. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/feature_engineering.py +0 -0
  25. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/idea_house.py +0 -0
  26. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/inspiration_house.py +0 -0
  27. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/blueprints/paper_analysis.py +0 -0
  28. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/custom_templates/templates.json +0 -0
  29. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/hkSimulator/ace_lib.py +0 -0
  30. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/hkSimulator/autosimulator.py +0 -0
  31. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/hkSimulator/helpful_functions.py +0 -0
  32. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/mirror_config.txt +0 -0
  33. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/operaters.csv +0 -0
  34. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/requirements.txt +0 -0
  35. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/run_app.bat +0 -0
  36. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/run_app.sh +0 -0
  37. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/setup_tsinghua.bat +0 -0
  38. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/setup_tsinghua.sh +0 -0
  39. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/simulator/__pycache__/simulator_wqb.cpython-313.pyc +0 -0
  40. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/simulator/alpha_submitter.py +0 -0
  41. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/simulator/simulator_wqb.py +0 -0
  42. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/ssrn-3332513.pdf +0 -0
  43. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/brain.js +0 -0
  44. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/decoder.js +0 -0
  45. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/feature_engineering.js +0 -0
  46. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/idea_house.js +0 -0
  47. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/inspiration_house.js +0 -0
  48. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/paper_analysis.js +0 -0
  49. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/script.js +0 -0
  50. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/simulator.js +0 -0
  51. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/static/styles.css +0 -0
  52. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/feature_engineering.html +0 -0
  53. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/idea_house.html +0 -0
  54. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/index.html +0 -0
  55. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/inspiration_house.html +0 -0
  56. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/paper_analysis.html +0 -0
  57. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP/templates/simulator.html +0 -0
  58. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/APP//350/277/220/350/241/214/346/211/223/345/274/200/346/210/221.py" +0 -0
  59. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/__pycache__/forum_functions.cpython-313.pyc +0 -0
  60. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/arXiv_API_Tool_Manual.md +0 -0
  61. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/arxiv_api.py +0 -0
  62. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/forum_functions.py +0 -0
  63. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/forum_functions.py" +0 -0
  64. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/platform_functions.py" +0 -0
  65. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/mcp/346/226/207/344/273/266/350/256/272/345/235/233/347/211/2102_/345/246/202/346/236/234/345/216/237/347/211/210/345/220/257/345/212/250/344/270/215/344/272/206/346/265/217/350/247/210/345/231/250/345/260/261/350/257/225/350/277/231/344/270/252/user_config.json" +0 -0
  66. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/platform_functions.py +0 -0
  67. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/sample_mcp_config.json +0 -0
  68. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked/user_config.json +0 -0
  69. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/217/202/350/200/203/346/226/207/346/241/243_BRAIN_Alpha_Test_Requirements_and_Tips.md" +0 -0
  70. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Alpha_explaination_workflow.md" +0 -0
  71. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_6_Tips_Datafield_Exploration_Guide.md" +0 -0
  72. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_BRAIN_Alpha_Improvement_Workflow.md" +0 -0
  73. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_Dataset_Exploration_Expert_Manual.md" +0 -0
  74. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp/untracked//347/244/272/344/276/213/345/267/245/344/275/234/346/265/201_daily_report_workflow.md" +0 -0
  75. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/SOURCES.txt +0 -0
  76. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/dependency_links.txt +0 -0
  77. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/entry_points.txt +0 -0
  78. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/not-zip-safe +0 -0
  79. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/requires.txt +0 -0
  80. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/cnhkmcp.egg-info/top_level.txt +0 -0
  81. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/requirements.txt +0 -0
  82. {cnhkmcp-1.4.6 → cnhkmcp-1.4.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 1.4.6
3
+ Version: 1.4.7
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
@@ -50,7 +50,7 @@ from .untracked.forum_functions import (
50
50
  read_full_forum_post
51
51
  )
52
52
 
53
- __version__ = "1.4.6"
53
+ __version__ = "1.4.7"
54
54
  __author__ = "CNHK"
55
55
  __email__ = "cnhk@example.com"
56
56
 
@@ -16,6 +16,14 @@ This means Playwright cannot find the Chrome browser executable in its default s
16
16
 
17
17
  The solution is to download the Chrome `.deb` package, extract the executable, and then point your Playwright script to it.
18
18
 
19
+ ### Step 0: pip install playwright
20
+
21
+ Before you begin, make sure you have Playwright installed. You can install it using pip:
22
+
23
+ ```bash
24
+ pip install playwright
25
+ ```
26
+
19
27
  ### Step 1: Download the Chrome `.deb` Package
20
28
 
21
29
  You can download the latest stable version of Google Chrome for Debian/Ubuntu-based systems using `wget`:
@@ -75,12 +75,24 @@ def is_version_sufficient(installed: str, required: str) -> bool:
75
75
 
76
76
 
77
77
  def install_package(spec: str) -> Tuple[bool, str]:
78
- """Install a package spec using pip. Returns (success, output)."""
79
- cmd = [sys.executable, "-m", "pip", "install", spec]
78
+ """Install a package spec using pip. Streams output live and returns (success, output)."""
79
+ # Use -v for verbose pip output; capture stdout/stderr while streaming to console
80
+ cmd = [sys.executable, "-m", "pip", "install", "-v", spec]
80
81
  try:
81
- completed = subprocess.run(cmd, capture_output=True, text=True)
82
- out = completed.stdout + "\n" + completed.stderr
83
- success = completed.returncode == 0
82
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
83
+ output_lines = []
84
+ if proc.stdout:
85
+ for line in proc.stdout:
86
+ output_lines.append(line)
87
+ # print each pip line as it arrives for visibility
88
+ try:
89
+ print(line.rstrip())
90
+ except Exception:
91
+ # fallback: print raw line
92
+ print(line)
93
+ proc.wait()
94
+ out = "".join(output_lines)
95
+ success = proc.returncode == 0
84
96
  return success, out
85
97
  except Exception as e:
86
98
  return False, str(e)
@@ -113,10 +125,21 @@ def main():
113
125
  if needs_install:
114
126
  print(f"-> {name}: {action} via pip ({spec})")
115
127
  success, output = install_package(spec)
128
+ # Attempt to read installed version after install
129
+ installed_after = None
130
+ if success:
131
+ try:
132
+ installed_after = importlib.metadata.version(name)
133
+ except Exception:
134
+ installed_after = None
135
+ if installed_after:
136
+ print(f" -> {name} now installed as: {installed_after}")
137
+
116
138
  results.append({
117
139
  "name": name,
118
140
  "spec": spec,
119
141
  "installed_version_before": installed_ver,
142
+ "installed_version_after": installed_after,
120
143
  "action": action,
121
144
  "success": success,
122
145
  "output": output
@@ -152,6 +175,8 @@ def main():
152
175
  print("-----")
153
176
  print(f"Package: {f['name']}")
154
177
  print(f"Spec: {f['spec']}")
178
+ print(f"Installed before: {f.get('installed_version_before')}")
179
+ print(f"Installed after: {f.get('installed_version_after')}")
155
180
  print("Output:")
156
181
  print(f.get("output", "(no output)"))
157
182
 
@@ -75,12 +75,24 @@ def is_version_sufficient(installed: str, required: str) -> bool:
75
75
 
76
76
 
77
77
  def install_package(spec: str) -> Tuple[bool, str]:
78
- """Install a package spec using pip. Returns (success, output)."""
79
- cmd = [sys.executable, "-m", "pip", "install", spec]
78
+ """Install a package spec using pip. Streams output live and returns (success, output)."""
79
+ # Use -v for verbose pip output; capture stdout/stderr while streaming to console
80
+ cmd = [sys.executable, "-m", "pip", "install", "-v", spec]
80
81
  try:
81
- completed = subprocess.run(cmd, capture_output=True, text=True)
82
- out = completed.stdout + "\n" + completed.stderr
83
- success = completed.returncode == 0
82
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True)
83
+ output_lines = []
84
+ if proc.stdout:
85
+ for line in proc.stdout:
86
+ output_lines.append(line)
87
+ # print each pip line as it arrives for visibility
88
+ try:
89
+ print(line.rstrip())
90
+ except Exception:
91
+ # fallback: print raw line
92
+ print(line)
93
+ proc.wait()
94
+ out = "".join(output_lines)
95
+ success = proc.returncode == 0
84
96
  return success, out
85
97
  except Exception as e:
86
98
  return False, str(e)
@@ -113,10 +125,21 @@ def main():
113
125
  if needs_install:
114
126
  print(f"-> {name}: {action} via pip ({spec})")
115
127
  success, output = install_package(spec)
128
+ # Attempt to read installed version after install
129
+ installed_after = None
130
+ if success:
131
+ try:
132
+ installed_after = importlib.metadata.version(name)
133
+ except Exception:
134
+ installed_after = None
135
+ if installed_after:
136
+ print(f" -> {name} now installed as: {installed_after}")
137
+
116
138
  results.append({
117
139
  "name": name,
118
140
  "spec": spec,
119
141
  "installed_version_before": installed_ver,
142
+ "installed_version_after": installed_after,
120
143
  "action": action,
121
144
  "success": success,
122
145
  "output": output
@@ -152,6 +175,8 @@ def main():
152
175
  print("-----")
153
176
  print(f"Package: {f['name']}")
154
177
  print(f"Spec: {f['spec']}")
178
+ print(f"Installed before: {f.get('installed_version_before')}")
179
+ print(f"Installed after: {f.get('installed_version_after')}")
155
180
  print("Output:")
156
181
  print(f.get("output", "(no output)"))
157
182
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cnhkmcp
3
- Version: 1.4.6
3
+ Version: 1.4.7
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
@@ -13,7 +13,7 @@ def read_requirements():
13
13
 
14
14
  setup(
15
15
  name="cnhkmcp",
16
- version="1.4.6",
16
+ version="1.4.7",
17
17
  author="CNHK",
18
18
  author_email="cnhk@example.com",
19
19
  description="A comprehensive Model Context Protocol (MCP) server for quantitative trading platform integration",
File without changes
File without changes
File without changes
File without changes
File without changes