Passed
Push — master ( 769cd8...7d2af2 )
by Fabio
01:16
created

benedict.serializers.plist   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 19
dl 0
loc 30
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A PListSerializer.__init__() 0 2 1
A PListSerializer.decode() 0 6 2
A PListSerializer.encode() 0 5 2
1
# -*- coding: utf-8 -*-
2
3
from __future__ import absolute_import
4
5
from benedict.serializers.abstract import AbstractSerializer
6
7
import plistlib
8
import six
9
10
11
class PListSerializer(AbstractSerializer):
12
    """
13
    https://docs.python.org/3/library/plistlib.html
14
    """
15
    def __init__(self):
16
        super(PListSerializer, self).__init__()
17
18
    def decode(self, s, **kwargs):
19
        if six.PY2:
20
            return plistlib.readPlistFromString(s)
21
        kwargs.setdefault('fmt', plistlib.FMT_XML)
22
        encoding = kwargs.pop('encoding', 'utf-8')
23
        return plistlib.loads(s.encode(encoding), **kwargs)
24
25
    def encode(self, d, **kwargs):
26
        if six.PY2:
27
            return plistlib.writePlistToString(d)
28
        encoding = kwargs.pop('encoding', 'utf-8')
29
        return plistlib.dumps(d, **kwargs).decode(encoding)
30