<gh_stars>1000+
import os
import sys
import requests


project = "networkx"
core = "core-developers"
emeritus = "emeritus-developers"
core_url = f"https://api.github.com/orgs/{project}/teams/{core}/members"
emeritus_url = f"https://api.github.com/orgs/{project}/teams/{emeritus}/members"


token = os.environ.get("GH_TOKEN", None)
if token is None:
    print(
        "No token found.  Please export a GH_TOKEN with permissions "
        "to read team members."
    )
    sys.exit(-1)


def api(url):
    json = requests.get(url=url, headers={"Authorization": f"token {token}"}).json()
    if "message" in json and json["message"] == "Bad credentials":
        raise RuntimeError("Invalid token provided")
    else:
        return json


resp = api(core_url)
core = sorted(resp, key=lambda user: user["login"].lower())

resp = api(emeritus_url)
emeritus = sorted(resp, key=lambda user: user["login"].lower())


def render_team(team):
    for member in team:
        profile = api(member["url"])

        print(
            f"""
.. raw:: html

   <div class="team-member">
     <a href="https://github.com/{member['login']}" class="team-member-name">
        <div class="team-member-photo">
           <img
             src="{member['avatar_url']}&s=40"
             loading="lazy"
             alt="Avatar picture of @{profile['login']}"
           />
        </div>
        {profile['name'] if profile['name'] else '@' + profile['login']}
     </a>
     <div class="team-member-handle">@{member['login']}</div>
   </div>
"""
        )


print(
    """
Core Developers
---------------

NetworkX development is guided by the following core team:

"""
)

render_team(core)

print(
    """

Emeritus Developers
-------------------

We thank these previously-active core developers for their contributions to NetworkX.

"""
)

render_team(emeritus)
