Skip to content

Commit

Permalink
update docstring for all writers
Browse files Browse the repository at this point in the history
  • Loading branch information
GreatYYX committed Sep 5, 2018
1 parent 454ca7b commit c0f3afb
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 20 deletions.
13 changes: 11 additions & 2 deletions rltk/io/writer/block_array_writer.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
import sys

from rltk.io.writer import BlockWriter


class BlockArrayWriter(BlockWriter):
def __init__(self, set_size=float('inf'), index_blacklist:set=None):
"""
Block writer stores data in array (list).
Args:
set_size (int, optional): Maximum size of a block. Defaults to `sys.maxsize`.
index_blacklist (set, optional): If a Record's id is in blacklist, it won't be in output. Default's to None.
"""
def __init__(self, set_size: int = sys.maxsize, index_blacklist: set = None):
self._array = list()
self._dict = dict()
self._is_dirty = False
self._set_size = set_size
self._blacklist = index_blacklist or set()

def write(self, id1, id2):
def write(self, id1: str, id2: str):
if id1 in self._blacklist:
return

Expand Down
14 changes: 12 additions & 2 deletions rltk/io/writer/block_file_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,17 @@


class BlockFileWriter(BlockWriter):
def __init__(self, filename, buffer_size=10000, set_size=sys.maxsize, index_blacklist:set=None):
"""
Block writer stores data in file.
Args:
filename (str): File name.
buffer_size (int, optional): Buffer size. Defaults to 10,000.
set_size (int, optional): Maximum size of a block. Defaults to `sys.maxsize`.
index_blacklist (set, optional): If a Record's id is in blacklist, it won't be in output. Default's to None.
"""
def __init__(self, filename: str, buffer_size: int = 10000,
set_size: int = sys.maxsize, index_blacklist: set = None):
self._filename = filename
self._temp_filename = filename + '.temp'
self._buffer_size = buffer_size
Expand All @@ -18,7 +28,7 @@ def __init__(self, filename, buffer_size=10000, set_size=sys.maxsize, index_blac
# clean up output file
open(self._filename, 'w').close()

def write(self, id1, id2):
def write(self, id1: str, id2: str):
# skip if id1 is in blacklist
if id1 in self._blacklist:
return
Expand Down
26 changes: 22 additions & 4 deletions rltk/io/writer/block_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,40 @@

class BlockWriter(Writer):
"""
index: sets
black list is on index
Super class of block writer
"""

def write(self, id1, id2):
def write(self, id1: str, id2: str):
"""
Args:
id1 (str): Record 1 id.
id2 (str): Record 2 id.
"""
raise NotImplementedError

def get_handler(self):
"""
The handler which can be used as input of corresponding :meth:`BlockReader`.
"""
raise NotImplementedError

def flush(self):
"""
Force to flush buffer.
"""
raise NotImplementedError

def get_blacklist(self):
return self._blacklist
"""
Black list of indices.
"""
if getattr(self, '_blacklist'):
return self._blacklist
raise NotImplementedError

def close(self):
"""
Close handler.
"""
self.flush()
super().close()
21 changes: 18 additions & 3 deletions rltk/io/writer/ground_truth_writer.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,34 @@
import csv

from rltk.io.writer import Writer
from rltk.io.io_utils import get_file_handler


class GroundTruthWriter(Writer):
"""
Ground truth writer.
Args:
file_handler (io.IOBase): It can be file name or file handler.
"""
def __init__(self, file_handler):
self._file_handler = Writer.get_file_handler(file_handler)
self._file_handler = get_file_handler(file_handler)
fieldnames = ['id1', 'id2', 'label']
self._csv_writer = csv.DictWriter(self._file_handler, fieldnames=fieldnames)
self._csv_writer.writeheader()

def write(self, id1 : str, id2 : str, label : int):
def write(self, id1: str, id2: str, label: bool):
"""
Writer to file.
Args:
id1 (str): Id 1.
id2 (str): Id 2.
label (bool): Positive (True) or negative (False).
"""
self._csv_writer.writerow({'id1': id1, 'id2': id2, 'label': label})

def __del__(self):
def close(self):
try:
self._file_handler.close()
except:
Expand Down
23 changes: 14 additions & 9 deletions rltk/io/writer/writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,26 @@


class Writer(object):
"""
Writer.
"""
def __init__(self):
pass

def write(self):
"""
Write content.
"""
raise NotImplementedError

def __del__(self):
pass
"""
Same to :meth:`close`.
"""
self.close()

def close(self):
self.__del__()

@staticmethod
def get_file_handler(f):
if isinstance(f, io.IOBase):
return f

return open(f, 'w')
"""
Close handler.
"""
pass

0 comments on commit c0f3afb

Please sign in to comment.