diff --git a/libs/cli/langchain_cli/utils/github.py b/libs/cli/langchain_cli/utils/github.py index 0c3ef3118d2..335de0062d2 100644 --- a/libs/cli/langchain_cli/utils/github.py +++ b/libs/cli/langchain_cli/utils/github.py @@ -3,26 +3,30 @@ import json from typing import Optional -def list_packages(*, contains: Optional[str] = None): +def list_packages(*, contains: Optional[str] = None) -> list[str]: conn = http.client.HTTPSConnection("api.github.com") + try: + headers = { + "Accept": "application/vnd.github+json", + "X-GitHub-Api-Version": "2022-11-28", + "User-Agent": "langchain-cli", + } - headers = { - "Accept": "application/vnd.github+json", - "X-GitHub-Api-Version": "2022-11-28", - "User-Agent": "langchain-cli", - } + conn.request( + "GET", + "/repos/langchain-ai/langchain/contents/templates", + headers=headers, + ) + res = conn.getresponse() - conn.request( - "GET", - "/repos/langchain-ai/langchain/contents/templates", - headers=headers, - ) - res = conn.getresponse() + res_str = res.read() - res_str = res.read() - - data = json.loads(res_str) - package_names = [ - p["name"] for p in data if p["type"] == "dir" and p["name"] != "docs" - ] - return [p for p in package_names if contains in p] if contains else package_names + data = json.loads(res_str) + package_names = [ + p["name"] for p in data if p["type"] == "dir" and p["name"] != "docs" + ] + return ( + [p for p in package_names if contains in p] if contains else package_names + ) + finally: + conn.close()