fix(sync): Handle timezone-naive datetimes in sync.toml (#8477) #8487
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Which issue(s) does this change fix?
#8477
Why is this change necessary?
sam sync --watchcrashes withTypeError: can't subtract offset-naive and offset-aware datetimeswhen the.aws-sam/sync.tomlfile contains timestamps without timezone information (missing+00:00suffix). This breaks the watch functionality for users who have previously run sync commands, preventing them from using the auto-sync feature.How does it address the issue?
The fix ensures all timestamps loaded from
sync.tomlare timezone-aware UTC by checking iftzinfoisNoneafter parsing withdatetime.fromisoformat()and adding UTC timezone if missing. This maintains consistency with how SAM CLI writes timestamps (always UTC timezone-aware) and handles both old sync.toml files (without timezone info) and new ones (with timezone info) correctly. The fix is applied in two locations insamcli/commands/sync/sync_context.py:latest_infra_sync_timefrom the sync statesync_timefor each resource sync stateWhat side effects does this change have?
None. The change is backward compatible and only affects the internal datetime handling. All timestamps are now consistently timezone-aware UTC, which is the expected behavior throughout the sync module.
Mandatory Checklist
PRs will only be reviewed after checklist is complete
make prpassesmake update-reproducible-reqsif dependencies were changedBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.