Gets toolkit versions configuration by merging environment variables, user-provided defaults, and fallbacks. Priority order: 1. If default_versions is a string, use it as a global version for all toolkits 2. User-provided toolkit version mappings (default_versions dict) 3. Envi
(
default_versions: t.Optional[ToolkitVersionParam] = None,
)
| 32 | |
| 33 | |
| 34 | def get_toolkit_versions( |
| 35 | default_versions: t.Optional[ToolkitVersionParam] = None, |
| 36 | ) -> ToolkitVersionParam: |
| 37 | """ |
| 38 | Gets toolkit versions configuration by merging environment variables, user-provided defaults, and fallbacks. |
| 39 | |
| 40 | Priority order: |
| 41 | 1. If default_versions is a string, use it as a global version for all toolkits |
| 42 | 2. User-provided toolkit version mappings (default_versions dict) |
| 43 | 3. Environment variables (COMPOSIO_TOOLKIT_VERSION_<TOOLKIT_NAME>) |
| 44 | 4. Fallback to 'latest' if no versions are configured |
| 45 | |
| 46 | :param default_versions: Optional default versions configuration (string for global version or dict mapping toolkit names to versions) |
| 47 | :return: Toolkit versions configuration - either a string for global version or dict mapping toolkit names to versions |
| 48 | """ |
| 49 | # If already set by user as a string, use it as global version for all toolkits |
| 50 | if isinstance(default_versions, str): |
| 51 | return default_versions |
| 52 | |
| 53 | # Check if there are envs similar to COMPOSIO_TOOLKIT_VERSION_GITHUB then extract the toolkit name |
| 54 | toolkit_versions_from_env: ToolkitVersions = {} |
| 55 | for key, value in os.environ.items(): |
| 56 | if key.startswith("COMPOSIO_TOOLKIT_VERSION_"): |
| 57 | toolkit_name = key.replace("COMPOSIO_TOOLKIT_VERSION_", "") |
| 58 | toolkit_versions_from_env[toolkit_name.lower()] = value |
| 59 | |
| 60 | # If the provided default versions is a dict, normalize the keys to be lower case |
| 61 | # Use user provided values as overrides |
| 62 | user_provided_toolkit_versions: ToolkitVersions = {} |
| 63 | if default_versions and isinstance(default_versions, dict): |
| 64 | user_provided_toolkit_versions = { |
| 65 | key.lower(): value for key, value in default_versions.items() |
| 66 | } |
| 67 | |
| 68 | # Final toolkit versions |
| 69 | toolkit_versions = { |
| 70 | **toolkit_versions_from_env, |
| 71 | **user_provided_toolkit_versions, |
| 72 | } |
| 73 | |
| 74 | # If the toolkit_versions are empty, use 'latest' |
| 75 | if len(toolkit_versions) == 0: |
| 76 | return "latest" |
| 77 | |
| 78 | return toolkit_versions |
searching dependent graphs…