| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import logging
- import re
- from collections.abc import Sequence
- from typing import Any
-
- from core.tools.entities.tool_entities import CredentialType
-
- logger = logging.getLogger(__name__)
-
-
- def generate_provider_name(
- providers: Sequence[Any], credential_type: CredentialType, fallback_context: str = "provider"
- ) -> str:
- try:
- return generate_incremental_name(
- [provider.name for provider in providers],
- f"{credential_type.get_name()}",
- )
- except Exception as e:
- logger.warning("Error generating next provider name for %r: %r", fallback_context, e)
- return f"{credential_type.get_name()} 1"
-
-
- def generate_incremental_name(
- names: Sequence[str],
- default_pattern: str,
- ) -> str:
- pattern = rf"^{re.escape(default_pattern)}\s+(\d+)$"
- numbers = []
-
- for name in names:
- if not name:
- continue
- match = re.match(pattern, name.strip())
- if match:
- numbers.append(int(match.group(1)))
-
- if not numbers:
- return f"{default_pattern} 1"
-
- max_number = max(numbers)
- return f"{default_pattern} {max_number + 1}"
|