Hi everyone !

I released a new version (0.2.5) of **Scalpl** which is available on PyPI :)

https://github.com/ducdetronquito/scalpl

You can install it via pip:
    pip3 install scalpl

Scalpl is a lightweight wrapper that helps you to operate on nested dictionaries through the built-in dict API, by using dot-separated string keys.

You might find it useful when working with document-oriented database queries, REST APIs, configuration files, etc...

It's not a drop-in replacement for your dictionaries, just syntactic sugar to avoid this['annoying']['kind']['of']['things'] and prefer['a.different.approach'].

The benefits of Scalpl are the following:

* Faster than addict or Box.
* Allows you to use the entire dict API 'with.this.kind.of.keys'.
* Almost no instantiation/conversion cost, it's just a wrapper.


This new release (0.2.5) is just a small API improvement.

In the previous version of Scalpl, if you wanted to iterate a list of dictionaries and and operate on it, you would have done the following:

```
    data = {
        'pokemons': [
            {
                'name': 'Bulbasaur',
                'type': ['Grass', 'Poison'],
                'category': 'Seed',
                'ability': 'Overgrow'
            },
            {
                'name': 'Charmander',
                'type': 'Fire',
                'category': 'Lizard',
                'ability': 'Blaze',
            },
            {
                'name': 'Squirtle',
                'type': 'Water',
                'category': 'Tiny Turtle',
                'ability': 'Torrent',
            }
        ],
        'trainers': [
            {
                'name': 'Ash',
                'hometown': 'Pallet Town'
            }
        ]
    }
    proxy = Cut(data)
    pokemons = proxy['pokemons']
    for pokemon in Cut.all(pokemons):
        pokemon.setdefault('moves.Scratch', {'power': 40})
```

Now, the API allows you to provied composite key directly to the Cut.all method:

```
    for pokemon in proxy.all('pokemons'):
        pokemon.setdefault('moves.Scratch', {'power': 40})
```

Do not hesitate to give me feedbacks on the module itself, it is one of my first public project !

Have a great afternoon :)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to