You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
StorageClientConfig.from_file ignores all options in implicit profile creation #19
changed the title [-]StorageClientConfig.from_file ignore all options in implicit profile creation[/-][+]StorageClientConfig.from_file ignores all options in implicit profile creation[/+]on Mar 19, 2026
This is currently intended behavior since multistorageclient.shortcuts.resolve_storage_client() (ref) doesn't know which profile to choose if the MSC config file looks like this:
From an s3://{bucket}/... URL, we only know the storage provider type (s3) and the bucket (which is used for the base_path). If we filtered profiles for that, we'd get back {"s3-profile", "s3-emulator-profile"}.
Since there currently isn't a tie breaking method, the implicit profiles feature instead creates a separate profile with minimum options that can be inferred from the URL (e.g. _s3-my-bucket with type: s3 + options.base_path: my-bucket set. This implicit profile naming scheme may change in the future).
Today users need to use msc://{profile name} instead to get an existing profile, so msc://s3-my-bucket/my_file.txt. The reproduction shows the differences in the resolved MSC storage clients.
$ just run
# Prepare the virtual environment.
uv sync --all-extras --python python
Resolved 218 packages in 4ms
Audited 32 packages in 1ms
# Run the reproduction.
MSC_CONFIG=msc_bug.yaml uv run msc_bug.py
Resolving MSC client for msc://s3-my-bucket/my_file.txt...
s3
https://my-endpoint.s3.com
my-bucket
Resolving MSC client for s3://my-bucket/my_file.txt...
s3
https://my-endpoint.s3.com
my-bucket
A path mapping of s3://: msc://s3-no-base-path/, however, isn't supported yet.
Activity
[-]StorageClientConfig.from_file ignore all options in implicit profile creation[/-][+]StorageClientConfig.from_file ignores all options in implicit profile creation[/+]pavelgein commentedon Mar 19, 2026
In this line https://github.com/NVIDIA/multi-storage-client/blob/main/multi-storage-client/src/multistorageclient/config.py#L77
only some of the options are passed
commiterate commentedon Mar 19, 2026
Reproduction with MSC 0.44.0: https://github.com/NVIDIA/multi-storage-client/tree/reproduction/19/reproduction
This is currently intended behavior since
multistorageclient.shortcuts.resolve_storage_client()(ref) doesn't know which profile to choose if the MSC config file looks like this:From an
s3://{bucket}/...URL, we only know the storage provider type (s3) and the bucket (which is used for thebase_path). If we filtered profiles for that, we'd get back{"s3-profile", "s3-emulator-profile"}.Since there currently isn't a tie breaking method, the implicit profiles feature instead creates a separate profile with minimum options that can be inferred from the URL (e.g.
_s3-my-bucketwithtype: s3+options.base_path: my-bucketset. This implicit profile naming scheme may change in the future).Today users need to use
msc://{profile name}instead to get an existing profile, somsc://s3-my-bucket/my_file.txt. The reproduction shows the differences in the resolved MSC storage clients.fix: reuse explicit profile options for matching implicit profiles (f…
commiterate commentedon Mar 19, 2026
Note that there's an existing path mapping feature that lets users map
s3://URLs tomsc://URLs so code can still continue to uses3://URLs.https://nvidia.github.io/multi-storage-client/references/configuration.html#path-mapping
Using the reproduction as the base, this would work:
msc_bug.yamlA path mapping of
s3://: msc://s3-no-base-path/, however, isn't supported yet.pavelgein commentedon Mar 20, 2026
Thanks, it works