您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

name_generator.py 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import logging
  2. import re
  3. from collections.abc import Sequence
  4. from typing import Any
  5. from core.tools.entities.tool_entities import CredentialType
  6. logger = logging.getLogger(__name__)
  7. def generate_provider_name(
  8. providers: Sequence[Any], credential_type: CredentialType, fallback_context: str = "provider"
  9. ) -> str:
  10. try:
  11. return generate_incremental_name(
  12. [provider.name for provider in providers],
  13. f"{credential_type.get_name()}",
  14. )
  15. except Exception as e:
  16. logger.warning("Error generating next provider name for %r: %r", fallback_context, e)
  17. return f"{credential_type.get_name()} 1"
  18. def generate_incremental_name(
  19. names: Sequence[str],
  20. default_pattern: str,
  21. ) -> str:
  22. pattern = rf"^{re.escape(default_pattern)}\s+(\d+)$"
  23. numbers = []
  24. for name in names:
  25. if not name:
  26. continue
  27. match = re.match(pattern, name.strip())
  28. if match:
  29. numbers.append(int(match.group(1)))
  30. if not numbers:
  31. return f"{default_pattern} 1"
  32. max_number = max(numbers)
  33. return f"{default_pattern} {max_number + 1}"