wechatpy.session.memcachedstorage   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 37
Duplicated Lines 75.68 %

Test Coverage

Coverage 85.19%

Importance

Changes 0
Metric Value
eloc 28
dl 28
loc 37
rs 10
c 0
b 0
f 0
ccs 23
cts 27
cp 0.8519
wmc 8

5 Methods

Rating   Name   Duplication   Size   Complexity  
A MemcachedStorage.__init__() 5 5 2
A MemcachedStorage.set() 6 6 2
A MemcachedStorage.delete() 3 3 1
A MemcachedStorage.get() 6 6 2
A MemcachedStorage.key_name() 2 2 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
# -*- coding: utf-8 -*-
2 10
from __future__ import absolute_import, unicode_literals
3
4 10
from wechatpy.session import SessionStorage
5 10
from wechatpy.utils import to_text
6 10
from wechatpy.utils import json
7
8
9 10 View Code Duplication
class MemcachedStorage(SessionStorage):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
10
11 10
    def __init__(self, mc, prefix='wechatpy'):
12 10
        for method_name in ('get', 'set', 'delete'):
13 10
            assert hasattr(mc, method_name)
14 10
        self.mc = mc
15 10
        self.prefix = prefix
16
17 10
    def key_name(self, key):
18 10
        return '{0}:{1}'.format(self.prefix, key)
19
20 10
    def get(self, key, default=None):
21 10
        key = self.key_name(key)
22 10
        value = self.mc.get(key)
23 10
        if value is None:
24
            return default
25 10
        return json.loads(to_text(value))
26
27 10
    def set(self, key, value, ttl=0):
28 10
        if value is None:
29
            return
30 10
        key = self.key_name(key)
31 10
        value = json.dumps(value)
32 10
        self.mc.set(key, value, ttl)
33
34 10
    def delete(self, key):
35
        key = self.key_name(key)
36
        self.mc.delete(key)
37