Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion samcli/local/docker/container.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

LOG = logging.getLogger(__name__)

CONTAINER_CONNECTION_TIMEOUT = float(os.environ.get("SAM_CLI_CONTAINER_CONNECTION_TIMEOUT", 20))
CONTAINER_CONNECTION_TIMEOUT = float(os.environ.get("SAM_CLI_CONTAINER_CONNECTION_TIMEOUT", "20"))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Just as a small rant incoming, but this code is okay how you did it)

Conceptually this is weird, but I imagine this is the easiest way to do it.

Because we're passing a "20" (string) that will be converted to a number with float(..).. But in an ideal world we just want to pass the number right away instead of creating the intermediate string.

What we would want is to do something like

CONTAINER_CONNECTION_TIMEOUT = float(os.environ.get("SAM_CLI_CONTAINER_CONNECTION_TIMEOUT")) if "SAM_CLI_CONTAINER_CONNECTION_TIMEOUT" in os.environ else 20

(check if the envvar exists, and only in that case convert to float, otherwise pass the number directly)

but that's terrible code too, so we can just keep it with what you did here.

DEFAULT_CONTAINER_HOST_INTERFACE = "127.0.0.1"

# Keep a lock instance to access the locks for individual containers (see dict below)
Expand Down
2 changes: 1 addition & 1 deletion samcli/local/lambdafn/remote_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def unzip_from_uri(uri, layer_zip_path, unzip_output_dir, progressbar_label):
Label to use in the Progressbar
"""
try:
get_request = requests.get(uri, stream=True, verify=os.environ.get("AWS_CA_BUNDLE", True))
get_request = requests.get(uri, stream=True, verify=os.environ.get("AWS_CA_BUNDLE", "True"))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually wrong.

requests.get (which behind the scenes just calls requests.request) has this verify parameter that can be either a path to a CA bundle to use or a boolean (https://requests.readthedocs.io/en/latest/api/#requests.request)

So it doesn't really accept a "True" string.

If ruff is complaining about this (which kind of make sense because we're returning two different types from one os.environ.get), we can do maybe

, verify=os.environ.get("AWS_CA_BUNDLE") or True)

Or just add a comment to ignore the rule for this line.


with open(layer_zip_path, "wb") as local_layer_file:
file_length = int(get_request.headers["Content-length"])
Expand Down
6 changes: 3 additions & 3 deletions tests/unit/local/lambdafn/test_remote_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def test_successfully_unzip_from_uri(
path_patch.assert_called_with("layer_zip_path")
path_mock.unlink.assert_called()
unzip_patch.assert_called_with("layer_zip_path", "output_zip_dir", permission=0o700)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", True)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", "True")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess you'll have to change this test if you change the behavior of os.environ.get in the other file, but this is probably not it.


@patch("samcli.local.lambdafn.remote_files.unzip")
@patch("samcli.local.lambdafn.remote_files.Path")
Expand Down Expand Up @@ -69,7 +69,7 @@ def test_not_unlink_file_when_file_doesnt_exist(
path_patch.assert_called_with("layer_zip_path")
path_mock.unlink.assert_not_called()
unzip_patch.assert_called_with("layer_zip_path", "output_zip_dir", permission=0o700)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", True)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", "True")

@patch("samcli.local.lambdafn.remote_files.unzip")
@patch("samcli.local.lambdafn.remote_files.Path")
Expand Down Expand Up @@ -102,4 +102,4 @@ def test_unzip_from_uri_reads_AWS_CA_BUNDLE_env_var(
path_patch.assert_called_with("layer_zip_path")
path_mock.unlink.assert_called()
unzip_patch.assert_called_with("layer_zip_path", "output_zip_dir", permission=0o700)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", True)
os_patch.environ.get.assert_called_with("AWS_CA_BUNDLE", "True")
Loading