Coverage for src/github_actions_practice/utils.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-08-04 09:35 +0000

1"""工具函數模組.""" 

2 

3import requests 

4from typing import Dict, Any 

5 

6 

7def fetch_data(url: str) -> Dict[str, Any]: 

8 """從指定 URL 取得 JSON 資料. 

9 

10 Args: 

11 url: 要取得資料的 URL 

12 

13 Returns: 

14 解析後的 JSON 資料 

15 

16 Raises: 

17 requests.RequestException: 當請求失敗時 

18 ValueError: 當回應不是有效的 JSON 時 

19 """ 

20 response = requests.get(url, timeout=10) 

21 response.raise_for_status() 

22 return response.json() # type: ignore[no-any-return] 

23 

24 

25def process_data(data: Dict[str, Any]) -> str: 

26 """處理取得的資料. 

27 

28 Args: 

29 data: 要處理的資料字典 

30 

31 Returns: 

32 處理後的結果字串 

33 """ 

34 if not isinstance(data, dict): 

35 raise ValueError("資料必須是字典格式") 

36 

37 # 簡單的資料處理邏輯 

38 keys_count = len(data.keys()) 

39 has_nested = any(isinstance(v, (dict, list)) for v in data.values()) 

40 

41 return f"找到 {keys_count} 個鍵,{'包含' if has_nested else '不包含'}巢狀結構" 

42 

43 

44def calculate_sum(numbers: list[int]) -> int: 

45 """計算數字列表的總和. 

46 

47 Args: 

48 numbers: 整數列表 

49 

50 Returns: 

51 總和 

52 """ 

53 return sum(numbers) 

54 

55 

56def is_even(number: int) -> bool: 

57 """檢查數字是否為偶數. 

58 

59 Args: 

60 number: 要檢查的數字 

61 

62 Returns: 

63 如果是偶數回傳 True,否則回傳 False 

64 """ 

65 return number % 2 == 0