Updates
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import NoReturn, TypeVar
|
||||
|
||||
from attrs import define as _define, frozen as _frozen
|
||||
|
||||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
def define(cls: type[_T]) -> type[_T]: # pragma: no cover
|
||||
cls.__init_subclass__ = _do_not_subclass
|
||||
return _define(cls)
|
||||
|
||||
|
||||
def frozen(cls: type[_T]) -> type[_T]:
|
||||
cls.__init_subclass__ = _do_not_subclass
|
||||
return _frozen(cls)
|
||||
|
||||
|
||||
class UnsupportedSubclassing(Exception):
|
||||
def __str__(self):
|
||||
return (
|
||||
"Subclassing is not part of referencing's public API. "
|
||||
"If no other suitable API exists for what you're trying to do, "
|
||||
"feel free to file an issue asking for one."
|
||||
)
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _do_not_subclass() -> NoReturn: # pragma: no cover
|
||||
raise UnsupportedSubclassing()
|
||||
Reference in New Issue
Block a user