import dataiku
from dataiku import pandasutils as pdu
import pandas as pd

client = dataiku.api_client()

# listing code environments and usages
envs = client.list_code_envs()
usage = client.list_code_env_usages()

df = pd.DataFrame(envs)
df_usage = pd.DataFrame(usage)
out = pd.merge(df, df_usage, on='envName', how='inner')

# building a dictionary with 3 parallel lists (envName, packages, and path)
dict = {"envName":[], "packages":[], "path":[]}
for env in envs:
    code_env = client.get_code_env(env['envLang'],env['envName'])
    dict['envName'].append(env['envName'])
    dict['packages'].append(code_env.get_settings().get_required_packages())
    dict['path'].append(code_env.get_settings().get_raw()["path"])


df_packages = pd.DataFrame(dict)
final = pd.merge(out, df_packages, on='envName', how='inner')

# Select only the envName and packages columns
subset = final[["envName", "packages"]]

# Drop duplicates
unique_envs = subset.drop_duplicates()

print(unique_envs)

