Coverage for mlprodict/npy/onnx_version.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.1.0, created at 2023-02-04 02:28 +0100

1""" 

2@file 

3@brief Identifies a version of a function. 

4 

5.. versionadded:: 0.6 

6""" 

7from collections import namedtuple 

8 

9 

10class FctVersion(namedtuple("_version_", ['args', 'kwargs'])): 

11 """ 

12 Identifies a version of a function based on its 

13 arguments and its parameters. 

14 """ 

15 __slots__ = () 

16 

17 def _check_(self): 

18 if self.args is not None and not isinstance(self.args, tuple): 

19 raise TypeError("args must be None or a tuple.") 

20 if self.kwargs is not None and not isinstance(self.kwargs, tuple): 

21 raise TypeError("kwargs must None or be a tuple.") 

22 

23 def __repr__(self): 

24 "usual" 

25 def cl(s): 

26 return str(s).replace("<class '", "").replace("'>", "") 

27 if self.args is None: 

28 sa = "None" 

29 else: 

30 sa = ",".join(map(cl, self.args)) 

31 sa = f"({sa})" if len(self.args) > 1 else (f"({sa},)") 

32 

33 return f"{self.__class__.__name__}({sa}, {self.kwargs})" 

34 

35 def __len__(self): 

36 "Returns the sum of lengths." 

37 return ((0 if self.args is None else len(self.args)) + 

38 (0 if self.kwargs is None else len(self.kwargs))) 

39 

40 def as_tuple(self): 

41 "Returns a single tuple for the version." 

42 return ((tuple() if self.args is None else self.args) + 

43 (tuple() if self.kwargs is None else self.kwargs)) 

44 

45 def as_tuple_with_sep(self, sep): 

46 "Returns a single tuple for the version." 

47 return ((tuple() if self.args is None else self.args) + 

48 (sep, ) + 

49 (tuple() if self.kwargs is None else self.kwargs)) 

50 

51 def as_string(self): 

52 "Returns a single string identifier." 

53 val = "_".join(map(str, self.as_tuple_with_sep("_"))) 

54 val = val.replace("<class 'numpy.", "").replace( 

55 '.', "_").replace("'>", "").replace(" ", "") 

56 return val.lower()