diff --git a/README.md b/README.md index 44902c9f9969ebaad2ac43623659d0ce9544c526..2767752af0ddc8d4d41d58060370289cfc748d72 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ So no variable encoding for you! * added `get_all_series` * added `get_first_entry_for` * added `close_all_open_series` +* added `TimeSeries.name` ## v0.1 diff --git a/setup.py b/setup.py index f0afab20750565d821aba865e6b2710e0b179a39..b1d66c22de8942c31e8d0c1c72e743323ca30d2f 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ def find_pyx(*path) -> tp.List[str]: # setup(name='tempsdb', - version='0.2_a5', + version='0.2_a6', packages=['tempsdb'], install_requires=['satella>=2.14.21', 'ujson'], ext_modules=build([Multibuild('tempsdb', find_pyx('tempsdb')), ], diff --git a/tempsdb/database.pyx b/tempsdb/database.pyx index e644cdaab2e2ff14a5034be1a8db6f13967a76cd..c7714b72572ccb922114cc4701df361f44f7aac2 100644 --- a/tempsdb/database.pyx +++ b/tempsdb/database.pyx @@ -70,7 +70,7 @@ cdef class Database: return self.open_series[name] if not os.path.isdir(path): raise DoesNotExist('series %s does not exist' % (name, )) - self.open_series[name] = result = TimeSeries(path) + self.open_series[name] = result = TimeSeries(path, name) if self.mpm is not None: result.register_memory_pressure_manager(self.mpm) return result @@ -154,7 +154,7 @@ cdef class Database: raise ValueError('Invalid block size, pick larger page') if os.path.isdir(os.path.join(self.path, name)): raise AlreadyExists('Series already exists') - cdef TimeSeries series = create_series(os.path.join(self.name, name), + cdef TimeSeries series = create_series(os.path.join(self.name, name), name, block_size, entries_per_chunk, page_size=page_size) self.open_series[name] = series diff --git a/tempsdb/series.pxd b/tempsdb/series.pxd index 24a6ac3b0a2fccc163fae1ec363aafa61af2b4ae..e4f9b8f292e946ba96a4f3f01605053a9d021c67 100644 --- a/tempsdb/series.pxd +++ b/tempsdb/series.pxd @@ -8,6 +8,7 @@ cdef class TimeSeries: object lock # lock to hold while writing object open_lock # lock to hold while opening or closing chunks readonly str path + readonly str name unsigned int max_entries_per_chunk readonly unsigned long long last_entry_synced readonly unsigned int block_size @@ -38,5 +39,5 @@ cdef class TimeSeries: cdef inline int get_references_for(self, unsigned long long timestamp): return self.refs_chunks.get(timestamp, 0) -cpdef TimeSeries create_series(str path, unsigned int block_size, - int max_entries_per_chunk, int page_size=*) +cpdef TimeSeries create_series(str path, str name, unsigned int block_size, + int max_entries_per_chunk, int page_size=4096): diff --git a/tempsdb/series.pyx b/tempsdb/series.pyx index 038cb1aa8ed023d793b33565da11448e7e358760..326d318394e21c2477428fa2bbfe06498460b6ec 100644 --- a/tempsdb/series.pyx +++ b/tempsdb/series.pyx @@ -21,9 +21,14 @@ cdef class TimeSeries: :ivar last_entry_synced: timestamp of the last synchronized entry (int) :ivar block_size: size of the writable block of data (int) :ivar path: path to the directory containing the series (str) + + .. versionadded:: 0.2 + + :ivar name: name of the series (str) """ - def __init__(self, path: str): + def __init__(self, path: str, name: str): self.mpm = None + self.name = name self.lock = threading.RLock() self.open_lock = threading.RLock() self.refs_chunks = {} @@ -356,7 +361,7 @@ cdef class TimeSeries: shutil.rmtree(self.path) -cpdef TimeSeries create_series(str path, unsigned int block_size, +cpdef TimeSeries create_series(str path, str name, unsigned int block_size, int max_entries_per_chunk, int page_size=4096): if os.path.exists(path): raise AlreadyExists('This series already exists!') @@ -370,4 +375,4 @@ cpdef TimeSeries create_series(str path, unsigned int block_size, 'page_size': page_size }, f_out ) - return TimeSeries(path) + return TimeSeries(path, name) diff --git a/tests/test_db.py b/tests/test_db.py index 58b3529b3b7f79da03298dd98f652141855c2db9..d669e7415b65338cae9e9084c798c082bc36fc08 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -1,12 +1,11 @@ import os -import sys import unittest class TestDB(unittest.TestCase): def test_write_series(self): from tempsdb.series import create_series - series = create_series('test3', 10, 4096) + series = create_series('test3', 'test3', 10, 4096) for i in range(8000): series.append(i, b'\x00'*10) series.trim(4100) @@ -17,7 +16,7 @@ class TestDB(unittest.TestCase): def test_create_series(self): from tempsdb.series import create_series - series = create_series('test', 1, 10) + series = create_series('test', 'test', 1, 10) start, ts = 127, 100 for i in range(20): series.append(ts, bytes(bytearray([start]))) @@ -32,7 +31,6 @@ class TestDB(unittest.TestCase): self.do_verify_series(series, 0, 1200) self.do_verify_series(series, 0, 1800) series.close() - print(f'after close') def do_verify_series(self, series, start, stop): it = series.iterate_range(start, stop)