from __future__ import annotations import secrets import uuid from abc import ABC, abstractmethod from collections import defaultdict from dataclasses import dataclass, make_dataclass from typing import TYPE_CHECKING, TypeVar from urllib.parse import parse_qs, quote, unquote, urlencode, urlparse from .outbound_fields import OUTBOUND_FIELDS class Outbound(ABC): pass _ShadowsocksFields = make_dataclass( "_ShadowsocksFields", fields=OUTBOUND_FIELDS["shadowsocks"] ) class ShadowsocksOutbound(_ShadowsocksFields, Outbound): pass _VlessFields = make_dataclass( "_VlessFieldss", fields=OUTBOUND_FIELDS["vless"] ) class VlessOutbound(_VlessFields, Outbound): pass