summaryrefslogtreecommitdiff
path: root/venv/lib/python3.11/site-packages/msgspec/yaml.py
diff options
context:
space:
mode:
authorcyfraeviolae <cyfraeviolae>2024-04-03 03:17:55 -0400
committercyfraeviolae <cyfraeviolae>2024-04-03 03:17:55 -0400
commit12cf076118570eebbff08c6b3090e0d4798447a1 (patch)
tree3ba25e17e3c3a5e82316558ba3864b955919ff72 /venv/lib/python3.11/site-packages/msgspec/yaml.py
parentc45662ff3923b34614ddcc8feb9195541166dcc5 (diff)
no venv
Diffstat (limited to 'venv/lib/python3.11/site-packages/msgspec/yaml.py')
-rw-r--r--venv/lib/python3.11/site-packages/msgspec/yaml.py185
1 files changed, 0 insertions, 185 deletions
diff --git a/venv/lib/python3.11/site-packages/msgspec/yaml.py b/venv/lib/python3.11/site-packages/msgspec/yaml.py
deleted file mode 100644
index bb57ef9..0000000
--- a/venv/lib/python3.11/site-packages/msgspec/yaml.py
+++ /dev/null
@@ -1,185 +0,0 @@
-import datetime as _datetime
-from typing import Any, Callable, Optional, Type, TypeVar, Union, overload, Literal
-
-from . import (
- DecodeError as _DecodeError,
- convert as _convert,
- to_builtins as _to_builtins,
-)
-
-__all__ = ("encode", "decode")
-
-
-def __dir__():
- return __all__
-
-
-def _import_pyyaml(name):
- try:
- import yaml # type: ignore
- except ImportError:
- raise ImportError(
- f"`msgspec.yaml.{name}` requires PyYAML be installed.\n\n"
- "Please either `pip` or `conda` install it as follows:\n\n"
- " $ python -m pip install pyyaml # using pip\n"
- " $ conda install pyyaml # or using conda"
- ) from None
- else:
- return yaml
-
-
-def encode(
- obj: Any,
- *,
- enc_hook: Optional[Callable[[Any], Any]] = None,
- order: Literal[None, "deterministic", "sorted"] = None,
-) -> bytes:
- """Serialize an object as YAML.
-
- Parameters
- ----------
- obj : Any
- The object to serialize.
- enc_hook : callable, optional
- A callable to call for objects that aren't supported msgspec types.
- Takes the unsupported object and should return a supported object, or
- raise a ``NotImplementedError`` if unsupported.
- order : {None, 'deterministic', 'sorted'}, optional
- The ordering to use when encoding unordered compound types.
-
- - ``None``: All objects are encoded in the most efficient manner
- matching their in-memory representations. The default.
- - `'deterministic'`: Unordered collections (sets, dicts) are sorted to
- ensure a consistent output between runs. Useful when
- comparison/hashing of the encoded binary output is necessary.
- - `'sorted'`: Like `'deterministic'`, but *all* object-like types
- (structs, dataclasses, ...) are also sorted by field name before
- encoding. This is slower than `'deterministic'`, but may produce more
- human-readable output.
-
- Returns
- -------
- data : bytes
- The serialized object.
-
- Notes
- -----
- This function requires that the third-party `PyYAML library
- <https://pyyaml.org/>`_ is installed.
-
- See Also
- --------
- decode
- """
- yaml = _import_pyyaml("encode")
- # Use the C extension if available
- Dumper = getattr(yaml, "CSafeDumper", yaml.SafeDumper)
-
- return yaml.dump_all(
- [
- _to_builtins(
- obj,
- builtin_types=(_datetime.datetime, _datetime.date),
- enc_hook=enc_hook,
- order=order,
- )
- ],
- encoding="utf-8",
- Dumper=Dumper,
- allow_unicode=True,
- sort_keys=False,
- )
-
-
-T = TypeVar("T")
-
-
-@overload
-def decode(
- buf: Union[bytes, str],
- *,
- strict: bool = True,
- dec_hook: Optional[Callable[[type, Any], Any]] = None,
-) -> Any:
- pass
-
-
-@overload
-def decode(
- buf: Union[bytes, str],
- *,
- type: Type[T] = ...,
- strict: bool = True,
- dec_hook: Optional[Callable[[type, Any], Any]] = None,
-) -> T:
- pass
-
-
-@overload
-def decode(
- buf: Union[bytes, str],
- *,
- type: Any = ...,
- strict: bool = True,
- dec_hook: Optional[Callable[[type, Any], Any]] = None,
-) -> Any:
- pass
-
-
-def decode(buf, *, type=Any, strict=True, dec_hook=None):
- """Deserialize an object from YAML.
-
- Parameters
- ----------
- buf : bytes-like or str
- The message to decode.
- type : type, optional
- A Python type (in type annotation form) to decode the object as. If
- provided, the message will be type checked and decoded as the specified
- type. Defaults to `Any`, in which case the message will be decoded
- using the default YAML types.
- strict : bool, optional
- Whether type coercion rules should be strict. Setting to False enables
- a wider set of coercion rules from string to non-string types for all
- values. Default is True.
- dec_hook : callable, optional
- An optional callback for handling decoding custom types. Should have
- the signature ``dec_hook(type: Type, obj: Any) -> Any``, where ``type``
- is the expected message type, and ``obj`` is the decoded representation
- composed of only basic YAML types. This hook should transform ``obj``
- into type ``type``, or raise a ``NotImplementedError`` if unsupported.
-
- Returns
- -------
- obj : Any
- The deserialized object.
-
- Notes
- -----
- This function requires that the third-party `PyYAML library
- <https://pyyaml.org/>`_ is installed.
-
- See Also
- --------
- encode
- """
- yaml = _import_pyyaml("decode")
- # Use the C extension if available
- Loader = getattr(yaml, "CSafeLoader", yaml.SafeLoader)
- if not isinstance(buf, (str, bytes)):
- # call `memoryview` first, since `bytes(1)` is actually valid
- buf = bytes(memoryview(buf))
- try:
- obj = yaml.load(buf, Loader)
- except yaml.YAMLError as exc:
- raise _DecodeError(str(exc)) from None
-
- if type is Any:
- return obj
- return _convert(
- obj,
- type,
- builtin_types=(_datetime.datetime, _datetime.date),
- strict=strict,
- dec_hook=dec_hook,
- )