Completed
Push — master ( 13100f...4ad17d )
by Oleksandr
04:57
created

isotopic_logging.threadsafe_iter.__iter__()   A

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.125
Metric Value
cc 1
dl 0
loc 2
ccs 1
cts 2
cp 0.5
crap 1.125
rs 10
1
# -*- coding: utf-8 -*-
2
3 1
import threading
4
5
6 1
class threadsafe_iter(object):
7
    """
8
    Takes an iterator/generator and makes it thread-safe by serializing call to
9
    the ``next`` method of given iterator/generator.
10
    """
11
12 1
    def __init__(self, original):
13 1
        self.original = original
14 1
        self.lock = threading.Lock()
15
16 1
    def __iter__(self):
17
        return self
18
19 1
    def __next__(self):
20 1
        with self.lock:
21 1
            return next(self.original)
22
23
    # Python 3 compatibility
24
    next = __next__
25