Skip to main content

Log as append-only log logger

Project description

# Log as append-only source package

[![Build Status](https://travis-ci.org/BlackHC/laaos.svg?branch=master)](https://travis-ci.org/BlackHC/laaos)

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 blackhc.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 `TypeHandler`s. See `WeakEnumHandler` and `StrEnumHandler`.

## Example

```python
from blackhc.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` looks as follows:

```python
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:

```python
form laaos.test import store
```

or with the more secure:

```python
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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

blackhc.laaos-0.1.2-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file blackhc.laaos-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: blackhc.laaos-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for blackhc.laaos-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d75147c6b844886a316f1341eeecdad88c6b35614630abeabcda2fa166b30d78
MD5 adfc02a4bc3b6690fa731e7ef0e21d93
BLAKE2b-256 21c1ad13bf214d235b67b761142a38a7593f8173ab5f78defe09de8d89137486

See more details on using hashes here.

Supported by

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