models.leaderboards   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 6
eloc 50
dl 0
loc 61
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A Leaderboard.from_dict() 0 8 2
A Leaderboards.from_dict() 0 6 1
A Ranking.from_dict() 0 13 2

1 Function

Rating   Name   Duplication   Size   Complexity  
A leaderboards_from_dict() 0 2 1
1
from dataclasses import dataclass
2
from typing import Any, List
3
from models import from_int, from_str, from_list
4
from models.user import User
5
6
7
@dataclass
8
class Ranking:
9
    user: User
10
    place: int
11
    place_ordinal: str
12
    score: int
13
    best_time: str
14
    times_raced: int
15
16
    @staticmethod
17
    def from_dict(obj: Any) -> 'Ranking':
18
        if not isinstance(obj, dict):
19
            return None
20
        user = User.from_dict(obj.get("user"))
21
        place = from_int(obj.get("place"))
22
        place_ordinal = from_str(obj.get("place_ordinal"))
23
        score = from_int(obj.get("score"))
24
        best_time = from_str(obj.get("best_time"))
25
        times_raced = from_int(obj.get("times_raced"))
26
        return Ranking(
27
            user=user, place=place, place_ordinal=place_ordinal, score=score,
28
            best_time=best_time, times_raced=times_raced)
29
30
31
@dataclass
32
class Leaderboard:
33
    goal: str
34
    num_ranked: int
35
    rankings: List[Ranking]
36
37
    @staticmethod
38
    def from_dict(obj: Any) -> 'Leaderboard':
39
        if not isinstance(obj, dict):
40
            return None
41
        goal = from_str(obj.get("goal"))
42
        num_ranked = from_int(obj.get("num_ranked"))
43
        rankings = from_list(Ranking.from_dict, obj.get("rankings"))
44
        return Leaderboard(goal, num_ranked, rankings)
45
46
47
@dataclass
48
class Leaderboards:
49
    leaderboards: List[Leaderboard]
50
51
    @staticmethod
52
    def from_dict(obj: Any) -> 'Leaderboards':
53
        assert isinstance(obj, dict)
54
        leaderboards = from_list(
55
            Leaderboard.from_dict, obj.get("leaderboards"))
56
        return Leaderboards(leaderboards)
57
58
59
def leaderboards_from_dict(s: Any) -> Leaderboards:
60
    return Leaderboards.from_dict(s)
61