Skip to content

Commit 5ae4c90

Browse files
authored
Merge branch 'master' into feature-store-lakeformation
2 parents 14cff87 + daf19b0 commit 5ae4c90

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+3085
-2591
lines changed

.readthedocs.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ build:
1111
sphinx:
1212
configuration: docs/conf.py
1313

14-
formats:
15-
- pdf
16-
- epub
14+
formats: []
1715

1816
python:
1917
install:

docs/conf.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,25 @@
105105
'sagemaker.serve.model_server.torchserve.inference',
106106
'sagemaker.serve.model_server.torchserve.xgboost_inference',
107107
'sagemaker.serve.model_server.triton.model',
108+
# Heavy runtime dependencies — mock to avoid slow/failing imports during doc build
109+
'boto3',
110+
'botocore',
111+
'torch',
112+
'tensorflow',
113+
'sklearn',
114+
'numpy',
115+
'pandas',
116+
'scipy',
117+
'xgboost',
118+
'lightgbm',
119+
'mlflow',
120+
'pyspark',
121+
'transformers',
122+
'datasets',
123+
'trl',
108124
]
109125

110126
suppress_warnings = ['autodoc.import_error']
127+
128+
# Speed up builds: only regenerate autosummary stubs if they don't exist
129+
autosummary_generate_overwrite = False

requirements/extras/test_requirements.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ omegaconf
1212
graphene
1313
typing_extensions>=4.9.0
1414
tensorflow>=2.16.2,<=2.19.0
15-
build
15+
build
16+
docker>=5.0.2,<8.0
17+
filelock>=3.0.0

sagemaker-core/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ dependencies = [
3838
"cloudpickle>=2.0.0",
3939
"paramiko>=2.11.0",
4040
"tblib>=1.7.0",
41+
"cryptography>=46.0.0",
4142
]
4243
requires-python = ">=3.9"
4344
classifiers = [

sagemaker-core/src/sagemaker/core/local/image.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def __init__(
138138
def _get_compose_cmd_prefix():
139139
"""Gets the Docker Compose command.
140140
141-
The method initially looks for 'docker compose' v2
141+
The method initially looks for 'docker compose' v2+
142142
executable, if not found looks for 'docker-compose' executable.
143143
144144
Returns:
@@ -162,10 +162,12 @@ def _get_compose_cmd_prefix():
162162
"Proceeding to check for 'docker-compose' CLI."
163163
)
164164

165-
if output and "v2" in output.strip():
166-
logger.info("'Docker Compose' found using Docker CLI.")
167-
compose_cmd_prefix.extend(["docker", "compose"])
168-
return compose_cmd_prefix
165+
if output:
166+
match = re.search(r"v(\d+)", output.strip())
167+
if match and int(match.group(1)) >= 2:
168+
logger.info("'Docker Compose' found using Docker CLI.")
169+
compose_cmd_prefix.extend(["docker", "compose"])
170+
return compose_cmd_prefix
169171

170172
if shutil.which("docker-compose") is not None:
171173
logger.info("'Docker Compose' found using Docker Compose CLI.")

sagemaker-core/src/sagemaker/core/modules/local_core/local_container.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ def _get_data_source_local_path(self, data_source: DataSource):
593593
def _get_compose_cmd_prefix(self) -> List[str]:
594594
"""Gets the Docker Compose command.
595595
596-
The method initially looks for 'docker compose' v2
596+
The method initially looks for 'docker compose' v2+
597597
executable, if not found looks for 'docker-compose' executable.
598598
599599
Returns:
@@ -617,10 +617,12 @@ def _get_compose_cmd_prefix(self) -> List[str]:
617617
"Proceeding to check for 'docker-compose' CLI."
618618
)
619619

620-
if output and "v2" in output.strip():
621-
logger.info("'Docker Compose' found using Docker CLI.")
622-
compose_cmd_prefix.extend(["docker", "compose"])
623-
return compose_cmd_prefix
620+
if output:
621+
match = re.search(r"v(\d+)", output.strip())
622+
if match and int(match.group(1)) >= 2:
623+
logger.info("'Docker Compose' found using Docker CLI.")
624+
compose_cmd_prefix.extend(["docker", "compose"])
625+
return compose_cmd_prefix
624626

625627
if shutil.which("docker-compose") is not None:
626628
logger.info("'Docker Compose' found using Docker Compose CLI.")

sagemaker-core/src/sagemaker/core/remote_function/client.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ def wrapper(*args, **kwargs):
369369
s3_uri=s3_path_join(
370370
job_settings.s3_root_uri, job.job_name, EXCEPTION_FOLDER
371371
),
372-
373372
)
374373
except ServiceError as serr:
375374
chained_e = serr.__cause__
@@ -406,7 +405,6 @@ def wrapper(*args, **kwargs):
406405
return serialization.deserialize_obj_from_s3(
407406
sagemaker_session=job_settings.sagemaker_session,
408407
s3_uri=s3_path_join(job_settings.s3_root_uri, job.job_name, RESULTS_FOLDER),
409-
410408
)
411409

412410
if job.describe()["TrainingJobStatus"] == "Stopped":
@@ -1008,7 +1006,6 @@ def from_describe_response(describe_training_job_response, sagemaker_session):
10081006
job_return = serialization.deserialize_obj_from_s3(
10091007
sagemaker_session=sagemaker_session,
10101008
s3_uri=s3_path_join(job.s3_uri, RESULTS_FOLDER),
1011-
10121009
)
10131010
except DeserializationError as e:
10141011
client_exception = e
@@ -1020,7 +1017,6 @@ def from_describe_response(describe_training_job_response, sagemaker_session):
10201017
job_exception = serialization.deserialize_exception_from_s3(
10211018
sagemaker_session=sagemaker_session,
10221019
s3_uri=s3_path_join(job.s3_uri, EXCEPTION_FOLDER),
1023-
10241020
)
10251021
except ServiceError as serr:
10261022
chained_e = serr.__cause__
@@ -1110,7 +1106,6 @@ def result(self, timeout: float = None) -> Any:
11101106
self._return = serialization.deserialize_obj_from_s3(
11111107
sagemaker_session=self._job.sagemaker_session,
11121108
s3_uri=s3_path_join(self._job.s3_uri, RESULTS_FOLDER),
1113-
11141109
)
11151110
self._state = _FINISHED
11161111
return self._return
@@ -1119,7 +1114,6 @@ def result(self, timeout: float = None) -> Any:
11191114
self._exception = serialization.deserialize_exception_from_s3(
11201115
sagemaker_session=self._job.sagemaker_session,
11211116
s3_uri=s3_path_join(self._job.s3_uri, EXCEPTION_FOLDER),
1122-
11231117
)
11241118
except ServiceError as serr:
11251119
chained_e = serr.__cause__

0 commit comments

Comments
 (0)