Skip to main content

"Log as append-only source" logger

Project description

Log as append-only source package

Build Status

Logs as append-only source: write your ML training results in Python without having to worry about crashes. Loading is a breeze: the logs are native Python code. The package supports unstructured data. The data can easily be imported into Jupyter Notebooks or elsewhere.

Installation

To install using pip, use:

pip install laaos

To run the tests, use:

python setup.py test

Append-only source logs

Storing training results as Python dictionaries or JSON files is problematic because the formats are not append-only, which means that you have to rewrite the file every time something changes. (Or you only write results at the end, which does not play well with interruptions or intermediate failures.)

Alternatively, we can simply write the operations that create a structure to a file in an append-only fashion. If the data structure itself is growing and not mutated, this only increases file-size by a constant factor.

The advantage of this library is that the file format is very simple: it's valid Python code.

The only requirement is that you only store primitive types, lists, sets, dicts and immutable types.

Custom wrappers can be added by registering TypeHandlers when creating a Store. See WeakEnumHandler and StrEnumHandler.

Example

from laaos import create_file_store, safe_load_store
store = create_file_store('test', suffix='')

store['losses'] = []
losses = store['losses']

for i in range(1, 10):
    losses.append(1/i)

store.close()

The resulting file laaos/test.py contains valid Python code:

store = {}
store['losses']=[]
store['losses'].append(1.0)
store['losses'].append(0.5)
store['losses'].append(0.3333333333333333)
store['losses'].append(0.25)
store['losses'].append(0.2)
store['losses'].append(0.16666666666666666)
store['losses'].append(0.14285714285714285)
store['losses'].append(0.125)
store['losses'].append(0.1111111111111111)

It can be loaded either with:

form laaos.test import store

or with the more secure:

safe_load('laaos/test.py')

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

laaos-2.0.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

laaos-2.0.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file laaos-2.0.0.tar.gz.

File metadata

  • Download URL: laaos-2.0.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.25.0 setuptools/47.1.1.post20200529 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for laaos-2.0.0.tar.gz
Algorithm Hash digest
SHA256 1fe7ee1856338ac4b320365722ff5051811c582e942cb12d610388e61e32653f
MD5 63e73d4db9996bee92bb9ddb6d1cd4de
BLAKE2b-256 e1c79337c88b84726c99b9339df9c01a03dfe68bd255781392bcf8e189f977b0

See more details on using hashes here.

File details

Details for the file laaos-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: laaos-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.25.0 setuptools/47.1.1.post20200529 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.7.6

File hashes

Hashes for laaos-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4eec6334b926d18a3debe802f4fbe3ec45e86469d5a6f1a8016c2d7e233155b5
MD5 ad489a0804809f0596d3af97565ca854
BLAKE2b-256 687bb289fb7693119de6d26ab012586fdd264f922f066f4f04ef1d9d9a386b23

See more details on using hashes here.

Supported by

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