Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/git/compat.py: 43%

52 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

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

2# config.py 

3# Copyright (C) 2008, 2009 Michael Trier (mtrier@gmail.com) and contributors 

4# 

5# This module is part of GitPython and is released under 

6# the BSD License: http://www.opensource.org/licenses/bsd-license.php 

7"""utilities to help provide compatibility with python 3""" 

8# flake8: noqa 

9 

10import locale 

11import os 

12import sys 

13 

14from gitdb.utils.encoding import ( 

15 force_bytes, # @UnusedImport 

16 force_text, # @UnusedImport 

17) 

18 

19# typing -------------------------------------------------------------------- 

20 

21from typing import ( 

22 Any, 

23 AnyStr, 

24 Dict, 

25 IO, 

26 Optional, 

27 Tuple, 

28 Type, 

29 Union, 

30 overload, 

31) 

32 

33# --------------------------------------------------------------------------- 

34 

35 

36is_win: bool = os.name == "nt" 

37is_posix = os.name == "posix" 

38is_darwin = os.name == "darwin" 

39defenc = sys.getfilesystemencoding() 

40 

41 

42@overload 

43def safe_decode(s: None) -> None: 

44 ... 

45 

46 

47@overload 

48def safe_decode(s: AnyStr) -> str: 

49 ... 

50 

51 

52def safe_decode(s: Union[AnyStr, None]) -> Optional[str]: 

53 """Safely decodes a binary string to unicode""" 

54 if isinstance(s, str): 54 ↛ 55line 54 didn't jump to line 55, because the condition on line 54 was never true

55 return s 

56 elif isinstance(s, bytes): 56 ↛ 58line 56 didn't jump to line 58, because the condition on line 56 was never false

57 return s.decode(defenc, "surrogateescape") 

58 elif s is None: 

59 return None 

60 else: 

61 raise TypeError("Expected bytes or text, but got %r" % (s,)) 

62 

63 

64@overload 

65def safe_encode(s: None) -> None: 

66 ... 

67 

68 

69@overload 

70def safe_encode(s: AnyStr) -> bytes: 

71 ... 

72 

73 

74def safe_encode(s: Optional[AnyStr]) -> Optional[bytes]: 

75 """Safely encodes a binary string to unicode""" 

76 if isinstance(s, str): 

77 return s.encode(defenc) 

78 elif isinstance(s, bytes): 

79 return s 

80 elif s is None: 

81 return None 

82 else: 

83 raise TypeError("Expected bytes or text, but got %r" % (s,)) 

84 

85 

86@overload 

87def win_encode(s: None) -> None: 

88 ... 

89 

90 

91@overload 

92def win_encode(s: AnyStr) -> bytes: 

93 ... 

94 

95 

96def win_encode(s: Optional[AnyStr]) -> Optional[bytes]: 

97 """Encode unicodes for process arguments on Windows.""" 

98 if isinstance(s, str): 

99 return s.encode(locale.getpreferredencoding(False)) 

100 elif isinstance(s, bytes): 

101 return s 

102 elif s is not None: 

103 raise TypeError("Expected bytes or text, but got %r" % (s,)) 

104 return None