get_simple_name()   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 12
Code Lines 12

Duplication

Lines 12
Ratio 100 %

Importance

Changes 0
Metric Value
cc 3
eloc 12
nop 1
dl 12
loc 12
rs 9.8
c 0
b 0
f 0
1
from functools import lru_cache
2
3
from typish._types import NoneType
4
5
6 View Code Duplication
@lru_cache()
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
7
def get_simple_name(cls: type) -> str:
8
    cls = cls or NoneType
9
    cls_name = getattr(cls, '__name__', None)
10
    if not cls_name:
11
        cls_name = getattr(cls, '_name', None)
12
    if not cls_name:
13
        cls_name = repr(cls)
14
        cls_name = cls_name.split('[')[0]  # Remove generic types.
15
        cls_name = cls_name.split('.')[-1]  # Remove any . caused by repr.
16
        cls_name = cls_name.split(r"'>")[0]  # Remove any '>.
17
    return cls_name
18