Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/pem/__init__.py: 58%

24 statements  

« prev     ^ index     » next       coverage.py v7.3.1, created at 2023-09-25 06:17 +0000

1# SPDX-FileCopyrightText: 2013 Hynek Schlawack <hs@ox.cx> 

2# 

3# SPDX-License-Identifier: MIT 

4 

5from ._core import parse, parse_file 

6from ._object_types import ( 

7 AbstractPEMObject, 

8 Certificate, 

9 CertificateRequest, 

10 CertificateRevocationList, 

11 DHParameters, 

12 DSAPrivateKey, 

13 ECPrivateKey, 

14 Key, 

15 OpenPGPPrivateKey, 

16 OpenPGPPublicKey, 

17 OpenSSHPrivateKey, 

18 OpenSSLTrustedCertificate, 

19 PrivateKey, 

20 PublicKey, 

21 RSAPrivateKey, 

22 RSAPublicKey, 

23 SSHCOMPrivateKey, 

24 SSHPublicKey, 

25) 

26 

27 

28try: 

29 from . import twisted 

30except ImportError: 

31 twisted = None # type: ignore[assignment] 

32 

33__all__ = [ 

34 "AbstractPEMObject", 

35 "Certificate", 

36 "CertificateRequest", 

37 "CertificateRevocationList", 

38 "DHParameters", 

39 "DSAPrivateKey", 

40 "ECPrivateKey", 

41 "Key", 

42 "OpenPGPPrivateKey", 

43 "OpenPGPPublicKey", 

44 "OpenSSHPrivateKey", 

45 "OpenSSLTrustedCertificate", 

46 "parse_file", 

47 "parse", 

48 "PrivateKey", 

49 "PublicKey", 

50 "RSAPrivateKey", 

51 "RSAPublicKey", 

52 "SSHCOMPrivateKey", 

53 "SSHPublicKey", 

54 "twisted", 

55] 

56 

57__author__ = "Hynek Schlawack" 

58__license__ = "MIT" 

59 

60 

61def __getattr__(name: str) -> str: 

62 dunder_to_metadata = { 

63 "__version__": "version", 

64 "__description__": "summary", 

65 "__uri__": "", 

66 "__url__": "", 

67 "__email__": "", 

68 } 

69 if name not in dunder_to_metadata: 

70 msg = f"module {__name__} has no attribute {name}" 

71 raise AttributeError(msg) 

72 

73 import warnings 

74 

75 from importlib.metadata import metadata 

76 

77 if name != "__version__": 

78 warnings.warn( 

79 f"Accessing pem.{name} is deprecated and will be " 

80 "removed in a future release. Use importlib.metadata directly " 

81 "to query packaging metadata.", 

82 DeprecationWarning, 

83 stacklevel=2, 

84 ) 

85 

86 meta = metadata("pem") 

87 

88 if name in ("__uri__", "__url__"): 

89 return meta["Project-URL"].split(" ", 1)[-1] 

90 

91 if name == "__email__": 

92 return meta["Author-email"].split("<", 1)[1].rstrip(">") 

93 

94 return meta[dunder_to_metadata[name]]