Download sync/tools.py from lvwerra/self-plan: direct link, hf CLI and curl.
- Browser
- Download file 2.6 kB
-
https://huggingface.co/spaces/lvwerra/self-plan/resolve/main/sync/tools.py
- Command line
-
hf download hf://spaces/lvwerra/self-plan/sync/tools.py
-
curl -L -o tools.py https://huggingface.co/spaces/lvwerra/self-plan/resolve/main/sync/tools.py
2.6 kB
| import subprocess | |
| from pathlib import Path | |
| try: | |
| import httpx | |
| _http = httpx.Client(timeout=30, follow_redirects=True) | |
| except ImportError: | |
| _http = None | |
| def search(query: str) -> str: | |
| """Search the web and return relevant results.""" | |
| if _http is None: | |
| return ( | |
| f"[search stub for '{query}']: " | |
| f"install httpx for real search") | |
| resp = _http.get( | |
| "https://html.duckduckgo.com/html/", | |
| params={"q": query}) | |
| from html.parser import HTMLParser | |
| results = [] | |
| class DDGParser(HTMLParser): | |
| in_result = False | |
| current = "" | |
| def handle_starttag(self, tag, attrs): | |
| attrs = dict(attrs) | |
| if tag == "a" and "result__a" in attrs.get( | |
| "class", ""): | |
| self.in_result = True | |
| self.current = attrs.get("href", "") | |
| def handle_data(self, data): | |
| if self.in_result: | |
| results.append( | |
| f"{data.strip()} ({self.current})") | |
| self.in_result = False | |
| DDGParser().feed(resp.text) | |
| return "\n".join(results[:10]) or "No results found." | |
| def fetch(url: str) -> str: | |
| """Fetch a website URL and return its text content.""" | |
| if _http is None: | |
| return f"[fetch stub for {url}]: install httpx" | |
| resp = _http.get(url) | |
| text = resp.text | |
| if len(text) > 50000: | |
| text = text[:50000] + "\n... (truncated)" | |
| return text | |
| def read_file(path: str) -> str: | |
| """Read a file and return its contents.""" | |
| return Path(path).read_text() | |
| def write_file(path: str, content: str) -> str: | |
| """Write content to a file.""" | |
| Path(path).parent.mkdir(parents=True, exist_ok=True) | |
| Path(path).write_text(content) | |
| return f"Wrote {len(content)} bytes to {path}" | |
| def run_command(command: str) -> str: | |
| """Run a shell command and return stdout+stderr.""" | |
| result = subprocess.run( | |
| command, shell=True, | |
| capture_output=True, text=True, timeout=60) | |
| output = result.stdout | |
| if result.stderr: | |
| output += f"\nSTDERR: {result.stderr}" | |
| if result.returncode != 0: | |
| output += f"\nEXIT CODE: {result.returncode}" | |
| return output | |
| def bash(script: str) -> str: | |
| """Run a multi-line bash script.""" | |
| result = subprocess.run( | |
| ["bash", "-c", script], | |
| capture_output=True, text=True, timeout=300) | |
| output = result.stdout | |
| if result.stderr: | |
| output += f"\nSTDERR: {result.stderr}" | |
| if result.returncode != 0: | |
| output += f"\nEXIT CODE: {result.returncode}" | |
| return output | |