kaggle 2.2.3__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 (154) hide show
  1. {kaggle-2.2.3 → kaggle-2.2.5}/CHANGELOG.md +80 -0
  2. {kaggle-2.2.3 → kaggle-2.2.5}/PKG-INFO +37 -3
  3. {kaggle-2.2.3 → kaggle-2.2.5}/README.md +33 -0
  4. {kaggle-2.2.3 → kaggle-2.2.5}/docs/README.md +31 -4
  5. {kaggle-2.2.3 → kaggle-2.2.5}/docs/benchmarks.md +133 -15
  6. kaggle-2.2.5/docs/competition_creation.md +737 -0
  7. {kaggle-2.2.3 → kaggle-2.2.5}/docs/competitions.md +121 -2
  8. {kaggle-2.2.3 → kaggle-2.2.5}/docs/conf.py +1 -1
  9. {kaggle-2.2.3 → kaggle-2.2.5}/docs/datasets.md +18 -2
  10. {kaggle-2.2.3 → kaggle-2.2.5}/docs/index.rst +2 -0
  11. {kaggle-2.2.3 → kaggle-2.2.5}/docs/kernels.md +42 -12
  12. {kaggle-2.2.3 → kaggle-2.2.5}/docs/kernels_metadata.md +1 -1
  13. {kaggle-2.2.3 → kaggle-2.2.5}/docs/model_variations.md +2 -0
  14. {kaggle-2.2.3 → kaggle-2.2.5}/docs/model_variations_versions.md +2 -0
  15. kaggle-2.2.5/docs/search.md +76 -0
  16. {kaggle-2.2.3 → kaggle-2.2.5}/pyproject.toml +6 -2
  17. {kaggle-2.2.3 → kaggle-2.2.5}/requirements.lock +6 -3
  18. {kaggle-2.2.3 → kaggle-2.2.5}/skills/SKILL.md +3 -1
  19. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/auth.md +7 -4
  20. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/competitions.md +38 -4
  21. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/datasets.md +3 -2
  22. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/kernels.md +13 -3
  23. kaggle-2.2.5/skills/references/search.md +65 -0
  24. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/__init__.py +5 -2
  25. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/api/kaggle_api_extended.py +3208 -439
  26. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/cli.py +778 -22
  27. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/models/kaggle_models_extended.py +67 -14
  28. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/models/upload_file.py +2 -2
  29. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/backend_tests.py +76 -43
  30. {kaggle-2.2.3 → kaggle-2.2.5}/tests/integration/test_models.py +1 -0
  31. {kaggle-2.2.3 → kaggle-2.2.5}/tests/test_commands.sh +6 -1
  32. kaggle-2.2.5/tests/unit/conftest.py +87 -0
  33. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_authenticate.py +130 -75
  34. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_benchmarks_cli.py +182 -5
  35. kaggle-2.2.5/tests/unit/test_benchmarks_leaderboard.py +351 -0
  36. kaggle-2.2.5/tests/unit/test_benchmarks_quota.py +177 -0
  37. kaggle-2.2.5/tests/unit/test_cli_benchmarks.py +322 -0
  38. kaggle-2.2.5/tests/unit/test_cli_commands.py +102 -0
  39. kaggle-2.2.5/tests/unit/test_cli_competitions.py +623 -0
  40. kaggle-2.2.5/tests/unit/test_cli_datasets.py +367 -0
  41. kaggle-2.2.5/tests/unit/test_cli_errors.py +141 -0
  42. kaggle-2.2.5/tests/unit/test_cli_forums.py +71 -0
  43. kaggle-2.2.5/tests/unit/test_cli_kernels.py +330 -0
  44. kaggle-2.2.5/tests/unit/test_cli_main.py +167 -0
  45. kaggle-2.2.5/tests/unit/test_cli_models.py +464 -0
  46. kaggle-2.2.5/tests/unit/test_cli_pagination.py +116 -0
  47. kaggle-2.2.5/tests/unit/test_cli_search.py +64 -0
  48. kaggle-2.2.5/tests/unit/test_competition_add_host.py +139 -0
  49. kaggle-2.2.5/tests/unit/test_competition_create.py +196 -0
  50. kaggle-2.2.5/tests/unit/test_competition_create_page.py +166 -0
  51. kaggle-2.2.5/tests/unit/test_competition_create_solution.py +125 -0
  52. kaggle-2.2.5/tests/unit/test_competition_data_update.py +310 -0
  53. kaggle-2.2.5/tests/unit/test_competition_delete_page.py +117 -0
  54. kaggle-2.2.5/tests/unit/test_competition_launch.py +100 -0
  55. kaggle-2.2.5/tests/unit/test_competition_list_hosts.py +115 -0
  56. kaggle-2.2.5/tests/unit/test_competition_settings_get.py +121 -0
  57. kaggle-2.2.5/tests/unit/test_competition_settings_update.py +228 -0
  58. kaggle-2.2.5/tests/unit/test_competition_solution_status.py +185 -0
  59. kaggle-2.2.5/tests/unit/test_competition_submission_download.py +112 -0
  60. kaggle-2.2.5/tests/unit/test_competition_submission_limits.py +110 -0
  61. kaggle-2.2.5/tests/unit/test_competition_submit.py +501 -0
  62. kaggle-2.2.5/tests/unit/test_competition_submit_wait.py +426 -0
  63. kaggle-2.2.5/tests/unit/test_competition_update_page.py +187 -0
  64. kaggle-2.2.5/tests/unit/test_competitions_list.py +200 -0
  65. kaggle-2.2.5/tests/unit/test_dataset_create.py +473 -0
  66. kaggle-2.2.5/tests/unit/test_dataset_delete.py +111 -0
  67. kaggle-2.2.5/tests/unit/test_dataset_download.py +213 -0
  68. kaggle-2.2.5/tests/unit/test_dataset_list.py +205 -0
  69. kaggle-2.2.5/tests/unit/test_dataset_metadata_update.py +282 -0
  70. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_discussions_cli.py +33 -5
  71. kaggle-2.2.5/tests/unit/test_download_file_paths.py +186 -0
  72. kaggle-2.2.5/tests/unit/test_download_resume.py +351 -0
  73. kaggle-2.2.5/tests/unit/test_download_unzip.py +378 -0
  74. kaggle-2.2.5/tests/unit/test_help_version_auth.py +85 -0
  75. kaggle-2.2.5/tests/unit/test_http_client.py +36 -0
  76. kaggle-2.2.5/tests/unit/test_ignore_patterns.py +152 -0
  77. kaggle-2.2.5/tests/unit/test_kernel_delete.py +73 -0
  78. kaggle-2.2.5/tests/unit/test_kernel_versions.py +178 -0
  79. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_kernels_logs.py +71 -3
  80. kaggle-2.2.5/tests/unit/test_kernels_output_download.py +120 -0
  81. kaggle-2.2.5/tests/unit/test_kernels_output_paths.py +83 -0
  82. kaggle-2.2.5/tests/unit/test_kernels_pull.py +358 -0
  83. kaggle-2.2.5/tests/unit/test_kernels_push.py +358 -0
  84. kaggle-2.2.5/tests/unit/test_kernels_push_no_run.py +153 -0
  85. kaggle-2.2.5/tests/unit/test_kernels_push_retired_accelerator.py +154 -0
  86. kaggle-2.2.5/tests/unit/test_model_create.py +839 -0
  87. kaggle-2.2.5/tests/unit/test_model_delete.py +127 -0
  88. kaggle-2.2.5/tests/unit/test_model_download.py +216 -0
  89. kaggle-2.2.5/tests/unit/test_model_list.py +190 -0
  90. kaggle-2.2.5/tests/unit/test_parse_duration.py +62 -0
  91. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_quota.py +33 -0
  92. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_retry_after.py +109 -9
  93. kaggle-2.2.5/tests/unit/test_search.py +362 -0
  94. kaggle-2.2.5/tests/unit/test_tar_extraction_safety.py +110 -0
  95. kaggle-2.2.5/tests/unit/test_upload_helpers.py +963 -0
  96. kaggle-2.2.5/tools/cicd/Dockerfile +13 -0
  97. kaggle-2.2.5/tools/cicd/cloudbuild.yaml +89 -0
  98. kaggle-2.2.5/tools/releases/requirements.in +1 -0
  99. {kaggle-2.2.3 → kaggle-2.2.5}/tools/releases/requirements.txt +67 -120
  100. kaggle-2.2.3/src/kaggle/api/kaggle_api.py +0 -603
  101. kaggle-2.2.3/tests/unit/conftest.py +0 -18
  102. kaggle-2.2.3/tests/unit/test_dataset_metadata_update.py +0 -133
  103. kaggle-2.2.3/tests/unit/test_kernels_pull.py +0 -141
  104. kaggle-2.2.3/tools/cicd/Dockerfile +0 -12
  105. kaggle-2.2.3/tools/cicd/cloudbuild.yaml +0 -48
  106. kaggle-2.2.3/tools/releases/requirements.in +0 -2
  107. {kaggle-2.2.3 → kaggle-2.2.5}/.gcloudignore +0 -0
  108. {kaggle-2.2.3 → kaggle-2.2.5}/.gitignore +0 -0
  109. {kaggle-2.2.3 → kaggle-2.2.5}/CONTRIBUTING.md +0 -0
  110. {kaggle-2.2.3 → kaggle-2.2.5}/Dockerfile +0 -0
  111. {kaggle-2.2.3 → kaggle-2.2.5}/GEMINI.md +0 -0
  112. {kaggle-2.2.3 → kaggle-2.2.5}/LICENSE.txt +0 -0
  113. {kaggle-2.2.3 → kaggle-2.2.5}/SECURITY.md +0 -0
  114. {kaggle-2.2.3 → kaggle-2.2.5}/docker-hatch +0 -0
  115. {kaggle-2.2.3 → kaggle-2.2.5}/docs/Makefile +0 -0
  116. {kaggle-2.2.3 → kaggle-2.2.5}/docs/configuration.md +0 -0
  117. {kaggle-2.2.3 → kaggle-2.2.5}/docs/datasets_metadata.md +0 -0
  118. {kaggle-2.2.3 → kaggle-2.2.5}/docs/forums.md +0 -0
  119. {kaggle-2.2.3 → kaggle-2.2.5}/docs/make.bat +0 -0
  120. {kaggle-2.2.3 → kaggle-2.2.5}/docs/models.md +0 -0
  121. {kaggle-2.2.3 → kaggle-2.2.5}/docs/models_metadata.md +0 -0
  122. {kaggle-2.2.3 → kaggle-2.2.5}/docs/output_format.md +0 -0
  123. {kaggle-2.2.3 → kaggle-2.2.5}/docs/simulation_competitions.md +0 -0
  124. {kaggle-2.2.3 → kaggle-2.2.5}/docs/tutorials.md +0 -0
  125. {kaggle-2.2.3 → kaggle-2.2.5}/requirements-lint.in +0 -0
  126. {kaggle-2.2.3 → kaggle-2.2.5}/requirements-lint.lock +0 -0
  127. {kaggle-2.2.3 → kaggle-2.2.5}/requirements-test.in +0 -0
  128. {kaggle-2.2.3 → kaggle-2.2.5}/requirements-test.lock +0 -0
  129. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/benchmarks.md +0 -0
  130. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/configuration.md +0 -0
  131. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/files.md +0 -0
  132. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/forums.md +0 -0
  133. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/model_variations.md +0 -0
  134. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/model_variations_versions.md +0 -0
  135. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/models.md +0 -0
  136. {kaggle-2.2.3 → kaggle-2.2.5}/skills/references/quota.md +0 -0
  137. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/LICENSE +0 -0
  138. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/__main__.py +0 -0
  139. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/api/__init__.py +0 -0
  140. {kaggle-2.2.3 → kaggle-2.2.5}/src/kaggle/models/__init__.py +0 -0
  141. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/dataset/data.csv +0 -0
  142. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/kernel/testing-x.ipynb +0 -0
  143. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/model/instance/data.csv +0 -0
  144. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/model/instance/version/metadata.json +0 -0
  145. {kaggle-2.2.3 → kaggle-2.2.5}/tests/backend/sample_submission.csv +0 -0
  146. {kaggle-2.2.3 → kaggle-2.2.5}/tests/run_tests.sh +0 -0
  147. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_dataset_status.py +0 -0
  148. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_kernel_parsing.py +0 -0
  149. {kaggle-2.2.3 → kaggle-2.2.5}/tests/unit/test_team_submissions.py +0 -0
  150. {kaggle-2.2.3 → kaggle-2.2.5}/tools/cicd/integration-tests.yaml +0 -0
  151. {kaggle-2.2.3 → kaggle-2.2.5}/tools/releases/Dockerfile +0 -0
  152. {kaggle-2.2.3 → kaggle-2.2.5}/tools/releases/cloudbuild.yaml +0 -0
  153. {kaggle-2.2.3 → kaggle-2.2.5}/tools/use-localhost.sh +0 -0
  154. {kaggle-2.2.3 → kaggle-2.2.5}/tools/use-prod.sh +0 -0
@@ -3,6 +3,86 @@ 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
+
46
+ ### 2.2.4
47
+
48
+ * fix(benchmarks): support owner/task separator in benchmark commands (#1146)
49
+ * Feat/competition submissions limits (#1144)
50
+ * add competitions solution create/status commands (#1141)
51
+ * fix(cli): prevent stale file corruption when resuming downloads (#1142)
52
+ * fix(cli): fix collaborator role handling in dataset metadata update (#1138)
53
+ * Refactor paging to use Protocols (#1137)
54
+ * fix(cli): retry transient connection errors in with_retry (#1132)
55
+ * Add Kaggle Secrets documentation (#1131)
56
+ * Fix model and owner slug validation (#1134)
57
+ * Implement ignore_patterns in uploading (combined) (#1130)
58
+ * Refactor parser fixtures (#1118)
59
+ * fix(auth): avoid skipping auth for programmatic imports (#1117)
60
+ * fix(cli): resumable upload start offset when zero bytes uploaded (#1113)
61
+ * refactor(cli): reuse _resolve_projection in dataset_status (#1116)
62
+ * update supported model list (#1115)
63
+ * fix(cli): handle deleted comments in topics show (#1114)
64
+ * Add leaderboard subcommand to kaggle benchmarks (#1112)
65
+ * feat(cli): add competitions settings update command (#1104)
66
+ * feat(cli): add competitions hosts list command (#1107)
67
+ * feat(cli): add competitions settings get command (#1103)
68
+ * feat(cli): support --page-token and --page-size, preserve --page (#1098)
69
+ * feat(cli): expose userRank in competitions list output (#1094)
70
+ * fix(cli): read kernel metadata and source files using UTF-8 in kernels_push (#1093)
71
+ * Fix crash when running kaggle command with invalid credentials (#1092)
72
+ * feat(cli): add competitions data push command (#1085)
73
+ * fix(cli): restore fallback for unknown kernel language/type in kernels_pull (#1091)
74
+ * fix(auth): prioritize OAuth credentials over anonymous fallback (#1089)
75
+ * feat(cli): add competitions pages update command (#1083)
76
+ * fix(cli): stop treating subcommand -v as version flag (#1082)
77
+ * fix(cli): honor --unzip for cached dataset downloads (#1086)
78
+ * feat(cli): add competitions pages delete command (#1084)
79
+ * feat(cli): add competitions init and create commands (#1080)
80
+ * docs(competitions): add competition_creation.md for new host commands (#1081)
81
+ * feat(cli): add competitions launch command (#1079)
82
+ * feat(cli): add competitions pages create command (#1078)
83
+ * fix(cli): avoid success message after canceled model deletion (#1077)
84
+ * fix(cli): avoid success message after canceled dataset deletion (#1073)
85
+
6
86
  ### 2.2.3
7
87
 
8
88
  * Update --format help text to reference output_format.md (#1074)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: kaggle
3
- Version: 2.2.3
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.30
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
@@ -265,6 +266,14 @@ kaggle --help
265
266
 
266
267
  See the [User documentation](docs/README.md) for more examples & tutorials.
267
268
 
269
+ ## Hosting a competition
270
+
271
+ End-to-end host commands — scaffold a new competition, author its pages,
272
+ tune its settings, and launch it — are documented in
273
+ [docs/competition_creation.md](docs/competition_creation.md). Covers
274
+ `kaggle competitions init`, `create`, `pages create`, `hosts`,
275
+ `settings get`, `settings update`, and `launch`.
276
+
268
277
  ## Development
269
278
 
270
279
  ### `kagglesdk` Updates
@@ -333,6 +342,31 @@ After setting up your credentials, you can run the integration tests as follows:
333
342
  hatch run test:integration
334
343
  ```
335
344
 
345
+ ### Code Coverage
346
+
347
+ We measure code coverage using `pytest-cov`.
348
+
349
+ To run unit tests with coverage and generate reports:
350
+
351
+ ```sh
352
+ hatch run test:cov
353
+ ```
354
+
355
+ This generates:
356
+ * Terminal output with a coverage summary.
357
+ * `coverage.xml` (XML report in the root, used by IDE integrations).
358
+ * `htmlcov/index.html` (HTML report for browser viewing).
359
+
360
+ #### Editor Integration
361
+
362
+ ##### VSCode
363
+ Install the **Coverage Gutters** extension. After running the coverage command, click the **Watch** button in the status bar to see coverage indicators in the editor margins.
364
+
365
+ ##### JetBrains Rider
366
+ With the **Python** plugin installed:
367
+ * **Run with Coverage:** Create a Pytest run configuration and click the shield icon ("Run with Coverage").
368
+ * **Import Report:** Go to **Tools** -> **Show Code Coverage Data**, click **Add** (+), and select `coverage.xml`.
369
+
336
370
  ### Running `hatch` commands inside Docker
337
371
 
338
372
  This is useful to run in a consistent environment and easily switch between Python versions.
@@ -38,6 +38,14 @@ kaggle --help
38
38
 
39
39
  See the [User documentation](docs/README.md) for more examples & tutorials.
40
40
 
41
+ ## Hosting a competition
42
+
43
+ End-to-end host commands — scaffold a new competition, author its pages,
44
+ tune its settings, and launch it — are documented in
45
+ [docs/competition_creation.md](docs/competition_creation.md). Covers
46
+ `kaggle competitions init`, `create`, `pages create`, `hosts`,
47
+ `settings get`, `settings update`, and `launch`.
48
+
41
49
  ## Development
42
50
 
43
51
  ### `kagglesdk` Updates
@@ -106,6 +114,31 @@ After setting up your credentials, you can run the integration tests as follows:
106
114
  hatch run test:integration
107
115
  ```
108
116
 
117
+ ### Code Coverage
118
+
119
+ We measure code coverage using `pytest-cov`.
120
+
121
+ To run unit tests with coverage and generate reports:
122
+
123
+ ```sh
124
+ hatch run test:cov
125
+ ```
126
+
127
+ This generates:
128
+ * Terminal output with a coverage summary.
129
+ * `coverage.xml` (XML report in the root, used by IDE integrations).
130
+ * `htmlcov/index.html` (HTML report for browser viewing).
131
+
132
+ #### Editor Integration
133
+
134
+ ##### VSCode
135
+ Install the **Coverage Gutters** extension. After running the coverage command, click the **Watch** button in the status bar to see coverage indicators in the editor margins.
136
+
137
+ ##### JetBrains Rider
138
+ With the **Python** plugin installed:
139
+ * **Run with Coverage:** Create a Pytest run configuration and click the shield icon ("Run with Coverage").
140
+ * **Import Report:** Go to **Tools** -> **Show Code Coverage Data**, click **Add** (+), and select `coverage.xml`.
141
+
109
142
  ### Running `hatch` commands inside Docker
110
143
 
111
144
  This is useful to run in a consistent environment and easily switch between Python versions.
@@ -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
 
@@ -55,7 +82,7 @@ The Kaggle CLI is organized into several command groups:
55
82
  * [Competitions](./competitions.md): Manage and participate in Kaggle competitions.
56
83
  * [Datasets](./datasets.md): Search, download, and manage Kaggle datasets.
57
84
  * [Forums](./forums.md): Browse and read Kaggle discussion forums.
58
- * [Kernels](./kernels.md): Interact with Kaggle Kernels (notebooks and scripts).
85
+ * [Kernels](./kernels.md): Interact with Kaggle Kernels (notebooks and scripts). Includes information on using [Kaggle Secrets](./kernels.md#using-secrets-in-kernels).
59
86
  * [Models](./models.md): Manage your Kaggle Models.
60
87
  * [Model Variations](./model_variations.md): Manage variations of your Kaggle Models.
61
88
  * [Model Variation Versions](./model_variations_versions.md): Manage versions of your Kaggle Model Variations.
@@ -2,11 +2,14 @@
2
2
 
3
3
  Commands for interacting with Kaggle Benchmarks. Benchmarks let you define evaluation tasks as Python scripts, run them against one or more LLM models via the Kaggle Model Proxy, and download the results.
4
4
 
5
- The top-level command is `kaggle benchmarks` (alias: `kaggle b`), which has three sub-groups:
5
+ The top-level command is `kaggle benchmarks` (alias: `kaggle b`), which has the following subcommands and groups:
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.
10
+ * **`leaderboard`** — Get benchmark leaderboard information.
9
11
  * **`tasks`** (alias: `t`) — Manage benchmark tasks (push, run, list, status, download, log, models, delete, publish).
12
+ * **`topics`** — Browse discussion topics for a benchmark.
10
13
 
11
14
  ## `kaggle benchmarks auth`
12
15
 
@@ -77,7 +80,8 @@ In addition to the three credential variables written by `auth`, `init` also wri
77
80
  * `LLM_DEFAULT_EVAL` — Default model slug for evaluation.
78
81
  * `LLMS_AVAILABLE` — Comma-separated list of available model slugs.
79
82
 
80
- > **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.
81
85
 
82
86
  `init` also creates two files alongside the example file:
83
87
 
@@ -88,10 +92,105 @@ If either file already exists, it is skipped without overwriting.
88
92
 
89
93
  ---
90
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
+
126
+ ## `kaggle benchmarks leaderboard`
127
+
128
+ Get benchmark leaderboard information.
129
+
130
+ **Usage:**
131
+
132
+ ```bash
133
+ kaggle benchmarks leaderboard <BENCHMARK> [options]
134
+ ```
135
+
136
+ **Arguments:**
137
+
138
+ * `<BENCHMARK>`: Benchmark slug (e.g., `owner/benchmark-slug`).
139
+
140
+ **Options:**
141
+
142
+ * `--version <VERSION>`: Benchmark version (optional).
143
+ * `-s, --show`: Show the leaderboard in the terminal.
144
+ * `-d, --download`: Download the leaderboard as a CSV file.
145
+ * `-p, --path <DIRECTORY>`: Folder where the leaderboard will be downloaded (defaults to current working directory).
146
+ * `-v, --csv`: Print results in CSV format (when used with `--show`).
147
+ * `--format <FORMAT>`: Print results in a specific format (e.g., `json`).
148
+
149
+ **Examples:**
150
+
151
+ 1. Show the leaderboard for a benchmark:
152
+
153
+ ```bash
154
+ kaggle b leaderboard owner/my-benchmark --show
155
+ ```
156
+
157
+ 2. Download the leaderboard as CSV:
158
+
159
+ ```bash
160
+ kaggle b leaderboard owner/my-benchmark --download
161
+ ```
162
+
163
+ 3. Show a specific version of the leaderboard in JSON format:
164
+
165
+ ```bash
166
+ kaggle b leaderboard owner/my-benchmark --version 2 --show --format json
167
+ ```
168
+
169
+ **Purpose:**
170
+
171
+ Displays or downloads the evaluation results for all models that have run tasks in the specified benchmark. The leaderboard is represented as a table where rows are model versions and columns are benchmark tasks, showing the score achieved by each model on each task.
172
+
173
+ ---
174
+
91
175
  ## Tasks Commands
92
176
 
93
177
  All tasks commands live under `kaggle benchmarks tasks` (alias: `kaggle b t`).
94
178
 
179
+ ### Task Name Format
180
+
181
+ Task arguments (`<TASK>`) support two formats:
182
+
183
+ * **Bare slug** (`my-task`): Refers to a task owned by the current user.
184
+ * **Owner prefix** (`owner/my-task`): Refers to a specific owner's task (e.g., another user's public task, or `your-username/my-task`).
185
+
186
+ | Command Group | Supported Formats | Description |
187
+ |---|---|---|
188
+ | **View & Run** (`run`, `status`, `download`, `log`) | `my-task`, `owner/my-task` | Interact with your own tasks or public tasks from other users |
189
+ | **Publish** (`publish`) | `my-task`, `your-username/my-task` | Make your own task public (must be task owner) |
190
+ | **Create** (`push`) | `my-task` only | Must match the `@task(name="...")` decorator in your Python source file |
191
+
192
+ > **Slug Normalization:** Task names are automatically converted to URL-safe slugs (`My Task` → `my-task`). For `owner/task` arguments, each segment is slugified independently (`Owner/My Task` → `owner/my-task`) so the `/` separator is preserved.
193
+
95
194
  ### `kaggle benchmarks tasks push`
96
195
 
97
196
  Creates or updates a benchmark task from a local Python source file. The file must contain at least one function decorated with `@task`.
@@ -151,7 +250,8 @@ kaggle benchmarks tasks push <TASK> -f <FILE> [options]
151
250
 
152
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.
153
252
 
154
- **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>`.
155
255
 
156
256
  ---
157
257
 
@@ -167,7 +267,7 @@ kaggle benchmarks tasks run <TASK> [options]
167
267
 
168
268
  **Arguments:**
169
269
 
170
- * `<TASK>`: Task name (slug, e.g. `my-task`).
270
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
171
271
 
172
272
  **Options:**
173
273
 
@@ -249,7 +349,7 @@ kaggle benchmarks tasks status <TASK> [options]
249
349
 
250
350
  **Arguments:**
251
351
 
252
- * `<TASK>`: Task name (slug, e.g. `my-task`).
352
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
253
353
 
254
354
  **Options:**
255
355
 
@@ -263,7 +363,13 @@ kaggle benchmarks tasks status <TASK> [options]
263
363
  kaggle b t status my-task
264
364
  ```
265
365
 
266
- 2. Show status for specific models only:
366
+ 2. Show status for another user's task:
367
+
368
+ ```bash
369
+ kaggle b t status someuser/their-task
370
+ ```
371
+
372
+ 3. Show status for specific models only:
267
373
 
268
374
  ```bash
269
375
  kaggle b t status my-task -m gemini-2.5-pro
@@ -289,7 +395,7 @@ kaggle benchmarks tasks download <TASK> [options]
289
395
 
290
396
  **Arguments:**
291
397
 
292
- * `<TASK>`: Task name (slug, e.g. `my-task`).
398
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
293
399
 
294
400
  **Options:**
295
401
 
@@ -306,19 +412,25 @@ kaggle benchmarks tasks download <TASK> [options]
306
412
  kaggle b t download my-task
307
413
  ```
308
414
 
309
- 2. Download outputs for a specific model into a custom directory:
415
+ 2. Download outputs from another user's public task:
416
+
417
+ ```bash
418
+ kaggle b t download someuser/their-task
419
+ ```
420
+
421
+ 3. Download outputs for a specific model into a custom directory:
310
422
 
311
423
  ```bash
312
424
  kaggle b t download my-task -m gemini-2.5-pro -o ./results
313
425
  ```
314
426
 
315
- 3. Download outputs with source notebooks included:
427
+ 4. Download outputs with source notebooks included:
316
428
 
317
429
  ```bash
318
430
  kaggle b t download my-task --include-source
319
431
  ```
320
432
 
321
- 4. Force re-download of previously downloaded runs:
433
+ 5. Force re-download of previously downloaded runs:
322
434
 
323
435
  ```bash
324
436
  kaggle b t download my-task --force
@@ -370,7 +482,7 @@ kaggle benchmarks tasks log <TASK> [options]
370
482
 
371
483
  **Arguments:**
372
484
 
373
- * `<TASK>`: Task name (slug, e.g. `my-task`).
485
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
374
486
 
375
487
  **Options:**
376
488
 
@@ -386,13 +498,19 @@ kaggle benchmarks tasks log <TASK> [options]
386
498
  kaggle b t log my-task
387
499
  ```
388
500
 
389
- 2. Show logs for a specific model's run(s):
501
+ 2. Show logs for another user's task:
502
+
503
+ ```bash
504
+ kaggle b t log someuser/their-task
505
+ ```
506
+
507
+ 3. Show logs for a specific model's run(s):
390
508
 
391
509
  ```bash
392
510
  kaggle b t log my-task -m gemini-2.5-pro
393
511
  ```
394
512
 
395
- 3. Show logs for multiple models:
513
+ 4. Show logs for multiple models:
396
514
 
397
515
  ```bash
398
516
  kaggle b t logs my-task -m gemini-2.5-pro -m claude-sonnet-4
@@ -480,7 +598,7 @@ kaggle benchmarks tasks delete <TASK> [options]
480
598
 
481
599
  **Arguments:**
482
600
 
483
- * `<TASK>`: Task name (slug, e.g. `my-task`).
601
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
484
602
 
485
603
  **Options:**
486
604
 
@@ -510,7 +628,7 @@ kaggle benchmarks tasks publish <TASK> [options]
510
628
 
511
629
  **Arguments:**
512
630
 
513
- * `<TASK>`: Task name (slug, e.g. `my-task`).
631
+ * `<TASK>`: Task name (slug, e.g. `my-task` or `owner/my-task`).
514
632
 
515
633
  **Options:**
516
634