MCPcopy Create free account
hub / github.com/Kaggle/docker-python / KaggleAPIHandler

Class KaggleAPIHandler

tests/utils/kagglehub.py:13–46  ·  view source on GitHub ↗

Fake Kaggle API server supporting the download endpoint. Serving files under /input/tests/data/kagglehub.

Source from the content-addressed store, hash-verified

11from kagglesdk.kaggle_env import get_endpoint, get_env
12
13class KaggleAPIHandler(BaseHTTPRequestHandler):
14 """
15 Fake Kaggle API server supporting the download endpoint.
16 Serving files under /input/tests/data/kagglehub.
17 """
18 def do_HEAD(self):
19 self.send_response(200)
20
21 def do_POST(self):
22 content_length = int(self.headers.get('Content-Length', 0))
23 body_bytes = self.rfile.read(content_length)
24 request_body = json.loads(body_bytes.decode('utf-8'))
25
26 if self.path != "/api/v1/models.ModelApiService/DownloadModelInstanceVersion":
27 self.send_response(404)
28 self.wfile.write(bytes(f"Unhandled path: {self.path}", "utf-8"))
29 return
30
31 model_handle = f"{request_body["ownerSlug"]}/{request_body["modelSlug"]}/keras/{request_body["instanceSlug"]}/{request_body["versionNumber"]}"
32 path = request_body["path"]
33 filepath = f"/input/tests/data/kagglehub/models/{model_handle}/{path}"
34 if not os.path.isfile(filepath):
35 self.send_error(404, "Internet is disabled in our tests "
36 "kagglehub uses a fake API server. "
37 f"Use `kagglehub.model_download('{model_handle}', path='{path}')` to download the missing file "
38 f"and copy it to `./docker-python/tests/data/kagglehub/models/{model_handle}/{path}`.")
39 return
40
41 with open(filepath, "rb") as f:
42 self.send_response(200)
43 self.send_header("Content-type", "application/octet-stream")
44 self.send_header("Content-Length", os.path.getsize(filepath))
45 self.end_headers()
46 self.wfile.write(f.read())
47
48@contextmanager
49def create_test_kagglehub_server():

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected