summaryrefslogtreecommitdiff
path: root/requests_cache/serializers/__init__.py
blob: 68ead1b065c7b2041472b364aa9297281b06e94c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""Response serialization utilities. See :ref:`serializers` for general usage info.
"""
# flake8: noqa: F401
from .cattrs import CattrStage
from .pipeline import SerializerPipeline, Stage
from .preconf import (
    bson_serializer,
    json_serializer,
    pickle_serializer,
    safe_pickle_serializer,
    yaml_serializer,
)

__all__ = [
    'SERIALIZERS',
    'CattrStage',
    'SerializerPipeline',
    'Stage',
    'bson_serializer',
    'json_serializer',
    'pickle_serializer',
    'safe_pickle_serializer',
    'yaml_serializer',
    'init_serializer',
]

SERIALIZERS = {
    'bson': bson_serializer,
    'json': json_serializer,
    'pickle': pickle_serializer,
    'yaml': yaml_serializer,
}


def init_serializer(serializer=None, **kwargs):
    """Initialize a serializer from a name, class, or instance"""
    serializer = serializer or 'pickle'
    if isinstance(serializer, str):
        serializer = SERIALIZERS[serializer]
    return serializer