@frappe.whitelist()
def get_versions():
	"""Get versions of all installed apps.

	Example:

		{
			"frappe": {
				"title": "Frappe Framework",
				"version": "5.0.0"
			}
		}"""
	versions = {}
	for app in frappe.get_installed_apps(sort=True):
		versions[app] = {
			"title": frappe.get_hooks("app_title", app_name=app)[0],
			"description": frappe.get_hooks("app_description", app_name=app)[0]
		}
		try:
			versions[app]["version"] = frappe.get_attr(app + ".__version__")
		except __HOLE__:
			versions[app]["version"] = '0.0.1'

	return versions
dataset/ETHPy150Open frappe/frappe/frappe/utils/change_log.py/get_versions