lyceum-cli 1.0.20__py3-none-any.whl → 1.0.21__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.
@@ -86,13 +86,10 @@ class CallbackHandler(BaseHTTPRequestHandler):
86
86
  <p class="text-sm text-gray-500">Your Lyceum CLI has been authenticated successfully and is ready to use.</p>
87
87
  </div>
88
88
 
89
- <!-- Close Button -->
90
- <button
91
- onclick="window.close()"
92
- class="w-full py-2 px-4 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 transition-colors"
93
- >
94
- Close Tab
95
- </button>
89
+ <!-- Close Message -->
90
+ <div class="w-full py-3 px-4 bg-gray-50 text-gray-700 rounded-md border border-gray-200">
91
+ You can close this window now
92
+ </div>
96
93
 
97
94
  <!-- Lyceum Branding -->
98
95
  <div class="mt-8 pt-6 border-t border-gray-200">
@@ -160,13 +157,10 @@ class CallbackHandler(BaseHTTPRequestHandler):
160
157
  <p class="text-gray-600">Please try again or contact support if the issue persists.</p>
161
158
  </div>
162
159
 
163
- <!-- Close Button -->
164
- <button
165
- onclick="window.close()"
166
- class="w-full py-2 px-4 bg-gray-600 text-white rounded-md hover:bg-gray-700 focus:ring-2 focus:ring-gray-500 transition-colors"
167
- >
168
- Close Tab
169
- </button>
160
+ <!-- Close Message -->
161
+ <div class="w-full py-3 px-4 bg-gray-50 text-gray-700 rounded-md border border-gray-200">
162
+ You can close this window now
163
+ </div>
170
164
 
171
165
  <!-- Lyceum Branding -->
172
166
  <div class="mt-8 pt-6 border-t border-gray-200">
@@ -209,7 +203,9 @@ class CallbackHandler(BaseHTTPRequestHandler):
209
203
  </div>
210
204
  <h1 class="text-2xl font-bold text-gray-900 mb-2">Invalid Parameters</h1>
211
205
  <p class="text-gray-600 mb-8">The authentication callback received invalid parameters.</p>
212
- <button onclick="window.close()" class="w-full py-2 px-4 bg-gray-600 text-white rounded-md hover:bg-gray-700 focus:ring-2 focus:ring-gray-500 transition-colors">Close Tab</button>
206
+ <div class="w-full py-3 px-4 bg-gray-50 text-gray-700 rounded-md border border-gray-200">
207
+ You can close this window now
208
+ </div>
213
209
  </div>
214
210
  </div>
215
211
  </body>
@@ -244,7 +240,9 @@ class CallbackHandler(BaseHTTPRequestHandler):
244
240
  </div>
245
241
  <h1 class="text-2xl font-bold text-gray-900 mb-2">Page Not Found</h1>
246
242
  <p class="text-gray-600 mb-8">The requested page could not be found.</p>
247
- <button onclick="window.close()" class="w-full py-2 px-4 bg-gray-600 text-white rounded-md hover:bg-gray-700 focus:ring-2 focus:ring-gray-500 transition-colors">Close Tab</button>
243
+ <div class="w-full py-3 px-4 bg-gray-50 text-gray-700 rounded-md border border-gray-200">
244
+ You can close this window now
245
+ </div>
248
246
  </div>
249
247
  </div>
250
248
  </body>
@@ -285,7 +283,9 @@ class CallbackHandler(BaseHTTPRequestHandler):
285
283
  <div class="bg-red-50 border border-red-200 text-red-700 px-4 py-3 rounded-md mb-8">
286
284
  <p class="text-sm">{e}</p>
287
285
  </div>
288
- <button onclick="window.close()" class="w-full py-2 px-4 bg-gray-600 text-white rounded-md hover:bg-gray-700 focus:ring-2 focus:ring-gray-500 transition-colors">Close Tab</button>
286
+ <div class="w-full py-3 px-4 bg-gray-50 text-gray-700 rounded-md border border-gray-200">
287
+ You can close this window now
288
+ </div>
289
289
  </div>
290
290
  </div>
291
291
  </body>
@@ -400,16 +400,32 @@ def login(
400
400
  try:
401
401
  import httpx
402
402
  headers = {"Authorization": f"Bearer {config.api_key}"}
403
- response = httpx.get(f"{config.base_url}/api/v2/external/machine-types", headers=headers, timeout=10.0)
404
- if response.status_code == 200:
405
- console.print("[green]✅ Successfully authenticated![/green]")
406
- if callback_result.get("user"):
407
- console.print(f"[dim]Logged in as: {callback_result['user']}[/dim]")
408
- else:
409
- console.print(f"[red]❌ Token validation failed: HTTP {response.status_code}[/red]")
410
- raise typer.Exit(1)
403
+
404
+ # Create client with explicit timeout and SSL verification
405
+ client = httpx.Client(timeout=30.0, verify=True)
406
+ try:
407
+ response = client.get(
408
+ f"{config.base_url}/api/v2/external/machine-types",
409
+ headers=headers
410
+ )
411
+ if response.status_code == 200:
412
+ console.print("[green]✅ Successfully authenticated![/green]")
413
+ if callback_result.get("user"):
414
+ console.print(f"[dim]Logged in as: {callback_result['user']}[/dim]")
415
+ else:
416
+ console.print(f"[red]❌ Token validation failed: HTTP {response.status_code}[/red]")
417
+ console.print(f"[dim]Response: {response.text}[/dim]")
418
+ raise typer.Exit(1)
419
+ finally:
420
+ client.close()
421
+ except httpx.TimeoutException as e:
422
+ console.print(f"[yellow]⚠️ Token validation timed out: {e}[/yellow]")
423
+ console.print(f"[yellow]Token saved but couldn't verify connectivity to {config.base_url}[/yellow]")
424
+ console.print("[dim]You can test the connection later with 'lyceum auth status'[/dim]")
425
+ # Don't exit with error - token was received successfully
411
426
  except Exception as e:
412
427
  console.print(f"[red]❌ Token validation failed: {e}[/red]")
428
+ console.print(f"[dim]Token saved but couldn't verify. Error type: {type(e).__name__}[/dim]")
413
429
  raise typer.Exit(1)
414
430
 
415
431
  elif callback_result["error"]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lyceum-cli
3
- Version: 1.0.20
3
+ Version: 1.0.21
4
4
  Summary: Command-line interface for Lyceum Cloud Execution API
5
5
  Home-page: https://lyceum.technology
6
6
  Author: Lyceum Team
@@ -2,7 +2,7 @@ lyceum/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  lyceum/main.py,sha256=GO__4_w7Xrr2M6sUlgtG5VK6q64Ako-Qm1i5tcuYk2U,934
3
3
  lyceum/external/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  lyceum/external/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- lyceum/external/auth/login.py,sha256=GYhvhQrWG49LYsqxfNdVfs59GQtjKOlRmcytww9PCWk,23289
5
+ lyceum/external/auth/login.py,sha256=f3_SqrFkKULqeh-08RvkjIoancK_r0PLT_bUv0j3o30,23981
6
6
  lyceum/external/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  lyceum/external/compute/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  lyceum/external/compute/execution/python.py,sha256=IiQpudxLAD4lMaQsvON6MGPNGYtEW9Zoip9dSv8KI0g,3745
@@ -18,8 +18,8 @@ lyceum/shared/streaming.py,sha256=-_MLgrACwe1oU5n3UG4kzg9TcUQXc3cLNV6WyplEc_k,60
18
18
  lyceum_cloud_execution_api_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  lyceum_cloud_execution_api_client/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  lyceum_cloud_execution_api_client/models/__init__.py,sha256=AMlb9R9O9aNC9hvKz_8TFpEfOolYC3VtFS5JX17kYks,4888
21
- lyceum_cli-1.0.20.dist-info/METADATA,sha256=aS1Z3vDWaPe76dU9NCDbxDnXHWkWveZnE3IE-ULXiLY,1482
22
- lyceum_cli-1.0.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
- lyceum_cli-1.0.20.dist-info/entry_points.txt,sha256=Oq-9wDkxVd6MHgNiUTYwXI9SGhvR3VkD7Mvk0xhiUZo,43
24
- lyceum_cli-1.0.20.dist-info/top_level.txt,sha256=CR7FEMloAXgLsHUR6ti3mWNcpgje27HRHSfq8doIils,41
25
- lyceum_cli-1.0.20.dist-info/RECORD,,
21
+ lyceum_cli-1.0.21.dist-info/METADATA,sha256=ApYPJu1bZmjtTLrathUse4H7vXIs0ywIi7Tns88ZIf0,1482
22
+ lyceum_cli-1.0.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
+ lyceum_cli-1.0.21.dist-info/entry_points.txt,sha256=Oq-9wDkxVd6MHgNiUTYwXI9SGhvR3VkD7Mvk0xhiUZo,43
24
+ lyceum_cli-1.0.21.dist-info/top_level.txt,sha256=CR7FEMloAXgLsHUR6ti3mWNcpgje27HRHSfq8doIils,41
25
+ lyceum_cli-1.0.21.dist-info/RECORD,,