kaggle 2.2.4__tar.gz → 2.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. {kaggle-2.2.4 → kaggle-2.2.5}/CHANGELOG.md +40 -0
  2. {kaggle-2.2.4 → kaggle-2.2.5}/PKG-INFO +4 -3
  3. {kaggle-2.2.4 → kaggle-2.2.5}/docs/README.md +30 -3
  4. {kaggle-2.2.4 → kaggle-2.2.5}/docs/benchmarks.md +36 -2
  5. {kaggle-2.2.4 → kaggle-2.2.5}/docs/competition_creation.md +56 -2
  6. {kaggle-2.2.4 → kaggle-2.2.5}/docs/competitions.md +107 -1
  7. {kaggle-2.2.4 → kaggle-2.2.5}/docs/datasets.md +14 -2
  8. {kaggle-2.2.4 → kaggle-2.2.5}/docs/index.rst +1 -0
  9. {kaggle-2.2.4 → kaggle-2.2.5}/docs/kernels.md +21 -12
  10. {kaggle-2.2.4 → kaggle-2.2.5}/docs/kernels_metadata.md +1 -1
  11. kaggle-2.2.5/docs/search.md +76 -0
  12. {kaggle-2.2.4 → kaggle-2.2.5}/pyproject.toml +3 -1
  13. {kaggle-2.2.4 → kaggle-2.2.5}/requirements.lock +6 -3
  14. {kaggle-2.2.4 → kaggle-2.2.5}/skills/SKILL.md +3 -1
  15. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/auth.md +7 -4
  16. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/competitions.md +31 -3
  17. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/datasets.md +3 -2
  18. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/kernels.md +13 -3
  19. kaggle-2.2.5/skills/references/search.md +65 -0
  20. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/__init__.py +1 -1
  21. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/api/kaggle_api_extended.py +1108 -157
  22. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/cli.py +216 -7
  23. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/models/kaggle_models_extended.py +13 -4
  24. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/conftest.py +2 -0
  25. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_benchmarks_leaderboard.py +70 -3
  26. kaggle-2.2.5/tests/unit/test_benchmarks_quota.py +177 -0
  27. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_benchmarks.py +19 -0
  28. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_competitions.py +46 -0
  29. kaggle-2.2.5/tests/unit/test_cli_errors.py +141 -0
  30. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_kernels.py +10 -2
  31. kaggle-2.2.5/tests/unit/test_cli_search.py +64 -0
  32. kaggle-2.2.5/tests/unit/test_competition_add_host.py +139 -0
  33. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_settings_update.py +16 -0
  34. kaggle-2.2.5/tests/unit/test_competition_submission_download.py +112 -0
  35. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_submit.py +196 -8
  36. kaggle-2.2.5/tests/unit/test_competition_submit_wait.py +426 -0
  37. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_dataset_create.py +92 -2
  38. kaggle-2.2.5/tests/unit/test_dataset_delete.py +111 -0
  39. kaggle-2.2.5/tests/unit/test_download_file_paths.py +186 -0
  40. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_download_resume.py +38 -0
  41. kaggle-2.2.5/tests/unit/test_download_unzip.py +378 -0
  42. kaggle-2.2.5/tests/unit/test_kernel_delete.py +73 -0
  43. kaggle-2.2.5/tests/unit/test_kernel_versions.py +178 -0
  44. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_kernels_logs.py +69 -1
  45. kaggle-2.2.5/tests/unit/test_kernels_output_download.py +120 -0
  46. kaggle-2.2.5/tests/unit/test_kernels_output_paths.py +83 -0
  47. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_kernels_pull.py +22 -7
  48. kaggle-2.2.5/tests/unit/test_kernels_push_no_run.py +153 -0
  49. kaggle-2.2.5/tests/unit/test_kernels_push_retired_accelerator.py +154 -0
  50. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_model_create.py +87 -1
  51. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_model_download.py +27 -0
  52. kaggle-2.2.5/tests/unit/test_parse_duration.py +62 -0
  53. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_quota.py +33 -0
  54. kaggle-2.2.5/tests/unit/test_search.py +362 -0
  55. kaggle-2.2.5/tests/unit/test_tar_extraction_safety.py +110 -0
  56. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_upload_helpers.py +279 -10
  57. kaggle-2.2.5/tools/cicd/Dockerfile +13 -0
  58. kaggle-2.2.5/tools/releases/requirements.in +1 -0
  59. {kaggle-2.2.4 → kaggle-2.2.5}/tools/releases/requirements.txt +67 -120
  60. kaggle-2.2.4/tests/unit/test_dataset_delete.py +0 -64
  61. kaggle-2.2.4/tools/cicd/Dockerfile +0 -12
  62. kaggle-2.2.4/tools/releases/requirements.in +0 -2
  63. {kaggle-2.2.4 → kaggle-2.2.5}/.gcloudignore +0 -0
  64. {kaggle-2.2.4 → kaggle-2.2.5}/.gitignore +0 -0
  65. {kaggle-2.2.4 → kaggle-2.2.5}/CONTRIBUTING.md +0 -0
  66. {kaggle-2.2.4 → kaggle-2.2.5}/Dockerfile +0 -0
  67. {kaggle-2.2.4 → kaggle-2.2.5}/GEMINI.md +0 -0
  68. {kaggle-2.2.4 → kaggle-2.2.5}/LICENSE.txt +0 -0
  69. {kaggle-2.2.4 → kaggle-2.2.5}/README.md +0 -0
  70. {kaggle-2.2.4 → kaggle-2.2.5}/SECURITY.md +0 -0
  71. {kaggle-2.2.4 → kaggle-2.2.5}/docker-hatch +0 -0
  72. {kaggle-2.2.4 → kaggle-2.2.5}/docs/Makefile +0 -0
  73. {kaggle-2.2.4 → kaggle-2.2.5}/docs/conf.py +0 -0
  74. {kaggle-2.2.4 → kaggle-2.2.5}/docs/configuration.md +0 -0
  75. {kaggle-2.2.4 → kaggle-2.2.5}/docs/datasets_metadata.md +0 -0
  76. {kaggle-2.2.4 → kaggle-2.2.5}/docs/forums.md +0 -0
  77. {kaggle-2.2.4 → kaggle-2.2.5}/docs/make.bat +0 -0
  78. {kaggle-2.2.4 → kaggle-2.2.5}/docs/model_variations.md +0 -0
  79. {kaggle-2.2.4 → kaggle-2.2.5}/docs/model_variations_versions.md +0 -0
  80. {kaggle-2.2.4 → kaggle-2.2.5}/docs/models.md +0 -0
  81. {kaggle-2.2.4 → kaggle-2.2.5}/docs/models_metadata.md +0 -0
  82. {kaggle-2.2.4 → kaggle-2.2.5}/docs/output_format.md +0 -0
  83. {kaggle-2.2.4 → kaggle-2.2.5}/docs/simulation_competitions.md +0 -0
  84. {kaggle-2.2.4 → kaggle-2.2.5}/docs/tutorials.md +0 -0
  85. {kaggle-2.2.4 → kaggle-2.2.5}/requirements-lint.in +0 -0
  86. {kaggle-2.2.4 → kaggle-2.2.5}/requirements-lint.lock +0 -0
  87. {kaggle-2.2.4 → kaggle-2.2.5}/requirements-test.in +0 -0
  88. {kaggle-2.2.4 → kaggle-2.2.5}/requirements-test.lock +0 -0
  89. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/benchmarks.md +0 -0
  90. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/configuration.md +0 -0
  91. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/files.md +0 -0
  92. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/forums.md +0 -0
  93. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/model_variations.md +0 -0
  94. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/model_variations_versions.md +0 -0
  95. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/models.md +0 -0
  96. {kaggle-2.2.4 → kaggle-2.2.5}/skills/references/quota.md +0 -0
  97. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/LICENSE +0 -0
  98. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/__main__.py +0 -0
  99. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/api/__init__.py +0 -0
  100. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/models/__init__.py +0 -0
  101. {kaggle-2.2.4 → kaggle-2.2.5}/src/kaggle/models/upload_file.py +0 -0
  102. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/backend_tests.py +0 -0
  103. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/dataset/data.csv +0 -0
  104. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/kernel/testing-x.ipynb +0 -0
  105. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/model/instance/data.csv +0 -0
  106. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/model/instance/version/metadata.json +0 -0
  107. {kaggle-2.2.4 → kaggle-2.2.5}/tests/backend/sample_submission.csv +0 -0
  108. {kaggle-2.2.4 → kaggle-2.2.5}/tests/integration/test_models.py +0 -0
  109. {kaggle-2.2.4 → kaggle-2.2.5}/tests/run_tests.sh +0 -0
  110. {kaggle-2.2.4 → kaggle-2.2.5}/tests/test_commands.sh +0 -0
  111. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_authenticate.py +0 -0
  112. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_benchmarks_cli.py +0 -0
  113. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_commands.py +0 -0
  114. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_datasets.py +0 -0
  115. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_forums.py +0 -0
  116. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_main.py +0 -0
  117. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_models.py +0 -0
  118. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_cli_pagination.py +0 -0
  119. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_create.py +0 -0
  120. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_create_page.py +0 -0
  121. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_create_solution.py +0 -0
  122. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_data_update.py +0 -0
  123. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_delete_page.py +0 -0
  124. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_launch.py +0 -0
  125. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_list_hosts.py +0 -0
  126. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_settings_get.py +0 -0
  127. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_solution_status.py +0 -0
  128. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_submission_limits.py +0 -0
  129. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competition_update_page.py +0 -0
  130. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_competitions_list.py +0 -0
  131. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_dataset_download.py +0 -0
  132. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_dataset_list.py +0 -0
  133. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_dataset_metadata_update.py +0 -0
  134. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_dataset_status.py +0 -0
  135. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_discussions_cli.py +0 -0
  136. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_help_version_auth.py +0 -0
  137. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_http_client.py +0 -0
  138. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_ignore_patterns.py +0 -0
  139. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_kernel_parsing.py +0 -0
  140. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_kernels_push.py +0 -0
  141. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_model_delete.py +0 -0
  142. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_model_list.py +0 -0
  143. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_retry_after.py +0 -0
  144. {kaggle-2.2.4 → kaggle-2.2.5}/tests/unit/test_team_submissions.py +0 -0
  145. {kaggle-2.2.4 → kaggle-2.2.5}/tools/cicd/cloudbuild.yaml +0 -0
  146. {kaggle-2.2.4 → kaggle-2.2.5}/tools/cicd/integration-tests.yaml +0 -0
  147. {kaggle-2.2.4 → kaggle-2.2.5}/tools/releases/Dockerfile +0 -0
  148. {kaggle-2.2.4 → kaggle-2.2.5}/tools/releases/cloudbuild.yaml +0 -0
  149. {kaggle-2.2.4 → kaggle-2.2.5}/tools/use-localhost.sh +0 -0
  150. {kaggle-2.2.4 → kaggle-2.2.5}/tools/use-prod.sh +0 -0
@@ -3,6 +3,46 @@ Changelog
3
3
 
4
4
  ### Next
5
5
 
6
+ ### 2.2.5
7
+
8
+ * Require `certifi >= 2026.10.19`, which drops the compromised emSign/eMudhra root CAs ([GHSA-6q48-6c7w-9gw2](https://github.com/certifi/python-certifi/security/advisories/GHSA-6q48-6c7w-9gw2)). `kaggle` only pulled in certifi through `requests`, which sets no minimum, so an existing install could keep a certifi that would accept a forged kaggle.com certificate and leak the user's API token to a man-in-the-middle
9
+ * Reject kernel version numbers in `kaggle kernels delete` instead of failing with a `ValueError` when a version is included in `<owner>/<kernel>/<version>`
10
+ * Report a 404 from `kaggle competitions submit` with a competition-specific hint on stderr, naming the notebook and version for code submissions. The check never matched a 404, so users got the generic `<owner>/<slug>` hint instead
11
+ * Exit non-zero from `kaggle competitions submit` when the submission file upload fails. It printed "Could not submit to competition" and exited 0, so scripts treated the failed submission as a success
12
+ * Include the UTC offset (`+00:00`) in `refreshAt` timestamps displayed by `kaggle quota`
13
+ * Recommend installing with `pipx` or `uv` and add troubleshooting guidance for `externally-managed-environment` errors in the installation docs
14
+ * Stream `kaggle kernels output` files to disk through the same download path as datasets and competitions, with a read timeout, a size check, and resume after a dropped connection. Each file used to be read into memory whole, so a 512 MiB output took about 1.2 GB of RAM, and a dropped connection failed the command and left an empty file behind
15
+ * Honor the version in `<owner>/<kernel>/<version>` for `kaggle kernels pull`, `output`, `status`, `files` and `logs`, which previously returned 403 for `pull` and acted on the latest version for the others
16
+ * Clarify in `--accelerator` help and kernels docs that `NvidiaTeslaT4` maps to GPU T4 x2 and `TpuV5E8` maps to TPU v5e-8
17
+ * Reject dataset version numbers in `kaggle datasets delete` to prevent unintentionally deleting an entire dataset when targeting a single version
18
+ * Show why a submission failed in `kaggle competitions submission <ref>`, which already comes back in the API response but was not displayed
19
+ * Honor `-k/--kernel` in `kaggle kernels pull`, which was ignored when the positional kernel argument was omitted, causing the CLI to fall back to the local `kernel-metadata.json` and pull a different kernel
20
+ * Refuse to write a `kaggle kernels output` file whose server-supplied name resolves outside the requested `--path` directory
21
+ * Add `--no-run` to `kaggle kernels push` to save a new version without executing the notebook, the equivalent of Quick Save in the web UI
22
+ * Honor `--unzip` when downloading a single file with `kaggle datasets download -f`, which extracts the file from the zip archive the server wraps large files in, and add `--unzip` to `kaggle competitions download`
23
+ * Fix misleading validation error messages in `kaggle competitions submit` when `--kernel`, `--version`, or `--file` is missing for a code competition submission
24
+ * Keep the requested folder when downloading a single file with `kaggle datasets download -f` or `kaggle competitions download -f`, instead of writing it to the download root
25
+ * Report `slug` instead of `title` in the `kaggle datasets create` error message when the requested slug is already in use
26
+ * Prevent HTTP errors during resumed `Range` downloads from overwriting existing partial download files
27
+ * Check the HTTP status when downloading `kaggle kernels output` files so error responses are not saved as output files
28
+ * Add `kaggle competitions host-add <comp> -u <user>` to grant host access on a competition to a Kaggle user
29
+ * Suggest a next step on 403/404/429/5xx API errors, report unexpected errors as bugs instead of a traceback (with a new `--debug` flag), and list common examples in `kaggle --help`
30
+ * Guard tar extraction in `kaggle models instances versions download --untar` against path traversal
31
+ * Store resumable upload state in a private per-user directory (`0700`) and verify directory ownership and permissions before use
32
+ * Add `kaggle benchmarks quota` to show Model Proxy (AI inference) spend quota, and bump `kagglesdk` to `>= 0.1.38`
33
+ * Honor `--untar` in `kaggle models instances versions download` when the archive is already cached locally
34
+ * Write kernel log files using UTF-8 in `kaggle kernels output` to avoid `UnicodeEncodeError` on Windows
35
+ * Exclude omitted `overview` and `usage` fields from the update mask when updating a model instance
36
+ * Add `kaggle competitions submission-download <id>` to download the submitted file for a single submission (requires `kagglesdk >= 0.1.36`)
37
+ * Add `deadline` (Competition Deadline) to the competition settings command and bump `kagglesdk` to `>= 0.1.36`
38
+ * Warn when `kaggle kernels push` requests a retired accelerator (`NvidiaTeslaP100`, `TpuV38`, `Tpu1VmV38`, `TpuV232` or `TpuV2256`), since the server runs the session on a replacement instead. Drop the retired shapes from the docs
39
+ * Abort dataset, model version, and competition data uploads when a file upload fails instead of skipping the failed file and creating a partial upload
40
+ * Use GitHub alerts and fix the `LLMS_AVAILABLE` token reference in the benchmarks documentation
41
+ * Add unified `kaggle search` command across competitions, datasets, notebooks, models, users, and discussions
42
+ * Parse duration suffixes (`s`, `m`, `h`, `d`, `w`) in `kaggle auth print-access-token --expiration` instead of raising a `TypeError`
43
+ * Add `--wait`/`--poll-interval` to `kaggle competitions submit` to wait for scoring, and add `kaggle competitions submission <ref>` to look up a single submission's status and score
44
+ * Show `N/A` instead of `Fail` in `kaggle benchmarks leaderboard` for a task result the server returned without a pass/fail or numeric score, which was reported as a failed task
45
+
6
46
  ### 2.2.4
7
47
 
8
48
  * fix(benchmarks): support owner/task separator in benchmark commands (#1146)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: kaggle
3
- Version: 2.2.4
3
+ Version: 2.2.5
4
4
  Summary: Access Kaggle resources anywhere
5
5
  Project-URL: Homepage, https://github.com/Kaggle/kaggle-cli
6
6
  Project-URL: Issues, https://github.com/Kaggle/kaggle-cli/issues
@@ -213,8 +213,9 @@ Classifier: Operating System :: OS Independent
213
213
  Classifier: Programming Language :: Python :: 3
214
214
  Requires-Python: >=3.11
215
215
  Requires-Dist: bleach
216
+ Requires-Dist: certifi>=2026.10.19
216
217
  Requires-Dist: jupytext
217
- Requires-Dist: kagglesdk<1.0,>=0.1.35
218
+ Requires-Dist: kagglesdk<1.0,>=0.1.38
218
219
  Requires-Dist: packaging
219
220
  Requires-Dist: protobuf
220
221
  Requires-Dist: python-dateutil
@@ -4,15 +4,42 @@ Welcome to the Kaggle CLI documentation. This guide provides detailed informatio
4
4
 
5
5
  ## Installation
6
6
 
7
- Note: Ensure you have Python 3.11+ and the package manager `pip` installed.
7
+ Note: Ensure you have Python 3.11+.
8
8
 
9
- Install the `kaggle` package with [pip](https://pypi.org/project/pip/):
9
+ Recommended: install with [pipx](https://pipx.pypa.io/) or [uv](https://docs.astral.sh/uv/),
10
+ which installs the CLI in an isolated environment and works on all platforms:
11
+
12
+ ```sh
13
+ pipx install kaggle
14
+ # or
15
+ uv tool install kaggle
16
+ ```
17
+
18
+ ### Alternative: pip
19
+
20
+ You can also install the package with [pip](https://pypi.org/project/pip/):
10
21
 
11
22
  ```sh
12
23
  pip install kaggle
13
24
  ```
14
25
 
15
- If you run into a `Command kaggle not found` error, ensure that your Python executable scripts are in your $PATH. For a local user install on Linux, the default location is `~/.local/bin`. On Windows, the default location is `$PYTHON_HOME/Scripts`.
26
+ ### Troubleshooting
27
+
28
+ If you see `error: externally-managed-environment`, your operating system protects its
29
+ system Python (this is the default on recent Debian and Ubuntu releases, among others).
30
+ Use pipx or uv as described above. If that is not an option, you can override the
31
+ protection with `--break-system-packages`:
32
+
33
+ ```sh
34
+ pip install --break-system-packages kaggle
35
+ ```
36
+
37
+ Note: this installs the package into the system Python and may conflict with packages
38
+ managed by your OS.
39
+
40
+ If you run into a `Command kaggle not found` error, ensure that your Python executable
41
+ scripts are in your $PATH. For a local user install on Linux, the default location is
42
+ `~/.local/bin`. On Windows, the default location is `$PYTHON_HOME/Scripts`.
16
43
 
17
44
  ## Authentication
18
45
 
@@ -6,6 +6,7 @@ The top-level command is `kaggle benchmarks` (alias: `kaggle b`), which has the
6
6
 
7
7
  * **`auth`** — Fetch Model Proxy credentials.
8
8
  * **`init`** — Fetch credentials and default environment variables for local development.
9
+ * **`quota`** — Show your Model Proxy (AI inference) spend quota.
9
10
  * **`leaderboard`** — Get benchmark leaderboard information.
10
11
  * **`tasks`** (alias: `t`) — Manage benchmark tasks (push, run, list, status, download, log, models, delete, publish).
11
12
  * **`topics`** — Browse discussion topics for a benchmark.
@@ -79,7 +80,8 @@ In addition to the three credential variables written by `auth`, `init` also wri
79
80
  * `LLM_DEFAULT_EVAL` — Default model slug for evaluation.
80
81
  * `LLMS_AVAILABLE` — Comma-separated list of available model slugs.
81
82
 
82
- > **Note:** `LLMS_AVAILABLE` is a curated subset of models intended for local development and testing — it is **not** the full set of available models, and the Model Proxy token itself is not restricted to these models. To see all available models, use `kaggle benchmarks tasks models`. To run a task against any model (including those not in `LLMS_AVAILABLE`), use `kaggle benchmarks tasks run`, which executes on Kaggle's infrastructure with access to the full model catalog.
83
+ > [!WARNING]
84
+ > `LLMS_AVAILABLE` is a curated subset of models intended for local development and testing — it is **not** the full set of available models, and the Model Proxy token minted for local development **is** restricted to these models. To see all available models, use `kaggle benchmarks tasks models`. To run a task against any model (including those not in `LLMS_AVAILABLE`), use `kaggle benchmarks tasks run`, which executes on Kaggle's infrastructure with access to the full model catalog.
83
85
 
84
86
  `init` also creates two files alongside the example file:
85
87
 
@@ -90,6 +92,37 @@ If either file already exists, it is skipped without overwriting.
90
92
 
91
93
  ---
92
94
 
95
+ ## `kaggle benchmarks quota`
96
+
97
+ Shows your current Model Proxy (AI inference) spend quota, one row per refill period.
98
+
99
+ **Usage:**
100
+
101
+ ```bash
102
+ kaggle benchmarks quota [options]
103
+ ```
104
+
105
+ **Options:**
106
+
107
+ * `-v, --csv`: Print results in CSV format.
108
+ * `--format <FORMAT>`: Print results in the selected format (`csv`, `table`, `json`).
109
+
110
+ **Example:**
111
+
112
+ ```bash
113
+ $ kaggle b quota
114
+ period used remaining total refillAt
115
+ ------- ------ --------- ------- -------------------------
116
+ Daily $1.20 $3.80 $5.00 2026-08-08T00:00:00+00:00
117
+ Monthly $14.50 $85.50 $100.00 2026-09-01T00:00:00+00:00
118
+ ```
119
+
120
+ **Purpose:**
121
+
122
+ Amounts are in USD and reflect inference spend through the Model Proxy — this is separate from the top-level `kaggle quota` command, which reports weekly GPU and TPU accelerator *hours*. `remaining` is derived as `total - used` and is clamped at `$0.00`, so an overage shows as zero remaining rather than a negative balance.
123
+
124
+ ---
125
+
93
126
  ## `kaggle benchmarks leaderboard`
94
127
 
95
128
  Get benchmark leaderboard information.
@@ -217,7 +250,8 @@ kaggle benchmarks tasks push <TASK> -f <FILE> [options]
217
250
 
218
251
  This command reads a `.py` file, converts it to a Jupyter notebook format, and uploads it to Kaggle as a benchmark task. If a task with the same slug already exists, a new version is created. The file is validated to ensure it contains a `@task` decorator matching the given task name.
219
252
 
220
- **Note on dataset attachment:** When `--kaggle-dataset` / `-d` is specified, the listed datasets are attached to the task's underlying notebook kernel. During execution, they are accessible at `/kaggle/input/<dataset-slug>/` by default, falling back to `/kaggle/input/<owner>/<dataset-slug>/` in the event of a naming conflict. If you re-push without `-d`, all previously-attached datasets are detached (a warning is printed). To preserve datasets across pushes, re-specify them each time. If any specified dataset is invalid, non-existent, or inaccessible, the push command will **fail** with an error: `Failed to push task: Failed to attach the following data sources (not found or inaccessible): <dataset>`.
253
+ > [!NOTE]
254
+ > **On dataset attachment:** When `--kaggle-dataset` / `-d` is specified, the listed datasets are attached to the task's underlying notebook kernel. During execution, they are accessible at `/kaggle/input/<dataset-slug>/` by default, falling back to `/kaggle/input/<owner>/<dataset-slug>/` in the event of a naming conflict. If you re-push without `-d`, all previously-attached datasets are detached (a warning is printed). To preserve datasets across pushes, re-specify them each time. If any specified dataset is invalid, non-existent, or inaccessible, the push command will **fail** with an error: `Failed to push task: Failed to attach the following data sources (not found or inaccessible): <dataset>`.
221
255
 
222
256
  ---
223
257
 
@@ -7,6 +7,7 @@ public competition-creation API endpoints (kagglesdk 0.1.31+):
7
7
  - [`kaggle competitions create`](#kaggle-competitions-create)
8
8
  - [`kaggle competitions pages create`](#kaggle-competitions-pages-create)
9
9
  - [`kaggle competitions hosts`](#kaggle-competitions-hosts)
10
+ - [`kaggle competitions host-add`](#kaggle-competitions-host-add)
10
11
  - [`kaggle competitions settings get`](#kaggle-competitions-settings-get)
11
12
  - [`kaggle competitions settings update`](#kaggle-competitions-settings-update)
12
13
  - [`kaggle competitions data update`](#kaggle-competitions-data-update)
@@ -358,6 +359,47 @@ Output columns: `userName`, `displayName`, `id`, `profileUrl`.
358
359
 
359
360
  ---
360
361
 
362
+ ## `kaggle competitions host-add`
363
+
364
+ Grants host access on a competition you host to another Kaggle user. Hosts can
365
+ edit settings, upload data, and launch the competition, so you are asked to
366
+ confirm before the change is made.
367
+
368
+ **Usage:**
369
+
370
+ ```bash
371
+ kaggle competitions host-add <competition> -u <user> [-y]
372
+ ```
373
+
374
+ **Arguments:**
375
+
376
+ - `<competition>`: The competition slug.
377
+
378
+ **Options:**
379
+
380
+ - `-u, --user <USER>`: Kaggle user name (URL slug, e.g. `kerneler`) of the user
381
+ to add as a host. Required.
382
+ - `-y, --yes`: Skip the confirmation prompt.
383
+ - `-q, --quiet`: Suppress the "Using competition" message.
384
+
385
+ **Examples:**
386
+
387
+ ```bash
388
+ # Prompts for confirmation before granting access.
389
+ kaggle competitions host-add my-comp -u alice
390
+
391
+ # Skip the prompt (for scripts).
392
+ kaggle competitions host-add my-comp -u alice -y
393
+ ```
394
+
395
+ Verify the result with `kaggle competitions hosts my-comp`.
396
+
397
+ > **Note:** This command is named `host-add` rather than `hosts add` because
398
+ > `hosts` takes the competition as a positional argument, and argparse cannot
399
+ > distinguish a competition slug from a subcommand name.
400
+
401
+ ---
402
+
361
403
  ## `kaggle competitions settings get`
362
404
 
363
405
  Shows the unified settings blob for a competition you host — the same set of
@@ -437,13 +479,25 @@ Toggle a single boolean:
437
479
  kaggle competitions settings update my-comp -f ./disable-leaderboard.json
438
480
  ```
439
481
 
440
- Bump the code-competition runtime caps and set the team-merger deadline
441
- (YAML, mixing types):
482
+ Set the competition deadline:
483
+
484
+ ```json
485
+ // deadline.json
486
+ { "deadline": "2027-02-01T23:59:00Z" }
487
+ ```
488
+
489
+ ```bash
490
+ kaggle competitions settings update my-comp -f ./deadline.json
491
+ ```
492
+
493
+ Bump the code-competition runtime caps and set the competition and team-merger
494
+ deadlines (YAML, mixing types):
442
495
 
443
496
  ```yaml
444
497
  # tune.yaml
445
498
  max_cpu_runtime_minutes: 540
446
499
  max_gpu_runtime_minutes: 720
500
+ deadline: 2027-02-01T23:59:00Z
447
501
  team_merger_explicit_deadline: 2027-01-15T00:00:00Z
448
502
  rules_required: true
449
503
  ```
@@ -99,9 +99,10 @@ kaggle competitions download <COMPETITION> [options]
99
99
 
100
100
  **Options:**
101
101
 
102
- * `-f, --file <FILE_NAME>`: Specific file to download (downloads all if not specified).
102
+ * `-f, --file <FILE_NAME>`: Specific file to download (downloads all if not specified). A file inside a folder, such as `train/labels.csv`, keeps that folder under the download path.
103
103
  * `-p, --path <PATH>`: Folder to download files to (defaults to current directory).
104
104
  * `-w, --wp`: Download files to the current working path (equivalent to `-p .`).
105
+ * `--unzip`: Unzip the downloaded file (deletes the .zip file afterwards).
105
106
  * `-o, --force`: Force download, overwriting existing files.
106
107
  * `-q, --quiet`: Suppress verbose output.
107
108
 
@@ -119,6 +120,18 @@ kaggle competitions download <COMPETITION> [options]
119
120
  kaggle competitions download titanic -f test.csv -p tost
120
121
  ```
121
122
 
123
+ 3. Download a file that lives in a folder inside the competition data. The file is written to `data/kaggle_evaluation/rsna_gateway.py`:
124
+
125
+ ```bash
126
+ kaggle competitions download rsna-intracranial-aneurysm-detection -f kaggle_evaluation/rsna_gateway.py -p data
127
+ ```
128
+
129
+ 4. Download all files for the "titanic" competition into `data` and extract them, leaving no zip behind:
130
+
131
+ ```bash
132
+ kaggle competitions download titanic -p data --unzip
133
+ ```
134
+
122
135
  **Purpose:**
123
136
 
124
137
  This command allows you to get the necessary data files for a competition onto your local machine.
@@ -145,6 +158,10 @@ kaggle competitions submit <COMPETITION> -f <FILE_NAME> -m <MESSAGE> [options]
145
158
  * `-v, --version <VERSION>`: Version of the kernel to submit (e.g. `2`).
146
159
  * `-q, --quiet`: Suppress verbose output.
147
160
  * `--sandbox`: Mark submission as a sandbox submission (competition hosts/admins only).
161
+ * `--wait [SECONDS]`: Wait for the submission to finish scoring, printing the public score when done. Optionally pass a timeout in seconds (`0` or no value = wait up to 12 hours, the maximum notebook runtime). Exits non-zero if scoring fails or the timeout is reached.
162
+ * `--poll-interval <SECONDS>`: Maximum seconds between status polls while waiting (default: `60`, minimum: `5`). Polling starts at 5s and increases automatically.
163
+
164
+ On a successful submission the command prints the numeric submission ref, e.g. `Submission ref: 12345678`. You can look that submission up later with [`kaggle competitions submission`](#kaggle-competitions-submission).
148
165
 
149
166
  **Example: Standard (not code) competition:**
150
167
 
@@ -162,10 +179,67 @@ Submit the `submission.csv` produced by version `3` of your `<YOUR_USERNAME>/rsn
162
179
  kaggle competitions submit rsna-2024-lumbar-spine-degenerative-classification -f submission.csv -k <YOUR_USERNAME>/rsna-submission -v 3 -m "Test message"
163
180
  ```
164
181
 
182
+ **Example: Submit and wait for the score (useful in CI):**
183
+
184
+ Submit and block until scoring finishes (up to a 10-minute timeout), then print the public score:
185
+
186
+ ```bash
187
+ kaggle competitions submit house-prices-advanced-regression-techniques -f sample_submission.csv -m "CI run" --wait 600
188
+ ```
189
+
190
+ The command exits `0` once the submission is scored and non-zero if scoring fails or the timeout is reached, so it can gate a pipeline.
191
+
165
192
  **Purpose:**
166
193
 
167
194
  Use this command to upload your predictions or code to a competition for scoring.
168
195
 
196
+ ## `kaggle competitions submission`
197
+
198
+ Shows the status and score of a single submission by its numeric ref (as printed by `kaggle competitions submit`). When a submission failed to score, the reason is shown as well.
199
+
200
+ **Usage:**
201
+
202
+ ```bash
203
+ kaggle competitions submission <SUBMISSION_REF>
204
+ ```
205
+
206
+ **Arguments:**
207
+
208
+ * `<SUBMISSION_REF>`: The numeric submission ref printed by `kaggle competitions submit`.
209
+
210
+ **Example:**
211
+
212
+ ```bash
213
+ kaggle competitions submission 12345678
214
+ ```
215
+
216
+ Output:
217
+
218
+ ```
219
+ Submission Ref: 12345678
220
+ Status: COMPLETE
221
+ Public Score: 0.98765
222
+ Private Score:
223
+ Description: Test message
224
+ Submission Date: 2026-07-19 12:00:00
225
+ ```
226
+
227
+ A submission that failed to score also reports why:
228
+
229
+ ```
230
+ Submission Ref: 12345679
231
+ Status: ERROR
232
+ Error: Evaluation Exception: Submission must have 418 rows
233
+ Public Score:
234
+ Private Score:
235
+ Description: Test message
236
+ Submission Date: 2026-07-19 12:00:00
237
+ ```
238
+
239
+ **Purpose:**
240
+
241
+ Use this command to check whether a submission has finished scoring and to read its public score — for example, after submitting without `--wait`, or from a script polling for results.
242
+
169
243
  ## `kaggle competitions submissions`
170
244
 
171
245
  Shows your past submissions for a competition.
@@ -197,6 +271,38 @@ kaggle competitions submissions house-prices-advanced-regression-techniques -v -
197
271
 
198
272
  This command allows you to review your previous submission attempts and their scores.
199
273
 
274
+ ## `kaggle competitions submission-download`
275
+
276
+ Downloads the submitted file for a single submission by its numeric id.
277
+
278
+ **Usage:**
279
+
280
+ ```bash
281
+ kaggle competitions submission-download <SUBMISSION_ID> [options]
282
+ ```
283
+
284
+ **Arguments:**
285
+
286
+ * `<SUBMISSION_ID>`: The numeric submission id printed by `kaggle competitions submit`, or listed by `kaggle competitions submissions <COMPETITION>`.
287
+
288
+ **Options:**
289
+
290
+ * `-p, --path <PATH>`: Folder to download the file to. Defaults to the current working directory's Kaggle download location.
291
+ * `-o, --force`: Download even if a local copy already exists (skips the up-to-date check).
292
+ * `-q, --quiet`: Suppress verbose output.
293
+
294
+ **Example:**
295
+
296
+ Download the file for submission `12345678` into `./subs`:
297
+
298
+ ```bash
299
+ kaggle competitions submission-download 12345678 -p ./subs
300
+ ```
301
+
302
+ **Purpose:**
303
+
304
+ Use this command to retrieve the exact file you (or a teammate) submitted — for example, to inspect an old submission or reproduce a scored result.
305
+
200
306
  ## `kaggle competitions leaderboard`
201
307
 
202
308
  Gets competition leaderboard information.
@@ -99,10 +99,10 @@ kaggle datasets download <DATASET> [options]
99
99
 
100
100
  **Options:**
101
101
 
102
- * `-f, --file <FILE_NAME>`: Specific file to download (downloads all if not specified).
102
+ * `-f, --file <FILE_NAME>`: Specific file to download (downloads all if not specified). A file inside a folder, such as `train/labels.csv`, keeps that folder under the download path.
103
103
  * `-p, --path <PATH>`: Folder to download files to (defaults to current directory).
104
104
  * `-w, --wp`: Download files to the current working path.
105
- * `--unzip`: Unzip the downloaded file (deletes the .zip file afterwards).
105
+ * `--unzip`: Unzip the downloaded file (deletes the .zip file afterwards). With `-f`, large files are served inside a zip archive of the same name, and this extracts the file from it.
106
106
  * `-o, --force`: Force download, overwriting existing files.
107
107
  * `-q, --quiet`: Suppress verbose output.
108
108
 
@@ -126,6 +126,18 @@ kaggle datasets download <DATASET> [options]
126
126
  kaggle datasets download goefft/public-datasets-with-file-types-and-columns -f dataset_results.csv -w -q -o
127
127
  ```
128
128
 
129
+ 4. Download a file that lives in a folder inside the dataset. The file is written to `data/WICAgencies2014ytd/Food_Costs.csv`:
130
+
131
+ ```bash
132
+ kaggle datasets download jpmiller/publicassistance -f WICAgencies2014ytd/Food_Costs.csv -p data
133
+ ```
134
+
135
+ 5. Download a single large file and extract it. `creditcard.csv` is served as `creditcard.csv.zip`, so without `--unzip` the archive is what lands on disk:
136
+
137
+ ```bash
138
+ kaggle datasets download mlg-ulb/creditcardfraud -f creditcard.csv -p data --unzip
139
+ ```
140
+
129
141
  **Purpose:**
130
142
 
131
143
  This command allows you to retrieve dataset files for local use.
@@ -22,4 +22,5 @@ kaggle-cli documentation
22
22
  model_instances
23
23
  model_instances_versions
24
24
  benchmarks
25
+ search
25
26
  tutorials
@@ -76,7 +76,7 @@ kaggle kernels files <KERNEL> [options]
76
76
 
77
77
  **Arguments:**
78
78
 
79
- * `<KERNEL>`: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `kerneler/sqlite-global-default`).
79
+ * `<KERNEL>`: Kernel URL suffix (format: `owner/kernel-slug` or `owner/kernel-slug/version`, e.g., `kerneler/sqlite-global-default` or `kerneler/sqlite-global-default/2`).
80
80
 
81
81
  **Options:**
82
82
 
@@ -124,7 +124,7 @@ This command creates a template `kernel-metadata.json` file. You need to edit th
124
124
 
125
125
  ## `kaggle kernels push`
126
126
 
127
- Pushes new code/notebook and metadata to a kernel, then runs the kernel.
127
+ Pushes new code/notebook and metadata to a kernel, then runs the kernel. Pass `--no-run` to save a new version without running it.
128
128
 
129
129
  **Usage:**
130
130
 
@@ -134,9 +134,10 @@ kaggle kernels push -p <FOLDER_PATH> [options]
134
134
 
135
135
  **Options:**
136
136
 
137
- * `--accelerator <ACCELERATOR_ID>`: ID name of the accelerator to use during the run. E.g. "NvidiaTeslaP100" (aka default GPU), "NvidiaTeslaT4", "TpuV6E8".
137
+ * `--accelerator <ACCELERATOR_ID>`: ID name of the accelerator to use during the run. E.g. "NvidiaTeslaT4" (GPU T4 ×2, default GPU), "NvidiaL4", "TpuV5E8" (TPU v5e-8), "TpuV6E8".
138
138
  * `-p, --path <FOLDER_PATH>`: Path to the folder containing the kernel file (e.g., `.ipynb`, `.Rmd`, `.py`) and the `kernel-metadata.json` file (defaults to the current directory).
139
139
  * `-t, --timeout <SECONDS>`: Maximum run time in seconds.
140
+ * `--no-run`: Save a new version without executing the notebook, the equivalent of Quick Save in the web UI. The version is created but no cell runs.
140
141
 
141
142
  **Example:**
142
143
 
@@ -146,20 +147,22 @@ Push the kernel from the `tests/kernel` folder (assuming it contains the kernel
146
147
  kaggle kernels push -p tests/kernel
147
148
  ```
148
149
 
150
+ Save a new version without running it, for example after editing only a markdown cell:
151
+
152
+ ```bash
153
+ kaggle kernels push -p tests/kernel --no-run
154
+ ```
155
+
149
156
  **Purpose:**
150
157
 
151
158
  This command uploads your local kernel file and its metadata to Kaggle. If the kernel specified in the metadata exists under your account, it will be updated. Otherwise, a new kernel will be created. After uploading, Kaggle will attempt to run the kernel.
152
159
 
153
- Accelerators available as of Feb 2026:
160
+ Accelerators available as of Sep 2026:
154
161
 
155
- * NvidiaTeslaP100
156
- * TpuV38
157
- * NvidiaTeslaT4
158
- * NvidiaTeslaT4Highmem
159
- * Tpu1VmV38
162
+ * NvidiaTeslaT4 (GPU T4 ×2)
160
163
  * NvidiaTeslaA100
161
164
  * NvidiaL4
162
- * TpuV5E8
165
+ * TpuV5E8 (TPU v5e-8)
163
166
  * NvidiaL4X1
164
167
  * TpuV6E8
165
168
  * NvidiaH100
@@ -223,7 +226,7 @@ kaggle kernels output <KERNEL> [options]
223
226
 
224
227
  **Arguments:**
225
228
 
226
- * `<KERNEL>`: Kernel URL suffix (e.g., `kerneler/using-google-bird-vocalization-model`).
229
+ * `<KERNEL>`: Kernel URL suffix (format: `owner/kernel-slug` or `owner/kernel-slug/version`, e.g., `kerneler/using-google-bird-vocalization-model` or `kerneler/using-google-bird-vocalization-model/2`). Without a version, the latest version's output is downloaded.
227
230
 
228
231
  **Options:**
229
232
 
@@ -266,6 +269,12 @@ Download files in smaller pages:
266
269
  kaggle kernels output <kernel> --page-size 50
267
270
  ```
268
271
 
272
+ Download the output of version 2 instead of the latest version:
273
+
274
+ ```bash
275
+ kaggle kernels output <kernel>/2
276
+ ```
277
+
269
278
  **Purpose:**
270
279
 
271
280
  Use this command to retrieve the files generated by a kernel run, such as submission files, processed data, or visualizations. By default, output downloads scan every available output page, so `--file-pattern` can match files beyond the first page. Use `--page-size` to control how many files are requested on each page, and use `--page-token` when you only want to download files from one specific page.
@@ -282,7 +291,7 @@ kaggle kernels status <KERNEL>
282
291
 
283
292
  **Arguments:**
284
293
 
285
- * `<KERNEL>`: Kernel URL suffix (e.g., `kerneler/sqlite-global-default`).
294
+ * `<KERNEL>`: Kernel URL suffix (format: `owner/kernel-slug` or `owner/kernel-slug/version`, e.g., `kerneler/sqlite-global-default` or `kerneler/sqlite-global-default/2`).
286
295
 
287
296
  **Example:**
288
297
 
@@ -35,7 +35,7 @@ We currently support the following metadata fields for kernels.
35
35
  * `is_private`: Whether or not the kernel should be private. If not specified, will be `true`.
36
36
  * `enable_gpu`: Whether or not the kernel should run on a GPU. If not specified, will be `false`.
37
37
  * `enable_internet`: Whether or not the kernel should be able to access the internet. If not specified, will be `false`.
38
- * `machine_shape`: The accelerator/GPU type to use (e.g., `NvidiaTeslaT4`, `NvidiaTeslaP100`, or `Tpu1VmV38`).
38
+ * `machine_shape`: The accelerator/GPU type to use (e.g., `NvidiaTeslaT4` for GPU T4 ×2, `NvidiaL4`, or `TpuV5E8` for TPU v5e-8).
39
39
  * `dataset_sources`: A list of dataset sources, specified as `"username/dataset-slug"`
40
40
  * `competition_sources`: A list of competition sources, specified as `"competition-slug"`
41
41
  * `kernel_sources`: A list of kernel sources, specified as `"username/kernel-slug"`
@@ -0,0 +1,76 @@
1
+ # Search Command
2
+
3
+ Search across all Kaggle content from a single command.
4
+
5
+ ## `kaggle search`
6
+
7
+ Runs a unified search over Kaggle competitions, datasets, notebooks, models,
8
+ users, and discussions and returns one ranked list of results. This is the
9
+ cross-content equivalent of the per-command `-s/--search` flags (such as
10
+ `kaggle datasets list --search`); use it when you don't yet know which content
11
+ type you're looking for, or when you want results from several types at once.
12
+
13
+ By default, `kaggle search` searches all CLI-supported content types
14
+ (competition, dataset, notebook, model, user, discussion, benchmark) — not every
15
+ backend document type (it excludes types the CLI cannot render usefully, such as
16
+ comments, blogs, and courses). Result ordering uses the backend's canonical
17
+ cross-content ranking. Use `--type` to narrow to specific types.
18
+
19
+ **Usage:**
20
+
21
+ ```bash
22
+ kaggle search "<query>" [options]
23
+ ```
24
+
25
+ **Options:**
26
+
27
+ * `query`: The term(s) to search for (required).
28
+ * `-t, --type <TYPES>`: Restrict results to a comma-separated list of content types. Valid types: `competition`, `dataset`, `notebook`, `model`, `user`, `discussion`, `benchmark`. If omitted, all of these CLI-supported types are searched.
29
+ * `-m, --mine`: Restrict the search to your own content.
30
+ * `--sort-by <SORT_BY>`: Sort order. One of: `relevance` (default), `hotness`, `votes`, `dateCreated`, `dateUpdated`, `totalComments`, `lastViewed`.
31
+ * `--page-size <SIZE>`: Number of results to show on a page (default: 20, max: 100).
32
+ * `--page-token <TOKEN>`: Page token for results paging (printed as `Next Page Token = ...` at the top of a page when more results exist).
33
+ * `-v, --csv`: Print results in CSV format instead of a table.
34
+ * `--format <FORMAT>`: Print results in the selected format (`csv`, `table`, `json`). Supports field projection, e.g. `--format 'json(type,ref)'`.
35
+
36
+ **Result columns:** `type`, `ref`, `title`, `owner`, `votes`. The `ref` column
37
+ is the identifier you can pass to other commands — `owner/slug` for datasets,
38
+ notebooks, and models; the bare slug for competitions and users.
39
+
40
+ **Examples:**
41
+
42
+ 1. Search everything for a term:
43
+
44
+ ```bash
45
+ kaggle search "protein folding"
46
+ ```
47
+
48
+ 2. Search only datasets and models:
49
+
50
+ ```bash
51
+ kaggle search "diffusion" --type dataset,model
52
+ ```
53
+
54
+ 3. Find users:
55
+
56
+ ```bash
57
+ kaggle search "andrew ng" --type user
58
+ ```
59
+
60
+ 4. Search your own content, most recently updated first:
61
+
62
+ ```bash
63
+ kaggle search "baseline" --mine --sort-by dateUpdated
64
+ ```
65
+
66
+ 5. Get machine-readable output:
67
+
68
+ ```bash
69
+ kaggle search "titanic" --format json
70
+ ```
71
+
72
+ 6. Fetch the next page:
73
+
74
+ ```bash
75
+ kaggle search "llm" --page-size 50 --page-token <TOKEN>
76
+ ```
@@ -24,9 +24,11 @@ keywords = ["Kaggle", "API"]
24
24
  requires-python = ">= 3.11"
25
25
  dependencies = [
26
26
  "bleach",
27
- "kagglesdk >= 0.1.35, < 1.0", # sync with kagglehub
27
+ "kagglesdk >= 0.1.38, < 1.0", # sync with kagglehub
28
28
  "python-slugify",
29
29
  "requests",
30
+ # requests sets no certifi floor; older bundles trust the compromised emSign/eMudhra roots (GHSA-6q48-6c7w-9gw2).
31
+ "certifi >= 2026.10.19",
30
32
  "python-dateutil",
31
33
  "tqdm",
32
34
  "urllib3 >= 1.15.1",
@@ -10,8 +10,11 @@ attrs==26.1.0
10
10
  # referencing
11
11
  bleach==6.3.0
12
12
  # via kaggle (pyproject.toml)
13
- certifi==2026.2.25
14
- # via requests
13
+ certifi==2026.10.19
14
+ # via
15
+ # kaggle (pyproject.toml)
16
+ # kagglesdk
17
+ # requests
15
18
  charset-normalizer==3.4.6
16
19
  # via requests
17
20
  fastjsonschema==2.21.2
@@ -26,7 +29,7 @@ jupyter-core==5.9.1
26
29
  # via nbformat
27
30
  jupytext==1.19.1
28
31
  # via kaggle (pyproject.toml)
29
- kagglesdk==0.1.35
32
+ kagglesdk==0.1.38
30
33
  # via kaggle (pyproject.toml)
31
34
  markdown-it-py==4.0.0
32
35
  # via