Skip to content

Commit 3ebe35b

Browse files
authored
feat: add Python 3.14 and Java 25 runtimes (#8374)
* feat: add java25 and python3.14 runtimes support * chore(test): select the right runtime for the interactive init test
1 parent fd458ae commit 3ebe35b

File tree

45 files changed

+724
-38
lines changed

Some content is hidden

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

45 files changed

+724
-38
lines changed

.github/workflows/build.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ jobs:
120120
# folders that is commented below requires credentials, no need to spare time to run them
121121
tests_config:
122122
- name: "integ-buildcmd-arm64"
123-
params: "-n 2 --reruns 3 tests/integration/buildcmd/test_build_cmd_arm64.py"
123+
params: "-n 2 --reruns 3 tests/integration/buildcmd/test_build_cmd_arm64.py"
124124
- name: "integ-buildcmd-main"
125125
params: "-n 2 --reruns 3 tests/integration/buildcmd/test_build_cmd_dotnet.py tests/integration/buildcmd/test_build_cmd_provided.py tests/integration/buildcmd/test_build_cmd_rust.py tests/integration/buildcmd/test_build_cmd_python.py tests/integration/buildcmd/test_build_cmd_node.py"
126126
- name: "integ-buildcmd-java"
@@ -154,6 +154,7 @@ jobs:
154154
3.11
155155
3.12
156156
3.13
157+
3.14
157158
${{ matrix.python }}
158159
cache: 'pip'
159160
- uses: actions/setup-go@v6
@@ -173,6 +174,7 @@ jobs:
173174
11
174175
17
175176
21
177+
25
176178
# Install and configure Rust & Cargo Lambda
177179
- name: Install and configure Rust & Cargo Lambda
178180
if: ${{ matrix.os == 'ubuntu-latest' }}
@@ -268,6 +270,7 @@ jobs:
268270
with:
269271
# These are the versions of Python that correspond to the supported Lambda runtimes
270272
python-version: |
273+
3.14
271274
3.9
272275
3.10
273276
3.11

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,4 +425,5 @@ samcli/lib/init/templates/cookiecutter-aws-sam-hello-java-gradle/**/.gradle/
425425
# Installer build folder
426426
.build
427427

428-
.kiro
428+
.kiro
429+
mise.toml

appveyor-linux-binary.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ install:
7979
- sh: "./aws_cli/bin/python -m pip install awscli"
8080
- sh: "PATH=$(echo $PWD'/aws_cli/bin'):$PATH"
8181

82-
- sh: "PATH=$PATH:$HOME/venv3.9/bin:$HOME/venv3.10/bin:$HOME/venv3.11/bin:$HOME/venv3.12/bin:$HOME/venv3.13/bin"
82+
- sh: "PATH=$PATH:$HOME/venv3.9/bin:$HOME/venv3.10/bin:$HOME/venv3.11/bin:$HOME/venv3.12/bin:$HOME/venv3.13/bin:$HOME/venv3.14/bin"
8383

8484
# Install pytest
8585
- sh: "python3.9 -m venv $HOME/pytest"

appveyor-ubuntu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ install:
253253
- sh: "./aws_cli/bin/python -m pip install awscli"
254254
- sh: "PATH=$(echo $PWD'/aws_cli/bin'):$PATH"
255255

256-
- sh: "PATH=$PATH:$HOME/venv3.7/bin:$HOME/venv3.8/bin:$HOME/venv3.9/bin:$HOME/venv3.10/bin:$HOME/venv3.11/bin:$HOME/venv3.12/bin:$HOME/venv3.13/bin"
256+
- sh: "PATH=$PATH:$HOME/venv3.7/bin:$HOME/venv3.8/bin:$HOME/venv3.9/bin:$HOME/venv3.10/bin:$HOME/venv3.11/bin:$HOME/venv3.12/bin:$HOME/venv3.13/bin:$HOME/venv3.14/bin"
257257

258258
# update ca-certificates which causes failures with newest golang library
259259
- sh: "sudo apt-get install --reinstall ca-certificates"

appveyor-windows-al2023.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ install:
5757
# Make sure the temp directory exists for Python to use.
5858
- ps: "mkdir -Force C:\\tmp"
5959
- "python --version"
60-
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64;C:\Python313-x64'
60+
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64;C:\Python313-x64;C:\Python314-x64'
6161
- "node --version"
6262
- "echo %PYTHON_HOME%"
6363
- "echo %PATH%"

appveyor-windows-binary.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ install:
6969

7070
# Make sure the temp directory exists for Python to use.
7171
- ps: "mkdir -Force C:\\tmp"
72-
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python38-x64;C:\Python312-x64;C:\Python313-x64'
72+
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python38-x64;C:\Python312-x64;C:\Python313-x64;C:\Python314-x64'
7373
- "echo %PYTHON_HOME%"
7474
- "echo %PATH%"
7575
- "python --version"

appveyor-windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ install:
6868

6969
# Make sure the temp directory exists for Python to use.
7070
- ps: "mkdir -Force C:\\tmp"
71-
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64;C:\Python313-x64'
71+
- 'set PATH=%PYTHON_HOME%;C:\Ruby32-x64\bin;C:\Ruby33-x64\bin;C:\Ruby34-x64\bin;%PATH%;C:\Python39-x64;C:\Python310-x64;C:\Python311-x64;C:\Python312-x64;C:\Python313-x64;C:\Python314-x64'
7272
- "echo %PYTHON_HOME%"
7373
- "echo %PATH%"
7474
- "python --version"

pytest.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ filterwarnings =
1313
default::ResourceWarning
1414
; Ignore below warning to not fail in Python3.12. Remove once dateutil updates itself or botocore use another way to generate EPOCH
1515
ignore::DeprecationWarning:dateutil.tz.tz:
16+
; Ignore dateparser deprecation warnings about parsing dates without years (Python 3.13+)
17+
ignore:.*Parsing dates involving a day of month without a year specified.*:DeprecationWarning
1618
; The following deprecation warnings are treated as failures unless we explicitly tell pytest not to
1719
; Remove once we no longer support python3.7
1820
ignore::boto3.exceptions.PythonDeprecationWarning

samcli/commands/build/command.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@
5656
\b
5757
Supported Runtimes
5858
------------------
59-
1. Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 using PIP\n
59+
1. Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14 using PIP\n
6060
2. Nodejs 22.x, Nodejs 20.x, 18.x, 16.x, 14.x, 12.x using NPM\n
6161
3. Ruby 3.2, 3.3, 3.4 using Bundler\n
62-
4. Java 8, Java 11, Java 17, Java 21 using Gradle and Maven\n
62+
4. Java 8, Java 11, Java 17, Java 21, Java 25 using Gradle and Maven\n
6363
5. Dotnet8, Dotnet6 using Dotnet CLI\n
6464
6. Go 1.x using Go Modules (without --use-container)\n
6565
"""

samcli/lib/build/workflow_config.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def get_layer_subfolder(build_workflow: str) -> str:
9191
"python3.11": "python",
9292
"python3.12": "python",
9393
"python3.13": "python",
94+
"python3.14": "python",
9495
"nodejs4.3": "nodejs",
9596
"nodejs6.10": "nodejs",
9697
"nodejs8.10": "nodejs",
@@ -105,6 +106,7 @@ def get_layer_subfolder(build_workflow: str) -> str:
105106
"java8.al2": "java",
106107
"java17": "java",
107108
"java21": "java",
109+
"java25": "java",
108110
"dotnet6": "dotnet",
109111
"dotnet8": "dotnet",
110112
# User is responsible for creating subfolder in these workflows
@@ -162,6 +164,7 @@ def get_workflow_config(
162164
"python3.11": BasicWorkflowSelector(PYTHON_PIP_CONFIG),
163165
"python3.12": BasicWorkflowSelector(PYTHON_PIP_CONFIG),
164166
"python3.13": BasicWorkflowSelector(PYTHON_PIP_CONFIG),
167+
"python3.14": BasicWorkflowSelector(PYTHON_PIP_CONFIG),
165168
"nodejs16.x": BasicWorkflowSelector(NODEJS_NPM_CONFIG),
166169
"nodejs18.x": BasicWorkflowSelector(NODEJS_NPM_CONFIG),
167170
"nodejs20.x": BasicWorkflowSelector(NODEJS_NPM_CONFIG),
@@ -206,6 +209,14 @@ def get_workflow_config(
206209
JAVA_MAVEN_CONFIG,
207210
]
208211
),
212+
"java25": ManifestWorkflowSelector(
213+
[
214+
# Gradle builder needs custom executable paths to find `gradlew` binary
215+
JAVA_GRADLE_CONFIG._replace(executable_search_paths=[code_dir, project_dir]),
216+
JAVA_KOTLIN_GRADLE_CONFIG._replace(executable_search_paths=[code_dir, project_dir]),
217+
JAVA_MAVEN_CONFIG,
218+
]
219+
),
209220
"provided": BasicWorkflowSelector(PROVIDED_MAKE_CONFIG),
210221
"provided.al2": BasicWorkflowSelector(PROVIDED_MAKE_CONFIG),
211222
"provided.al2023": BasicWorkflowSelector(PROVIDED_MAKE_CONFIG),

0 commit comments

Comments
 (0)