drift-ml 0.1.8__py3-none-any.whl → 0.1.10__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.
- drift/__main__.py +4 -0
- drift/engine_launcher.py +32 -19
- {drift_ml-0.1.8.dist-info → drift_ml-0.1.10.dist-info}/METADATA +1 -1
- {drift_ml-0.1.8.dist-info → drift_ml-0.1.10.dist-info}/RECORD +7 -7
- {drift_ml-0.1.8.dist-info → drift_ml-0.1.10.dist-info}/WHEEL +0 -0
- {drift_ml-0.1.8.dist-info → drift_ml-0.1.10.dist-info}/entry_points.txt +0 -0
- {drift_ml-0.1.8.dist-info → drift_ml-0.1.10.dist-info}/top_level.txt +0 -0
drift/__main__.py
CHANGED
|
@@ -10,6 +10,10 @@ from drift.cli.repl import run_repl
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def main() -> None:
|
|
13
|
+
if "--version" in sys.argv or "-v" in sys.argv:
|
|
14
|
+
from importlib.metadata import version
|
|
15
|
+
print(f"drift-ml {version('drift-ml')}")
|
|
16
|
+
return
|
|
13
17
|
base_url = os.environ.get("DRIFT_BACKEND_URL")
|
|
14
18
|
if not base_url:
|
|
15
19
|
from drift.engine_launcher import ensure_engine
|
drift/engine_launcher.py
CHANGED
|
@@ -61,14 +61,15 @@ def _engine_running() -> bool:
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
def _get_asset_download_url(asset_name: str) -> str:
|
|
64
|
-
"""Resolve GitHub release asset to download URL."""
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
"""Resolve GitHub release asset to download URL. Prefer direct URL (no API)."""
|
|
65
|
+
base = os.environ.get("DRIFT_ENGINE_BASE_URL")
|
|
66
|
+
if base:
|
|
67
|
+
return f"{base.rstrip('/')}/{asset_name}"
|
|
68
|
+
return f"https://github.com/{GITHUB_REPO}/releases/download/{ENGINE_TAG}/{asset_name}"
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def _get_asset_download_url_via_api(asset_name: str) -> str:
|
|
72
|
+
"""Fallback: get URL via GitHub API (for private repos)."""
|
|
72
73
|
token = os.environ.get("DRIFT_GITHUB_TOKEN") or os.environ.get("GITHUB_TOKEN")
|
|
73
74
|
headers = {
|
|
74
75
|
"User-Agent": "Drift-Engine-Launcher/1.0",
|
|
@@ -93,19 +94,26 @@ def _get_asset_download_url(asset_name: str) -> str:
|
|
|
93
94
|
|
|
94
95
|
|
|
95
96
|
def _download_file(url: str, dest: Path) -> None:
|
|
97
|
+
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
96
98
|
token = os.environ.get("DRIFT_GITHUB_TOKEN") or os.environ.get("GITHUB_TOKEN")
|
|
97
|
-
headers = {"User-Agent": "
|
|
98
|
-
# API URLs need Accept: application/octet-stream; browser_download_url works with default
|
|
99
|
+
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"}
|
|
99
100
|
if "api.github.com" in url:
|
|
100
101
|
headers["Accept"] = "application/octet-stream"
|
|
101
102
|
if token:
|
|
102
103
|
headers["Authorization"] = f"Bearer {token}"
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
104
|
+
try:
|
|
105
|
+
r = requests.get(url, headers=headers, stream=True, timeout=60)
|
|
106
|
+
r.raise_for_status()
|
|
107
|
+
with open(dest, "wb") as f:
|
|
108
|
+
for chunk in r.iter_content(chunk_size=65536):
|
|
109
|
+
f.write(chunk)
|
|
110
|
+
except Exception:
|
|
111
|
+
# Fallback: urllib (stdlib, no deps, works when requests has issues)
|
|
112
|
+
import urllib.request
|
|
113
|
+
req = urllib.request.Request(url, headers=headers)
|
|
114
|
+
with urllib.request.urlopen(req, timeout=60) as resp:
|
|
115
|
+
with open(dest, "wb") as f:
|
|
116
|
+
f.write(resp.read())
|
|
109
117
|
|
|
110
118
|
|
|
111
119
|
def ensure_engine() -> bool:
|
|
@@ -133,12 +141,17 @@ def ensure_engine() -> bool:
|
|
|
133
141
|
ext = ".exe" if platform.system() == "Windows" else ""
|
|
134
142
|
asset = f"drift-engine-{plat}-{arch}{ext}"
|
|
135
143
|
print(f"drift: Downloading engine ({asset})...", file=sys.stderr)
|
|
144
|
+
url = _get_asset_download_url(asset)
|
|
136
145
|
try:
|
|
137
|
-
url = _get_asset_download_url(asset)
|
|
138
146
|
_download_file(url, bin_path)
|
|
139
147
|
except Exception as e:
|
|
140
|
-
|
|
141
|
-
|
|
148
|
+
try:
|
|
149
|
+
url = _get_asset_download_url_via_api(asset)
|
|
150
|
+
_download_file(url, bin_path)
|
|
151
|
+
except Exception as e2:
|
|
152
|
+
print(f"drift: Download failed: {e2}", file=sys.stderr)
|
|
153
|
+
print(f"drift: Try manually: curl -L -o {bin_path} {url}", file=sys.stderr)
|
|
154
|
+
return False
|
|
142
155
|
if platform.system() != "Windows":
|
|
143
156
|
bin_path.chmod(0o755)
|
|
144
157
|
if platform.system() == "Darwin":
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
drift/__init__.py,sha256=X0NUP5ZAZSz-rBFfjvmmS4IYWP2_CZtu187mqwpWwqk,127
|
|
2
|
-
drift/__main__.py,sha256=
|
|
3
|
-
drift/engine_launcher.py,sha256=
|
|
2
|
+
drift/__main__.py,sha256=r2mhZ3sCvDY7iEEiZoGDvUPei_CY24tfMQgs7Oal2yk,856
|
|
3
|
+
drift/engine_launcher.py,sha256=GlqT5KU_01mPP4kMO4UF__trbjtdcRHl3lmMwjAyEco,6168
|
|
4
4
|
drift/cli/__init__.py,sha256=OQt7M06e98e_L_60Qz-HsmSqGXKWdH53SvgETJ_BZZ0,172
|
|
5
5
|
drift/cli/client.py,sha256=hGxz-J8fC_gGV9BZnpCBwkQZg4Q0_s9-Agk2PuXQ5MQ,5527
|
|
6
6
|
drift/cli/repl.py,sha256=hRnx4nfP_StnXDbdRZXnnjA8aNvrdQSV-uTNsuaaO60,8262
|
|
@@ -9,8 +9,8 @@ drift/llm_adapters/__init__.py,sha256=y1UhZWlC8Ik_OKfLcOp0JZP-FKR3MBBCemWwsL6Tnk
|
|
|
9
9
|
drift/llm_adapters/base.py,sha256=KlZUPYpvCI8pafklBWel0GHHLNtVKVwSHA92MZt3VsI,1331
|
|
10
10
|
drift/llm_adapters/gemini_cli.py,sha256=Z61wY3yFiZqPrQrpJAQrBtMbBkr2qLWBkni-A4p9lZo,2163
|
|
11
11
|
drift/llm_adapters/local_llm.py,sha256=Z6j6z1CXk2LMeQ5ZnY4o38PiYkHYmcIkgJGkHdU50M8,2279
|
|
12
|
-
drift_ml-0.1.
|
|
13
|
-
drift_ml-0.1.
|
|
14
|
-
drift_ml-0.1.
|
|
15
|
-
drift_ml-0.1.
|
|
16
|
-
drift_ml-0.1.
|
|
12
|
+
drift_ml-0.1.10.dist-info/METADATA,sha256=T8JG1IH8YWkfWQjzwxV30ICNP3MRZrqWgrps5sORy9o,169
|
|
13
|
+
drift_ml-0.1.10.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
14
|
+
drift_ml-0.1.10.dist-info/entry_points.txt,sha256=aCY7U9M8nhYj_tIfTXJmYkVmXY3ZoxF0tebDZzYswv8,46
|
|
15
|
+
drift_ml-0.1.10.dist-info/top_level.txt,sha256=3u2KGqsciGZQ2uCoBivm55t3e8er8S4xnqkgdQ_8oeM,6
|
|
16
|
+
drift_ml-0.1.10.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|