Skip to main content

The "turn a dict from one API into a dict for another" python module.

Project description

transmogrifydict

The "map a dict from one API into a dict for another" python module.

That dict is so cool...

Tests Coverage

Tests Coverage

Tests Coverage

Tests Coverage

Tests Coverage

Flake8

Tests Coverage

Tests Coverage

Tests Coverage

Tests Coverage

Tests Coverage

Flake8

methods

  • resolve_mapping_to_dict(mapping, source) - move values from source into a returned dict, using mapping for paths and returned keys.

    from transmogrifydict import resolve_mapping_to_dict
    
    mapping = {
        'a': 'd',
        'b': 'e',
        'c': 'f'
    }
    
    source = {
        'd': 1,
        'e': 2,
        'f': 3
    }
    
    resolve_mapping_to_dict(mapping, source)
    # {
    #     'a': 1,
    #     'b': 2,
    #     'c': 3,
    # }
    
  • resolve_path_to_value(source, path) - fetch a value out of source using path as the pointer to the desired value. see docstring for path string formats.

    from transmogrifydict import resolve_path_to_value
    
    source = {
        'd': 1,
        'e': 2,
        'f': 3
    }
    
    found, value = resolve_path_to_value(source, 'e')
    
    print((found, value))
    # (True, 2)
    

path or mapping value format

from transmogrifydict import resolve_path_to_value

source = {
    'some-key': {
        'another-key': '123'
    }
}

# dot notation can be used to descend into dictionaries.
resolve_path_to_value(source, 'some-key.another-key')
# (True, '123')

source = {
    'some-key': '{"another-key":"123"}'
}

# dot notation can also be used to descend into json strings that are dictionary like
resolve_path_to_value(source, 'some-key.another-key')
# (True, '123')

source = {
    'some-key': {
        'another-key': ['1', '2', '3']
    }
}

# square brackets can be used to get specific indexes from a list
resolve_path_to_value(source, 'some-key.another-key[1]')
# (True, '2')

source = {
    'some-key': {
        'another-key': [
            {
                'filter-key': 'yeah',
                'each-key': 'a',
            },
            {
                'filter-key': 'yeah',
                'each-key': 'b',
            },
            {
                'filter-key': 'nah',
                'each-key': 'c',
            }
        ]
    }
}

# dot notation can be used after square brackets if the list contains dict-like values
resolve_path_to_value(source, 'some-key.another-key[1].each-key')
# (True, ['b']) 

# square brackets can be used to iterate over arrays to descend into the items
resolve_path_to_value(source, 'some-key.another-key[].each-key')
# (True, ['a', 'b', 'c'])

# when iterating over a list, a filter can be applied using [key=value]
resolve_path_to_value(source, 'some-key.another-key[filter-key=yeah].each-key')
# (True, ['a', 'b'])

source = {
    'a-key': [
        {
            'b-key': {
                'c-key': 1,
                'd-key': 2,
            }
        },
        {
            'b-key': {
                'c-key': 1,
                'd-key': 3,
            }
        },
        {
            'b-key': {
                'c-key': 0,
                'd-key': 4,
            }
        }
    ]
}
# tidle notation can be used to filter on sub keys of dict list items.
resolve_path_to_value(source, 'a-key[b-key~c-key=1].b-key.d-key')
# (True, [2, 3, 4])
# 

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

transmogrifydict-1.1.3.tar.gz (11.8 kB view hashes)

Uploaded Source

Built Distribution

transmogrifydict-1.1.3-py3-none-any.whl (6.6 kB view hashes)

Uploaded Python 3

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