Spaces:
Runtime error
Runtime error
| import json | |
| import sys | |
| import os | |
| from typing import Dict | |
| LANGCHAIN_DIRS = [ | |
| "libs/core", | |
| "libs/text-splitters", | |
| "libs/langchain", | |
| "libs/community", | |
| "libs/experimental", | |
| ] | |
| if __name__ == "__main__": | |
| files = sys.argv[1:] | |
| dirs_to_run: Dict[str, set] = { | |
| "lint": set(), | |
| "test": set(), | |
| "extended-test": set(), | |
| } | |
| docs_edited = False | |
| if len(files) == 300: | |
| # max diff length is 300 files - there are likely files missing | |
| raise ValueError("Max diff reached. Please manually run CI on changed libs.") | |
| for file in files: | |
| if any( | |
| file.startswith(dir_) | |
| for dir_ in ( | |
| ".github/workflows", | |
| ".github/tools", | |
| ".github/actions", | |
| ".github/scripts/check_diff.py", | |
| ) | |
| ): | |
| # add all LANGCHAIN_DIRS for infra changes | |
| dirs_to_run["extended-test"].update(LANGCHAIN_DIRS) | |
| dirs_to_run["lint"].add(".") | |
| if any(file.startswith(dir_) for dir_ in LANGCHAIN_DIRS): | |
| # add that dir and all dirs after in LANGCHAIN_DIRS | |
| # for extended testing | |
| found = False | |
| for dir_ in LANGCHAIN_DIRS: | |
| if file.startswith(dir_): | |
| found = True | |
| if found: | |
| dirs_to_run["extended-test"].add(dir_) | |
| elif file.startswith("libs/standard-tests"): | |
| # TODO: update to include all packages that rely on standard-tests (all partner packages) | |
| # note: won't run on external repo partners | |
| dirs_to_run["lint"].add("libs/standard-tests") | |
| dirs_to_run["test"].add("libs/partners/mistralai") | |
| dirs_to_run["test"].add("libs/partners/openai") | |
| dirs_to_run["test"].add("libs/partners/anthropic") | |
| dirs_to_run["test"].add("libs/partners/ai21") | |
| dirs_to_run["test"].add("libs/partners/fireworks") | |
| dirs_to_run["test"].add("libs/partners/groq") | |
| elif file.startswith("libs/cli"): | |
| # todo: add cli makefile | |
| pass | |
| elif file.startswith("libs/partners"): | |
| partner_dir = file.split("/")[2] | |
| if os.path.isdir(f"libs/partners/{partner_dir}") and [ | |
| filename | |
| for filename in os.listdir(f"libs/partners/{partner_dir}") | |
| if not filename.startswith(".") | |
| ] != ["README.md"]: | |
| dirs_to_run["test"].add(f"libs/partners/{partner_dir}") | |
| # Skip if the directory was deleted or is just a tombstone readme | |
| elif file.startswith("libs/"): | |
| raise ValueError( | |
| f"Unknown lib: {file}. check_diff.py likely needs " | |
| "an update for this new library!" | |
| ) | |
| elif any(file.startswith(p) for p in ["docs/", "templates/", "cookbook/"]): | |
| if file.startswith("docs/"): | |
| docs_edited = True | |
| dirs_to_run["lint"].add(".") | |
| outputs = { | |
| "dirs-to-lint": list( | |
| dirs_to_run["lint"] | dirs_to_run["test"] | dirs_to_run["extended-test"] | |
| ), | |
| "dirs-to-test": list(dirs_to_run["test"] | dirs_to_run["extended-test"]), | |
| "dirs-to-extended-test": list(dirs_to_run["extended-test"]), | |
| "docs-edited": "true" if docs_edited else "", | |
| } | |
| for key, value in outputs.items(): | |
| json_output = json.dumps(value) | |
| print(f"{key}={json_output}") | |