Skip to content

Commit a1c1421

Browse files
cli: ensure the connection always get closed in github.py (#31914)
Thank you for contributing to LangChain! - [x] **PR title**: "package: description" - Where "package" is whichever of langchain, core, etc. is being modified. Use "docs: ..." for purely docs changes, "infra: ..." for CI changes. - Example: "core: add foobar LLM" - [x] **PR message**: ***Delete this entire checklist*** and replace with - **Description:** a description of the change - **Issue:** the issue # it fixes, if applicable - **Dependencies:** any dependencies required for this change - **Twitter handle:** if your PR gets announced, and you'd like a mention, we'll gladly shout you out! - [x] **Add tests and docs**: If you're adding a new integration, please include 1. a test for the integration, preferably unit tests that do not rely on network access, 2. an example notebook showing its use. It lives in `docs/docs/integrations` directory. - [x] **Lint and test**: Run `make format`, `make lint` and `make test` from the root of the package(s) you've modified. See contribution guidelines for more: https://python.langchain.com/docs/contributing/ Additional guidelines: - Make sure optional dependencies are imported within a function. - Please do not add dependencies to pyproject.toml files (even optional ones) unless they are required for unit tests. - Most PRs should not touch more than one package. - Changes should be backwards compatible. If no one reviews your PR within a few days, please @-mention one of baskaryan, eyurtsev, ccurme, vbarda, hwchase17.
1 parent 83d8be7 commit a1c1421

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

libs/cli/langchain_cli/utils/github.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,30 @@
33
from typing import Optional
44

55

6-
def list_packages(*, contains: Optional[str] = None):
6+
def list_packages(*, contains: Optional[str] = None) -> list[str]:
77
conn = http.client.HTTPSConnection("api.github.com")
8+
try:
9+
headers = {
10+
"Accept": "application/vnd.github+json",
11+
"X-GitHub-Api-Version": "2022-11-28",
12+
"User-Agent": "langchain-cli",
13+
}
814

9-
headers = {
10-
"Accept": "application/vnd.github+json",
11-
"X-GitHub-Api-Version": "2022-11-28",
12-
"User-Agent": "langchain-cli",
13-
}
15+
conn.request(
16+
"GET",
17+
"/repos/langchain-ai/langchain/contents/templates",
18+
headers=headers,
19+
)
20+
res = conn.getresponse()
1421

15-
conn.request(
16-
"GET",
17-
"/repos/langchain-ai/langchain/contents/templates",
18-
headers=headers,
19-
)
20-
res = conn.getresponse()
22+
res_str = res.read()
2123

22-
res_str = res.read()
23-
24-
data = json.loads(res_str)
25-
package_names = [
26-
p["name"] for p in data if p["type"] == "dir" and p["name"] != "docs"
27-
]
28-
return [p for p in package_names if contains in p] if contains else package_names
24+
data = json.loads(res_str)
25+
package_names = [
26+
p["name"] for p in data if p["type"] == "dir" and p["name"] != "docs"
27+
]
28+
return (
29+
[p for p in package_names if contains in p] if contains else package_names
30+
)
31+
finally:
32+
conn.close()

0 commit comments

Comments
 (0)