Metadata-Version: 2.1
Name: flatten-everything
Version: 0.2
Summary: Flattens everything - lists,tuples,dicts,np,pd... no requirements / MIT
Author: hansalemao
Author-email: <aulasparticularesdealemaosp@gmail.com>
Keywords: flatten,pandas,dict,list,numpy,tuple
Classifier: Development Status :: 1 - Planning
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Description-Content-Type: text/markdown


## Install it:

```python

pip install flatten-everything

```



## Import it: 



```python

from flatten_everything import flatten_everything, ProtectedDict,ProtectedList,ProtectedTuple,ProtectedSet

```



## Use it:

```python



#Let's create some random data







import numpy as np



from collections import UserDict, OrderedDict



import pandas as pd



a = np.array([2, 3, 4], dtype=np.uint32)



b = np.array([5, 6, 7], dtype=np.uint32)



data = { # https://www.geeksforgeeks.org/converting-nested-json-structures-to-pandas-dataframes/



 "company": "XYZ pvt ltd",



 "location": "London",



 "info": {



 "president": "Rakesh Kapoor",



 "contacts": {"email": "contact@xyz.com", "tel": "9876543210"},



 },



}



data2 = [ # https://www.geeksforgeeks.org/converting-nested-json-structures-to-pandas-dataframes/



 {



 "id": "001",



 "company": "XYZ pvt ltd",



 "location": "London",



 "info": {



 "president": "Rakesh Kapoor",



 "contacts": {"email": "contact@xyz.com", "tel": "9876543210"},



 },



 },



 {



 "id": "002",



 "company": "PQR Associates",



 "location": "Abu Dhabi",



 "info": {



 "president": "Neelam Subramaniyam",



 "contacts": {"email": "contact@pqr.com", "tel": "8876443210"},



 },



 },



]



dataf = pd.json_normalize(data)



dicti2 = {



 "name": {"name": "John", "age": "27", "sex": "Male"},



 "Peter2": {"name": "Marie", "age": "22", "sex": "Female"},



 "sdfsdf": {"name": "Luna", "age": "24", "sex": "Female"},



 "Peter": {"name": "Peter", "age": "29", "sex": "Male"},



}



dicti = {



 "name": {"name": "John", "age": "27", "sex": "Male"},



 "Peter2": {"name": "Marie", "age": "22", "sex": "Female"},



 "sdfsdf": {"name": "Luna", "age": "24", "sex": "Female"},



 "Peter": {"name": Peter", "age": "29", "sex": "Male"},



}



odi = OrderedDict(dicti2)



ada = UserDict(dicti2)



testlistnotprotected1 = {



 "mytest": [



 ["dd", "xxaa"],



 [[[[(data, 111, {33, 44, 22})]]], [data2]],



 dataf,



 {"blabla": data2},



 "stads",



 (444, 4),



 21.2,



 ["sda", "sadfrs"],



 ("bababa", 44, [111, 111, 111]),



 dicti,



 a,



 b,



 ["colkey"],



 odi,



 ada,



 np.arange(27).reshape((3, 3, 3)),



 ]



}



flattened1 = list((flatten_everything(testlistnotprotected1)))







#output:







['dd',



 'xxaa',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 111,



 33,



 44,



 22,



 '001',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 '002',



 'PQR Associates',



 'Abu Dhabi',



 'Neelam Subramaniyam',



 'contact@pqr.com',



 '8876443210',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 '001',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 '002',



 'PQR Associates',



 'Abu Dhabi',



 'Neelam Subramaniyam',



 'contact@pqr.com',



 '8876443210',



 'stads',



 444,



 4,



 21.2,



 'sda',



 'sadfrs',



 'bababa',



 44,



 111,



 111,



 111,



 'John',



 '27',



 'Male',



 'Marie',



 '22',



 'Female',



 'Luna',



 '24',



 'Female',



 'Peter',



 '29',



 'Male',



 2,



 3,



 4,



 5,



 6,



 7,



 'colkey',



 'John',



 '27',



 'Male',



 'Marie',



 '22',



 'Female',



 'Luna',



 '24',



 'Female',



 'Peter',



 '29',



 'Male',



 'name',



 'Peter2',



 'sdfsdf',



 'Peter',



 0,



 1,



 2,



 3,



 4,



 5,



 6,



 7,



 8,



 9,



 10,



 11,



 12,



 13,



 14,



 15,



 16,



 17,



 18,



 19,



 20,



 21,



 22,



 23,



 24,



 25,



 26]







#You can also protect lists, dicts, tuples and sets from getting flattened







testlistprotected2 = {



    "mytest": [



        ["dd", "xxaa"],



        [[[[(data, 111, {33, 44, 22})]]], [data2]],



        dataf,



        ProtectedDict({"blabla": data2}),



        "stads",



        (444, 4),



        21.2,



        ProtectedList(["sda", "sadfrs"]),



        ProtectedTuple(("bababa", 44, [111, 111, 111])),



        dicti,



        a,



        b,



        ["colkey"],



        odi,



        ada,



        np.arange(27).reshape((3, 3, 3)),



    ]



}







flattened2 = list((flatten_everything(testlistprotected2)))



#output:



['dd',



 'xxaa',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 111,



 33,



 44,



 22,



 '001',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 '002',



 'PQR Associates',



 'Abu Dhabi',



 'Neelam Subramaniyam',



 'contact@pqr.com',



 '8876443210',



 'XYZ pvt ltd',



 'London',



 'Rakesh Kapoor',



 'contact@xyz.com',



 '9876543210',



 {'blabla': [{'id': '001',



    'company': 'XYZ pvt ltd',



    'location': 'London',



    'info': {'president': 'Rakesh Kapoor',



     'contacts': {'email': 'contact@xyz.com', 'tel': '9876543210'}}},



   {'id': '002',



    'company': 'PQR Associates',



    'location': 'Abu Dhabi',



    'info': {'president': 'Neelam Subramaniyam',



     'contacts': {'email': 'contact@pqr.com', 'tel': '8876443210'}}}]},



 'stads',



 444,



 4,



 21.2,



 ['sda', 'sadfrs'],



 ('bababa', 44, [111, 111, 111]),



 'John',



 '27',



 'Male',



 'Marie',



 '22',



 'Female',



 'Luna',



 '24',



 'Female',



 'Peter',



 '29',



 'Male',



 2,



 3,



 4,



 5,



 6,



 7,



 'colkey',



 'John',



 '27',



 'Male',



 'Marie',



 '22',



 'Female',



 'Luna',



 '24',



 'Female',



 'Peter',



 '29',



 'Male',



 'name',



 'Peter2',



 'sdfsdf',



 'Peter',



 0,



 1,



 2,



 3,



 4,



 5,



 6,



 7,



 8,



 9,



 10,



 11,



 12,



 13,



 14,



 15,



 16,



 17,



 18,



 19,



 20,



 21,



 22,



 23,



 24,



 25,



 26]

 

 ```

