Skip to content

Commit 9801472

Browse files
authored
[fixlib][feat] Export categories (#2087)
1 parent 0a1116d commit 9801472

File tree

4 files changed

+260
-1
lines changed

4 files changed

+260
-1
lines changed

fixlib/fixlib/basecategories.py

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
from dataclasses import dataclass
2+
from enum import Enum
3+
from typing import Any
4+
5+
6+
@dataclass(frozen=True)
7+
class BaseCategory:
8+
name: str = "category"
9+
10+
def __str__(self) -> str:
11+
return self.name
12+
13+
def __lt__(self, other: Any) -> bool:
14+
if isinstance(other, BaseCategory):
15+
return str(self) < str(other)
16+
return False
17+
18+
def __eq__(self, other: Any) -> bool:
19+
if isinstance(other, BaseCategory):
20+
return str(self) == str(other)
21+
return False
22+
23+
def __gt__(self, other: Any) -> bool:
24+
if isinstance(other, BaseCategory):
25+
return str(self) > str(other)
26+
return False
27+
28+
29+
@dataclass(frozen=True)
30+
class Compute(BaseCategory):
31+
name: str = "compute"
32+
description: str = "Compute"
33+
34+
35+
@dataclass(frozen=True)
36+
class Storage(BaseCategory):
37+
name: str = "storage"
38+
description: str = "Storage"
39+
40+
41+
@dataclass(frozen=True)
42+
class Database(BaseCategory):
43+
name: str = "database"
44+
description: str = "Database"
45+
46+
47+
@dataclass(frozen=True)
48+
class Security(BaseCategory):
49+
name: str = "security"
50+
description: str = "Security"
51+
52+
53+
@dataclass(frozen=True)
54+
class Networking(BaseCategory):
55+
name: str = "networking"
56+
description: str = "Networking"
57+
58+
59+
@dataclass(frozen=True)
60+
class Iam(BaseCategory):
61+
name: str = "iam"
62+
description: str = "Identity & Access Management"
63+
64+
65+
@dataclass(frozen=True)
66+
class Management(BaseCategory):
67+
name: str = "management"
68+
description: str = "Management Tools"
69+
70+
71+
@dataclass(frozen=True)
72+
class Monitoring(BaseCategory):
73+
name: str = "monitoring"
74+
description: str = "Monitoring & Logging"
75+
76+
77+
@dataclass(frozen=True)
78+
class Analytics(BaseCategory):
79+
name: str = "analytics"
80+
description: str = "Analytics & BI"
81+
82+
83+
@dataclass(frozen=True)
84+
class Ai(BaseCategory):
85+
name: str = "ai"
86+
description: str = "AI & Machine Learning"
87+
88+
89+
@dataclass(frozen=True)
90+
class DevOps(BaseCategory):
91+
name: str = "devops"
92+
description: str = "DevOps and Development"
93+
94+
95+
@dataclass(frozen=True)
96+
class Dns(BaseCategory):
97+
name: str = "dns"
98+
description: str = "DNS"
99+
100+
101+
class Category(Enum):
102+
compute = Compute()
103+
storage = Storage()
104+
database = Database()
105+
security = Security()
106+
networking = Networking()
107+
iam = Iam()
108+
management = Management()
109+
monitoring = Monitoring()
110+
analytics = Analytics()
111+
ai = Ai()
112+
devops = DevOps()
113+
dns = Dns()

0 commit comments

Comments
 (0)