Listar projetos de gitlab e exibindo num dataframe

Rodar com:

panel serve app.py --dev
Dataframe com projetos do gitlab
import os
import gitlab
import pandas as pd
import urllib3
from dotenv import load_dotenv

urllib3.disable_warnings()
load_dotenv()


def get_project(project_id):
    project = gl.projects.get(project_id)
    return project


def get_project_data(project):
    return {'project_id':project.attributes['id'], 'project_name': project.attributes['name'], 'project_url': project.attributes['web_url']}


def get_project_pipeline(project):
    project_dict = get_project_data(project)
    pipeline_list = project.pipelines.list()
    if pipeline_list and len(pipeline_list)!=0:
        pipeline_main = []
        pipeline_master = []
        try:
            pipeline_main = project.pipelines.latest(ref="main")
        except:
            print('nao possui main')

        try:
            pipeline_master = project.pipelines.latest(ref="master")
        except:
            print("nao possui master")

        if pipeline_main:
            pipeline_last = pipeline_main
        elif pipeline_master:
            pipeline_last = pipeline_master
        else:
            pipeline_dict = {'pipeline_status':'none', 'pipeline_duration':0}
            return {**project_dict, **pipeline_dict}

        if pipeline_last:
            pipeline_dict = {'pipeline_status':pipeline_last.attributes['status'], 'pipeline_duration':pipeline_last.attributes['duration'], 'icon':"<i class='fa fa-print'></i>"}
            return {**project_dict, **pipeline_dict}


# create a GitLab instance
gl = gitlab.Gitlab(os.getenv('GITLAB_URL'), private_token=os.getenv('GITLAB_TOKEN'), ssl_verify=False)


import pandas as pd
df = pd.read_csv(os.getenv('ARQUIVO_PROJETOS'),delimiter=';')

projects_data = []

df = df.reset_index()  # make sure indexes pair with number of rows
for index, row in df.iterrows():
    # print(row['id'])
    project = get_project(row['id'])
    # print(get_project_data(project))
    pj = get_project_pipeline(project)
    if pj:
        print(f"projeto: {pj['project_name']} url:{pj['project_url']}")
        projects_data.append(pj)


links = pd.DataFrame(projects_data)

import panel as pn
pn.extension()
links["value"]="<a href='" + links["project_url"] + "' target='_blank'>" + links["project_name"] + "</a>"
pn.pane.DataFrame(links, escape=False, width=800, index=False, render_links=True).servable()