Metadata-Version: 1.0
Name: dictmapper
Version: 0.1dev
Summary: Maps hierarchical dictionaries to flat structures
Home-page: http://reshefmann.com
Author: Reshef Mann
Author-email: reshef.mann@gmail.com
License: MIT
Description: dictmapper
        =============
        
        dictmapper was created to help transforming a sequence of python dictionaries to tabular format and specifically to transform json documents to be exported in csv fromat.
        
        Usage
        ------
        
        Create a mapper: ::
        
            from dictmapper import Mapper, Mapping
        
            class UserMapper(Mapper):
        
                user_id = Mapping('user_id')
                email = Mapping('email')
                Name = Mapping(lambda u: '%s %s' % (u['first_name'], u['last_name']), name='User Name')
                nickname = Mapping('nickname', default='N/A')
                street = Mapping('address/street')
                city = Mapping('address/city')
                joined_at = Mapping('joined_at', transform=lambda d: d.strftime('%Y-%m-%d'))
        
        Sample input: ::
        
            users_docs = [
                {
                    'user_id': '1000001',
                    'first_name': 'Test',
                    'last_name': 'User',
                    'email': 'user@test.com',
                    'address': {
                        'street': 'Example Road',
                        'city': 'Emerald City',
                    },
                    'joined_at': datetime.now(),
                },
                {
                    'user_id': '1000002',
                    'first_name': 'Example',
                    'last_name': 'Member',
                    'nickname': 'exampy',
                    'email': 'example@member.com',
                    'address': {
                        'street': 'Sample Road',
                        'city': 'Emerald City',
                    },
                    'joined_at': datetime.now(),
                }
            ]
        
        Output: ::
            
            >>> mapper = UserMapper()
            >>> mapper.headers()
            ['User id', 'Email', 'Name', 'Nickname', 'Street', 'City', 'Joined at']
            >>> res = mapper.map(users_docs)
            >>> res
            [['1000001',
              'user@test.com',
              'Test User',
              'N/A',
              'Example Road',
              'Emerald City',
              '2012-03-18'],
             ['1000002',
              'example@member.com',
              'Example Member',
              'exampy',
              'Sample Road',
              'Emerald City',
              '2012-03-18']]
        
        Export to csv
        --------------
        
        I recommend using the excellent `tablib`_: ::
        
            import tablib
            data = tablib.Dataset(*res, headers=mapper.headers())
            data.csv
        
        
        .. _tablib : http://github.com/kennethreitz/tablib
Keywords: json,csv,mapping,export,transform
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
