Completed
Push — master ( e6e2ec...0ced3f )
by Fabio
01:26
created

benedict.serializers   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 33
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 2

2 Functions

Rating   Name   Duplication   Size   Complexity  
A get_serializer_by_format() 0 2 1
A get_serializers_extensions() 0 2 1
1
# -*- coding: utf-8 -*-
2
3
from benedict.serializers.base64 import Base64Serializer
4
from benedict.serializers.csv import CSVSerializer
5
from benedict.serializers.json import JSONSerializer
6
from benedict.serializers.query_string import QueryStringSerializer
7
from benedict.serializers.toml import TOMLSerializer
8
from benedict.serializers.xml import XMLSerializer
9
from benedict.serializers.yaml import YAMLSerializer
10
11
from slugify import slugify
12
13
14
_BASE64_SERIALIZER = Base64Serializer()
15
_CSV_SERIALIZER = CSVSerializer()
16
_JSON_SERIALIZER = JSONSerializer()
17
_QUERY_STRING_SERIALIZER = QueryStringSerializer()
18
_TOML_SERIALIZER = TOMLSerializer()
19
_YAML_SERIALIZER = YAMLSerializer()
20
_XML_SERIALIZER = XMLSerializer()
21
22
_SERIALIZERS = {
23
    'b64': _BASE64_SERIALIZER,
24
    'base64': _BASE64_SERIALIZER,
25
    'csv': _CSV_SERIALIZER,
26
    'json': _JSON_SERIALIZER,
27
    'qs': _QUERY_STRING_SERIALIZER,
28
    'query_string': _QUERY_STRING_SERIALIZER,
29
    'toml': _TOML_SERIALIZER,
30
    'yaml': _YAML_SERIALIZER,
31
    'yml': _YAML_SERIALIZER,
32
    'xml': _XML_SERIALIZER,
33
}
34
35
_SERIALIZERS_EXTENSIONS = [
36
    '.{}'.format(extension) for extension in _SERIALIZERS.keys()]
37
38
39
def get_serializer_by_format(format):
40
    return _SERIALIZERS.get(slugify(format, separator='_'))
41
42
43
def get_serializers_extensions():
44
    return list(_SERIALIZERS_EXTENSIONS)
45