11"""Cloud Storage operations for keras_remote."""
22
3+ from __future__ import annotations
4+
35import os
46import tempfile
57
68from absl import logging
79from google .cloud import storage
810
9-
10- def _get_project ():
11- """Get project ID from environment or default gcloud config."""
12- return os .environ .get ("KERAS_REMOTE_PROJECT" ) or os .environ .get (
13- "GOOGLE_CLOUD_PROJECT"
14- )
11+ from keras_remote .data import Data
12+ from keras_remote .infra .infra import get_default_project
1513
1614
1715def upload_artifacts (
18- bucket_name , job_id , payload_path , context_path , project = None
19- ):
16+ bucket_name : str ,
17+ job_id : str ,
18+ payload_path : str ,
19+ context_path : str ,
20+ project : str | None = None ,
21+ ) -> None :
2022 """Upload execution artifacts to Cloud Storage.
2123
2224 Args:
@@ -26,7 +28,7 @@ def upload_artifacts(
2628 context_path: Local path to context.zip
2729 project: GCP project ID (optional, uses env vars if not provided)
2830 """
29- project = project or _get_project ()
31+ project = project or get_default_project ()
3032
3133 client = storage .Client (project = project )
3234 bucket = client .bucket (bucket_name )
@@ -55,7 +57,9 @@ def upload_artifacts(
5557 )
5658
5759
58- def download_result (bucket_name , job_id , project = None ):
60+ def download_result (
61+ bucket_name : str , job_id : str , project : str | None = None
62+ ) -> str :
5963 """Download result from Cloud Storage.
6064
6165 Args:
@@ -66,7 +70,7 @@ def download_result(bucket_name, job_id, project=None):
6670 Returns:
6771 Local path to downloaded result file
6872 """
69- project = project or _get_project ()
73+ project = project or get_default_project ()
7074 client = storage .Client (project = project )
7175 bucket = client .bucket (bucket_name )
7276
@@ -80,15 +84,17 @@ def download_result(bucket_name, job_id, project=None):
8084 return local_path
8185
8286
83- def cleanup_artifacts (bucket_name , job_id , project = None ):
87+ def cleanup_artifacts (
88+ bucket_name : str , job_id : str , project : str | None = None
89+ ) -> None :
8490 """Clean up job artifacts from Cloud Storage.
8591
8692 Args:
8793 bucket_name: Name of the GCS bucket
8894 job_id: Unique job identifier
8995 project: GCP project ID (optional, uses env vars if not provided)
9096 """
91- project = project or _get_project ()
97+ project = project or get_default_project ()
9298 client = storage .Client (project = project )
9399 bucket = client .bucket (bucket_name )
94100
@@ -108,7 +114,12 @@ def cleanup_artifacts(bucket_name, job_id, project=None):
108114 )
109115
110116
111- def upload_data (bucket_name , data , project = None , namespace_prefix = "default" ):
117+ def upload_data (
118+ bucket_name : str ,
119+ data : Data ,
120+ project : str | None = None ,
121+ namespace_prefix : str = "default" ,
122+ ) -> str :
112123 """Upload a Data object to GCS with content-based caching.
113124
114125 For GCS Data: returns the original URI (no upload).
@@ -130,7 +141,7 @@ def upload_data(bucket_name, data, project=None, namespace_prefix="default"):
130141 content_hash = data .content_hash ()
131142 cache_prefix = f"{ namespace_prefix } /data-cache/{ content_hash } "
132143
133- project = project or _get_project ()
144+ project = project or get_default_project ()
134145 client = storage .Client (project = project )
135146 bucket = client .bucket (bucket_name )
136147
@@ -178,7 +189,7 @@ def upload_data(bucket_name, data, project=None, namespace_prefix="default"):
178189 return f"gs://{ bucket_name } /{ cache_prefix } "
179190
180191
181- def _compute_total_size (path ) :
192+ def _compute_total_size (path : str ) -> int :
182193 """Compute total size in bytes of a file or directory."""
183194 if os .path .isfile (path ):
184195 return os .path .getsize (path )
@@ -189,7 +200,9 @@ def _compute_total_size(path):
189200 return total
190201
191202
192- def _upload_directory (bucket , local_dir , gcs_prefix ):
203+ def _upload_directory (
204+ bucket : storage .Bucket , local_dir : str , gcs_prefix : str
205+ ) -> None :
193206 """Upload a local directory to GCS preserving structure."""
194207 for root , _dirs , files in os .walk (local_dir ):
195208 for fname in files :
0 commit comments