Skip to main content

Fetch all children/parents from an object/list of objects recursively!

Project description

A function to fetch all children/parents from an object/list of objects recursively

$pip install get-children-parents-recursively

from get_children_parents_recursively import get_all_children_parents_recursively

import psutil #lets use psutil as an example



item = psutil.Process(15328) #'chrome.exe'



test1 = get_all_children_parents_recursively(

	item,

	children_parents_method="children",

	delete_duplicates=False,

	flatten_all=False,

	normalize_children_list=False,

)



test1

Out[3]:

[{'item': psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21'),

  'children': []},

 {'item': psutil.Process(pid=15328, name='chrome.exe', status='running', started='23:49:19'),

  'children': [psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21')]}]





test2 = get_all_children_parents_recursively(

	item,

	children_parents_method="children",

	delete_duplicates=True,

	flatten_all=False,

	normalize_children_list=False,

)



test2

Out[4]:

[{'item': psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

  'children': []},

 {'item': psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21'),

  'children': []},

 {'item': psutil.Process(pid=15328, name='chrome.exe', status='running', started='23:49:19'),

  'children': [psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21')]}]





test3 = get_all_children_parents_recursively(

	item,

	children_parents_method="children",

	delete_duplicates=True,

	flatten_all=True,

	normalize_children_list=False,

)



test3

Out[5]:

[psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21'),

 psutil.Process(pid=15328, name='chrome.exe', status='running', started='23:49:19')]





test3 = get_all_children_parents_recursively(

	item,

	children_parents_method="children",

	delete_duplicates=False,

	flatten_all=True,

	normalize_children_list=False,

)

test3

Out[10]:

[psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21'),

 psutil.Process(pid=15328, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

 psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21')]







test4 = get_all_children_parents_recursively(

	item,

	children_parents_method="children",

	delete_duplicates=True,

	flatten_all=False,

	normalize_children_list=True,

)







test4

Out[6]:

[{'item': psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21'),

  'children': [None, None, None, None, None, None]},

 {'item': psutil.Process(pid=15328, name='chrome.exe', status='running', started='23:49:19'),

  'children': [psutil.Process(pid=3660, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=9664, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=16444, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=14144, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=18376, name='chrome.exe', status='running', started='23:49:19'),

   psutil.Process(pid=7160, name='chrome.exe', status='running', started='23:49:21')]}]



   #useful for pandas

   from a_pandas_ex_plode_tool import pd_add_explode_tools

	import pandas as pd

	pd_add_explode_tools()

	df = pd.DataFrame(test4)

	df = pd.concat([df.item, df.children.s_explode_lists_and_tuples()], axis=1)

   df

	Out[7]:

													item  ...                                         children_5

	0  psutil.Process(pid=3660, name='chrome.exe', st...  ...                                               None

	1  psutil.Process(pid=9664, name='chrome.exe', st...  ...                                               None

	2  psutil.Process(pid=16444, name='chrome.exe', s...  ...                                               None

	3  psutil.Process(pid=14144, name='chrome.exe', s...  ...                                               None

	4  psutil.Process(pid=18376, name='chrome.exe', s...  ...                                               None

	5  psutil.Process(pid=7160, name='chrome.exe', st...  ...                                               None

	6  psutil.Process(pid=15328, name='chrome.exe', s...  ...  psutil.Process(pid=7160, name='chrome.exe', st...





import requests

import bs4

soup = bs4.BeautifulSoup(requests.get("http://www.github.com").content, "lxml")

test5 = get_all_children_parents_recursively(

	soup.find_all("body")[0],

	children_parents_method="find_parents",

	delete_duplicates=True,

	flatten_all=False,

	normalize_children_list=False,

)



item        :  <!DOCTYPE html> <html data-a11y-animated-images="s

find_parents:  []

item        :  <html data-a11y-animated-images="system" lang="en"

find_parents:  [<!DOCTYPE html> <html data-a11y-animated-images="

item        :  <body class="logged-out env-production page-respon

find_parents:  [<html data-a11y-animated-images="system" lang="en



	Parameters:

		item:Any

			any object that can be recursively iterate

		children_parents_method:str

			name of the method that gets the children/parents item

			(default="children")

		delete_duplicates:bool=True

			Useful if you use flatten_all=True

			default=True)



		flatten_all:bool=False

			Returns all items as a flattened list

			default=False)



		normalize_children_list:bool=False

			Useful if you don't want to flatten the output and want the same length for

			every children list (e.g. for creating a DataFrame)

			(default=False)

	Returns:

		readyitems:list

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

get_children_parents_recursively-0.10.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file get_children_parents_recursively-0.10.tar.gz.

File metadata

File hashes

Hashes for get_children_parents_recursively-0.10.tar.gz
Algorithm Hash digest
SHA256 912f18ca3021ba1be1a95dea101994e7730d97b74c33624bbc987d0af754df16
MD5 bde4349de3406f14eaa46aa5998bb9b8
BLAKE2b-256 7d7ee65381d24047684c993188426bb4ed046413579b4b80294e716e5342d369

See more details on using hashes here.

File details

Details for the file get_children_parents_recursively-0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for get_children_parents_recursively-0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 af373f540e4d0b9d525b65292a84b1de950246fc3cd9f174fa2917b102069664
MD5 34c7729ee0e995f72d074a8881fb477e
BLAKE2b-256 8174039d23749c268e8a7c1695a22b6d6a632eed00f47c4a654781d14ad76db2

See more details on using hashes here.

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