|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
from typing import Literal
|
|
|
|
|
from typing import Literal, TypedDict
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dataclass
|
|
|
|
@ -17,6 +17,20 @@ class CacheConfig:
|
|
|
|
|
IMisskeyDistribution = Literal['ayuskey', 'm544', 'areionskey', 'official']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class IFeatures(TypedDict, total=False):
|
|
|
|
|
chat: bool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Features:
|
|
|
|
|
def __init__(self, features: IFeatures | None = None) -> None:
|
|
|
|
|
features = features or {}
|
|
|
|
|
self.chat = features.get('chat', False)
|
|
|
|
|
|
|
|
|
|
def from_dict(self, features: IFeatures):
|
|
|
|
|
self.chat = features.get('chat') or self.chat
|
|
|
|
|
return self
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
def __init__(
|
|
|
|
|
self,
|
|
|
|
@ -27,6 +41,7 @@ class Config:
|
|
|
|
|
use_version: Literal[13, 12, 11] = 12,
|
|
|
|
|
cache: CacheConfigData | None = None,
|
|
|
|
|
use_version_autodetect: bool = True,
|
|
|
|
|
features: IFeatures | None = None,
|
|
|
|
|
) -> None:
|
|
|
|
|
self.distro: IMisskeyDistribution = distro
|
|
|
|
|
self.is_ssl: bool = is_ssl
|
|
|
|
@ -35,6 +50,7 @@ class Config:
|
|
|
|
|
self.use_version: Literal[13, 12, 11] = use_version
|
|
|
|
|
self.cache: CacheConfig = CacheConfig(cache or CacheConfigData())
|
|
|
|
|
self.use_version_autodetect: bool = use_version_autodetect
|
|
|
|
|
self.features: Features = Features(features) if features else Features()
|
|
|
|
|
|
|
|
|
|
def from_dict(
|
|
|
|
|
self,
|
|
|
|
@ -44,6 +60,7 @@ class Config:
|
|
|
|
|
use_version: Literal[13, 12, 11] | None = None,
|
|
|
|
|
cache: CacheConfigData | None = None,
|
|
|
|
|
use_version_autodetect: bool | None = None,
|
|
|
|
|
features: IFeatures | None = None,
|
|
|
|
|
):
|
|
|
|
|
self.host = host or self.host
|
|
|
|
|
self.is_ssl = is_ssl if is_ssl is not None else self.is_ssl
|
|
|
|
@ -52,6 +69,7 @@ class Config:
|
|
|
|
|
if cache:
|
|
|
|
|
self.cache = CacheConfig(cache)
|
|
|
|
|
self.use_version_autodetect = use_version_autodetect or self.use_version_autodetect
|
|
|
|
|
self.features = self.features.from_dict(features) if features else self.features
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
config = Config()
|
|
|
|
|