Skip to content

Commit 87274f8

Browse files
committed
Managers fix
1 parent 94037ce commit 87274f8

File tree

1 file changed

+43
-41
lines changed

1 file changed

+43
-41
lines changed

uncoder-core/app/translator/managers.py

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
11
from abc import ABC
22
from functools import cached_property
3+
from typing import ClassVar, Union
34

45
from app.models.translation import TranslatorPlatform
5-
from app.translator.core.exceptions.core import UnsupportedRootAParser
6+
from app.translator.core.exceptions.core import UnsupportedPlatform, UnsupportedRootAParser
7+
from app.translator.core.parser import QueryParser
8+
from app.translator.core.render import QueryRender
9+
from app.translator.core.render_cti import RenderCTI
610

711

8-
class Manager(ABC):
9-
platforms = {}
10-
11-
def register(self, cls):
12-
self.platforms[cls.details.platform_id] = cls()
13-
return cls
14-
15-
def get(self, platform_id: str): # noqa: ANN201
16-
if platform := self.platforms.get(platform_id):
17-
return platform
18-
raise UnsupportedRootAParser(parser=platform_id)
12+
class PlatformManager(ABC):
13+
platforms: ClassVar[dict[str, Union[QueryParser, QueryRender, RenderCTI]]] = {}
1914

2015
def all_platforms(self) -> list:
2116
return list(self.platforms.keys())
@@ -40,54 +35,61 @@ def get_platforms_details(self) -> list[TranslatorPlatform]:
4035
return sorted(platforms, key=lambda platform: platform.group_name)
4136

4237

43-
class ParserManager(Manager):
44-
platforms = {}
45-
supported_by_roota_platforms = {}
46-
main_platforms = {}
38+
class ParserManager(PlatformManager):
39+
supported_by_roota_platforms: ClassVar[dict[str, QueryParser]] = {}
40+
main_platforms: ClassVar[dict[str, QueryParser]] = {}
4741

48-
def get_supported_by_roota(self, platform_id: str): # noqa: ANN201
42+
def get(self, platform_id: str) -> QueryParser:
43+
if platform := self.platforms.get(platform_id):
44+
return platform
45+
raise UnsupportedPlatform(platform=platform_id, is_parser=True)
46+
47+
def register(self, cls: type[QueryParser]) -> type[QueryParser]:
48+
self.platforms[cls.details.platform_id] = cls()
49+
return cls
50+
51+
def get_supported_by_roota(self, platform_id: str) -> QueryParser:
4952
if platform := self.supported_by_roota_platforms.get(platform_id):
5053
return platform
5154
raise UnsupportedRootAParser(parser=platform_id)
5255

53-
def register_supported_by_roota(self, cls):
56+
def register_supported_by_roota(self, cls: type[QueryParser]) -> type[QueryParser]:
5457
parser = cls()
5558
self.supported_by_roota_platforms[cls.details.platform_id] = parser
5659
self.platforms[cls.details.platform_id] = parser
5760
return cls
5861

59-
def register_main(self, cls):
62+
def register_main(self, cls: type[QueryParser]) -> type[QueryParser]:
6063
parser = cls()
6164
self.main_platforms[cls.details.platform_id] = parser
6265
self.platforms[cls.details.platform_id] = parser
6366
return cls
6467

65-
@cached_property
66-
def get_platforms_details(self) -> list[TranslatorPlatform]:
67-
platforms = [
68-
TranslatorPlatform(
69-
id=platform.details.platform_id,
70-
name=platform.details.name,
71-
code=platform.details.platform_id,
72-
group_name=platform.details.group_name,
73-
group_id=platform.details.group_id,
74-
platform_name=platform.details.platform_name,
75-
platform_id=platform.details.platform_id,
76-
alt_platform_name=platform.details.alt_platform_name,
77-
alt_platform=platform.details.alt_platform,
78-
first_choice=platform.details.first_choice,
79-
)
80-
for platform in self.platforms.values()
81-
]
82-
return sorted(platforms, key=lambda platform: platform.group_name)
8368

69+
class RenderManager(PlatformManager):
70+
platforms: ClassVar[dict[str, QueryRender]] = {}
71+
72+
def get(self, platform_id: str) -> QueryRender:
73+
if platform := self.platforms.get(platform_id):
74+
return platform
75+
raise UnsupportedPlatform(platform=platform_id)
76+
77+
def register(self, cls: type[QueryRender]) -> type[QueryRender]:
78+
self.platforms[cls.details.platform_id] = cls()
79+
return cls
8480

85-
class RenderManager(Manager):
86-
platforms = {}
8781

82+
class RenderCTIManager(PlatformManager):
83+
platforms: ClassVar[dict[str, RenderCTI]] = {}
8884

89-
class RenderCTIManager(Manager):
90-
platforms = {}
85+
def get(self, platform_id: str) -> RenderCTI:
86+
if platform := self.platforms.get(platform_id):
87+
return platform
88+
raise UnsupportedPlatform(platform=platform_id)
89+
90+
def register(self, cls: type[RenderCTI]) -> type[RenderCTI]:
91+
self.platforms[cls.details.platform_id] = cls()
92+
return cls
9193

9294

9395
parser_manager = ParserManager()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy