wafer-core 0.1.32__py3-none-any.whl → 0.1.34__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.
@@ -346,17 +346,25 @@ class RunPodTarget:
346
346
  ncu_available: bool = False
347
347
 
348
348
  def __post_init__(self) -> None:
349
- """Validate configuration fields.
349
+ """Validate configuration."""
350
+ from wafer_core.auth import get_api_key
350
351
 
351
- API key availability is checked at provision/query time, not here —
352
- loading a spec from TOML should not require credentials.
353
- """
354
352
  assert self.name, "name cannot be empty"
355
353
  assert self.ssh_key, "ssh_key cannot be empty"
356
354
  assert self.gpu_count > 0, "gpu_count must be positive"
357
355
  assert self.provision_timeout > 0, "provision_timeout must be positive"
358
356
  assert self.eval_timeout > 0, "eval_timeout must be positive"
359
357
 
358
+ # Check for API key (env var or ~/.wafer/auth.json)
359
+ api_key = get_api_key("runpod")
360
+ if not api_key:
361
+ raise ValueError(
362
+ "RunPod API key not found.\n"
363
+ "Set WAFER_RUNPOD_API_KEY environment variable, or run:\n"
364
+ " wafer auth login runpod\n"
365
+ "Get your API key from: https://runpod.io/console/user/settings"
366
+ )
367
+
360
368
 
361
369
  @dataclass(frozen=True)
362
370
  class LocalTarget:
@@ -460,16 +468,24 @@ class DigitalOceanTarget:
460
468
  ncu_available: bool = False
461
469
 
462
470
  def __post_init__(self) -> None:
463
- """Validate configuration fields.
471
+ """Validate configuration."""
472
+ from wafer_core.auth import get_api_key
464
473
 
465
- API key availability is checked at provision/query time, not here —
466
- loading a spec from TOML should not require credentials.
467
- """
468
474
  assert self.name, "name cannot be empty"
469
475
  assert self.ssh_key, "ssh_key cannot be empty"
470
476
  assert self.provision_timeout > 0, "provision_timeout must be positive"
471
477
  assert self.eval_timeout > 0, "eval_timeout must be positive"
472
478
 
479
+ # Check for API key (env var or ~/.wafer/auth.json)
480
+ api_key = get_api_key("digitalocean")
481
+ if not api_key:
482
+ raise ValueError(
483
+ "DigitalOcean API key not found.\n"
484
+ "Set WAFER_AMD_DIGITALOCEAN_API_KEY environment variable, or run:\n"
485
+ " wafer auth login digitalocean\n"
486
+ "Get your API key from: https://cloud.digitalocean.com/account/api/tokens"
487
+ )
488
+
473
489
 
474
490
  # Union type for target configs
475
491
  TargetConfig = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wafer-core
3
- Version: 0.1.32
3
+ Version: 0.1.34
4
4
  Summary: Core utilities and environments for Wafer GPU kernel optimization
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: aiohttp>=3.9.0
@@ -319,17 +319,17 @@ wafer_core/lib/rocprofiler/systems/run/profiler.py,sha256=aiQLsDnfQHSeCM5zLnO4Vl
319
319
  wafer_core/lib/rocprofiler/systems/sample/__init__.py,sha256=31rNmLPQ7OVhvlOEEOwPKgk8_qrCidj6AmzDXexQJ_o,288
320
320
  wafer_core/lib/rocprofiler/systems/sample/profiler.py,sha256=CYZPTzNXd48LoCfmY6h_5RSYEdWYccuv3-t4YncHJLE,7384
321
321
  wafer_core/lib/trace_compare/PERFORMANCE.md,sha256=jkJh7ApZi8H7NKTcz8v0LNtwSFtIUqY88e3QbL749ww,3823
322
- wafer_core/lib/trace_compare/__init__.py,sha256=CyUPbPQDYhVLCFFA7S_jNSilG3OgqYjmHSKfR5X11go,1377
322
+ wafer_core/lib/trace_compare/__init__.py,sha256=G5vmiQnuweiF9vjK1FC4ZIy-tzuHiaLMs7QBnir8OJw,800
323
323
  wafer_core/lib/trace_compare/aligner.py,sha256=1S8Ob3RaEsIjN0HdqEx0yGsW5uf_lMrJVSH_MnZhKok,13788
324
- wafer_core/lib/trace_compare/analyzer.py,sha256=Ou_gooG027YVuYVF5oddAkMsObXrrPQLBPHUzSMA4Vg,31078
324
+ wafer_core/lib/trace_compare/analyzer.py,sha256=o0SI1PsehpgxeUPQEB9708W_Q_ILiO5apgqVLe2xE8A,14541
325
325
  wafer_core/lib/trace_compare/api.py,sha256=JSRTcd7eZK1Z8l18TFEiA5A8ENJS1TMz7oIiw1KBbAs,8796
326
326
  wafer_core/lib/trace_compare/architecture.py,sha256=8bqlAJQeJLBHblyXvFV-w55PIKiVQDPjDQZ8Jx4tuGg,2110
327
- wafer_core/lib/trace_compare/classifier.py,sha256=cYAmDW8S75N6cE3mJNZM-UKCJSX7rFP-8klVrukBvNQ,17504
327
+ wafer_core/lib/trace_compare/classifier.py,sha256=sE1K007GVk_Up2g59SVUIZ7BThf0yHNjGsZ9AyM_Ah8,6028
328
328
  wafer_core/lib/trace_compare/formatter.py,sha256=GNrCZ45ueBN05CEXjOtTuKvTI8z-g-ZZFil-ni3sWVY,37962
329
- wafer_core/lib/trace_compare/fusion_analyzer.py,sha256=ga0sfxx8OCQu9Hq7uJSAMfXhnCvBaAmzVofBN7_gdV8,19843
329
+ wafer_core/lib/trace_compare/fusion_analyzer.py,sha256=eJba8VdHrz3IVlo4oAhFRRQLzj3I3KS-6otrFznooXg,38459
330
330
  wafer_core/lib/trace_compare/kernel_registry.yaml,sha256=0-knXwsF3pR1x1JdIz-aWaH-5xDgTylh53E47Kf6nHo,9808
331
331
  wafer_core/lib/trace_compare/layer_segmentation.py,sha256=kI_Y1e9nrKZfdwfcrGo4h7gpMxqXI_xkgXk46zuFen4,4642
332
- wafer_core/lib/trace_compare/loader.py,sha256=zBHI0r7CX_wJ2mz0_-s0lm9KGSdaVaq7OKyxUL6KIlw,23997
332
+ wafer_core/lib/trace_compare/loader.py,sha256=z3gO7CV8AxZloWUCA0aA3pwkNiEnEobdLQBAII41cGY,16129
333
333
  wafer_core/lib/trace_compare/same_kernel_analyzer.py,sha256=sp81NJGVJeYdAfRQRgMbB5HcGTOneF1Rau3rbLPfpv4,3489
334
334
  wafer_core/lib/trace_compare/warnings.py,sha256=B1HxFt-v1mDqLT2aD5bSm1Yn88bfPYnM-wui0WBF3xM,3548
335
335
  wafer_core/lib/tracelens/__init__.py,sha256=AkHdmOnKlBO4RpsAqVVGe7MOfv6E6uhEaC_iKrYeMPI,2002
@@ -597,7 +597,7 @@ wafer_core/sessions/__init__.py,sha256=Ybps5QclZShAELoW9bva4w6OCNrcBf8vd9nGDjYfQ
597
597
  wafer_core/sessions/agent.py,sha256=4-Q-NG_xm07FFq7hB8mjxW38nt2_S0QpwCYkPOoGRxA,5946
598
598
  wafer_core/sessions/dtypes.py,sha256=K6nOjvL6sjCGY7GTtdEygf1IZY_18R9YkHGqFyMd8wY,589
599
599
  wafer_core/sessions/hooks.py,sha256=A-txm6ufnRGQCdtP3vwh7oEOdlLN9Tv0XsjORMihuAI,4295
600
- wafer_core/targets/__init__.py,sha256=N4lTf9MjZ5dzAShObweZzyBfPMSzwjD5qBFWnM5lczM,2800
600
+ wafer_core/targets/__init__.py,sha256=sHndC7AAOaHXlrmDXFLB53a5Y8DBjuyqS6nwsO2nj-Y,1728
601
601
  wafer_core/targets/digitalocean.py,sha256=cvoYpYjtSyy5t2lQAPi7ERruuuibronah_ivOiduAHQ,16550
602
602
  wafer_core/targets/pool.py,sha256=TeNE9rpr67OsGtbxniYpr9Cb3wosnf_e3kTLBbwtDok,5434
603
603
  wafer_core/targets/probe.py,sha256=rzF8tiq5GxkMR3jhryTOW0GMcoHtrN67wmHlGJuBTv8,3038
@@ -686,7 +686,7 @@ wafer_core/utils/remote_execution.py,sha256=z7nLiOgmDiM_VmElLnT2LF-aKNeeKFYjXigT
686
686
  wafer_core/utils/submission_selection.py,sha256=LucdMTAbkqZA-GitSb3ZJ2pAeJ36wKqt5cTeS8xuAQ4,5655
687
687
  wafer_core/utils/kernel_utils/__init__.py,sha256=NsfKpbfpIsfupWIpIjWLGCjGAVqaONiwiWil5zXbrRc,2015
688
688
  wafer_core/utils/kernel_utils/backends.py,sha256=t3wY73Y-pVc_wALNu_bPsaFkqJ2dp2pf38KQ5ofP_go,1143
689
- wafer_core/utils/kernel_utils/defense.py,sha256=-AF8Bk5P6CluKiaGUn8ANkaiTCNSOlxV0T2Sa1VMuqE,48632
689
+ wafer_core/utils/kernel_utils/defense.py,sha256=7tbPHEKsrzmjn1eZmfc4vg6P2jjoqMggPl5BsJwerzY,19490
690
690
  wafer_core/utils/kernel_utils/deployment.py,sha256=-tMb3qWmAoXHWCmmT7SQBH7KBKyyLP0e5Dk6lOrTPW8,55957
691
691
  wafer_core/utils/kernel_utils/evaluate.py,sha256=1kxFNMl9VCXfKfk_BIiuA_zFfvDB1sl_feS2OEIJA1k,72346
692
692
  wafer_core/utils/kernel_utils/gpu_validation.py,sha256=LRiDjW_xAK4fXf1Vw1aYHG54B1W0J6b5L0K6PXzM2tI,3759
@@ -697,7 +697,7 @@ wafer_core/utils/kernel_utils/task.py,sha256=XcmKxKUWh5It6nX3zGqj77tWgA32uPfQMqN
697
697
  wafer_core/utils/kernel_utils/test_reward_hacks.py,sha256=Feo7_H2U4Uy3ZkcZDIDl9j0OAX3Z_wfQ8JQpjTiVg_4,3732
698
698
  wafer_core/utils/kernel_utils/utils.py,sha256=uDZoJDxh07hJeLNlPdKN2vgB15pqIr1LbXf0YIBHU4E,43056
699
699
  wafer_core/utils/kernel_utils/targets/__init__.py,sha256=4NwRLsuJ__S4xKAfda4Ag82C5MQ3Qio-4xA5S-mQGlU,2067
700
- wafer_core/utils/kernel_utils/targets/config.py,sha256=DJPPyV7yGmyvS7cavdDENC5PQsia1dQeQYlWCTE7iUo,19975
700
+ wafer_core/utils/kernel_utils/targets/config.py,sha256=V587DYkisEFoWwkmLQUW6I0mXkMEwA52sM7ZINslkK8,20625
701
701
  wafer_core/utils/kernel_utils/targets/execution.py,sha256=bZuNXCo0sIdD6hFhetLPrtDC-zMSiIsAx_aml49VVL0,15033
702
702
  wafer_core/utils/kernel_utils/targets/selection.py,sha256=5I_RG_7cfhq7uaeR28meC2EeNNKssFsK-Tc3QFG6Ze0,3590
703
703
  wafer_core/utils/modal_execution/__init__.py,sha256=jkVqYOLzCT5K73N9Od0UIUsx-99A0m6bpDrxfyXxQZ8,945
@@ -705,6 +705,6 @@ wafer_core/utils/modal_execution/modal_app.py,sha256=VfS2cX8gHtnlPXemmMcEwDPeQdh
705
705
  wafer_core/utils/modal_execution/modal_config.py,sha256=7cGX9TGqilQ3qxI3OFGXV5orjtyRU-PEDOJ4vP2oxno,4421
706
706
  wafer_core/utils/modal_execution/modal_execution.py,sha256=gChjnV6jqA3A7IRP3DfvV5cSfm_MN0X4f7JZufXgdZE,24594
707
707
  wafer_core/utils/modal_execution/test_modal.py,sha256=_jqou_hrLs1Daf1590Pnb0a_lXMMa2rczAPpW9HpoNQ,8153
708
- wafer_core-0.1.32.dist-info/METADATA,sha256=_i8ytnr_Ir0KmLIzfxScQpFKmHyZ4oNpN5nDTCtAhrA,1477
709
- wafer_core-0.1.32.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
710
- wafer_core-0.1.32.dist-info/RECORD,,
708
+ wafer_core-0.1.34.dist-info/METADATA,sha256=AWz-qaQb3tt8CY3cAG1_IHn1xWhfDfiw4rx9hFTq3UU,1477
709
+ wafer_core-0.1.34.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
710
+ wafer_core-0.1.34.dist-info/RECORD,,