Skip to main content

Embedded Cython database for time series that you need to send somewhere

Project description


PyPI PyPI version PyPI Documentation Status Maintainability Test Coverage Build Status Wheel License

Embedded Cython library for time series that you need to upload somewhere.

Stored time series with a 8-byte timestamp and a data, which can be of fixed length or variable.


git clone
cd tempsdb
pip install snakehouse tempsdb
python install

You need both snakehouse and tempsdb to compile it from the source, though binary wheels for:

  • Linux [manylinux2014]:
    • x86_64:
      • Python 3.8
      • Python 3.9
    • armv7l:
      • Python 3.8

are available. If you need an extra wheel, compile it yourself or just drop me an issue.

If you're installing it somewhere that you don't need both snakehouse and tempsdb installed, compile your own binary wheel with

python bdist_wheel

Then copy your resulting wheel and install it via pip on the target system.

Be aware that tempsdb does logging. Consult the docs for how to disable it.



  • fixed a bug with slicing chunks in VarlenSeries
  • added extra comparison operators for VarlenEntry
  • added sync to VarlenSeries
  • fixed a bug with not propagating metadata write exceptions
  • fixed a bug with Database treating varlen and metadata as real time series


  • added logging for opening and closing series


  • added the context manager syntax to VarlenIterator
  • fixed a memory leak that happened during getting current value from an empty series
  • added MemoryPressureManager support for Database


  • fixed an issue with Iterators


  • bugfix: fixed some bugs with reading values after close
  • added support for storing metadata as minijson
    • this will be enabled by default is minijson is importable
  • fixed minor compiler warnings
  • TimeSeries.iterate_range will accept a parameter called direct_bytes for compatibility with VarlenSeries. It's value is ignored
  • more class constructors use explicit typing - faster tempsdb
  • TimeSeries.get_current_value will correctly raise ValueError instead of returning None


  • older TempsDB databases that do not support varlens will be updated upon opening
  • added metadata support for databases
  • a flush will be done before re-enabling mmap
  • bugfix to read archive data


  • added disable_mmap, enable_mmap and open_chunks_mmap_size into VarlenSeries


  • added multiple properties and attributes to VarlenSeries


  • added VarlenSeries.close_chunks
  • Database.sync will now return 0
  • indexed-gzip proved to be a poor choice, dropped
  • fixed


  • if mmap is used, the kernel will be informed after loading the chunk that we don't need it's memory right now
  • deleting a TimeSeries will now correctly return a zero
  • both Database, TimeSeries and Chunk destructor will close and emit a warning if the user forgot to
  • if page_size is default, it won't be written as part of the metadata
  • added support for per-series metadata
  • following additions to Database:
    • delete_series
    • delete_varlen_series
  • following additions to TimeSeries:
    • added append_padded
    • added metadata support, metadata property and set_metadata call
  • added variable length series
  • added experimental support for gzipping time series
  • fixed a bug where getting a series that was already closed would TypeError
  • following additions to Chunk:
    • get_slice_of_piece_at
    • get_slice_of_piece_starting_at
    • get_byte_of_piece
    • get_timestamp_at
  • fixed the behaviour of AlternativeMMaps when passed a single index to getitem and setitem
  • added StillOpen exception, chunk won't allow to close itself if it has any remaining references


  • more error conditions during mmap will be supported as well
  • ENOMEM will be correctly handled during resize operation
  • added TimeSeries.descriptor_based_access
  • added Chunk.switch_to_mmap_based_access


  • improving handling mmap failures on too low memory
  • slightly reduced metadata.txt by defaulting page_size
  • moved Chunk
  • added support for gzipping
  • added DirectChunk
  • iterating and writing at the same time from multiple threads made safe
  • added TimeSeries.disable_mmap
  • Iterator's destructor will emit a warning if you forget to close it explicitly.
  • added option for transparent gzip compression Please note that gzip disables mmap!
  • experimental gzip support for constant-length time series


  • empty series will return an Iterator
  • bugfix release fixed Database.create_series
  • Database constructor will throw if no database is there
  • changed to Iterator.next_item, synce Cython guys said to not implement the method next on iterators.


  • bugfix release fixed get_open_series


  • can install from sdist now


  • added TimeSeries.get_current_value
  • added Database.sync


  • added get_open_series
  • added get_all_series
  • added get_first_entry_for
  • added close_all_open_series
  • added
  • added option to use descriptor based access instead of mmap
  • added TimeSeries.open_chunks_ram_size


First release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tempsdb-0.6.4.tar.gz (761.3 kB view hashes)

Uploaded source

Built Distributions

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page