Utilities
Bases: type
Metaclass for Singleton Classes.
Source code in chanfig/utils.py
Python |
---|
| class Singleton(type):
r"""
Metaclass for Singleton Classes.
"""
__instances__: Mapping[type, object] = {}
def __call__(cls, *args: Any, **kwargs: Any):
if cls not in cls.__instances__:
cls.__instances__[cls] = super().__call__(*args, **kwargs) # type: ignore
return cls.__instances__[cls]
|
options:
heading_level: 0
chanfig.utils.Null
Null
is an instance of NULL
.
Since the metaclass of NULL
is Singleton
, it is advised to use obj is Null
to determine if obj
is Null
.
NULL class.
get
method in CHANfiG may accept None
or Ellipse
(...
) as value of default
.
Therefore, it is mandatory to have a different default value for default
.
Null
is an instance of NULL
and is recommended to be used as obj is Null
.
Source code in chanfig/utils.py
Python |
---|
| class NULL(metaclass=Singleton):
r"""
NULL class.
`get` method in CHANfiG may accept `None` or `Ellipse`(`...`) as value of `default`.
Therefore, it is mandatory to have a different default value for `default`.
`Null` is an instance of `NULL` and is recommended to be used as `obj is Null`.
"""
def __repr__(self):
return "Null"
def __nonzero__(self):
return False
def __len__(self):
return 0
def __call__(self, *args: Any, **kwargs: Any):
return self
def __contains__(self, name):
return False
def __iter__(self):
return self
def __next__(self):
raise StopIteration
def __getattr__(self, name):
return self
def __getitem__(self, index):
return self
|
options:
heading_level: 0
Bases: JSONEncoder
JSON encoder for Config.
Source code in chanfig/utils.py
Python |
---|
| class JsonEncoder(JSONEncoder):
r"""
JSON encoder for Config.
"""
def default(self, o: Any) -> Any:
if hasattr(o, "__json__"):
return o.__json__()
return super().default(o)
|
options:
heading_level: 0
Bases: SafeDumper
YAML Dumper for Config.
Source code in chanfig/utils.py
Python |
---|
| class YamlDumper(SafeDumper): # pylint: disable=R0903
r"""
YAML Dumper for Config.
"""
def increase_indent(self, flow: bool = False, indentless: bool = False): # pylint: disable=W0235
return super().increase_indent(flow, indentless)
|
options:
heading_level: 0
Bases: SafeLoader
YAML Loader for Config.
Source code in chanfig/utils.py
Python |
---|
| class YamlLoader(SafeLoader): # pylint: disable=R0901,R0903
r"""
YAML Loader for Config.
"""
|
options:
heading_level: 0
Last update:
2023-07-26 17:37:04