misc in Parameter descriptor
This commit is contained in:
@@ -9,7 +9,7 @@ import re
|
|||||||
import time
|
import time
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from copy import copy, deepcopy
|
from copy import copy, deepcopy
|
||||||
from dataclasses import asdict, dataclass, fields
|
from dataclasses import asdict, dataclass, fields, Field
|
||||||
from functools import cache, lru_cache
|
from functools import cache, lru_cache
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import (
|
from typing import (
|
||||||
@@ -270,13 +270,17 @@ def func_validator(name, n):
|
|||||||
|
|
||||||
|
|
||||||
class Parameter:
|
class Parameter:
|
||||||
def __init__(self, validator, converter=None, default=None, display_info=None, rules=None):
|
def __init__(
|
||||||
|
self,
|
||||||
|
validator: Callable[[str, Any], None],
|
||||||
|
converter: Callable = None,
|
||||||
|
default=None,
|
||||||
|
display_info: tuple[float, str] = None,
|
||||||
|
):
|
||||||
"""Single parameter
|
"""Single parameter
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
tpe : type
|
|
||||||
type of the paramter
|
|
||||||
validator : Callable[[str, Any], None]
|
validator : Callable[[str, Any], None]
|
||||||
signature : validator(name, value)
|
signature : validator(name, value)
|
||||||
must raise a ValueError when value doesn't fit the criteria checked by
|
must raise a ValueError when value doesn't fit the criteria checked by
|
||||||
@@ -291,21 +295,17 @@ class Parameter:
|
|||||||
self.converter = converter
|
self.converter = converter
|
||||||
self.default = default
|
self.default = default
|
||||||
self.display_info = display_info
|
self.display_info = display_info
|
||||||
if rules is None:
|
|
||||||
self.rules = []
|
|
||||||
else:
|
|
||||||
self.rules = rules
|
|
||||||
|
|
||||||
def __set_name__(self, owner, name):
|
def __set_name__(self, owner, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
def __get__(self, instance, owner):
|
def __get__(self, instance, owner):
|
||||||
if not instance:
|
if instance is None:
|
||||||
return self
|
return self
|
||||||
return instance.__dict__[self.name]
|
return instance.__dict__[self.name]
|
||||||
|
|
||||||
def __delete__(self, instance):
|
def __delete__(self, instance):
|
||||||
del instance.__dict__[self.name]
|
raise AttributeError("Cannot delete parameter")
|
||||||
|
|
||||||
def __set__(self, instance, value):
|
def __set__(self, instance, value):
|
||||||
if isinstance(value, Parameter):
|
if isinstance(value, Parameter):
|
||||||
|
|||||||
Reference in New Issue
Block a user