Skip to content

Add config file support for config resolution#729

Open
ubaskota wants to merge 3 commits into
smithy-lang:config_integration_implementationfrom
ubaskota:config_file_support
Open

Add config file support for config resolution#729
ubaskota wants to merge 3 commits into
smithy-lang:config_integration_implementationfrom
ubaskota:config_file_support

Conversation

@ubaskota

Copy link
Copy Markdown
Contributor

Issue #, if available:

Description of changes:
Add support for parsing and merging AWS config and credentials files (~/.aws/config and ~/.aws/credentials) as part of the config resolution pipeline.

Changes:

  • Custom line-by-line parser that handles inline comments, sub-properties, and property continuations
  • Standardizer that normalizes section prefixes, handles [default] vs [profile default] precedence, and separates
    profiles/sso-sessions/services
  • ParsedConfigFile class for querying the merged result
  • Async config loading with path resolution from environment variables and defaults
  • Added support to run conformance tests (config-file-parser-tests.json and config-file-location-tests.json)+ unit tests for the query layer and file I/O edge cases

Testing:

  • Verified that the newly added and existing tests pass
  • Manually tested against a real ~/.aws/config file to verify end-to-end parsing behavior

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@ubaskota
ubaskota requested a review from a team as a code owner June 24, 2026 18:56
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/__init__.py Outdated
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/__init__.py Outdated
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py Outdated
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/__init__.py
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py Outdated
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py
from smithy_aws_core.config.exceptions import ConfigParseError

# Type aliases
type PropertyValue = str | dict[str, str]

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.

[Discussion]

Instead of having ProfileProperties, a ProfileMap could have a Profile; each Profile could have ScalarProperties and GroupedProperties. The union feels a bit awkward to have to consider while coding around the StandardizedOutput object.

What do you think?

Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py Outdated
@ubaskota
ubaskota requested a review from a team as a code owner July 10, 2026 02:08
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py
Comment thread packages/smithy-aws-core/src/smithy_aws_core/config/file_parser.py Outdated
Comment thread packages/smithy-aws-core/tests/unit/config/test_merged_config.py
Comment thread packages/smithy-aws-core/tests/unit/config/test_config_file_io.py Outdated

@SamRemis SamRemis left a comment

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.

My bad, clicked approve by mistake. Only the test comments are blocking

@ubaskota
ubaskota force-pushed the config_file_support branch from cb70998 to 27cbdd5 Compare July 11, 2026 21:04
@ubaskota
ubaskota changed the base branch from develop to config_integration_implementation July 11, 2026 21:20
Comment thread packages/smithy-aws-core/tests/unit/config/test_merged_config.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants