Coverage for mcpgateway / utils / display_name.py: 100%

9 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-02-11 07:10 +0000

1# -*- coding: utf-8 -*- 

2"""Location: ./mcpgateway/utils/display_name.py 

3Copyright 2025 

4SPDX-License-Identifier: Apache-2.0 

5Authors: Mihai Criveti 

6 

7Display Name Utilities. 

8This module provides utilities for converting technical tool names to user-friendly display names. 

9 

10Examples: 

11 >>> from mcpgateway.utils.display_name import generate_display_name 

12 >>> generate_display_name("duckduckgo_search") 

13 'Duckduckgo Search' 

14 >>> generate_display_name("weather-api") 

15 'Weather Api' 

16 >>> generate_display_name("get_user.profile") 

17 'Get User Profile' 

18""" 

19 

20# Standard 

21import re 

22 

23 

24def generate_display_name(technical_name: str) -> str: 

25 """Convert technical tool name to human-readable display name. 

26 

27 Converts underscores, hyphens, and dots to spaces, then capitalizes the first letter. 

28 

29 Args: 

30 technical_name: The technical tool name (e.g., "duckduckgo_search") 

31 

32 Returns: 

33 str: Human-readable display name (e.g., "Duckduckgo Search") 

34 

35 Examples: 

36 >>> generate_display_name("duckduckgo_search") 

37 'Duckduckgo Search' 

38 >>> generate_display_name("weather-api") 

39 'Weather Api' 

40 >>> generate_display_name("get_user.profile") 

41 'Get User Profile' 

42 >>> generate_display_name("simple_tool") 

43 'Simple Tool' 

44 >>> generate_display_name("UPPER_CASE") 

45 'Upper Case' 

46 >>> generate_display_name("mixed_Case-Name.test") 

47 'Mixed Case Name Test' 

48 >>> generate_display_name("") 

49 '' 

50 >>> generate_display_name("single") 

51 'Single' 

52 >>> generate_display_name("multiple___underscores") 

53 'Multiple Underscores' 

54 >>> generate_display_name("tool_with-mixed.separators") 

55 'Tool With Mixed Separators' 

56 """ 

57 if not technical_name: 

58 return "" 

59 

60 # Replace underscores, hyphens, and dots with spaces 

61 display_name = re.sub(r"[_\-\.]+", " ", technical_name) 

62 

63 # Remove extra whitespace and capitalize first letter 

64 display_name = " ".join(display_name.split()) # Normalize whitespace 

65 

66 if display_name: 

67 # Capitalize each word (title case) 

68 display_name = display_name.title() 

69 

70 return display_name