From 9d15a5d7f7339e2ce3a4bd4f0b61e518898d0211 Mon Sep 17 00:00:00 2001 From: Steve Messick Date: Tue, 11 Nov 2025 23:37:27 +0000 Subject: [PATCH 1/3] Fix Sphinx build errors; make html is clean --- .../_build/doctrees/competitions.doctree | Bin 0 -> 42498 bytes .../_build/doctrees/configuration.doctree | Bin 0 -> 17153 bytes .../_build/doctrees/datasets.doctree | Bin 0 -> 59314 bytes .../_build/doctrees/environment.pickle | Bin 0 -> 67245 bytes documentation/_build/doctrees/index.doctree | Bin 0 -> 3930 bytes documentation/_build/doctrees/intro.doctree | Bin 0 -> 28368 bytes documentation/_build/doctrees/kernels.doctree | Bin 0 -> 52387 bytes .../_build/doctrees/model_instances.doctree | Bin 0 -> 35504 bytes .../doctrees/model_instances_versions.doctree | Bin 0 -> 29467 bytes documentation/_build/doctrees/models.doctree | Bin 0 -> 32013 bytes .../_build/doctrees/tutorials.doctree | Bin 0 -> 86833 bytes documentation/_build/html/.buildinfo | 4 + .../_build/html/_sources/competitions.md.txt | 216 +++++ .../_build/html/_sources/configuration.md.txt | 89 ++ .../_build/html/_sources/datasets.md.txt | 309 ++++++ .../_build/html/_sources/index.rst.txt | 23 + .../_build/html/_sources/intro.md.txt | 87 ++ .../_build/html/_sources/kernels.md.txt | 277 ++++++ .../html/_sources/model_instances.md.txt | 182 ++++ .../_sources/model_instances_versions.md.txt | 135 +++ .../_build/html/_sources/models.md.txt | 184 ++++ .../_build/html/_sources/tutorials.md.txt | 322 +++++++ .../_build/html/_static/alabaster.css | 663 +++++++++++++ documentation/_build/html/_static/basic.css | 906 ++++++++++++++++++ documentation/_build/html/_static/custom.css | 1 + documentation/_build/html/_static/doctools.js | 149 +++ .../html/_static/documentation_options.js | 13 + documentation/_build/html/_static/file.png | Bin 0 -> 286 bytes .../_build/html/_static/github-banner.svg | 5 + .../_build/html/_static/language_data.js | 192 ++++ documentation/_build/html/_static/minus.png | Bin 0 -> 90 bytes documentation/_build/html/_static/plus.png | Bin 0 -> 90 bytes .../_build/html/_static/pygments.css | 84 ++ .../_build/html/_static/searchtools.js | 635 ++++++++++++ .../_build/html/_static/sphinx_highlight.js | 154 +++ documentation/_build/html/competitions.html | 301 ++++++ documentation/_build/html/configuration.html | 189 ++++ documentation/_build/html/datasets.html | 373 +++++++ documentation/_build/html/genindex.html | 111 +++ documentation/_build/html/index.html | 200 ++++ documentation/_build/html/intro.html | 200 ++++ documentation/_build/html/kernels.html | 346 +++++++ .../_build/html/model_instances.html | 262 +++++ .../_build/html/model_instances_versions.html | 227 +++++ documentation/_build/html/models.html | 266 +++++ documentation/_build/html/objects.inv | Bin 0 -> 1467 bytes documentation/_build/html/search.html | 129 +++ documentation/_build/html/searchindex.js | 1 + documentation/_build/html/tutorials.html | 488 ++++++++++ documentation/conf.py | 16 +- documentation/index.rst | 2 + documentation/intro.md | 10 +- 52 files changed, 7742 insertions(+), 9 deletions(-) create mode 100644 documentation/_build/doctrees/competitions.doctree create mode 100644 documentation/_build/doctrees/configuration.doctree create mode 100644 documentation/_build/doctrees/datasets.doctree create mode 100644 documentation/_build/doctrees/environment.pickle create mode 100644 documentation/_build/doctrees/index.doctree create mode 100644 documentation/_build/doctrees/intro.doctree create mode 100644 documentation/_build/doctrees/kernels.doctree create mode 100644 documentation/_build/doctrees/model_instances.doctree create mode 100644 documentation/_build/doctrees/model_instances_versions.doctree create mode 100644 documentation/_build/doctrees/models.doctree create mode 100644 documentation/_build/doctrees/tutorials.doctree create mode 100644 documentation/_build/html/.buildinfo create mode 100644 documentation/_build/html/_sources/competitions.md.txt create mode 100644 documentation/_build/html/_sources/configuration.md.txt create mode 100644 documentation/_build/html/_sources/datasets.md.txt create mode 100644 documentation/_build/html/_sources/index.rst.txt create mode 100644 documentation/_build/html/_sources/intro.md.txt create mode 100644 documentation/_build/html/_sources/kernels.md.txt create mode 100644 documentation/_build/html/_sources/model_instances.md.txt create mode 100644 documentation/_build/html/_sources/model_instances_versions.md.txt create mode 100644 documentation/_build/html/_sources/models.md.txt create mode 100644 documentation/_build/html/_sources/tutorials.md.txt create mode 100644 documentation/_build/html/_static/alabaster.css create mode 100644 documentation/_build/html/_static/basic.css create mode 100644 documentation/_build/html/_static/custom.css create mode 100644 documentation/_build/html/_static/doctools.js create mode 100644 documentation/_build/html/_static/documentation_options.js create mode 100644 documentation/_build/html/_static/file.png create mode 100644 documentation/_build/html/_static/github-banner.svg create mode 100644 documentation/_build/html/_static/language_data.js create mode 100644 documentation/_build/html/_static/minus.png create mode 100644 documentation/_build/html/_static/plus.png create mode 100644 documentation/_build/html/_static/pygments.css create mode 100644 documentation/_build/html/_static/searchtools.js create mode 100644 documentation/_build/html/_static/sphinx_highlight.js create mode 100644 documentation/_build/html/competitions.html create mode 100644 documentation/_build/html/configuration.html create mode 100644 documentation/_build/html/datasets.html create mode 100644 documentation/_build/html/genindex.html create mode 100644 documentation/_build/html/index.html create mode 100644 documentation/_build/html/intro.html create mode 100644 documentation/_build/html/kernels.html create mode 100644 documentation/_build/html/model_instances.html create mode 100644 documentation/_build/html/model_instances_versions.html create mode 100644 documentation/_build/html/models.html create mode 100644 documentation/_build/html/objects.inv create mode 100644 documentation/_build/html/search.html create mode 100644 documentation/_build/html/searchindex.js create mode 100644 documentation/_build/html/tutorials.html diff --git a/documentation/_build/doctrees/competitions.doctree b/documentation/_build/doctrees/competitions.doctree new file mode 100644 index 0000000000000000000000000000000000000000..240458ad4b0f4c7d9a1c9661217060d9bd08270b GIT binary patch literal 42498 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 a`MEUcKZgSN7_+$K{^~^i@ouLxH}QX?;4N+d literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/configuration.doctree b/documentation/_build/doctrees/configuration.doctree new file mode 100644 index 0000000000000000000000000000000000000000..182232aa825ecfd0211b195caf500a4a4731c21b GIT binary patch literal 17153 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 literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/datasets.doctree b/documentation/_build/doctrees/datasets.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a56f039237c42ec6ba374739117699975ce0480b GIT binary patch literal 59314 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 J>A9K={|8YF`P={i literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/intro.doctree b/documentation/_build/doctrees/intro.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e820488d2425dfc20253d08496f7f2f8c1939ba1 GIT binary patch literal 28368 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 literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/kernels.doctree b/documentation/_build/doctrees/kernels.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0cf2c49c1567ac1bc2255ff2a862456a7cbde3f5 GIT binary patch literal 52387 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 G^#28?zUNQ? literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/model_instances.doctree b/documentation/_build/doctrees/model_instances.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2f82948f69ac53f95de39c1c44034aa665716acd GIT binary patch literal 35504 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 C_~-Nh literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/model_instances_versions.doctree b/documentation/_build/doctrees/model_instances_versions.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a4460a5ae4717d6490a5019ff4618690a919485c GIT binary patch literal 29467 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 W?w6@|8$z9m&??>U*ZOh1w)o$*&&aj_ literal 0 HcmV?d00001 diff --git a/documentation/_build/doctrees/models.doctree b/documentation/_build/doctrees/models.doctree new file mode 100644 index 0000000000000000000000000000000000000000..afbf0cfe64aafb2b1d8a9abbf66a60288f1ab8fe GIT binary patch literal 32013 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 literal 0 HcmV?d00001 diff --git a/documentation/_build/html/.buildinfo b/documentation/_build/html/.buildinfo new file mode 100644 index 0000000..7faae69 --- /dev/null +++ b/documentation/_build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. +config: d0370e30f9d08145626c3bb6f1dd4f8e +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/documentation/_build/html/_sources/competitions.md.txt b/documentation/_build/html/_sources/competitions.md.txt new file mode 100644 index 0000000..7c05c31 --- /dev/null +++ b/documentation/_build/html/_sources/competitions.md.txt @@ -0,0 +1,216 @@ +# Competitions Commands + +Commands for interacting with Kaggle competitions. + +For tutorials on how to submit to competitions : +* [How to Submit to a Competition](./tutorials.md#tutorial-how-to-submit-to-a-competition) +* [How to Submit to a Code Competition](./tutorials.md#tutorial-how-to-submit-to-a-code-competition) + +## `kaggle competitions list` + +Lists available competitions. + +**Usage:** + +```bash +kaggle competitions list [options] +``` + +**Options:** + +* `--group `: Filter by competition group. Valid options: `general`, `entered`, `inClass`. +* `--category `: Filter by competition category. Valid options: `all`, `featured`, `research`, `recruitment`, `gettingStarted`, `masters`, `playground`. +* `--sort-by `: Sort results. Valid options: `grouped`, `prize`, `earliestDeadline`, `latestDeadline`, `numberOfTeams`, `recentlyCreated` (default: `latestDeadline`). +* `-p, --page `: Page number for results (default: 1). +* `-s, --search `: Search term. +* `-v, --csv`: Print results in CSV format. + +**Example:** + +List featured competitions in the general group, sorted by prize: + +```bash +kaggle competitions list --group general --category featured --sort-by prize +``` + +**Purpose:** + +This command helps you discover new competitions or find specific ones based on various criteria. + +## `kaggle competitions files` + +Lists files for a specific competition. + +**Usage:** + +```bash +kaggle competitions files [options] +``` + +**Arguments:** + +* ``: Competition URL suffix (e.g., `titanic`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `-q, --quiet`: Suppress verbose output. +* `--page-token `: Page token for results paging. +* `--page-size `: Number of items to show on a page (default: 20, max: 200). + +**Example:** + +List the first 3 files for the "titanic" competition in CSV format, quietly: + +```bash +kaggle competitions files titanic --page-size=3 -v -q +``` + +**Purpose:** + +Use this command to see the data files available for a competition before downloading them. + +## `kaggle competitions download` + +Downloads competition files. + +**Usage:** + +```bash +kaggle competitions download [options] +``` + +**Arguments:** + +* ``: Competition URL suffix (e.g., `titanic`). + +**Options:** + +* `-f, --file `: Specific file to download (downloads all if not specified). +* `-p, --path `: Folder to download files to (defaults to current directory). +* `-w, --wp`: Download files to the current working path (equivalent to `-p .`). +* `-o, --force`: Force download, overwriting existing files. +* `-q, --quiet`: Suppress verbose output. + +**Examples:** + +1. Download all files for the "titanic" competition to the current directory, overwriting existing files, quietly: + + ```bash + kaggle competitions download titanic -w -o -q + ``` + +2. Download the `test.csv` file from the "titanic" competition to a folder named `tost`: + + ```bash + kaggle competitions download titanic -f test.csv -p tost + ``` + +**Purpose:** + +This command allows you to get the necessary data files for a competition onto your local machine. + +## `kaggle competitions submit` + +Makes a new submission to a competition. + +**Usage:** + +```bash +kaggle competitions submit -f -m [options] +``` + +**Arguments:** + +* ``: Competition URL suffix (e.g., `house-prices-advanced-regression-techniques`). +* `-f, --file `: The submission file. +* `-m, --message `: The submission message. + +**Options:** + +* `-k, --kernel `: Name of the kernel (notebook) to submit (for code competitions). +* `-v, --version `: Version of the kernel to submit. +* `-q, --quiet`: Suppress verbose output. + +**Example:** + +Submit `sample_submission.csv` to the "house-prices-advanced-regression-techniques" competition with the message "Test message": + +```bash +kaggle competitions submit house-prices-advanced-regression-techniques -f sample_submission.csv -m "Test message" +``` + +**Purpose:** + +Use this command to upload your predictions or code to a competition for scoring. + +## `kaggle competitions submissions` + +Shows your past submissions for a competition. + +**Usage:** + +```bash +kaggle competitions submissions [options] +``` + +**Arguments:** + +* ``: Competition URL suffix (e.g., `house-prices-advanced-regression-techniques`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `-q, --quiet`: Suppress verbose output. + +**Example:** + +Show submissions for "house-prices-advanced-regression-techniques" in CSV format, quietly: + +```bash +kaggle competitions submissions house-prices-advanced-regression-techniques -v -q +``` + +**Purpose:** + +This command allows you to review your previous submission attempts and their scores. + +## `kaggle competitions leaderboard` + +Gets competition leaderboard information. + +**Usage:** + +```bash +kaggle competitions leaderboard [options] +``` + +**Arguments:** + +* ``: Competition URL suffix (e.g., `titanic`). + +**Options:** + +* `-s, --show`: Show the top of the leaderboard in the console. +* `-d, --download`: Download the entire leaderboard to a CSV file. +* `-p, --path `: Folder to download the leaderboard to (if `-d` is used). +* `-v, --csv`: Print results in CSV format (used with `-s`). +* `-q, --quiet`: Suppress verbose output. + +**Examples:** + +1. Download the "titanic" leaderboard to a folder named `leaders`, quietly: + + ```bash + kaggle competitions leaderboard titanic -d -p leaders -q + ``` + +2. Download the leaderboard and save it to `leaderboard.txt`: + + ```bash + kaggle competitions leaderboard titanic > leaderboard.txt + ``` + +**Purpose:** + +This command lets you view your ranking and the scores of other participants in a competition. diff --git a/documentation/_build/html/_sources/configuration.md.txt b/documentation/_build/html/_sources/configuration.md.txt new file mode 100644 index 0000000..067522f --- /dev/null +++ b/documentation/_build/html/_sources/configuration.md.txt @@ -0,0 +1,89 @@ +# Kaggle CLI Configuration + +The Kaggle CLI uses a configuration file to store settings such as your API credentials and default values for commands. + +## Configuration Commands + +### `config view` + +Displays the current configuration values. + +**Usage:** + +```bash +kaggle config view +``` + +**Purpose:** + +This command allows you to inspect the current settings of your Kaggle CLI, such as the configured API endpoint, proxy settings, and default competition. + +### `config set` + +Sets a specific configuration value. + +**Usage:** + +```bash +kaggle config set -n -v +``` + +**Arguments:** + +* `-n, --name `: The name of the configuration parameter to set. Valid options are `competition`, `path`, and `proxy`. +* `-v, --value `: The value to set for the configuration parameter. + * For `competition`: The competition URL suffix (e.g., `titanic`). + * For `path`: The default folder where files will be downloaded. + * For `proxy`: The proxy server URL. + +**Example:** + +Set the default competition to "titanic": + +```bash +kaggle config set -n competition -v titanic +``` + +**Purpose:** + +Use this command to customize the behavior of the Kaggle CLI, such as setting a default competition to avoid specifying it in every command, defining a default download path, or configuring a proxy server. + +### `config unset` + +Clears a specific configuration value, reverting it to its default. + +**Usage:** + +```bash +kaggle config unset -n +``` + +**Arguments:** + +* `-n, --name `: The name of the configuration parameter to clear. Valid options are `competition`, `path`, and `proxy`. + +**Example:** + +Clear the default competition: + +```bash +kaggle config unset -n competition +``` + +**Purpose:** + +This command removes a previously set configuration value, allowing the CLI to use its default behavior or prompt for the value if required. + +## Configuration File Location + +The Kaggle CLI configuration is typically stored in a file named `kaggle.json` located in the `~/.kaggle/` directory on Linux and macOS, or `C:\Users\\.kaggle\` on Windows. + +This file contains your API username and key: + +```json +{"username":"YOUR_USERNAME","key":"YOUR_API_KEY"} +``` + +You can download this file from your Kaggle account page (`https://www.kaggle.com//account`) and place it in the correct directory. + +Alternatively, you can set the `KAGGLE_USERNAME` and `KAGGLE_KEY` environment variables. diff --git a/documentation/_build/html/_sources/datasets.md.txt b/documentation/_build/html/_sources/datasets.md.txt new file mode 100644 index 0000000..3163687 --- /dev/null +++ b/documentation/_build/html/_sources/datasets.md.txt @@ -0,0 +1,309 @@ +# Datasets Commands + +Commands for interacting with Kaggle datasets. + +## `kaggle datasets list` + +Lists available datasets. + +**Usage:** + +```bash +kaggle datasets list [options] +``` + +**Options:** + +* `--sort-by `: Sort results. Valid options: `hottest`, `votes`, `updated`, `active` (default: `hottest`). +* `--size `: DEPRECATED. Use `--min-size` and `--max-size`. +* `--file-type `: Filter by file type. Valid options: `all`, `csv`, `sqlite`, `json`, `bigQuery`. +* `--license `: Filter by license. Valid options: `all`, `cc`, `gpl`, `odb`, `other`. +* `--tags `: Filter by tags (comma-separated tag IDs). +* `-s, --search `: Search term. +* `-m, --mine`: Display only your datasets. +* `--user `: Filter by a specific user or organization. +* `-p, --page `: Page number for results (default: 1). +* `-v, --csv`: Print results in CSV format. +* `--max-size `: Maximum dataset size in bytes. +* `--min-size `: Minimum dataset size in bytes. + +**Examples:** + +1. List your own datasets: + + ```bash + kaggle datasets list -m + ``` + +2. List CSV datasets, page 2, sorted by last updated, containing "student" in their title, with size between 13000 and 15000 bytes: + + ```bash + kaggle datasets list --file-type csv --page 2 --sort-by updated -s student --min-size 13000 --max-size 15000 + ``` + +3. List datasets with an ODB license, tagged with "internet", and matching the search term "telco": + + ```bash + kaggle datasets list --license odb --tags internet --search telco + ``` + +**Purpose:** + +This command helps you find datasets on Kaggle based on various criteria like owner, file type, tags, and size. + +## `kaggle datasets files` + +Lists files for a specific dataset. + +**Usage:** + +```bash +kaggle datasets files [options] +``` + +**Arguments:** + +* ``: Dataset URL suffix in the format `owner/dataset-name` (e.g., `kerneler/brazilian-bird-observation-metadata-from-wikiaves`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `--page-token `: Page token for results paging. +* `--page-size `: Number of items to show on a page (default: 20, max: 200). + +**Example:** + +List the first 7 files for the dataset `kerneler/brazilian-bird-observation-metadata-from-wikiaves`: + +```bash +kaggle datasets files kerneler/brazilian-bird-observation-metadata-from-wikiaves --page-size=7 +``` + +**Purpose:** + +Use this command to see the individual files within a dataset before downloading. + +## `kaggle datasets download` + +Downloads dataset files. + +**Usage:** + +```bash +kaggle datasets download [options] +``` + +**Arguments:** + +* ``: Dataset URL suffix (e.g., `willianoliveiragibin/pixar-films`). + +**Options:** + +* `-f, --file `: Specific file to download (downloads all if not specified). +* `-p, --path `: Folder to download files to (defaults to current directory). +* `-w, --wp`: Download files to the current working path. +* `--unzip`: Unzip the downloaded file (deletes the .zip file afterwards). +* `-o, --force`: Force download, overwriting existing files. +* `-q, --quiet`: Suppress verbose output. + +**Examples:** + +1. Download all files for the dataset `willianoliveiragibin/pixar-films`: + + ```bash + kaggle datasets download -d willianoliveiragibin/pixar-films + ``` + +2. Download the dataset `goefft/public-datasets-with-file-types-and-columns`, unzip it into the `tmp` folder, overwriting if necessary, and suppress output: + + ```bash + kaggle datasets download goefft/public-datasets-with-file-types-and-columns -p tmp --unzip -o -q + ``` + +3. Download the specific file `dataset_results.csv` from `goefft/public-datasets-with-file-types-and-columns` to the current working directory, quietly, and force overwrite: + + ```bash + kaggle datasets download goefft/public-datasets-with-file-types-and-columns -f dataset_results.csv -w -q -o + ``` + +**Purpose:** + +This command allows you to retrieve dataset files for local use. + +## `kaggle datasets init` + +Initializes a metadata file (`dataset-metadata.json`) for creating a new dataset. + +**Usage:** + +```bash +kaggle datasets init -p +``` + +**Options:** + +* `-p, --path `: The path to the folder where the `dataset-metadata.json` file will be created (defaults to the current directory). + +**Example:** + +Initialize a dataset metadata file in the `tests/dataset` folder: + +```bash +kaggle datasets init -p tests/dataset +``` + +**Purpose:** + +This command creates a template `dataset-metadata.json` file that you need to edit before creating a new dataset on Kaggle. This file contains information like the dataset title, ID (slug), and licenses. + +## `kaggle datasets create` + +Creates a new dataset on Kaggle. + +**Usage:** + +```bash +kaggle datasets create -p [options] +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the data files and the `dataset-metadata.json` file (defaults to the current directory). +* `-u, --public`: Make the dataset public (default is private). +* `-q, --quiet`: Suppress verbose output. +* `-t, --keep-tabular`: Do not convert tabular files to CSV (default is to convert). +* `-r, --dir-mode `: How to handle directories: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). + +**Example:** + +Create a new public dataset from the files in `tests/dataset`, quietly, without converting tabular files, and skipping subdirectories. (Assumes `dataset-metadata.json` in `tests/dataset` has been properly edited with title and slug): + +```bash +# Example: Edit dataset-metadata.json first +# sed -i 's/INSERT_TITLE_HERE/My Dataset Title/' tests/dataset/dataset-metadata.json +# sed -i 's/INSERT_SLUG_HERE/my-dataset-slug/' tests/dataset/dataset-metadata.json + +kaggle datasets create -p tests/dataset --public -q -t -r skip +``` + +**Purpose:** + +This command uploads your local data files and the associated metadata to create a new dataset on Kaggle. + +## `kaggle datasets version` + +Creates a new version of an existing dataset. + +**Usage:** + +```bash +kaggle datasets version -p -m [options] +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the updated data files and `dataset-metadata.json` (defaults to current directory). +* `-m, --message `: (Required) Message describing the new version. +* `-q, --quiet`: Suppress verbose output. +* `-t, --keep-tabular`: Do not convert tabular files to CSV. +* `-r, --dir-mode `: Directory handling mode (`skip`, `zip`, `tar`). +* `-d, --delete-old-versions`: Delete old versions of this dataset. + +**Example:** + +Create a new version of a dataset using files from `tests/dataset` with version notes "Updated data", quietly, keeping tabular formats, skipping directories, and deleting old versions: + +```bash +kaggle datasets version -m "Updated data" -p tests/dataset -q -t -r skip -d +``` + +**Purpose:** + +Use this command to update an existing dataset with new files or metadata changes. + +## `kaggle datasets metadata` + +Downloads metadata for a dataset or updates existing local metadata. + +**Usage:** + +```bash +kaggle datasets metadata [options] +``` + +**Arguments:** + +* ``: Dataset URL suffix (e.g., `goefft/public-datasets-with-file-types-and-columns`). + +**Options:** + +* `-p, --path `: Directory to download/update metadata file (`dataset-metadata.json`). Defaults to current working directory. +* `--update`: Update existing local metadata file instead of downloading anew. + +**Example:** + +Download metadata for the dataset `goefft/public-datasets-with-file-types-and-columns` into the `tests/dataset` folder: + +```bash +kaggle datasets metadata goefft/public-datasets-with-file-types-and-columns -p tests/dataset +``` + +**Purpose:** + +This command allows you to fetch the `dataset-metadata.json` file for an existing dataset, which can be useful for inspection or as a template for creating a new version. + +## `kaggle datasets status` + +Gets the creation status of a dataset. + +**Usage:** + +```bash +kaggle datasets status +``` + +**Arguments:** + +* ``: Dataset URL suffix (e.g., `goefft/public-datasets-with-file-types-and-columns`). + +**Example:** + +Get the status of the dataset `goefft/public-datasets-with-file-types-and-columns`: + +```bash +kaggle datasets status goefft/public-datasets-with-file-types-and-columns +``` + +**Purpose:** + +After creating or updating a dataset, this command helps you check if the process was successful or if there were any issues. + +## `kaggle datasets delete` + +Deletes a dataset from Kaggle. + +**Usage:** + +```bash +kaggle datasets delete [options] +``` + +**Arguments:** + +* ``: Dataset URL suffix (e.g., `username/dataset-slug`). + +**Options:** + +* `-y, --yes`: Automatically confirm deletion without prompting. + +**Example:** + +Delete the dataset `username/dataset-slug` and automatically confirm: + +```bash +kaggle datasets delete username/dataset-slug --yes +``` + +**Purpose:** + +This command permanently removes one of your datasets from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/index.rst.txt b/documentation/_build/html/_sources/index.rst.txt new file mode 100644 index 0000000..a475280 --- /dev/null +++ b/documentation/_build/html/_sources/index.rst.txt @@ -0,0 +1,23 @@ +.. _kaggle: + +.. kaggle-api documentation master file, created by + sphinx-quickstart on Thu Jun 26 22:53:21 2025. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +kaggle-api documentation +======================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + intro + configuration + competitions + datasets + kernels + models + model_instances + model_instances_versions + tutorials diff --git a/documentation/_build/html/_sources/intro.md.txt b/documentation/_build/html/_sources/intro.md.txt new file mode 100644 index 0000000..4f9dad0 --- /dev/null +++ b/documentation/_build/html/_sources/intro.md.txt @@ -0,0 +1,87 @@ +.. _kaggle: + +# Kaggle CLI Documentation + +Welcome to the Kaggle CLI documentation. This guide provides detailed information on how to use the Kaggle command-line interface to interact with Kaggle's platform. + +## Getting Started + +Before you begin, ensure you have the Kaggle CLI installed and configured with your API credentials. You can find your API token on your Kaggle account page. + +### Installation + +Ensure you have Python 3 and the package manager `pip` installed. + +Run the following command to access the Kaggle API using the command line: + +`pip install kaggle` +(You may need to do `pip install --user kaggle` on Mac/Linux. This is recommended if problems come up during the installation process.) +Installations done through the root user (i.e. `sudo pip install kaggle`) will not work correctly unless you understand what you're doing. Even then, they still might not work. User installs are strongly recommended in the case of permissions errors. + +You can now use the `kaggle` command as shown in the examples below. + +If you run into a `kaggle: command not found` error, ensure that your python binaries are on your path. You can see where `kaggle` is installed by doing `pip uninstall kaggle` and seeing where the binary is (then cancel the uninstall when prompted). For a local user install on Linux, the default location is `~/.local/bin`. On Windows, the default location is `$PYTHON_HOME/Scripts`. + +IMPORTANT: We do not offer Python 2 support. Please ensure that you are using Python 3 before reporting any issues. + +### API credentials + +To use the Kaggle API, sign up for a Kaggle account at https://www.kaggle.com. Then go to the 'Account' tab of your user profile (`https://www.kaggle.com//account`) and select 'Create API Token'. This will trigger the download of `kaggle.json`, a file containing your API credentials. +Place this file in the location appropriate for your operating system: +* Linux: `$XDG_CONFIG_HOME/kaggle/kaggle.json` (defaults to `~/.config/kaggle/kaggle.json`). The path `~/.kaggle/kaggle.json` which was used by older versions of the tool is also still supported. +* Windows: `C:\Users\\.kaggle\kaggle.json` - you can check the exact location, sans drive, with `echo %HOMEPATH%`. +* Other: `~/.kaggle/kaggle.json` + +You can define a shell environment variable `KAGGLE_CONFIG_DIR` to change this location to `$KAGGLE_CONFIG_DIR/kaggle.json` (on Windows it will be `%KAGGLE_CONFIG_DIR%\kaggle.json`). + + +For your security, ensure that other users of your computer do not have read access to your credentials. On Unix-based systems you can do this with the following command: + +`chmod 600 ~/.config/kaggle/kaggle.json` + +You can also choose to export your Kaggle username and token to the environment: + +```bash +export KAGGLE_USERNAME=datadinosaur +export KAGGLE_KEY=xxxxxxxxxxxxxx +``` +In addition, you can export any other configuration value that normally would be in +the `kaggle.json` in the format 'KAGGLE_' (note uppercase). +For example, if the file had the variable "proxy" you would export `KAGGLE_PROXY` +and it would be discovered by the client. + +## Tutorials + +Explore these tutorials to learn how to perform common tasks: + +* [Tutorials](./tutorials.md) + * [Create a Dataset](./tutorials.md#tutorial-create-a-dataset) + * [Find and Download a Dataset](./tutorials.md#tutorial-find-and-download-a-dataset) + * [Create a Model](./tutorials.md#tutorial-create-a-model) + * [Create a Model Variation](./tutorials.md#tutorial-create-a-model-variation) + * [Create a Model Variation Version](./tutorials.md#tutorial-create-a-model-variation-version) + * [How to Submit to a Competition](./tutorials.md#tutorial-how-to-submit-to-a-competition) + * [How to Submit to a Code Competition](./tutorials.md#tutorial-how-to-submit-to-a-code-competition) + +## CLI Reference + +The Kaggle CLI is organized into several command groups: + +* [Competitions](./competitions.md): Manage and participate in Kaggle competitions. +* [Datasets](./datasets.md): Search, download, and manage Kaggle datasets. +* [Kernels](./kernels.md): Interact with Kaggle Kernels (notebooks and scripts). +* [Models](./models.md): Manage your Kaggle Models. +* [Model Variations](./model_instances.md): Manage variations of your Kaggle Models. +* [Model Variation Versions](./model_instances_versions.md): Manage versions of your Kaggle Model Variations. +* [Configuration](./configuration.md): Configure the Kaggle CLI. + +## Python API Reference + +The Kaggle CLI provides a Python API for interacting with Kaggle's platform. You can access the API using the `kaggle` module: + +```python +import kaggle +``` + +For more information about the Python API, see the +Kaggle Python API documentation. \ No newline at end of file diff --git a/documentation/_build/html/_sources/kernels.md.txt b/documentation/_build/html/_sources/kernels.md.txt new file mode 100644 index 0000000..7bdb036 --- /dev/null +++ b/documentation/_build/html/_sources/kernels.md.txt @@ -0,0 +1,277 @@ +# Kernels Commands + +Commands for interacting with Kaggle Kernels (notebooks and scripts). + +## `kaggle kernels list` + +Lists available kernels. + +**Usage:** + +```bash +kaggle kernels list [options] +``` + +**Options:** + +* `-m, --mine`: Display only your kernels. +* `-p, --page `: Page number for results (default: 1). +* `--page-size `: Number of items per page (default: 20). +* `-s, --search `: Search term. +* `-v, --csv`: Print results in CSV format. +* `--parent `: Filter by parent kernel (format: `owner/kernel-slug`). +* `--competition `: Filter by competition. +* `--dataset `: Filter by dataset (format: `owner/dataset-slug`). +* `--user `: Filter by a specific user. +* `--language `: Filter by language (`all`, `python`, `r`, `sqlite`, `julia`). +* `--kernel-type `: Filter by kernel type (`all`, `script`, `notebook`). +* `--output-type `: Filter by output type (`all`, `visualizations`, `data`). +* `--sort-by `: Sort results (`hotness`, `commentCount`, `dateCreated`, `dateRun`, `relevance`, `scoreAscending`, `scoreDescending`, `viewCount`, `voteCount`). Default: `hotness`. + +**Examples:** + +1. List your own kernels containing "Exercise" in the title, page 2, 5 items per page, in CSV format, sorted by run date: + + ```bash + kaggle kernels list -m -s Exercise --page-size 5 -p 2 -v --sort-by dateRun + ``` + +2. List kernels that are children of `$KAGGLE_DEVELOPER/exercise-lists` (replace `$KAGGLE_DEVELOPER` with your username): + + ```bash + kaggle kernels list --parent $KAGGLE_DEVELOPER/exercise-lists + ``` + +3. List the first 5 kernels for the "house-prices-advanced-regression-techniques" competition: + + ```bash + kaggle kernels list --competition house-prices-advanced-regression-techniques --page-size 5 + ``` + +4. List the first 5 kernels associated with the dataset `dansbecker/home-data-for-ml-course`: + + ```bash + kaggle kernels list --dataset dansbecker/home-data-for-ml-course --page-size 5 + ``` + +5. List Python notebooks by user `$KAGGLE_DEVELOPER` that output data: + + ```bash + kaggle kernels list --user $KAGGLE_DEVELOPER --language python --kernel-type notebook --output-type data + ``` + +**Purpose:** + +This command allows you to find kernels based on various filters like ownership, associated competition/dataset, language, or type. + +## `kaggle kernels files` + +Lists output files for a specific kernel. + +**Usage:** + +```bash +kaggle kernels files [options] +``` + +**Arguments:** + +* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `kerneler/sqlite-global-default`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `--page-token `: Page token for results paging. +* `--page-size `: Number of items to show on a page (default: 20, max: 200). + +**Example:** + +List the first output file for the kernel `kerneler/sqlite-global-default` in CSV format: + +```bash +kaggle kernels files kerneler/sqlite-global-default -v --page-size=1 +``` + +**Purpose:** + +Use this command to view the files generated by a kernel run. + +## `kaggle kernels init` + +Initializes a metadata file (`kernel-metadata.json`) for a new or existing kernel. + +**Usage:** + +```bash +kaggle kernels init -p +``` + +**Options:** + +* `-p, --path `: The path to the folder where the `kernel-metadata.json` file will be created (defaults to the current directory). + +**Example:** + +Initialize a kernel metadata file in the `tests/kernel` folder: + +```bash +kaggle kernels init -p tests/kernel +``` + +**Purpose:** + +This command creates a template `kernel-metadata.json` file. You need to edit this file with details like the kernel's title, ID (slug), language, kernel type, and data sources before pushing it to Kaggle. + +## `kaggle kernels push` + +Pushes new code/notebook and metadata to a kernel, then runs the kernel. + +**Usage:** + +```bash +kaggle kernels push -p [options] +``` + +**Options:** + +* `-p, --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). +* `-t, --timeout `: Maximum run time in seconds. + +**Example:** + +Push the kernel from the `tests/kernel` folder (assuming it contains the kernel file and `kernel-metadata.json`): + +```bash +kaggle kernels push -p tests/kernel +``` + +**Purpose:** + +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. + +## `kaggle kernels pull` + +Pulls down the code/notebook and metadata for a kernel. + +**Usage:** + +```bash +kaggle kernels pull [options] +``` + +**Arguments:** + +* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `$KAGGLE_DEVELOPER/exercise-as-with`). + +**Options:** + +* `-p, --path `: Folder to download files to (defaults to current directory). +* `-w, --wp`: Download files to the current working path. +* `-m, --metadata`: Generate a `kernel-metadata.json` file along with the kernel code. + +**Examples:** + +1. Pull the kernel `$KAGGLE_DEVELOPER/exercise-as-with` and its metadata into the `tests/kernel` folder: + + ```bash + kaggle kernels pull -p tests/kernel $KAGGLE_DEVELOPER/exercise-as-with -m + ``` + +2. Pull the kernel `$KAGGLE_DEVELOPER/exercise-as-with` into the current working directory: + + ```bash + kaggle kernels pull --wp $KAGGLE_DEVELOPER/exercise-as-with + ``` + +**Purpose:** + +This command allows you to download the source code and optionally the metadata of a kernel from Kaggle to your local machine. + +## `kaggle kernels output` + +Gets the data output from the latest run of a kernel. + +**Usage:** + +```bash +kaggle kernels output [options] +``` + +**Arguments:** + +* ``: Kernel URL suffix (e.g., `kerneler/using-google-bird-vocalization-model`). + +**Options:** + +* `-p, --path `: Folder to download output files to (defaults to current directory). +* `-w, --wp`: Download files to the current working path. +* `-o, --force`: Force download, overwriting existing files. +* `-q, --quiet`: Suppress verbose output. + +**Example:** + +Download the output of the kernel `kerneler/using-google-bird-vocalization-model`, forcing overwrite: + +```bash +kaggle kernels output kerneler/sqlite-global-default -o +``` + +**Purpose:** + +Use this command to retrieve the files generated by a kernel run, such as submission files, processed data, or visualizations. + +## `kaggle kernels status` + +Displays the status of the latest run of a kernel. + +**Usage:** + +```bash +kaggle kernels status +``` + +**Arguments:** + +* ``: Kernel URL suffix (e.g., `kerneler/sqlite-global-default`). + +**Example:** + +Get the status of the kernel `kerneler/sqlite-global-default`: + +```bash +kaggle kernels status kerneler/sqlite-global-default +``` + +**Purpose:** + +This command tells you whether the latest run of your kernel is still running, completed successfully, or failed. + +## `kaggle kernels delete` + +Deletes a kernel from Kaggle. + +**Usage:** + +```bash +kaggle kernels delete [options] +``` + +**Arguments:** + +* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `$KAGGLE_DEVELOPER/exercise-delete`). + +**Options:** + +* `-y, --yes`: Automatically confirm deletion without prompting. + +**Example:** + +Delete the kernel `$KAGGLE_DEVELOPER/exercise-delete` and automatically confirm: + +```bash +kaggle kernels delete $KAGGLE_DEVELOPER/exercise-delete --yes +``` + +**Purpose:** + +This command permanently removes one of your kernels from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/model_instances.md.txt b/documentation/_build/html/_sources/model_instances.md.txt new file mode 100644 index 0000000..eb1d37e --- /dev/null +++ b/documentation/_build/html/_sources/model_instances.md.txt @@ -0,0 +1,182 @@ +# Model Variation Commands + +Commands for interacting with variations of Kaggle Models. A model variation typically represents a specific framework of a parent model. + +## `kaggle models variations init` + +Initializes a metadata file (`model-instance-metadata.json`) for creating a new model variation. + +**Usage:** + +```bash +kaggle models variations init -p +``` + +**Options:** + +* `-p, --path `: The path to the folder where the `model-instance-metadata.json` file will be created (defaults to the current directory). + +**Example:** + +Initialize a model variation metadata file in the `tmp` folder: + +```bash +kaggle models variations init -p tmp +``` + +**Purpose:** + +This command creates a template `model-instance-metadata.json` file. You must edit this file with details such as the owner slug, the parent model slug, the variation (or instance) slug (URL-friendly name for this variations), and the framework (e.g., `tensorflow`, `pytorch`, `jax`, `sklearn`) before creating the variation. + +## `kaggle models variations create` + +Creates a new model variation under an existing model on Kaggle. + +**Usage:** + +```bash +kaggle models variations create -p [options] +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the model variation files and the `model-instance-metadata.json` file (defaults to the current directory). +* `-q, --quiet`: Suppress verbose output. +* `-r, --dir-mode `: How to handle directories within the upload: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). + +**Example:** + +Create a new model variation using the metadata and files in the `tmp` folder, quietly, skipping subdirectories. (Assumes `model-instance-metadata.json` in `tmp` has been properly edited): + +```bash +# Example: Edit model-instance-metadata.json first +# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-instance-metadata.json +# sed -i 's/INSERT_EXISTING_MODEL_SLUG_HERE/parent-model-slug/' tmp/model-instance-metadata.json +# sed -i 's/INSERT_INSTANCE_SLUG_HERE/my-instance-slug/' tmp/model-instance-metadata.json +# sed -i 's/INSERT_FRAMEWORK_HERE/jax/' tmp/model-instance-metadata.json +# echo "a,b,c,d" > tmp/data.csv # Example model file + +kaggle models variations create -p tmp -q -r skip +``` + +**Purpose:** + +This command uploads your local model files (e.g., weights, architecture definition) and the associated variation metadata to create a new variation under a specified parent model on Kaggle. This effectively creates the first version of this model variation. + +## `kaggle models variations get` + +Downloads the `model-instance-metadata.json` file for an existing model variation. + +**Usage:** + +```bash +kaggle models variations get -p +``` + +**Arguments:** + +* ``: Model variation URL suffix in the format `owner/model-slug/framework/instance-slug` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). + +**Options:** + +* `-p, --path `: Folder to download the `model-instance-metadata.json` file to. + +**Example:** + +Download the metadata for model variation `$KAGGLE_DEVELOPER/test-model/jax/main` into the `tmp` folder: + +```bash +kaggle models variations get $KAGGLE_DEVELOPER/test-model/jax/main -p tmp +``` + +**Purpose:** + +This command retrieves the metadata file for an existing model variation. This can be useful for inspection or as a basis for an update. + +## `kaggle models variations files` + +Lists files for the current version of a model variation. + +**Usage:** + +```bash +kaggle models variations files [options] +``` + +**Arguments:** + +* ``: Model variation URL suffix (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `--page-size `: Number of items per page (default: 20). +* `--page-token `: Page token for results paging. + +**Example:** + +List the first 5 files for the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` in CSV format: + +```bash +kaggle models variations files $KAGGLE_DEVELOPER/test-model/jax/main -v --page-size 5 +``` + +**Purpose:** + +Use this command to see the files associated with the latest version of a specific model variation. + +## `kaggle models variations update` + +Updates an existing model variation on Kaggle using a local `model-instance-metadata.json` file. + +**Usage:** + +```bash +kaggle models variations update -p +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the `model-instance-metadata.json` file with the updated information (defaults to the current directory). Note: This command only updates the metadata of the variation, not the files. To update files, create a new version. + +**Example:** + +Update the model variation whose details are in `tmp/model-instance-metadata.json` (ensure the slugs and owner in the JSON match an existing model variation): + +```bash +kaggle models variations update -p tmp +``` + +**Purpose:** + +Use this command to change the metadata of an existing model variation, such as its description or other fields defined in the `model-instance-metadata.json` file. This does not upload new files or create a new version. + +## `kaggle models variations delete` + +Deletes a model variation from Kaggle. + +**Usage:** + +```bash +kaggle models variations delete [options] +``` + +**Arguments:** + +* ``: Model variation URL suffix in the format `owner/model-slug/framework/instance-slug` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). + +**Options:** + +* `-y, --yes`: Automatically confirm deletion without prompting. + +**Example:** + +Delete the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` and automatically confirm: + +```bash +kaggle models variations delete $KAGGLE_DEVELOPER/test-model/jax/main -y +``` + +**Purpose:** + +This command permanently removes one of your model variations (and all its versions) from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/model_instances_versions.md.txt b/documentation/_build/html/_sources/model_instances_versions.md.txt new file mode 100644 index 0000000..9640216 --- /dev/null +++ b/documentation/_build/html/_sources/model_instances_versions.md.txt @@ -0,0 +1,135 @@ +# Model Variation Versions Commands + +Commands for managing versions of a specific Kaggle Model Variation. Each version represents a snapshot of the model variation files at a point in time. + +## `kaggle models variations versions create` + +Creates a new version of an existing model variation. + +**Usage:** + +```bash +kaggle models variations versions create -p [options] +``` + +**Arguments:** + +* ``: The target model variation URL suffix for the new version (format: `owner/model-slug/framework/instance-slug`, e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). + +**Options:** + +* `-p, --path `: Path to the folder containing the files for this new version (defaults to the current directory). +* `-n, --version-notes `: Notes describing this version. +* `-q, --quiet`: Suppress verbose output. +* `-r, --dir-mode `: How to handle directories within the upload: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). + +**Example:** + +Create a new version for the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` using files from the `tmp` folder, with version notes "Updated model files", quietly, and skipping subdirectories: + +```bash +# Ensure tmp folder contains the new files for the version, e.g., data_v2.csv +# echo "e,f,g,h" > tmp/data_v2.csv + +kaggle models variations versions create $KAGGLE_DEVELOPER/test-model/jax/main -p tmp -n "Updated model files" -q -r skip +``` + +**Purpose:** + +This command uploads a new set of files to an existing model variation, creating a new, numbered version. This allows you to track changes and revert to previous versions of your model variation files. + +## `kaggle models variations versions download` + +Downloads files for a specific version of a model variation. + +**Usage:** + +```bash +kaggle models variations versions download [options] +``` + +**Arguments:** + +* ``: Model variation version URL suffix in the format `owner/model-slug/framework/instance-slug/version-number` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main/1`). + +**Options:** + +* `-p, --path `: Folder to download files to (defaults to current directory). +* `--untar`: Untar the downloaded file if it's a `.tar` archive (deletes the `.tar` file afterwards). +* `--unzip`: Unzip the downloaded file if it's a `.zip` archive (deletes the `.zip` file afterwards). +* `-f, --force`: Force download, overwriting existing files. +* `-q, --quiet`: Suppress verbose output. + +**Example:** + +Download version 1 of the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` into the `tmp` folder, untar if applicable, force overwrite, and do it quietly: + +```bash +kaggle models variations versions download $KAGGLE_DEVELOPER/test-model/jax/main/1 -p tmp -q -f --untar +``` + +**Purpose:** + +This command allows you to retrieve the specific files associated with a particular version of a model variation. + +## `kaggle models variations versions files` + +Lists files for a specific version of a model variation. + +**Usage:** + +```bash +kaggle models variations versions files [options] +``` + +**Arguments:** + +* ``: Model variation version URL suffix (e.g., `google/gemma/pytorch/7b/2`). + +**Options:** + +* `-v, --csv`: Print results in CSV format. +* `--page-size `: Number of items per page (default: 20). +* `--page-token `: Page token for results paging. + +**Example:** + +List the first 3 files for version 2 of the model variation `google/gemma/pytorch/7b` in CSV format: + +```bash +kaggle models variations versions files google/gemma/pytorch/7b/2 -v --page-size=3 +``` + +**Purpose:** + +Use this command to see the individual files that constitute a specific version of a model variation before downloading. + +## `kaggle models variations versions delete` + +Deletes a specific version of a model variation from Kaggle. + +**Usage:** + +```bash +kaggle models variations versions delete [options] +``` + +**Arguments:** + +* ``: Model variation version URL suffix in the format `owner/model-slug/framework/instance-slug/version-number` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main/1`). + +**Options:** + +* `-y, --yes`: Automatically confirm deletion without prompting. + +**Example:** + +Delete version 1 of the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` and automatically confirm: + +```bash +kaggle models variations versions delete $KAGGLE_DEVELOPER/test-model/jax/main/1 -y +``` + +**Purpose:** + +This command permanently removes a specific version of your model variation from Kaggle. Use with caution. If it's the only version, this may lead to the deletion of the model variation itself if no other versions exist. diff --git a/documentation/_build/html/_sources/models.md.txt b/documentation/_build/html/_sources/models.md.txt new file mode 100644 index 0000000..70921a2 --- /dev/null +++ b/documentation/_build/html/_sources/models.md.txt @@ -0,0 +1,184 @@ +# Models Commands + +Commands for interacting with Kaggle Models. + +## `kaggle models list` + +Lists available models. + +**Usage:** + +```bash +kaggle models list [options] +``` + +**Options:** + +* `--owner `: Filter by a specific user or organization. +* `--sort-by `: Sort results. Valid options: `hotness`, `downloadCount`, `voteCount`, `notebookCount`, `createTime` (default: `hotness`). +* `-s, --search `: Search term. +* `--page-size `: Number of items per page (default: 20). +* `--page-token `: Page token for results paging. +* `-v, --csv`: Print results in CSV format. + +**Examples:** + +1. List models owned by `$KAGGLE_DEVELOPER` (replace with your username), sorted by creation time, in CSV format: + + ```bash + kaggle models list --owner $KAGGLE_DEVELOPER --sort-by createTime -v + ``` + +2. List the first 5 models matching the search term "gemini": + + ```bash + kaggle models list -s gemini --page-size 5 + ``` + +**Purpose:** + +This command helps you find models on Kaggle, filtering by owner or searching by keywords, and sorting by various criteria. + +## `kaggle models init` + +Initializes a metadata file (`model-metadata.json`) for creating a new model. + +**Usage:** + +```bash +kaggle models init -p +``` + +**Options:** + +* `-p, --path `: The path to the folder where the `model-metadata.json` file will be created (defaults to the current directory). + +**Example:** + +Initialize a model metadata file in a new temporary folder `tmp`: + +```bash +mkdir tmp +kaggle models init -p tmp +``` + +**Purpose:** + +This command creates a template `model-metadata.json` file. You must edit this file with your model's details, such as owner slug, title, model slug (URL-friendly version of the title), and a description, before creating the model on Kaggle. + +## `kaggle models create` + +Creates a new model on Kaggle. + +**Usage:** + +```bash +kaggle models create -p +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the `model-metadata.json` file (defaults to the current directory). This folder should also contain your model files that you intend to upload as part of the first model variation. + +**Example:** + +Create a new model using the metadata in `tmp/model-metadata.json`. (Assumes the metadata file has been edited with owner, title, and slug): + +```bash +# Example: Edit model-metadata.json first +# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-metadata.json +# sed -i 's/INSERT_TITLE_HERE/My Awesome Model/' tmp/model-metadata.json +# sed -i 's/INSERT_SLUG_HERE/my-awesome-model/' tmp/model-metadata.json + +kaggle models create -p tmp +``` + +**Purpose:** + +This command registers a new model on Kaggle using the provided metadata. After this, you will typically create model variations and versions. + +## `kaggle models get` + +Downloads the `model-metadata.json` file for an existing model. + +**Usage:** + +```bash +kaggle models get -p +``` + +**Arguments:** + +* ``: Model URL suffix in the format `owner/model-slug` (e.g., `$KAGGLE_DEVELOPER/test-model`). + +**Options:** + +* `-p, --path `: Folder to download the `model-metadata.json` file to. + +**Example:** + +Download the metadata for model `$KAGGLE_DEVELOPER/test-model` into the `tmp` folder: + +```bash +kaggle models get -p tmp $KAGGLE_DEVELOPER/test-model +``` + +**Purpose:** + +This command retrieves the metadata file for an existing model, which can be useful for inspection or as a basis for an update. + +## `kaggle models update` + +Updates an existing model on Kaggle using a local `model-metadata.json` file. + +**Usage:** + +```bash +kaggle models update -p +``` + +**Options:** + +* `-p, --path `: Path to the folder containing the `model-metadata.json` file with the updated information (defaults to the current directory). + +**Example:** + +Update the model whose details are in `tmp/model-metadata.json` (ensure the slug and owner in the JSON match an existing model): + +```bash +kaggle models update -p tmp +``` + +**Purpose:** + +Use this command to change the metadata of an existing model, such as its title, description, or other fields defined in the `model-metadata.json` file. + +## `kaggle models delete` + +Deletes a model from Kaggle. + +**Usage:** + +```bash +kaggle models delete [options] +``` + +**Arguments:** + +* ``: Model URL suffix in the format `owner/model-slug` (e.g., `$KAGGLE_DEVELOPER/test-model`). + +**Options:** + +* `-y, --yes`: Automatically confirm deletion without prompting. + +**Example:** + +Delete the model `$KAGGLE_DEVELOPER/test-model` and automatically confirm: + +```bash +kaggle models delete $KAGGLE_DEVELOPER/test-model -y +``` + +**Purpose:** + +This command permanently removes one of your models (and all its variations and versions) from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/tutorials.md.txt b/documentation/_build/html/_sources/tutorials.md.txt new file mode 100644 index 0000000..4b9c293 --- /dev/null +++ b/documentation/_build/html/_sources/tutorials.md.txt @@ -0,0 +1,322 @@ +# Kaggle CLI Tutorials + +These tutorials illustrate how to use a sequence of Kaggle CLI commands to accomplish common tasks. + +## Introduction + +Before starting these tutorials, please make sure you have: + +1. Installed the Kaggle CLI, following the instructions [here](https://github.com/Kaggle/kaggle-api/blob/main/documentation/intro.md#installation). +2. Set up your API credentials, following the instructions [here](https://github.com/Kaggle/kaggle-api/blob/main/documentation/intro.md#api-credentials) +3. Logged in to Kaggle in a web browser. This will allow you to verify the results of the CLI commands in the [`Your Work`](https://www.kaggle.com/work) section of your Kaggle profile. + +## Tutorial: Create a Dataset + +This tutorial walks you through creating a new dataset on Kaggle. + +1. **Start from an empty directory.** Create a new directory for your dataset files and navigate into it. + + ```bash + mkdir my-new-dataset + cd my-new-dataset + ``` + +2. **Create a sample data file.** For this example, create a CSV file named `sample_data.csv` with an index column and three random data columns, and a few rows of data. + + ```bash + echo "id,col_a,col_b,col_c" > sample_data.csv + echo "1,0.5,0.2,0.8" >> sample_data.csv + echo "2,0.1,0.7,0.3" >> sample_data.csv + echo "3,0.9,0.4,0.6" >> sample_data.csv + ``` + +3. **Initialize dataset metadata.** This creates a `dataset-metadata.json` file in your current directory. + + ```bash + kaggle datasets init + ``` + +4. **Edit the metadata file.** Open `dataset-metadata.json` in a text editor and make the following changes: + * Replace `"INSERT_TITLE_HERE"` with your desired dataset title, e.g., `"My Sample Dataset"`. + * Replace `"INSERT_SLUG_HERE"` with a URL-friendly version of your title, e.g., `"my-sample-dataset"`. The URL-friendly version is made by converting the title to lower-case and changing spaces to dashes. + * You can also add licenses, descriptions, and other relevant information. + +5. **Create the dataset.** This command uploads your `sample_data.csv` and `dataset-metadata.json` to Kaggle. + + ```bash + kaggle datasets create -p . + ``` + You can add `--public` to make it public immediately. + +6. **Verify on Kaggle.com.** Refresh the [`Datasets` tab in `Your Work`](https://www.kaggle.com/work/datasets). You should see "My Sample Dataset". + +## Tutorial: Find and Download a Dataset + +This tutorial explains how to find and download using the CLI. + +1. **Search for a Dataset (Optional).** + * If you know the dataset you want, you can skip this step. Otherwise, you can search for datasets. For example, to search for datasets related to "iris": + ```bash + kaggle datasets list -s iris + ``` + * This command will list datasets matching your search query. Note the dataset's "id" (e.g., `uciml/iris`) which you'll use for downloading. + +2. **Choose a Dataset and Create a Directory.** + * For this tutorial, we'll use the classic "Iris" dataset, which has the id `uciml/iris`. + * Create a new directory for your dataset and navigate into it: + ```bash + mkdir iris-dataset-analysis + cd iris-dataset-analysis + ``` + +3. **Download the Dataset.** + * Use the `kaggle datasets download` command with the dataset's id. + ```bash + kaggle datasets download -d uciml/iris + ``` + * This will download the dataset files, typically as a ZIP archive (e.g., `iris.zip`), into your current directory (`iris-dataset-analysis`). + +4. **Unzip the Dataset.** + * Note: you could skip this step by using the `--unzip` flag on the previous command. + * Most datasets are downloaded as ZIP files. You'll need to unzip the archive to access the data files (e.g., CSV files). + ```bash + # Make sure you have unzip installed, or use your OS's GUI to extract + # The actual zip file name might vary based on the dataset. + # For uciml/iris, it's iris.zip + unzip iris.zip + ``` + + +5. **Verify the results.** + * After unzipping, you should see the data files (e.g., `Iris.csv`, `database.sqlite`). + + +## Tutorial: Update a Kernel (Notebook) + +This tutorial shows how to download an existing kernel, modify it, and push the changes back to Kaggle. + +1. **Create or identify a kernel on Kaggle.com.** + * Log in to kaggle.com. + * Find an existing notebook you own (or create one). For this tutorial, let's assume its title is "My CLI Test Kernel". + * Note the kernel slug from the browser's address bar. It will be something like `YOUR_USERNAME/my-cli-test-kernel`. + +2. **Create a new local directory for your kernel.** + + ```bash + mkdir my-kernel-project + cd my-kernel-project + ``` + +3. **Pull the kernel.** Use the `kaggle kernels pull` command with your username and the kernel slug. The `-m` flag includes the `kernel-metadata.json` file, which is required for pushing updates. + + ```bash + # Replace YOUR_USERNAME with your actual Kaggle username + kaggle kernels pull YOUR_USERNAME/my-cli-test-kernel -m + ``` + This will download `my-cli-test-kernel.ipynb` (or `.py`/`.Rmd`) and `kernel-metadata.json`. + +4. **Edit the kernel or metadata.** + * Open the downloaded notebook file (e.g., `my-cli-test-kernel.ipynb`) and make some changes to the code or content. + * Open `kernel-metadata.json`. Let's add "benchmark" to the keywords. Find the `"keywords": []` line and change it to `"keywords": ["benchmark"]`. + * *Note: While you can edit keywords here, it's often best to manage them on kaggle.com, as there is a restricted list of allowed keywords.* + +5. **Push the kernel.** This uploads your changes and the updated metadata, then runs the kernel on Kaggle. + + ```bash + kaggle kernels push -p . + ``` + +6. **Verify on Kaggle.com.** Refresh the [`Code` tab in `Your Work`](https://www.kaggle.com/work/code). You should see your code changes and the "benchmark" tag added to the kernel settings. + +## Tutorial: Create a Model + +This tutorial guides you through creating a new model on Kaggle. + +1. **Start from an empty directory.** Create a new directory for your model files and navigate into it. + + ```bash + mkdir my-new-model + cd my-new-model + ``` + +2. **Copy your model definition files (optional for this step).** If you have files that define your model (e.g., Python scripts, model weights), copy them into this directory. For the `kaggle models create` step, only the metadata is strictly required, but you'll need files when you create a model variation. + +3. **Initialize model metadata.** This creates a `model-metadata.json` file. + + ```bash + kaggle models init + ``` + +4. **Edit the metadata file.** Open `model-metadata.json` and make the following changes: + * Replace `"INSERT_OWNER_SLUG_HERE"` with your Kaggle username (e.g., `"YOUR_USERNAME"`). + * Replace `"INSERT_TITLE_HERE"` with your model's title (e.g., `"My Awesome AI Model"`). + * Replace `"INSERT_SLUG_HERE"` with a URL-friendly version of the title (e.g., `"my-awesome-ai-model"`). + * Fill out the `"description"` field and other relevant sections like `"licenses"`. + +5. **Create the model.** + + ```bash + kaggle models create -p . + ``` + +6. **Verify on Kaggle.com.** Refresh the [`Models` tab in `Your Work`](https://www.kaggle.com/work/models). You should see "My Awesome AI Model". + +## Tutorial: Create a Model Variation + +This tutorial shows how to create a variation under an existing model. A model variation usually represents the model implemented in a specific framework (like TensorFlow, PyTorch, JAX, etc.) and includes the actual model files. + +1. **Ensure you have a parent model.** Follow the "Create a Model" tutorial if you haven't already. Let's assume your model slug is `my-awesome-ai-model` and your username is `YOUR_USERNAME`. + +2. **Prepare your model variation files.** In your model directory (e.g., `my-new-model`), create or place the files for this specific variation. For example, a JAX model might have a `flax_model.params` file. + + ```bash + # In the my-new-model directory + echo "This is a placeholder for JAX model parameters" > flax_model.params + ``` + +3. **Initialize model variation metadata.** This creates `model-instance-metadata.json`. + + ```bash + # Still in the my-new-model directory + kaggle models variations init + ``` + +4. **Edit the variation metadata file.** Open `model-instance-metadata.json` and make changes: + * Replace `"INSERT_OWNER_SLUG_HERE"` with your Kaggle username (e.g., `"YOUR_USERNAME"`). + * Replace `"INSERT_EXISTING_MODEL_SLUG_HERE"` with your parent model's slug (e.g., `"my-awesome-ai-model"`). + * Replace `"INSERT_INSTANCE_SLUG_HERE"` with a slug for this variation (e.g., `"jax-implementation"`). + * Replace `"INSERT_FRAMEWORK_HERE"` with the model framework (e.g., `"jax"`, `"tensorflow"`, `"pytorch"`, `"sklearn"`). + * Update the `"instance_size_bytes"` if known, and add a `"description"`. + +5. **Create the model variation.** This uploads the files in the current directory (e.g., `flax_model.params`) along with the variation metadata. + + ```bash + kaggle models variations create -p . + ``` + +6. **Verify on Kaggle.com.** Go to your model's page on Kaggle by clicking on the model under in the [`Models` tab on `Your Work`](https://www.kaggle.com/work/models). You should see a new "jax-implementation" variation listed, and it will have one version containing `flax_model.params`. + +## Tutorial: Create a Model Variation Version + +This tutorial explains how to add a new version to an existing model variation, for example, when you have updated model weights or files. + +1. **Ensure you have a model variation.** Follow the "Create a Model Variation" tutorial. Let's assume your variation is `YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation`. + +2. **Prepare your updated files.** In your model variation directory (e.g., `my-new-model`), update or add new files for this version. For example, create `flax_model_v2.params`. + + ```bash + # In the my-new-model directory + echo "Updated JAX model parameters for V2" > flax_model_v2.params + # You might also remove or update flax_model.params if it's being replaced + ``` + +3. **Create the new model variation version.** You need to specify the parent model variation and provide version notes. The files from the `-p` path will form the contents of this new version. + + ```bash + # Replace YOUR_USERNAME and the slugs for model and variation accordingly + kaggle models variations versions create YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation -p . -n "Second version with updated parameters" + ``` + *Note: The `-p .` means all files in the current directory will be uploaded as part of this new version. If you only want to upload `flax_model_v2.params`, ensure only it (and any other V2 files) are in a directory and point `-p` to that directory, or manage your files carefully.* + +4. **Verify on Kaggle.com.** Go to your model variation page on Kaggle (e.g., `YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation`) by clicking on the [`Models` tab on `Your Work`](https://www.kaggle.com/work/models). You should see a new version (e.g., version 2) listed with your notes and the new files. + +## Tutorial: How to Submit to a Competition + +This tutorial walks you through the process of making a submission to a Kaggle competition using the CLI. + +1. **Find a Competition and Accept Rules.** + * First, you need to find a competition. You can list active competitions using `kaggle competitions list`. + * For this tutorial, we'll use the "titanic" competition, which is a common starting point. You can find it at [`https://www.kaggle.com/c/titanic`](https://www.kaggle.com/c/titanic). + * **Important**: Before you can download data or submit, you *must* join the competition and accept the competition's rules on the Kaggle website. Navigate to the competition on kaggle.com to do this. + +2. **Create a Directory and Download Competition Files.** + * Create a new directory for your competition files and navigate into it. + ```bash + mkdir titanic-competition + cd titanic-competition + ``` + * Download the competition files. This usually includes training data, test data, and a sample submission file. + ```bash + kaggle competitions download -c titanic + ``` + * This will download `titanic.zip`. You'll need to unzip it to see the files (e.g., `train.csv`, `test.csv`, `gender_submission.csv`). + ```bash + # Make sure you have unzip installed, or use your OS's GUI to extract + # The actual zip file name might vary based on the competition. + unzip titanic.zip + ``` + +3. **Create Your Submission File.** + * The required format for the submission file is specific to each competition. You can find this information on the competition's "Evaluation" page or by examining the sample submission file (e.g., `gender_submission.csv` for the Titanic competition). + * For the Titanic competition, the submission file needs two columns: `PassengerId` and `Survived`. The `Survived` column should contain your predictions (0 for deceased, 1 for survived). + * Let's create a very simple submission file based on the `gender_submission.csv` (which predicts survival based on gender). For this tutorial, we'll just copy it and use it as our submission. In a real scenario, you would generate this file from your model's predictions on the `test.csv` data. + ```bash + cp gender_submission.csv my_submission.csv + ``` + * Your `my_submission.csv` should look something like this: + ``` + PassengerId,Survived + 892,0 + 893,1 + 894,0 + ... + ``` + +4. **Submit to the Competition.** + * Use the `kaggle competitions submit` command. You need to specify: + * The competition ID (`-c titanic`). + * The path to your submission file (`-f my_submission.csv`). + * A message describing your submission (`-m "My first submission via CLI"`). + ```bash + kaggle competitions submit -c titanic -f my_submission.csv -m "My first submission via CLI" + ``` + +5. **Check Your Submission Status.** + * After submitting, you'll get a message indicating success or failure. + * You can check your submission's score and status on the "My Submissions" tab of the competition page on Kaggle.com (e.g., [`https://www.kaggle.com/c/titanic/submissions`](https://www.kaggle.com/c/titanic/submissions)). + * You can also list your recent submissions and their scores via the CLI: + ```bash + kaggle competitions submissions -c titanic + ``` + * This command will show your submission, its status (e.g., `complete`, `error`), and your public/private scores if available. + + +## Tutorial: How to Submit to a Code Competition + +This tutorial walks you through the process of submitting to a code competition on Kaggle. + +1. **Find a Code Competition.** + + * First, you need to find a code competition to participate in. You can browse the available competitions on the [Kaggle competitions page](https://www.kaggle.com/competitions). Many Featured Competitions are code competitions. + +2. **Download the Dataset.** + + * Once you have chosen a competition, you need to download the dataset. You can do this using the `kaggle competitions download` command: + ```bash + kaggle competitions download -c + ``` + * Replace `` with the name of the competition you want to participate in. + +3. **Create a Notebook.** + + * Next, you need to create a Kaggle Notebook to work on your submission. A Kaggle Notebook contains the code and environment settings for Kaggle to run and evaluate your submission. Follow the tutorial on [Creating / Updating Notebooks](https://github.com/Kaggle/kaggle-api/blob/main/documentation/tutorials.md#tutorial-update-a-kernel-notebook) if you're not sure how to do this. + +4. **Write Your Code.** + + * Now it's time to write your code! You can use any programming language or framework that is supported by Kaggle. The goal is to create a model that can make predictions on the test set. + +5. **Submit Your Prediction.** + + * Once you are happy with your model, you can submit your prediction to the competition. You can do this using the `kaggle competitions submit` command: + ```bash + kaggle competitions submit -c -k / -m + ``` + * Replace `` with the name of the competition, `/` with the identifier of your notebook, and `` with a brief description of your submission. + +6. **Check Your Score.** + + * After you have submitted your prediction, you can check your score on the competition leaderboard. The leaderboard shows the scores of all the participants in the competition. You can download the leaderboard using the `kaggle competitions leaderboard` command: + ```bash + kaggle competitions leaderboard + ``` + diff --git a/documentation/_build/html/_static/alabaster.css b/documentation/_build/html/_static/alabaster.css new file mode 100644 index 0000000..7e75bf8 --- /dev/null +++ b/documentation/_build/html/_static/alabaster.css @@ -0,0 +1,663 @@ +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar { + max-height: 100%; + overflow-y: auto; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox { + margin: 1em 0; +} + +div.sphinxsidebar .search > div { + display: table-cell; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin-left: 0; + margin-right: 0; + margin-top: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: unset; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + +@media screen and (max-width: 940px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.sphinxsidebar { + display: block; + float: none; + width: unset; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + min-width: auto; /* fixes width on small screens, breaks .hll */ + padding: 0; + } + + .hll { + /* "fixes" the breakage */ + width: max-content; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Hide ugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} + +img.github { + position: absolute; + top: 0; + border: 0; + right: 0; +} \ No newline at end of file diff --git a/documentation/_build/html/_static/basic.css b/documentation/_build/html/_static/basic.css new file mode 100644 index 0000000..0028826 --- /dev/null +++ b/documentation/_build/html/_static/basic.css @@ -0,0 +1,906 @@ +/* + * Sphinx stylesheet -- basic theme. + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin-top: 10px; +} + +ul.search li { + padding: 5px 0; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: inherit; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/documentation/_build/html/_static/custom.css b/documentation/_build/html/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/documentation/_build/html/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/documentation/_build/html/_static/doctools.js b/documentation/_build/html/_static/doctools.js new file mode 100644 index 0000000..0398ebb --- /dev/null +++ b/documentation/_build/html/_static/doctools.js @@ -0,0 +1,149 @@ +/* + * Base JavaScript utilities for all Sphinx HTML documentation. + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/documentation/_build/html/_static/documentation_options.js b/documentation/_build/html/_static/documentation_options.js new file mode 100644 index 0000000..7e4c114 --- /dev/null +++ b/documentation/_build/html/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/documentation/_build/html/_static/file.png b/documentation/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/documentation/_build/html/_static/github-banner.svg b/documentation/_build/html/_static/github-banner.svg new file mode 100644 index 0000000..c47d9dc --- /dev/null +++ b/documentation/_build/html/_static/github-banner.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/documentation/_build/html/_static/language_data.js b/documentation/_build/html/_static/language_data.js new file mode 100644 index 0000000..c7fe6c6 --- /dev/null +++ b/documentation/_build/html/_static/language_data.js @@ -0,0 +1,192 @@ +/* + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/documentation/_build/html/_static/minus.png b/documentation/_build/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/documentation/_build/html/_static/plus.png b/documentation/_build/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/documentation/_build/html/_static/pygments.css b/documentation/_build/html/_static/pygments.css new file mode 100644 index 0000000..04a4174 --- /dev/null +++ b/documentation/_build/html/_static/pygments.css @@ -0,0 +1,84 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #004461; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #582800 } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902 } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000 } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #745334 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #990000 } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #004461 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #888888 } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #990000 } /* Literal.Number.Bin */ +.highlight .mf { color: #990000 } /* Literal.Number.Float */ +.highlight .mh { color: #990000 } /* Literal.Number.Hex */ +.highlight .mi { color: #990000 } /* Literal.Number.Integer */ +.highlight .mo { color: #990000 } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/documentation/_build/html/_static/searchtools.js b/documentation/_build/html/_static/searchtools.js new file mode 100644 index 0000000..91f4be5 --- /dev/null +++ b/documentation/_build/html/_static/searchtools.js @@ -0,0 +1,635 @@ +/* + * Sphinx JavaScript utilities for the full-text search. + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename, kind] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +// Global search result kind enum, used by themes to style search results. +class SearchResultKind { + static get index() { return "index"; } + static get object() { return "object"; } + static get text() { return "text"; } + static get title() { return "title"; } +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename, kind] = item; + + let listItem = document.createElement("li"); + // Add a class representing the item's type: + // can be used by a theme's CSS selector for styling + // See SearchResultKind for the class names. + listItem.classList.add(`kind-${kind}`); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = Documentation.ngettext( + "Search finished, found one page matching the search query.", + "Search finished, found ${resultCount} pages matching the search query.", + resultCount, + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.setAttribute("role", "list"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename, kind]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + SearchResultKind.title, + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + SearchResultKind.index, + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + SearchResultKind.object, + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + // find documents, if any, containing the query word in their text/title term indices + // use Object.hasOwnProperty to avoid mismatching against prototype properties + const arr = [ + { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term }, + { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, new Map()); + const fileScores = scoreMap.get(file); + fileScores.set(word, record.score); + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + SearchResultKind.text, + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/documentation/_build/html/_static/sphinx_highlight.js b/documentation/_build/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/documentation/_build/html/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/documentation/_build/html/competitions.html b/documentation/_build/html/competitions.html new file mode 100644 index 0000000..5ed6a1f --- /dev/null +++ b/documentation/_build/html/competitions.html @@ -0,0 +1,301 @@ + + + + + + + + Competitions Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Competitions Commands

+

Commands for interacting with Kaggle competitions.

+

For tutorials on how to submit to competitions :

+ +
+

kaggle competitions list

+

Lists available competitions.

+

Usage:

+
kaggle competitions list [options]
+
+
+

Options:

+
    +
  • --group <GROUP>: Filter by competition group. Valid options: general, entered, inClass.

  • +
  • --category <CATEGORY>: Filter by competition category. Valid options: all, featured, research, recruitment, gettingStarted, masters, playground.

  • +
  • --sort-by <SORT_BY>: Sort results. Valid options: grouped, prize, earliestDeadline, latestDeadline, numberOfTeams, recentlyCreated (default: latestDeadline).

  • +
  • -p, --page <PAGE>: Page number for results (default: 1).

  • +
  • -s, --search <SEARCH_TERM>: Search term.

  • +
  • -v, --csv: Print results in CSV format.

  • +
+

Example:

+

List featured competitions in the general group, sorted by prize:

+
kaggle competitions list --group general --category featured --sort-by prize
+
+
+

Purpose:

+

This command helps you discover new competitions or find specific ones based on various criteria.

+
+
+

kaggle competitions files

+

Lists files for a specific competition.

+

Usage:

+
kaggle competitions files <COMPETITION> [options]
+
+
+

Arguments:

+
    +
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • +
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • +
+

Example:

+

List the first 3 files for the “titanic” competition in CSV format, quietly:

+
kaggle competitions files titanic --page-size=3 -v -q
+
+
+

Purpose:

+

Use this command to see the data files available for a competition before downloading them.

+
+
+

kaggle competitions download

+

Downloads competition files.

+

Usage:

+
kaggle competitions download <COMPETITION> [options]
+
+
+

Arguments:

+
    +
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • +
+

Options:

+
    +
  • -f, --file <FILE_NAME>: Specific file to download (downloads all if not specified).

  • +
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • +
  • -w, --wp: Download files to the current working path (equivalent to -p .).

  • +
  • -o, --force: Force download, overwriting existing files.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Examples:

+
    +
  1. Download all files for the “titanic” competition to the current directory, overwriting existing files, quietly:

    +
    kaggle competitions download titanic -w -o -q
    +
    +
    +
  2. +
  3. Download the test.csv file from the “titanic” competition to a folder named tost:

    +
    kaggle competitions download titanic -f test.csv -p tost
    +
    +
    +
  4. +
+

Purpose:

+

This command allows you to get the necessary data files for a competition onto your local machine.

+
+
+

kaggle competitions submit

+

Makes a new submission to a competition.

+

Usage:

+
kaggle competitions submit <COMPETITION> -f <FILE_NAME> -m <MESSAGE> [options]
+
+
+

Arguments:

+
    +
  • <COMPETITION>: Competition URL suffix (e.g., house-prices-advanced-regression-techniques).

  • +
  • -f, --file <FILE_NAME>: The submission file.

  • +
  • -m, --message <MESSAGE>: The submission message.

  • +
+

Options:

+
    +
  • -k, --kernel <KERNEL>: Name of the kernel (notebook) to submit (for code competitions).

  • +
  • -v, --version <VERSION>: Version of the kernel to submit.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Example:

+

Submit sample_submission.csv to the “house-prices-advanced-regression-techniques” competition with the message “Test message”:

+
kaggle competitions submit house-prices-advanced-regression-techniques -f sample_submission.csv -m "Test message"
+
+
+

Purpose:

+

Use this command to upload your predictions or code to a competition for scoring.

+
+
+

kaggle competitions submissions

+

Shows your past submissions for a competition.

+

Usage:

+
kaggle competitions submissions <COMPETITION> [options]
+
+
+

Arguments:

+
    +
  • <COMPETITION>: Competition URL suffix (e.g., house-prices-advanced-regression-techniques).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Example:

+

Show submissions for “house-prices-advanced-regression-techniques” in CSV format, quietly:

+
kaggle competitions submissions house-prices-advanced-regression-techniques -v -q
+
+
+

Purpose:

+

This command allows you to review your previous submission attempts and their scores.

+
+
+

kaggle competitions leaderboard

+

Gets competition leaderboard information.

+

Usage:

+
kaggle competitions leaderboard <COMPETITION> [options]
+
+
+

Arguments:

+
    +
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • +
+

Options:

+
    +
  • -s, --show: Show the top of the leaderboard in the console.

  • +
  • -d, --download: Download the entire leaderboard to a CSV file.

  • +
  • -p, --path <PATH>: Folder to download the leaderboard to (if -d is used).

  • +
  • -v, --csv: Print results in CSV format (used with -s).

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Examples:

+
    +
  1. Download the “titanic” leaderboard to a folder named leaders, quietly:

    +
    kaggle competitions leaderboard titanic -d -p leaders -q
    +
    +
    +
  2. +
  3. Download the leaderboard and save it to leaderboard.txt:

    +
    kaggle competitions leaderboard titanic > leaderboard.txt
    +
    +
    +
  4. +
+

Purpose:

+

This command lets you view your ranking and the scores of other participants in a competition.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/configuration.html b/documentation/_build/html/configuration.html new file mode 100644 index 0000000..e7ff6dd --- /dev/null +++ b/documentation/_build/html/configuration.html @@ -0,0 +1,189 @@ + + + + + + + + Kaggle CLI Configuration — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Kaggle CLI Configuration

+

The Kaggle CLI uses a configuration file to store settings such as your API credentials and default values for commands.

+
+

Configuration Commands

+
+

config view

+

Displays the current configuration values.

+

Usage:

+
kaggle config view
+
+
+

Purpose:

+

This command allows you to inspect the current settings of your Kaggle CLI, such as the configured API endpoint, proxy settings, and default competition.

+
+
+

config set

+

Sets a specific configuration value.

+

Usage:

+
kaggle config set -n <NAME> -v <VALUE>
+
+
+

Arguments:

+
    +
  • -n, --name <NAME>: The name of the configuration parameter to set. Valid options are competition, path, and proxy.

  • +
  • -v, --value <VALUE>: The value to set for the configuration parameter.

    +
      +
    • For competition: The competition URL suffix (e.g., titanic).

    • +
    • For path: The default folder where files will be downloaded.

    • +
    • For proxy: The proxy server URL.

    • +
    +
  • +
+

Example:

+

Set the default competition to “titanic”:

+
kaggle config set -n competition -v titanic
+
+
+

Purpose:

+

Use this command to customize the behavior of the Kaggle CLI, such as setting a default competition to avoid specifying it in every command, defining a default download path, or configuring a proxy server.

+
+
+

config unset

+

Clears a specific configuration value, reverting it to its default.

+

Usage:

+
kaggle config unset -n <NAME>
+
+
+

Arguments:

+
    +
  • -n, --name <NAME>: The name of the configuration parameter to clear. Valid options are competition, path, and proxy.

  • +
+

Example:

+

Clear the default competition:

+
kaggle config unset -n competition
+
+
+

Purpose:

+

This command removes a previously set configuration value, allowing the CLI to use its default behavior or prompt for the value if required.

+
+
+
+

Configuration File Location

+

The Kaggle CLI configuration is typically stored in a file named kaggle.json located in the ~/.kaggle/ directory on Linux and macOS, or C:\Users\<Windows-username>\.kaggle\ on Windows.

+

This file contains your API username and key:

+
{"username":"YOUR_USERNAME","key":"YOUR_API_KEY"}
+
+
+

You can download this file from your Kaggle account page (https://www.kaggle.com/<YOUR_USERNAME>/account) and place it in the correct directory.

+

Alternatively, you can set the KAGGLE_USERNAME and KAGGLE_KEY environment variables.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/datasets.html b/documentation/_build/html/datasets.html new file mode 100644 index 0000000..a4ea936 --- /dev/null +++ b/documentation/_build/html/datasets.html @@ -0,0 +1,373 @@ + + + + + + + + Datasets Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Datasets Commands

+

Commands for interacting with Kaggle datasets.

+
+

kaggle datasets list

+

Lists available datasets.

+

Usage:

+
kaggle datasets list [options]
+
+
+

Options:

+
    +
  • --sort-by <SORT_BY>: Sort results. Valid options: hottest, votes, updated, active (default: hottest).

  • +
  • --size <SIZE_CATEGORY>: DEPRECATED. Use --min-size and --max-size.

  • +
  • --file-type <FILE_TYPE>: Filter by file type. Valid options: all, csv, sqlite, json, bigQuery.

  • +
  • --license <LICENSE_NAME>: Filter by license. Valid options: all, cc, gpl, odb, other.

  • +
  • --tags <TAG_IDS>: Filter by tags (comma-separated tag IDs).

  • +
  • -s, --search <SEARCH_TERM>: Search term.

  • +
  • -m, --mine: Display only your datasets.

  • +
  • --user <USER>: Filter by a specific user or organization.

  • +
  • -p, --page <PAGE>: Page number for results (default: 1).

  • +
  • -v, --csv: Print results in CSV format.

  • +
  • --max-size <BYTES>: Maximum dataset size in bytes.

  • +
  • --min-size <BYTES>: Minimum dataset size in bytes.

  • +
+

Examples:

+
    +
  1. List your own datasets:

    +
    kaggle datasets list -m
    +
    +
    +
  2. +
  3. List CSV datasets, page 2, sorted by last updated, containing “student” in their title, with size between 13000 and 15000 bytes:

    +
    kaggle datasets list --file-type csv --page 2 --sort-by updated -s student --min-size 13000 --max-size 15000
    +
    +
    +
  4. +
  5. List datasets with an ODB license, tagged with “internet”, and matching the search term “telco”:

    +
    kaggle datasets list --license odb --tags internet --search telco
    +
    +
    +
  6. +
+

Purpose:

+

This command helps you find datasets on Kaggle based on various criteria like owner, file type, tags, and size.

+
+
+

kaggle datasets files

+

Lists files for a specific dataset.

+

Usage:

+
kaggle datasets files <DATASET> [options]
+
+
+

Arguments:

+
    +
  • <DATASET>: Dataset URL suffix in the format owner/dataset-name (e.g., kerneler/brazilian-bird-observation-metadata-from-wikiaves).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • +
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • +
+

Example:

+

List the first 7 files for the dataset kerneler/brazilian-bird-observation-metadata-from-wikiaves:

+
kaggle datasets files kerneler/brazilian-bird-observation-metadata-from-wikiaves --page-size=7
+
+
+

Purpose:

+

Use this command to see the individual files within a dataset before downloading.

+
+
+

kaggle datasets download

+

Downloads dataset files.

+

Usage:

+
kaggle datasets download <DATASET> [options]
+
+
+

Arguments:

+
    +
  • <DATASET>: Dataset URL suffix (e.g., willianoliveiragibin/pixar-films).

  • +
+

Options:

+
    +
  • -f, --file <FILE_NAME>: Specific file to download (downloads all if not specified).

  • +
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • +
  • -w, --wp: Download files to the current working path.

  • +
  • --unzip: Unzip the downloaded file (deletes the .zip file afterwards).

  • +
  • -o, --force: Force download, overwriting existing files.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Examples:

+
    +
  1. Download all files for the dataset willianoliveiragibin/pixar-films:

    +
    kaggle datasets download -d willianoliveiragibin/pixar-films
    +
    +
    +
  2. +
  3. Download the dataset goefft/public-datasets-with-file-types-and-columns, unzip it into the tmp folder, overwriting if necessary, and suppress output:

    +
    kaggle datasets download goefft/public-datasets-with-file-types-and-columns -p tmp --unzip -o -q
    +
    +
    +
  4. +
  5. Download the specific file dataset_results.csv from goefft/public-datasets-with-file-types-and-columns to the current working directory, quietly, and force overwrite:

    +
    kaggle datasets download goefft/public-datasets-with-file-types-and-columns -f dataset_results.csv -w -q -o
    +
    +
    +
  6. +
+

Purpose:

+

This command allows you to retrieve dataset files for local use.

+
+
+

kaggle datasets init

+

Initializes a metadata file (dataset-metadata.json) for creating a new dataset.

+

Usage:

+
kaggle datasets init -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: The path to the folder where the dataset-metadata.json file will be created (defaults to the current directory).

  • +
+

Example:

+

Initialize a dataset metadata file in the tests/dataset folder:

+
kaggle datasets init -p tests/dataset
+
+
+

Purpose:

+

This command creates a template dataset-metadata.json file that you need to edit before creating a new dataset on Kaggle. This file contains information like the dataset title, ID (slug), and licenses.

+
+
+

kaggle datasets create

+

Creates a new dataset on Kaggle.

+

Usage:

+
kaggle datasets create -p <FOLDER_PATH> [options]
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the data files and the dataset-metadata.json file (defaults to the current directory).

  • +
  • -u, --public: Make the dataset public (default is private).

  • +
  • -q, --quiet: Suppress verbose output.

  • +
  • -t, --keep-tabular: Do not convert tabular files to CSV (default is to convert).

  • +
  • -r, --dir-mode <MODE>: How to handle directories: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • +
+

Example:

+

Create a new public dataset from the files in tests/dataset, quietly, without converting tabular files, and skipping subdirectories. (Assumes dataset-metadata.json in tests/dataset has been properly edited with title and slug):

+
# Example: Edit dataset-metadata.json first
+# sed -i 's/INSERT_TITLE_HERE/My Dataset Title/' tests/dataset/dataset-metadata.json
+# sed -i 's/INSERT_SLUG_HERE/my-dataset-slug/' tests/dataset/dataset-metadata.json
+
+kaggle datasets create -p tests/dataset --public -q -t -r skip
+
+
+

Purpose:

+

This command uploads your local data files and the associated metadata to create a new dataset on Kaggle.

+
+
+

kaggle datasets version

+

Creates a new version of an existing dataset.

+

Usage:

+
kaggle datasets version -p <FOLDER_PATH> -m <VERSION_NOTES> [options]
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the updated data files and dataset-metadata.json (defaults to current directory).

  • +
  • -m, --message <VERSION_NOTES>: (Required) Message describing the new version.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
  • -t, --keep-tabular: Do not convert tabular files to CSV.

  • +
  • -r, --dir-mode <MODE>: Directory handling mode (skip, zip, tar).

  • +
  • -d, --delete-old-versions: Delete old versions of this dataset.

  • +
+

Example:

+

Create a new version of a dataset using files from tests/dataset with version notes “Updated data”, quietly, keeping tabular formats, skipping directories, and deleting old versions:

+
kaggle datasets version -m "Updated data" -p tests/dataset -q -t -r skip -d
+
+
+

Purpose:

+

Use this command to update an existing dataset with new files or metadata changes.

+
+
+

kaggle datasets metadata

+

Downloads metadata for a dataset or updates existing local metadata.

+

Usage:

+
kaggle datasets metadata <DATASET> [options]
+
+
+

Arguments:

+
    +
  • <DATASET>: Dataset URL suffix (e.g., goefft/public-datasets-with-file-types-and-columns).

  • +
+

Options:

+
    +
  • -p, --path <PATH>: Directory to download/update metadata file (dataset-metadata.json). Defaults to current working directory.

  • +
  • --update: Update existing local metadata file instead of downloading anew.

  • +
+

Example:

+

Download metadata for the dataset goefft/public-datasets-with-file-types-and-columns into the tests/dataset folder:

+
kaggle datasets metadata goefft/public-datasets-with-file-types-and-columns -p tests/dataset
+
+
+

Purpose:

+

This command allows you to fetch the dataset-metadata.json file for an existing dataset, which can be useful for inspection or as a template for creating a new version.

+
+
+

kaggle datasets status

+

Gets the creation status of a dataset.

+

Usage:

+
kaggle datasets status <DATASET>
+
+
+

Arguments:

+
    +
  • <DATASET>: Dataset URL suffix (e.g., goefft/public-datasets-with-file-types-and-columns).

  • +
+

Example:

+

Get the status of the dataset goefft/public-datasets-with-file-types-and-columns:

+
kaggle datasets status goefft/public-datasets-with-file-types-and-columns
+
+
+

Purpose:

+

After creating or updating a dataset, this command helps you check if the process was successful or if there were any issues.

+
+
+

kaggle datasets delete

+

Deletes a dataset from Kaggle.

+

Usage:

+
kaggle datasets delete <DATASET> [options]
+
+
+

Arguments:

+
    +
  • <DATASET>: Dataset URL suffix (e.g., username/dataset-slug).

  • +
+

Options:

+
    +
  • -y, --yes: Automatically confirm deletion without prompting.

  • +
+

Example:

+

Delete the dataset username/dataset-slug and automatically confirm:

+
kaggle datasets delete username/dataset-slug --yes
+
+
+

Purpose:

+

This command permanently removes one of your datasets from Kaggle. Use with caution.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/genindex.html b/documentation/_build/html/genindex.html new file mode 100644 index 0000000..20d83c1 --- /dev/null +++ b/documentation/_build/html/genindex.html @@ -0,0 +1,111 @@ + + + + + + + Index — kaggle-api documentation + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/index.html b/documentation/_build/html/index.html new file mode 100644 index 0000000..43f8c73 --- /dev/null +++ b/documentation/_build/html/index.html @@ -0,0 +1,200 @@ + + + + + + + + kaggle-api documentation — kaggle-api documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

kaggle-api documentation

+
+

Contents:

+ +
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/intro.html b/documentation/_build/html/intro.html new file mode 100644 index 0000000..584dd34 --- /dev/null +++ b/documentation/_build/html/intro.html @@ -0,0 +1,200 @@ + + + + + + + + Kaggle CLI Documentation — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

.. _kaggle:

+
+

Kaggle CLI Documentation

+

Welcome to the Kaggle CLI documentation. This guide provides detailed information on how to use the Kaggle command-line interface to interact with Kaggle’s platform.

+
+

Getting Started

+

Before you begin, ensure you have the Kaggle CLI installed and configured with your API credentials. You can find your API token on your Kaggle account page.

+
+

Installation

+

Ensure you have Python 3 and the package manager pip installed.

+

Run the following command to access the Kaggle API using the command line:

+

pip install kaggle +(You may need to do pip install --user kaggle on Mac/Linux. This is recommended if problems come up during the installation process.) +Installations done through the root user (i.e. sudo pip install kaggle) will not work correctly unless you understand what you’re doing. Even then, they still might not work. User installs are strongly recommended in the case of permissions errors.

+

You can now use the kaggle command as shown in the examples below.

+

If you run into a kaggle: command not found error, ensure that your python binaries are on your path. You can see where kaggle is installed by doing pip uninstall kaggle and seeing where the binary is (then cancel the uninstall when prompted). For a local user install on Linux, the default location is ~/.local/bin. On Windows, the default location is $PYTHON_HOME/Scripts.

+

IMPORTANT: We do not offer Python 2 support. Please ensure that you are using Python 3 before reporting any issues.

+
+
+

API credentials

+

To use the Kaggle API, sign up for a Kaggle account at https://www.kaggle.com. Then go to the ‘Account’ tab of your user profile (https://www.kaggle.com/<username>/account) and select ‘Create API Token’. This will trigger the download of kaggle.json, a file containing your API credentials. +Place this file in the location appropriate for your operating system:

+
    +
  • Linux: $XDG_CONFIG_HOME/kaggle/kaggle.json (defaults to ~/.config/kaggle/kaggle.json). The path ~/.kaggle/kaggle.json which was used by older versions of the tool is also still supported.

  • +
  • Windows: C:\Users\<Windows-username>\.kaggle\kaggle.json - you can check the exact location, sans drive, with echo %HOMEPATH%.

  • +
  • Other: ~/.kaggle/kaggle.json

  • +
+

You can define a shell environment variable KAGGLE_CONFIG_DIR to change this location to $KAGGLE_CONFIG_DIR/kaggle.json (on Windows it will be %KAGGLE_CONFIG_DIR%\kaggle.json).

+

For your security, ensure that other users of your computer do not have read access to your credentials. On Unix-based systems you can do this with the following command:

+

chmod 600 ~/.config/kaggle/kaggle.json

+

You can also choose to export your Kaggle username and token to the environment:

+
export KAGGLE_USERNAME=datadinosaur
+export KAGGLE_KEY=xxxxxxxxxxxxxx
+
+
+

In addition, you can export any other configuration value that normally would be in +the kaggle.json in the format ‘KAGGLE_’ (note uppercase).
+For example, if the file had the variable “proxy” you would export KAGGLE_PROXY +and it would be discovered by the client.

+
+
+
+

Tutorials

+

Explore these tutorials to learn how to perform common tasks:

+ +
+
+

CLI Reference

+

The Kaggle CLI is organized into several command groups:

+ +
+
+

Python API Reference

+

The Kaggle CLI provides a Python API for interacting with Kaggle’s platform. You can access the API using the kaggle module:

+
import kaggle
+
+
+

For more information about the Python API, see the +Kaggle Python API documentation.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/kernels.html b/documentation/_build/html/kernels.html new file mode 100644 index 0000000..bcd038d --- /dev/null +++ b/documentation/_build/html/kernels.html @@ -0,0 +1,346 @@ + + + + + + + + Kernels Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Kernels Commands

+

Commands for interacting with Kaggle Kernels (notebooks and scripts).

+
+

kaggle kernels list

+

Lists available kernels.

+

Usage:

+
kaggle kernels list [options]
+
+
+

Options:

+
    +
  • -m, --mine: Display only your kernels.

  • +
  • -p, --page <PAGE>: Page number for results (default: 1).

  • +
  • --page-size <SIZE>: Number of items per page (default: 20).

  • +
  • -s, --search <SEARCH_TERM>: Search term.

  • +
  • -v, --csv: Print results in CSV format.

  • +
  • --parent <PARENT_KERNEL>: Filter by parent kernel (format: owner/kernel-slug).

  • +
  • --competition <COMPETITION_SLUG>: Filter by competition.

  • +
  • --dataset <DATASET_SLUG>: Filter by dataset (format: owner/dataset-slug).

  • +
  • --user <USER>: Filter by a specific user.

  • +
  • --language <LANGUAGE>: Filter by language (all, python, r, sqlite, julia).

  • +
  • --kernel-type <TYPE>: Filter by kernel type (all, script, notebook).

  • +
  • --output-type <TYPE>: Filter by output type (all, visualizations, data).

  • +
  • --sort-by <SORT_BY>: Sort results (hotness, commentCount, dateCreated, dateRun, relevance, scoreAscending, scoreDescending, viewCount, voteCount). Default: hotness.

  • +
+

Examples:

+
    +
  1. List your own kernels containing “Exercise” in the title, page 2, 5 items per page, in CSV format, sorted by run date:

    +
    kaggle kernels list -m -s Exercise --page-size 5 -p 2 -v --sort-by dateRun
    +
    +
    +
  2. +
  3. List kernels that are children of $KAGGLE_DEVELOPER/exercise-lists (replace $KAGGLE_DEVELOPER with your username):

    +
    kaggle kernels list --parent $KAGGLE_DEVELOPER/exercise-lists
    +
    +
    +
  4. +
  5. List the first 5 kernels for the “house-prices-advanced-regression-techniques” competition:

    +
    kaggle kernels list --competition house-prices-advanced-regression-techniques --page-size 5
    +
    +
    +
  6. +
  7. List the first 5 kernels associated with the dataset dansbecker/home-data-for-ml-course:

    +
    kaggle kernels list --dataset dansbecker/home-data-for-ml-course --page-size 5
    +
    +
    +
  8. +
  9. List Python notebooks by user $KAGGLE_DEVELOPER that output data:

    +
    kaggle kernels list --user $KAGGLE_DEVELOPER --language python --kernel-type notebook --output-type data
    +
    +
    +
  10. +
+

Purpose:

+

This command allows you to find kernels based on various filters like ownership, associated competition/dataset, language, or type.

+
+
+

kaggle kernels files

+

Lists output files for a specific kernel.

+

Usage:

+
kaggle kernels files <KERNEL> [options]
+
+
+

Arguments:

+
    +
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., kerneler/sqlite-global-default).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • +
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • +
+

Example:

+

List the first output file for the kernel kerneler/sqlite-global-default in CSV format:

+
kaggle kernels files kerneler/sqlite-global-default -v --page-size=1
+
+
+

Purpose:

+

Use this command to view the files generated by a kernel run.

+
+
+

kaggle kernels init

+

Initializes a metadata file (kernel-metadata.json) for a new or existing kernel.

+

Usage:

+
kaggle kernels init -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: The path to the folder where the kernel-metadata.json file will be created (defaults to the current directory).

  • +
+

Example:

+

Initialize a kernel metadata file in the tests/kernel folder:

+
kaggle kernels init -p tests/kernel
+
+
+

Purpose:

+

This command creates a template kernel-metadata.json file. You need to edit this file with details like the kernel’s title, ID (slug), language, kernel type, and data sources before pushing it to Kaggle.

+
+
+

kaggle kernels push

+

Pushes new code/notebook and metadata to a kernel, then runs the kernel.

+

Usage:

+
kaggle kernels push -p <FOLDER_PATH> [options]
+
+
+

Options:

+
    +
  • -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).

  • +
  • -t, --timeout <SECONDS>: Maximum run time in seconds.

  • +
+

Example:

+

Push the kernel from the tests/kernel folder (assuming it contains the kernel file and kernel-metadata.json):

+
kaggle kernels push -p tests/kernel
+
+
+

Purpose:

+

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.

+
+
+

kaggle kernels pull

+

Pulls down the code/notebook and metadata for a kernel.

+

Usage:

+
kaggle kernels pull <KERNEL> [options]
+
+
+

Arguments:

+
    +
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., $KAGGLE_DEVELOPER/exercise-as-with).

  • +
+

Options:

+
    +
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • +
  • -w, --wp: Download files to the current working path.

  • +
  • -m, --metadata: Generate a kernel-metadata.json file along with the kernel code.

  • +
+

Examples:

+
    +
  1. Pull the kernel $KAGGLE_DEVELOPER/exercise-as-with and its metadata into the tests/kernel folder:

    +
    kaggle kernels pull -p tests/kernel $KAGGLE_DEVELOPER/exercise-as-with -m
    +
    +
    +
  2. +
  3. Pull the kernel $KAGGLE_DEVELOPER/exercise-as-with into the current working directory:

    +
    kaggle kernels pull --wp $KAGGLE_DEVELOPER/exercise-as-with
    +
    +
    +
  4. +
+

Purpose:

+

This command allows you to download the source code and optionally the metadata of a kernel from Kaggle to your local machine.

+
+
+

kaggle kernels output

+

Gets the data output from the latest run of a kernel.

+

Usage:

+
kaggle kernels output <KERNEL> [options]
+
+
+

Arguments:

+
    +
  • <KERNEL>: Kernel URL suffix (e.g., kerneler/using-google-bird-vocalization-model).

  • +
+

Options:

+
    +
  • -p, --path <PATH>: Folder to download output files to (defaults to current directory).

  • +
  • -w, --wp: Download files to the current working path.

  • +
  • -o, --force: Force download, overwriting existing files.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Example:

+

Download the output of the kernel kerneler/using-google-bird-vocalization-model, forcing overwrite:

+
kaggle kernels output kerneler/sqlite-global-default -o
+
+
+

Purpose:

+

Use this command to retrieve the files generated by a kernel run, such as submission files, processed data, or visualizations.

+
+
+

kaggle kernels status

+

Displays the status of the latest run of a kernel.

+

Usage:

+
kaggle kernels status <KERNEL>
+
+
+

Arguments:

+
    +
  • <KERNEL>: Kernel URL suffix (e.g., kerneler/sqlite-global-default).

  • +
+

Example:

+

Get the status of the kernel kerneler/sqlite-global-default:

+
kaggle kernels status kerneler/sqlite-global-default
+
+
+

Purpose:

+

This command tells you whether the latest run of your kernel is still running, completed successfully, or failed.

+
+
+

kaggle kernels delete

+

Deletes a kernel from Kaggle.

+

Usage:

+
kaggle kernels delete <KERNEL> [options]
+
+
+

Arguments:

+
    +
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., $KAGGLE_DEVELOPER/exercise-delete).

  • +
+

Options:

+
    +
  • -y, --yes: Automatically confirm deletion without prompting.

  • +
+

Example:

+

Delete the kernel $KAGGLE_DEVELOPER/exercise-delete and automatically confirm:

+
kaggle kernels delete $KAGGLE_DEVELOPER/exercise-delete --yes
+
+
+

Purpose:

+

This command permanently removes one of your kernels from Kaggle. Use with caution.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/model_instances.html b/documentation/_build/html/model_instances.html new file mode 100644 index 0000000..22656cd --- /dev/null +++ b/documentation/_build/html/model_instances.html @@ -0,0 +1,262 @@ + + + + + + + + Model Variation Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Model Variation Commands

+

Commands for interacting with variations of Kaggle Models. A model variation typically represents a specific framework of a parent model.

+
+

kaggle models variations init

+

Initializes a metadata file (model-instance-metadata.json) for creating a new model variation.

+

Usage:

+
kaggle models variations init -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: The path to the folder where the model-instance-metadata.json file will be created (defaults to the current directory).

  • +
+

Example:

+

Initialize a model variation metadata file in the tmp folder:

+
kaggle models variations init -p tmp
+
+
+

Purpose:

+

This command creates a template model-instance-metadata.json file. You must edit this file with details such as the owner slug, the parent model slug, the variation (or instance) slug (URL-friendly name for this variations), and the framework (e.g., tensorflow, pytorch, jax, sklearn) before creating the variation.

+
+
+

kaggle models variations create

+

Creates a new model variation under an existing model on Kaggle.

+

Usage:

+
kaggle models variations create -p <FOLDER_PATH> [options]
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model variation files and the model-instance-metadata.json file (defaults to the current directory).

  • +
  • -q, --quiet: Suppress verbose output.

  • +
  • -r, --dir-mode <MODE>: How to handle directories within the upload: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • +
+

Example:

+

Create a new model variation using the metadata and files in the tmp folder, quietly, skipping subdirectories. (Assumes model-instance-metadata.json in tmp has been properly edited):

+
# Example: Edit model-instance-metadata.json first
+# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-instance-metadata.json
+# sed -i 's/INSERT_EXISTING_MODEL_SLUG_HERE/parent-model-slug/' tmp/model-instance-metadata.json
+# sed -i 's/INSERT_INSTANCE_SLUG_HERE/my-instance-slug/' tmp/model-instance-metadata.json
+# sed -i 's/INSERT_FRAMEWORK_HERE/jax/' tmp/model-instance-metadata.json
+# echo "a,b,c,d" > tmp/data.csv # Example model file
+
+kaggle models variations create -p tmp -q -r skip
+
+
+

Purpose:

+

This command uploads your local model files (e.g., weights, architecture definition) and the associated variation metadata to create a new variation under a specified parent model on Kaggle. This effectively creates the first version of this model variation.

+
+
+

kaggle models variations get

+

Downloads the model-instance-metadata.json file for an existing model variation.

+

Usage:

+
kaggle models variations get <MODEL_INSTANCE> -p <FOLDER_PATH>
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE>: Model variation URL suffix in the format owner/model-slug/framework/instance-slug (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • +
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Folder to download the model-instance-metadata.json file to.

  • +
+

Example:

+

Download the metadata for model variation $KAGGLE_DEVELOPER/test-model/jax/main into the tmp folder:

+
kaggle models variations get $KAGGLE_DEVELOPER/test-model/jax/main -p tmp
+
+
+

Purpose:

+

This command retrieves the metadata file for an existing model variation. This can be useful for inspection or as a basis for an update.

+
+
+

kaggle models variations files

+

Lists files for the current version of a model variation.

+

Usage:

+
kaggle models variations files <MODEL_INSTANCE> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE>: Model variation URL suffix (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • --page-size <SIZE>: Number of items per page (default: 20).

  • +
  • --page-token <TOKEN>: Page token for results paging.

  • +
+

Example:

+

List the first 5 files for the model variation $KAGGLE_DEVELOPER/test-model/jax/main in CSV format:

+
kaggle models variations files $KAGGLE_DEVELOPER/test-model/jax/main -v --page-size 5
+
+
+

Purpose:

+

Use this command to see the files associated with the latest version of a specific model variation.

+
+
+

kaggle models variations update

+

Updates an existing model variation on Kaggle using a local model-instance-metadata.json file.

+

Usage:

+
kaggle models variations update -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-instance-metadata.json file with the updated information (defaults to the current directory). Note: This command only updates the metadata of the variation, not the files. To update files, create a new version.

  • +
+

Example:

+

Update the model variation whose details are in tmp/model-instance-metadata.json (ensure the slugs and owner in the JSON match an existing model variation):

+
kaggle models variations update -p tmp
+
+
+

Purpose:

+

Use this command to change the metadata of an existing model variation, such as its description or other fields defined in the model-instance-metadata.json file. This does not upload new files or create a new version.

+
+
+

kaggle models variations delete

+

Deletes a model variation from Kaggle.

+

Usage:

+
kaggle models variations delete <MODEL_INSTANCE> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE>: Model variation URL suffix in the format owner/model-slug/framework/instance-slug (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • +
+

Options:

+
    +
  • -y, --yes: Automatically confirm deletion without prompting.

  • +
+

Example:

+

Delete the model variation $KAGGLE_DEVELOPER/test-model/jax/main and automatically confirm:

+
kaggle models variations delete $KAGGLE_DEVELOPER/test-model/jax/main -y
+
+
+

Purpose:

+

This command permanently removes one of your model variations (and all its versions) from Kaggle. Use with caution.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/model_instances_versions.html b/documentation/_build/html/model_instances_versions.html new file mode 100644 index 0000000..15229df --- /dev/null +++ b/documentation/_build/html/model_instances_versions.html @@ -0,0 +1,227 @@ + + + + + + + + Model Variation Versions Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Model Variation Versions Commands

+

Commands for managing versions of a specific Kaggle Model Variation. Each version represents a snapshot of the model variation files at a point in time.

+
+

kaggle models variations versions create

+

Creates a new version of an existing model variation.

+

Usage:

+
kaggle models variations versions create <MODEL_INSTANCE> -p <FOLDER_PATH> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE>: The target model variation URL suffix for the new version (format: owner/model-slug/framework/instance-slug, e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • +
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the files for this new version (defaults to the current directory).

  • +
  • -n, --version-notes <NOTES>: Notes describing this version.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
  • -r, --dir-mode <MODE>: How to handle directories within the upload: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • +
+

Example:

+

Create a new version for the model variation $KAGGLE_DEVELOPER/test-model/jax/main using files from the tmp folder, with version notes “Updated model files”, quietly, and skipping subdirectories:

+
# Ensure tmp folder contains the new files for the version, e.g., data_v2.csv
+# echo "e,f,g,h" > tmp/data_v2.csv
+
+kaggle models variations versions create $KAGGLE_DEVELOPER/test-model/jax/main -p tmp -n "Updated model files" -q -r skip
+
+
+

Purpose:

+

This command uploads a new set of files to an existing model variation, creating a new, numbered version. This allows you to track changes and revert to previous versions of your model variation files.

+
+
+

kaggle models variations versions download

+

Downloads files for a specific version of a model variation.

+

Usage:

+
kaggle models variations versions download <MODEL_INSTANCE_VERSION> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix in the format owner/model-slug/framework/instance-slug/version-number (e.g., $KAGGLE_DEVELOPER/test-model/jax/main/1).

  • +
+

Options:

+
    +
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • +
  • --untar: Untar the downloaded file if it’s a .tar archive (deletes the .tar file afterwards).

  • +
  • --unzip: Unzip the downloaded file if it’s a .zip archive (deletes the .zip file afterwards).

  • +
  • -f, --force: Force download, overwriting existing files.

  • +
  • -q, --quiet: Suppress verbose output.

  • +
+

Example:

+

Download version 1 of the model variation $KAGGLE_DEVELOPER/test-model/jax/main into the tmp folder, untar if applicable, force overwrite, and do it quietly:

+
kaggle models variations versions download $KAGGLE_DEVELOPER/test-model/jax/main/1 -p tmp -q -f --untar
+
+
+

Purpose:

+

This command allows you to retrieve the specific files associated with a particular version of a model variation.

+
+
+

kaggle models variations versions files

+

Lists files for a specific version of a model variation.

+

Usage:

+
kaggle models variations versions files <MODEL_INSTANCE_VERSION> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix (e.g., google/gemma/pytorch/7b/2).

  • +
+

Options:

+
    +
  • -v, --csv: Print results in CSV format.

  • +
  • --page-size <SIZE>: Number of items per page (default: 20).

  • +
  • --page-token <TOKEN>: Page token for results paging.

  • +
+

Example:

+

List the first 3 files for version 2 of the model variation google/gemma/pytorch/7b in CSV format:

+
kaggle models variations versions files google/gemma/pytorch/7b/2 -v --page-size=3
+
+
+

Purpose:

+

Use this command to see the individual files that constitute a specific version of a model variation before downloading.

+
+
+

kaggle models variations versions delete

+

Deletes a specific version of a model variation from Kaggle.

+

Usage:

+
kaggle models variations versions delete <MODEL_INSTANCE_VERSION> [options]
+
+
+

Arguments:

+
    +
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix in the format owner/model-slug/framework/instance-slug/version-number (e.g., $KAGGLE_DEVELOPER/test-model/jax/main/1).

  • +
+

Options:

+
    +
  • -y, --yes: Automatically confirm deletion without prompting.

  • +
+

Example:

+

Delete version 1 of the model variation $KAGGLE_DEVELOPER/test-model/jax/main and automatically confirm:

+
kaggle models variations versions delete $KAGGLE_DEVELOPER/test-model/jax/main/1 -y
+
+
+

Purpose:

+

This command permanently removes a specific version of your model variation from Kaggle. Use with caution. If it’s the only version, this may lead to the deletion of the model variation itself if no other versions exist.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/models.html b/documentation/_build/html/models.html new file mode 100644 index 0000000..4a65714 --- /dev/null +++ b/documentation/_build/html/models.html @@ -0,0 +1,266 @@ + + + + + + + + Models Commands — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Models Commands

+

Commands for interacting with Kaggle Models.

+
+

kaggle models list

+

Lists available models.

+

Usage:

+
kaggle models list [options]
+
+
+

Options:

+
    +
  • --owner <OWNER>: Filter by a specific user or organization.

  • +
  • --sort-by <SORT_BY>: Sort results. Valid options: hotness, downloadCount, voteCount, notebookCount, createTime (default: hotness).

  • +
  • -s, --search <SEARCH_TERM>: Search term.

  • +
  • --page-size <SIZE>: Number of items per page (default: 20).

  • +
  • --page-token <TOKEN>: Page token for results paging.

  • +
  • -v, --csv: Print results in CSV format.

  • +
+

Examples:

+
    +
  1. List models owned by $KAGGLE_DEVELOPER (replace with your username), sorted by creation time, in CSV format:

    +
    kaggle models list --owner $KAGGLE_DEVELOPER --sort-by createTime -v
    +
    +
    +
  2. +
  3. List the first 5 models matching the search term “gemini”:

    +
    kaggle models list -s gemini --page-size 5
    +
    +
    +
  4. +
+

Purpose:

+

This command helps you find models on Kaggle, filtering by owner or searching by keywords, and sorting by various criteria.

+
+
+

kaggle models init

+

Initializes a metadata file (model-metadata.json) for creating a new model.

+

Usage:

+
kaggle models init -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: The path to the folder where the model-metadata.json file will be created (defaults to the current directory).

  • +
+

Example:

+

Initialize a model metadata file in a new temporary folder tmp:

+
mkdir tmp
+kaggle models init -p tmp
+
+
+

Purpose:

+

This command creates a template model-metadata.json file. You must edit this file with your model’s details, such as owner slug, title, model slug (URL-friendly version of the title), and a description, before creating the model on Kaggle.

+
+
+

kaggle models create

+

Creates a new model on Kaggle.

+

Usage:

+
kaggle models create -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-metadata.json file (defaults to the current directory). This folder should also contain your model files that you intend to upload as part of the first model variation.

  • +
+

Example:

+

Create a new model using the metadata in tmp/model-metadata.json. (Assumes the metadata file has been edited with owner, title, and slug):

+
# Example: Edit model-metadata.json first
+# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-metadata.json
+# sed -i 's/INSERT_TITLE_HERE/My Awesome Model/' tmp/model-metadata.json
+# sed -i 's/INSERT_SLUG_HERE/my-awesome-model/' tmp/model-metadata.json
+
+kaggle models create -p tmp
+
+
+

Purpose:

+

This command registers a new model on Kaggle using the provided metadata. After this, you will typically create model variations and versions.

+
+
+

kaggle models get

+

Downloads the model-metadata.json file for an existing model.

+

Usage:

+
kaggle models get <MODEL> -p <FOLDER_PATH>
+
+
+

Arguments:

+
    +
  • <MODEL>: Model URL suffix in the format owner/model-slug (e.g., $KAGGLE_DEVELOPER/test-model).

  • +
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Folder to download the model-metadata.json file to.

  • +
+

Example:

+

Download the metadata for model $KAGGLE_DEVELOPER/test-model into the tmp folder:

+
kaggle models get -p tmp $KAGGLE_DEVELOPER/test-model
+
+
+

Purpose:

+

This command retrieves the metadata file for an existing model, which can be useful for inspection or as a basis for an update.

+
+
+

kaggle models update

+

Updates an existing model on Kaggle using a local model-metadata.json file.

+

Usage:

+
kaggle models update -p <FOLDER_PATH>
+
+
+

Options:

+
    +
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-metadata.json file with the updated information (defaults to the current directory).

  • +
+

Example:

+

Update the model whose details are in tmp/model-metadata.json (ensure the slug and owner in the JSON match an existing model):

+
kaggle models update -p tmp
+
+
+

Purpose:

+

Use this command to change the metadata of an existing model, such as its title, description, or other fields defined in the model-metadata.json file.

+
+
+

kaggle models delete

+

Deletes a model from Kaggle.

+

Usage:

+
kaggle models delete <MODEL> [options]
+
+
+

Arguments:

+
    +
  • <MODEL>: Model URL suffix in the format owner/model-slug (e.g., $KAGGLE_DEVELOPER/test-model).

  • +
+

Options:

+
    +
  • -y, --yes: Automatically confirm deletion without prompting.

  • +
+

Example:

+

Delete the model $KAGGLE_DEVELOPER/test-model and automatically confirm:

+
kaggle models delete $KAGGLE_DEVELOPER/test-model -y
+
+
+

Purpose:

+

This command permanently removes one of your models (and all its variations and versions) from Kaggle. Use with caution.

+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/objects.inv b/documentation/_build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..d8819671bb914aa7325877ff090f1297347d5b8f GIT binary patch literal 1467 zcmV;s1w{HIAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkwVP|J- zWi4TFX$m7CR%LQ?X>V>iAPOTORA^-&a%F8{X>Md?av*PJAarPHb0B7EY-J#6b0A}H zZE$jBb8}^6Aa!$TZf78RY-wUH3V7PBSxs-_HW0o0R}e@K?Lh^4^{q&-ZLr%SXxhE* zG8SVCktIW-Hr;<;Qv8~shLmXcCXqAmJ(2SvQHTC~5wej@-;HdP^}g;8tonr=!1&K6 zd2ZP~v{W}|-qqs{+U>u-@#C=-$eGpsd)M~7{yM|A{6(}R!JTog;6&w|Sq^!Fh}WhS z<5db~PnN{oz}*U7i{Yi`!*y!_{Micr7B$T%ualu1SqgCj@i@Jln{m|FSMdXXwt~M^ zjl5onOlyc10~s7_-mLK=LhqDH!S1y=P6OBDIETT6N#c)2^!=wtPjGIYX)5tu-_W-z8O^;GvF9u;^jhrvxoy}ooO1LoLE5Imj>$-?x#VgmQMYkpCP*Kgg(aqCn2S%Y}NQf4fCxNXEp=3zTLUMgmMC6=U3N1r8N-n3eJu)tgM#@lq6NB!f zMO@a0C9ncpNI0^zVwRA!&UjfIj-qS2TKtP~+^8ujkNR>K%xv8O7WR4grBV5En9ib; zre4i9`_wch4S09Kp~4OsB02O}of=s5?T4k)UW2LnRjc8Kw__~I!Q5#z(C*i#N9bqK zbQc)Js~ALg5J@au@`IID_LsY}I7cC6(;aoZ4N}xeBx_eWyWgzev$?luO{eDDmRxlY zg^V7-jRgUHF1w8$5cD_fu(BhU@A9Oq^v0|&r7@mkB^W;$1ieM^!pceZLw2Ks#oz8~ zXP-S4us^VB_a=r;w5T=PAsdEv-shg3^(Djski8N@xrMc3QK!T(NfxSWseuU@f?kD;kPC8Bh_&U2tl8!1&M@RmH?RW3+s3f(uqqhFPV}s{T2l2#3BjE zl!587AV{=E5`EbQeeYY~rurNSO!TzS$QIDVCqfz;ejot<1a!I|lHg?TgALDyeKyEp zNXG$;1CTh?xqPqOgpb=vX))(JV0OjLeq1B(QSjk#!j5Ll_&l5WCw>$=`~`0F$qz2h zY{Eylx7p8M>-BV49zS55J7o9>ZU7iK*GL==M4;eYBRH%mc2|3w!;HJrx-6BuwdJ7V z?$FSa?Ag5ow8wjSR#RKcIE@d%I0xPqzEI1rU=GDQsUcMFGBxhx^(IyR{B~WP>n)_p zSCwQ;C9v=Br9q+rDh1%*CCGUB;AkEKO)hj!{X3Jr{XeU(xGGUK`g^-go&u_5Z~p=7 zD_&_J_=gzC{N2z#1KN8{3x4Eom-~Mx-7GS%&o%;X4>8z}T`$E;-@pB|O`Gvoij05d V+<~fp9K}aV@u#EM{RhIx`Mo!;)P?{6 literal 0 HcmV?d00001 diff --git a/documentation/_build/html/search.html b/documentation/_build/html/search.html new file mode 100644 index 0000000..2749f4a --- /dev/null +++ b/documentation/_build/html/search.html @@ -0,0 +1,129 @@ + + + + + + + Search — kaggle-api documentation + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/_build/html/searchindex.js b/documentation/_build/html/searchindex.js new file mode 100644 index 0000000..0c06e3f --- /dev/null +++ b/documentation/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"alltitles":{"API credentials":[[4,"api-credentials"]],"CLI Reference":[[4,"cli-reference"]],"Competitions Commands":[[0,null]],"Configuration Commands":[[1,"configuration-commands"]],"Configuration File Location":[[1,"configuration-file-location"]],"Contents:":[[3,null]],"Datasets Commands":[[2,null]],"Getting Started":[[4,"getting-started"]],"Installation":[[4,"installation"]],"Introduction":[[9,"introduction"]],"Kaggle CLI Configuration":[[1,null]],"Kaggle CLI Documentation":[[4,null]],"Kaggle CLI Tutorials":[[9,null]],"Kernels Commands":[[5,null]],"Model Variation Commands":[[6,null]],"Model Variation Versions Commands":[[7,null]],"Models Commands":[[8,null]],"Python API Reference":[[4,"python-api-reference"]],"Tutorial: Create a Dataset":[[9,"tutorial-create-a-dataset"]],"Tutorial: Create a Model":[[9,"tutorial-create-a-model"]],"Tutorial: Create a Model Variation":[[9,"tutorial-create-a-model-variation"]],"Tutorial: Create a Model Variation Version":[[9,"tutorial-create-a-model-variation-version"]],"Tutorial: Find and Download a Dataset":[[9,"tutorial-find-and-download-a-dataset"]],"Tutorial: How to Submit to a Code Competition":[[9,"tutorial-how-to-submit-to-a-code-competition"]],"Tutorial: How to Submit to a Competition":[[9,"tutorial-how-to-submit-to-a-competition"]],"Tutorial: Update a Kernel (Notebook)":[[9,"tutorial-update-a-kernel-notebook"]],"Tutorials":[[4,"tutorials"]],"config set":[[1,"config-set"]],"config unset":[[1,"config-unset"]],"config view":[[1,"config-view"]],"kaggle competitions download":[[0,"kaggle-competitions-download"]],"kaggle competitions files":[[0,"kaggle-competitions-files"]],"kaggle competitions leaderboard":[[0,"kaggle-competitions-leaderboard"]],"kaggle competitions list":[[0,"kaggle-competitions-list"]],"kaggle competitions submissions":[[0,"kaggle-competitions-submissions"]],"kaggle competitions submit":[[0,"kaggle-competitions-submit"]],"kaggle datasets create":[[2,"kaggle-datasets-create"]],"kaggle datasets delete":[[2,"kaggle-datasets-delete"]],"kaggle datasets download":[[2,"kaggle-datasets-download"]],"kaggle datasets files":[[2,"kaggle-datasets-files"]],"kaggle datasets init":[[2,"kaggle-datasets-init"]],"kaggle datasets list":[[2,"kaggle-datasets-list"]],"kaggle datasets metadata":[[2,"kaggle-datasets-metadata"]],"kaggle datasets status":[[2,"kaggle-datasets-status"]],"kaggle datasets version":[[2,"kaggle-datasets-version"]],"kaggle kernels delete":[[5,"kaggle-kernels-delete"]],"kaggle kernels files":[[5,"kaggle-kernels-files"]],"kaggle kernels init":[[5,"kaggle-kernels-init"]],"kaggle kernels list":[[5,"kaggle-kernels-list"]],"kaggle kernels output":[[5,"kaggle-kernels-output"]],"kaggle kernels pull":[[5,"kaggle-kernels-pull"]],"kaggle kernels push":[[5,"kaggle-kernels-push"]],"kaggle kernels status":[[5,"kaggle-kernels-status"]],"kaggle models create":[[8,"kaggle-models-create"]],"kaggle models delete":[[8,"kaggle-models-delete"]],"kaggle models get":[[8,"kaggle-models-get"]],"kaggle models init":[[8,"kaggle-models-init"]],"kaggle models list":[[8,"kaggle-models-list"]],"kaggle models update":[[8,"kaggle-models-update"]],"kaggle models variations create":[[6,"kaggle-models-variations-create"]],"kaggle models variations delete":[[6,"kaggle-models-variations-delete"]],"kaggle models variations files":[[6,"kaggle-models-variations-files"]],"kaggle models variations get":[[6,"kaggle-models-variations-get"]],"kaggle models variations init":[[6,"kaggle-models-variations-init"]],"kaggle models variations update":[[6,"kaggle-models-variations-update"]],"kaggle models variations versions create":[[7,"kaggle-models-variations-versions-create"]],"kaggle models variations versions delete":[[7,"kaggle-models-variations-versions-delete"]],"kaggle models variations versions download":[[7,"kaggle-models-variations-versions-download"]],"kaggle models variations versions files":[[7,"kaggle-models-variations-versions-files"]],"kaggle-api documentation":[[3,null]]},"docnames":["competitions","configuration","datasets","index","intro","kernels","model_instances","model_instances_versions","models","tutorials"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["competitions.md","configuration.md","datasets.md","index.rst","intro.md","kernels.md","model_instances.md","model_instances_versions.md","models.md","tutorials.md"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[0,2,4,5,6,7,8,9],"0":9,"1":[0,2,5,7,9],"13000":2,"15000":2,"2":[2,4,5,7,9],"20":[0,2,5,6,7,8],"200":[0,2,5],"3":[0,4,7,9],"4":9,"5":[5,6,8,9],"6":9,"600":4,"7":[2,9],"7b":7,"8":9,"892":9,"893":9,"894":9,"9":9,"A":[6,9],"For":[0,1,4,9],"If":[4,5,7,9],"In":[4,9],"It":9,"On":4,"The":[0,1,2,4,5,6,7,8,9],"Then":4,"These":9,"To":[4,6],"_kaggl":4,"about":4,"accept":9,"access":[4,9],"accomplish":9,"accordingli":9,"account":[1,4,5],"activ":[2,9],"actual":9,"ad":9,"add":9,"addit":4,"address":9,"advanc":[0,5],"after":[2,5,8,9],"afterward":[2,7],"ai":9,"all":[0,2,5,6,8,9],"allow":[0,1,2,5,7,9],"along":[5,9],"alreadi":9,"also":[4,8,9],"altern":1,"an":[2,6,7,8,9],"analysi":9,"anew":2,"ani":[2,4,9],"api":[1,9],"applic":7,"appropri":4,"ar":[1,4,5,6,8,9],"architectur":6,"archiv":[7,9],"argument":[0,1,2,5,6,7,8],"associ":[2,5,6,7],"assum":[2,5,6,8,9],"attempt":[0,5],"automat":[2,5,6,7,8],"avail":[0,2,5,8,9],"avoid":1,"awesom":[8,9],"b":6,"back":9,"bar":9,"base":[0,2,4,5,9],"basi":[6,8],"been":[2,6,8],"befor":[0,2,4,5,6,7,8,9],"begin":4,"behavior":1,"being":9,"below":4,"benchmark":9,"best":9,"between":2,"bigqueri":2,"bin":4,"binari":4,"bird":[2,5],"brazilian":2,"brief":9,"brows":9,"browser":9,"byte":2,"c":[1,4,6,9],"can":[1,2,4,6,8,9],"cancel":4,"carefulli":9,"case":[4,9],"categori":0,"caution":[2,5,6,7,8],"cc":2,"cd":9,"chang":[2,4,6,7,8,9],"check":[2,4,9],"children":5,"chmod":4,"choos":[4,9],"chosen":9,"classic":9,"clear":1,"cli":3,"click":9,"client":4,"code":[0,3,4,5],"col_a":9,"col_b":9,"col_c":9,"column":[2,9],"com":[1,4,9],"come":4,"comma":2,"command":[3,4,9],"commentcount":5,"common":[4,9],"competit":[1,3,4,5],"competition_slug":5,"complet":[5,9],"compress":[2,6,7],"comput":4,"config":4,"configur":[3,4],"confirm":[2,5,6,7,8],"consol":0,"constitut":7,"contain":[1,2,4,5,6,7,8,9],"content":9,"convert":[2,9],"copi":9,"correct":1,"correctli":4,"could":9,"cours":5,"cp":9,"creat":[3,4,5],"createtim":8,"creation":[2,8],"credenti":[1,9],"criteria":[0,2,8],"csv":[0,2,5,6,7,8,9],"current":[0,1,2,5,6,7,8,9],"custom":1,"d":[0,2,6,9],"dansbeck":5,"dash":9,"data":[0,2,5,6,9],"data_v2":7,"databas":9,"datadinosaur":4,"dataset":[3,4,5],"dataset_result":2,"dataset_slug":5,"date":5,"datecr":5,"daterun":5,"deceas":9,"default":[0,1,2,4,5,6,7,8],"defin":[1,4,6,8,9],"definit":[6,9],"delet":3,"deprec":2,"describ":[2,7,9],"descript":[6,8,9],"desir":9,"detail":[4,5,6,8],"dir":[2,6,7],"directori":[0,1,2,5,6,7,8,9],"discov":[0,4],"displai":[1,2,5],"do":[2,4,7,9],"doe":6,"done":4,"down":5,"download":[1,3,4,5,6,8],"downloadcount":8,"drive":4,"dure":4,"e":[0,1,2,4,5,6,7,8,9],"each":[7,9],"earliestdeadlin":0,"echo":[4,6,7,9],"edit":[2,5,6,8,9],"editor":9,"effect":6,"empti":9,"endpoint":1,"ensur":[4,6,7,8,9],"enter":0,"entir":0,"environ":[1,4,9],"equival":0,"error":[4,9],"etc":9,"evalu":9,"even":4,"everi":1,"exact":4,"examin":9,"exampl":[0,1,2,4,5,6,7,8,9],"exercis":5,"exist":[0,2,5,6,7,8,9],"explain":9,"explor":4,"export":4,"extract":9,"f":[0,2,7,9],"fail":5,"failur":9,"featur":[0,9],"fetch":2,"few":9,"field":[6,8,9],"file":[3,4,8,9],"file_nam":[0,2],"file_typ":2,"fill":9,"film":2,"filter":[0,2,5,8],"find":[0,2,3,4,5,8],"first":[0,2,5,6,7,8,9],"flag":9,"flax_model":9,"flax_model_v2":9,"folder":[0,1,2,5,6,7,8],"folder_path":[2,5,6,7,8],"follow":[4,9],"forc":[0,2,5,7],"form":9,"format":[0,2,4,5,6,7,8,9],"found":4,"framework":[6,7,9],"friendli":[6,8,9],"from":[0,1,2,5,6,7,8,9],"g":[0,1,2,5,6,7,8,9],"gemini":8,"gemma":7,"gender":9,"gender_submiss":9,"gener":[0,5,9],"get":[0,2,3,5,9],"gettingstart":0,"global":5,"go":[4,9],"goal":9,"goefft":2,"googl":[5,7],"gpl":2,"group":[0,4],"gui":9,"guid":[4,9],"h":7,"ha":[2,6,8,9],"had":4,"handl":[2,6,7],"happi":9,"have":[4,9],"haven":9,"help":[0,2,8],"here":9,"home":5,"homepath":4,"hot":[5,8],"hottest":2,"hous":[0,5],"how":[0,2,3,4,6,7],"http":[1,4,9],"i":[0,1,2,4,5,6,8,9],"id":[2,5,9],"identifi":9,"ignor":[2,6,7],"illustr":9,"immedi":9,"implement":9,"import":[4,9],"inclass":0,"includ":9,"index":9,"indic":9,"individu":[2,7],"inform":[0,2,4,6,8,9],"init":[3,9],"initi":[2,5,6,8,9],"insert_existing_model_slug_her":[6,9],"insert_framework_her":[6,9],"insert_instance_slug_her":[6,9],"insert_owner_slug_her":[6,8,9],"insert_slug_her":[2,8,9],"insert_title_her":[2,8,9],"inspect":[1,2,6,8],"instal":9,"instanc":[6,7,9],"instance_size_byt":9,"instead":2,"instruct":9,"intend":8,"interact":[0,2,4,5,6,8],"interfac":4,"internet":2,"introduct":3,"ipynb":[5,9],"iri":9,"issu":[2,4],"item":[0,2,5,6,7,8],"its":[1,5,6,8,9],"itself":7,"jax":[6,7,9],"join":9,"json":[1,2,4,5,6,8,9],"julia":5,"just":9,"k":[0,9],"kaggle_":4,"kaggle_config_dir":4,"kaggle_develop":[5,6,7,8],"kaggle_kei":[1,4],"kaggle_proxi":4,"kaggle_usernam":[1,4],"keep":2,"kei":1,"kernel":[0,2,3,4],"keyword":[8,9],"know":9,"known":9,"languag":[5,9],"last":2,"latest":[5,6],"latestdeadlin":0,"lead":7,"leader":0,"leaderboard":[3,9],"learn":4,"let":[0,9],"licens":[2,9],"license_nam":2,"like":[2,5,9],"line":[4,9],"linux":[1,4],"list":[3,6,7,9],"ll":9,"local":[0,2,4,5,6,8,9],"locat":[3,4],"log":9,"look":9,"lower":9,"m":[0,2,5,9],"mac":4,"machin":[0,5],"maco":1,"made":9,"mai":[4,7],"main":[6,7],"make":[0,2,9],"manag":[4,7,9],"mani":9,"master":0,"match":[2,6,8,9],"max":[0,2,5],"maximum":[2,5],"mean":9,"messag":[0,2,9],"metadata":[3,5,6,8,9],"might":[4,9],"min":2,"mine":[2,5],"minimum":2,"mkdir":[8,9],"ml":5,"mode":[2,6,7],"model":[3,4,5],"model_inst":[6,7],"model_instance_vers":7,"modifi":9,"modul":4,"more":4,"most":9,"must":[6,8,9],"my":[2,6,8,9],"my_submiss":9,"n":[1,7,9],"name":[0,1,2,6,9],"navig":9,"necessari":[0,2],"need":[2,4,5,9],"new":[0,2,5,6,7,8,9],"next":9,"normal":4,"note":[2,4,6,7,9],"notebook":[0,3,4,5],"notebookcount":8,"now":[4,9],"number":[0,2,5,6,7,8],"numberofteam":0,"o":[0,2,5,9],"observ":2,"odb":2,"offer":4,"often":9,"old":2,"older":4,"onc":9,"one":[2,5,6,8,9],"ones":0,"onli":[2,5,6,7,9],"onto":0,"open":9,"oper":4,"option":[0,1,2,5,6,7,8,9],"organ":[2,4,8],"other":[0,2,4,6,7,8,9],"otherwis":[5,9],"our":9,"out":9,"output":[0,2,3,6,7],"overwrit":[0,2,5,7],"own":[2,5,8,9],"owner":[2,5,6,7,8],"ownership":5,"p":[0,2,5,6,7,8,9],"packag":4,"page":[0,1,2,4,5,6,7,8,9],"page_s":[0,2,5],"page_token":[0,2,5],"param":9,"paramet":[1,9],"parent":[5,6,9],"parent_kernel":5,"part":[8,9],"particip":[0,4,9],"particular":7,"passengerid":9,"past":0,"path":[0,1,2,4,5,6,7,8,9],"per":[5,6,7,8],"perform":4,"perman":[2,5,6,7,8],"permiss":4,"pip":4,"pixar":2,"place":[1,4,9],"placehold":9,"platform":4,"playground":0,"pleas":[4,9],"point":[7,9],"predict":[0,9],"prepar":9,"previou":[0,7,9],"previous":1,"price":[0,5],"print":[0,2,5,6,7,8],"privat":[2,9],"prize":0,"problem":4,"process":[2,4,5,9],"profil":[4,9],"program":9,"project":9,"prompt":[1,2,4,5,6,7,8],"properli":[2,6],"provid":[4,8,9],"proxi":[1,4],"public":[2,9],"pull":[3,9],"purpos":[0,1,2,5,6,7,8],"push":[3,9],"py":[5,9],"python":[3,5,9],"python_hom":4,"pytorch":[6,7,9],"q":[0,2,5,6,7],"queri":9,"quiet":[0,2,5,6,7],"quietli":[0,2,6,7],"r":[2,5,6,7],"random":9,"rank":0,"re":[4,9],"read":4,"real":9,"recent":9,"recentlycr":0,"recommend":4,"recruit":0,"refer":3,"refresh":9,"regist":8,"regress":[0,5],"relat":9,"relev":[5,9],"remov":[1,2,5,6,7,8,9],"replac":[5,8,9],"report":4,"repres":[6,7,9],"requir":[1,2,9],"research":0,"restrict":9,"result":[0,2,5,6,7,8,9],"retriev":[2,5,6,7,8],"revert":[1,7],"review":0,"rmd":[5,9],"root":4,"row":9,"rule":9,"run":[4,5,9],"sampl":9,"sample_data":9,"sample_submiss":0,"san":4,"save":0,"scenario":9,"score":[0,9],"scoreascend":5,"scoredescend":5,"script":[4,5,9],"search":[0,2,4,5,8,9],"search_term":[0,2,5,8],"second":[5,9],"section":9,"secur":4,"sed":[2,6,8],"see":[0,2,4,6,7,9],"select":4,"separ":2,"sequenc":9,"server":1,"set":[7,9],"sever":4,"shell":4,"should":[8,9],"show":[0,2,5,9],"shown":4,"sign":4,"simpl":9,"size":[0,2,5,6,7,8],"size_categori":2,"skip":[2,6,7,9],"sklearn":[6,9],"slug":[2,5,6,7,8,9],"snapshot":7,"some":9,"someth":9,"sort":[0,2,5,8],"sort_bi":[0,2,5,8],"sourc":5,"space":9,"specif":[0,1,2,5,6,7,8,9],"specifi":[0,1,2,5,6,9],"sqlite":[2,5,9],"start":[3,9],"statu":[3,9],"step":9,"still":[4,5,9],"store":1,"strictli":9,"strongli":4,"student":2,"subdirectori":[2,6,7],"submiss":[3,5,9],"submit":[3,4],"success":[2,9],"successfulli":5,"sudo":4,"suffix":[0,1,2,5,6,7,8],"support":[4,9],"suppress":[0,2,5,6,7],"sure":9,"surviv":9,"system":4,"t":[2,5,9],"tab":[4,9],"tabular":2,"tag":[2,9],"tag_id":2,"tar":[2,6,7],"target":7,"task":[4,9],"techniqu":[0,5],"telco":2,"tell":5,"templat":[2,5,6,8],"temporari":8,"tensorflow":[6,9],"term":[0,2,5,8],"test":[0,2,5,6,7,8,9],"text":9,"thei":4,"them":[0,9],"thi":[0,1,2,4,5,6,7,8,9],"three":9,"through":[4,9],"time":[5,7,8,9],"timeout":5,"titan":[0,1,9],"titl":[2,5,8,9],"tmp":[2,6,7,8],"token":[0,2,4,5,6,7,8],"tool":4,"top":0,"tost":0,"track":7,"train":9,"trigger":4,"tutori":[0,3],"two":9,"txt":0,"type":[2,5],"typic":[1,6,8,9],"u":2,"uciml":9,"uncompress":[2,6,7],"under":[5,6,9],"understand":4,"uninstal":4,"unix":4,"unless":4,"untar":7,"unzip":[2,7,9],"up":[4,9],"updat":[2,3,5,7],"upload":[0,2,5,6,7,8,9],"uppercas":4,"url":[0,1,2,5,6,7,8,9],"us":[0,1,2,4,5,6,7,8,9],"usag":[0,1,2,5,6,7,8],"user":[1,2,4,5,8],"usernam":[1,2,4,5,6,8,9],"usual":9,"v":[0,1,2,5,6,7,8],"v2":9,"valid":[0,1,2,8],"valu":[1,4],"vari":9,"variabl":[1,4],"variat":[3,4,8],"variou":[0,2,5,8],"verbos":[0,2,5,6,7],"veri":9,"verifi":9,"version":[0,3,4,6,8],"version_not":2,"via":9,"view":[0,5],"viewcount":5,"visual":5,"vocal":5,"vote":2,"votecount":[5,8],"w":[0,2,5],"wa":[2,4],"walk":9,"want":9,"we":[4,9],"web":9,"websit":9,"weight":[6,9],"welcom":4,"were":2,"what":4,"when":[4,9],"where":[1,2,4,5,6,8],"whether":5,"which":[2,4,8,9],"while":9,"whose":[6,8],"wikiav":2,"willianoliveiragibin":2,"window":[1,4],"within":[2,6,7],"without":[2,5,6,7,8],"work":[0,2,4,5,9],"would":[4,9],"wp":[0,2,5],"write":9,"www":[1,4,9],"xdg_config_hom":4,"xxxxxxxxxxxxxx":4,"y":[2,5,6,7,8],"ye":[2,5,6,7,8],"you":[0,1,2,4,5,6,7,8,9],"your":[0,1,2,4,5,6,7,8,9],"your_api_kei":1,"your_usernam":[1,9],"zip":[2,6,7,9]},"titles":["Competitions Commands","Kaggle CLI Configuration","Datasets Commands","kaggle-api documentation","Kaggle CLI Documentation","Kernels Commands","Model Variation Commands","Model Variation Versions Commands","Models Commands","Kaggle CLI Tutorials"],"titleterms":{"api":[3,4],"cli":[1,4,9],"code":9,"command":[0,1,2,5,6,7,8],"competit":[0,9],"config":1,"configur":1,"content":3,"creat":[2,6,7,8,9],"credenti":4,"dataset":[2,9],"delet":[2,5,6,7,8],"document":[3,4],"download":[0,2,7,9],"file":[0,1,2,5,6,7],"find":9,"get":[4,6,8],"how":9,"init":[2,5,6,8],"instal":4,"introduct":9,"kaggl":[0,1,2,3,4,5,6,7,8,9],"kernel":[5,9],"leaderboard":0,"list":[0,2,5,8],"locat":1,"metadata":2,"model":[6,7,8,9],"notebook":9,"output":5,"pull":5,"push":5,"python":4,"refer":4,"set":1,"start":4,"statu":[2,5],"submiss":0,"submit":[0,9],"tutori":[4,9],"unset":1,"updat":[6,8,9],"variat":[6,7,9],"version":[2,7,9],"view":1}}) \ No newline at end of file diff --git a/documentation/_build/html/tutorials.html b/documentation/_build/html/tutorials.html new file mode 100644 index 0000000..7ff2f40 --- /dev/null +++ b/documentation/_build/html/tutorials.html @@ -0,0 +1,488 @@ + + + + + + + + Kaggle CLI Tutorials — kaggle-api documentation + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Kaggle CLI Tutorials

+

These tutorials illustrate how to use a sequence of Kaggle CLI commands to accomplish common tasks.

+
+

Introduction

+

Before starting these tutorials, please make sure you have:

+
    +
  1. Installed the Kaggle CLI, following the instructions here.

  2. +
  3. Set up your API credentials, following the instructions here

  4. +
  5. Logged in to Kaggle in a web browser. This will allow you to verify the results of the CLI commands in the Your Work section of your Kaggle profile.

  6. +
+
+
+

Tutorial: Create a Dataset

+

This tutorial walks you through creating a new dataset on Kaggle.

+
    +
  1. Start from an empty directory. Create a new directory for your dataset files and navigate into it.

    +
    mkdir my-new-dataset
    +cd my-new-dataset
    +
    +
    +
  2. +
  3. Create a sample data file. For this example, create a CSV file named sample_data.csv with an index column and three random data columns, and a few rows of data.

    +
    echo "id,col_a,col_b,col_c" > sample_data.csv
    +echo "1,0.5,0.2,0.8" >> sample_data.csv
    +echo "2,0.1,0.7,0.3" >> sample_data.csv
    +echo "3,0.9,0.4,0.6" >> sample_data.csv
    +
    +
    +
  4. +
  5. Initialize dataset metadata. This creates a dataset-metadata.json file in your current directory.

    +
    kaggle datasets init
    +
    +
    +
  6. +
  7. Edit the metadata file. Open dataset-metadata.json in a text editor and make the following changes:

    +
      +
    • Replace "INSERT_TITLE_HERE" with your desired dataset title, e.g., "My Sample Dataset".

    • +
    • Replace "INSERT_SLUG_HERE" with a URL-friendly version of your title, e.g., "my-sample-dataset". The URL-friendly version is made by converting the title to lower-case and changing spaces to dashes.

    • +
    • You can also add licenses, descriptions, and other relevant information.

    • +
    +
  8. +
  9. Create the dataset. This command uploads your sample_data.csv and dataset-metadata.json to Kaggle.

    +
    kaggle datasets create -p .
    +
    +
    +

    You can add --public to make it public immediately.

    +
  10. +
  11. Verify on Kaggle.com. Refresh the Datasets tab in Your Work. You should see “My Sample Dataset”.

  12. +
+
+
+

Tutorial: Find and Download a Dataset

+

This tutorial explains how to find and download using the CLI.

+
    +
  1. Search for a Dataset (Optional).

    +
      +
    • If you know the dataset you want, you can skip this step. Otherwise, you can search for datasets. For example, to search for datasets related to “iris”:

      +
      kaggle datasets list -s iris
      +
      +
      +
    • +
    • This command will list datasets matching your search query. Note the dataset’s “id” (e.g., uciml/iris) which you’ll use for downloading.

    • +
    +
  2. +
  3. Choose a Dataset and Create a Directory.

    +
      +
    • For this tutorial, we’ll use the classic “Iris” dataset, which has the id uciml/iris.

    • +
    • Create a new directory for your dataset and navigate into it:

      +
      mkdir iris-dataset-analysis
      +cd iris-dataset-analysis
      +
      +
      +
    • +
    +
  4. +
  5. Download the Dataset.

    +
      +
    • Use the kaggle datasets download command with the dataset’s id.

      +
      kaggle datasets download -d uciml/iris
      +
      +
      +
    • +
    • This will download the dataset files, typically as a ZIP archive (e.g., iris.zip), into your current directory (iris-dataset-analysis).

    • +
    +
  6. +
  7. Unzip the Dataset.

    +
      +
    • Note: you could skip this step by using the --unzip flag on the previous command.

    • +
    • Most datasets are downloaded as ZIP files. You’ll need to unzip the archive to access the data files (e.g., CSV files).

      +
      # Make sure you have unzip installed, or use your OS's GUI to extract
      +# The actual zip file name might vary based on the dataset.
      +# For uciml/iris, it's iris.zip
      +unzip iris.zip
      +
      +
      +
    • +
    +
  8. +
  9. Verify the results.

    +
      +
    • After unzipping, you should see the data files (e.g., Iris.csv, database.sqlite).

    • +
    +
  10. +
+
+
+

Tutorial: Update a Kernel (Notebook)

+

This tutorial shows how to download an existing kernel, modify it, and push the changes back to Kaggle.

+
    +
  1. Create or identify a kernel on Kaggle.com.

    +
      +
    • Log in to kaggle.com.

    • +
    • Find an existing notebook you own (or create one). For this tutorial, let’s assume its title is “My CLI Test Kernel”.

    • +
    • Note the kernel slug from the browser’s address bar. It will be something like YOUR_USERNAME/my-cli-test-kernel.

    • +
    +
  2. +
  3. Create a new local directory for your kernel.

    +
    mkdir my-kernel-project
    +cd my-kernel-project
    +
    +
    +
  4. +
  5. Pull the kernel. Use the kaggle kernels pull command with your username and the kernel slug. The -m flag includes the kernel-metadata.json file, which is required for pushing updates.

    +
    # Replace YOUR_USERNAME with your actual Kaggle username
    +kaggle kernels pull YOUR_USERNAME/my-cli-test-kernel -m
    +
    +
    +

    This will download my-cli-test-kernel.ipynb (or .py/.Rmd) and kernel-metadata.json.

    +
  6. +
  7. Edit the kernel or metadata.

    +
      +
    • Open the downloaded notebook file (e.g., my-cli-test-kernel.ipynb) and make some changes to the code or content.

    • +
    • Open kernel-metadata.json. Let’s add “benchmark” to the keywords. Find the "keywords": [] line and change it to "keywords": ["benchmark"].

    • +
    • Note: While you can edit keywords here, it’s often best to manage them on kaggle.com, as there is a restricted list of allowed keywords.

    • +
    +
  8. +
  9. Push the kernel. This uploads your changes and the updated metadata, then runs the kernel on Kaggle.

    +
    kaggle kernels push -p .
    +
    +
    +
  10. +
  11. Verify on Kaggle.com. Refresh the Code tab in Your Work. You should see your code changes and the “benchmark” tag added to the kernel settings.

  12. +
+
+
+

Tutorial: Create a Model

+

This tutorial guides you through creating a new model on Kaggle.

+
    +
  1. Start from an empty directory. Create a new directory for your model files and navigate into it.

    +
    mkdir my-new-model
    +cd my-new-model
    +
    +
    +
  2. +
  3. Copy your model definition files (optional for this step). If you have files that define your model (e.g., Python scripts, model weights), copy them into this directory. For the kaggle models create step, only the metadata is strictly required, but you’ll need files when you create a model variation.

  4. +
  5. Initialize model metadata. This creates a model-metadata.json file.

    +
    kaggle models init
    +
    +
    +
  6. +
  7. Edit the metadata file. Open model-metadata.json and make the following changes:

    +
      +
    • Replace "INSERT_OWNER_SLUG_HERE" with your Kaggle username (e.g., "YOUR_USERNAME").

    • +
    • Replace "INSERT_TITLE_HERE" with your model’s title (e.g., "My Awesome AI Model").

    • +
    • Replace "INSERT_SLUG_HERE" with a URL-friendly version of the title (e.g., "my-awesome-ai-model").

    • +
    • Fill out the "description" field and other relevant sections like "licenses".

    • +
    +
  8. +
  9. Create the model.

    +
    kaggle models create -p .
    +
    +
    +
  10. +
  11. Verify on Kaggle.com. Refresh the Models tab in Your Work. You should see “My Awesome AI Model”.

  12. +
+
+
+

Tutorial: Create a Model Variation

+

This tutorial shows how to create a variation under an existing model. A model variation usually represents the model implemented in a specific framework (like TensorFlow, PyTorch, JAX, etc.) and includes the actual model files.

+
    +
  1. Ensure you have a parent model. Follow the “Create a Model” tutorial if you haven’t already. Let’s assume your model slug is my-awesome-ai-model and your username is YOUR_USERNAME.

  2. +
  3. Prepare your model variation files. In your model directory (e.g., my-new-model), create or place the files for this specific variation. For example, a JAX model might have a flax_model.params file.

    +
    # In the my-new-model directory
    +echo "This is a placeholder for JAX model parameters" > flax_model.params
    +
    +
    +
  4. +
  5. Initialize model variation metadata. This creates model-instance-metadata.json.

    +
    # Still in the my-new-model directory
    +kaggle models variations init
    +
    +
    +
  6. +
  7. Edit the variation metadata file. Open model-instance-metadata.json and make changes:

    +
      +
    • Replace "INSERT_OWNER_SLUG_HERE" with your Kaggle username (e.g., "YOUR_USERNAME").

    • +
    • Replace "INSERT_EXISTING_MODEL_SLUG_HERE" with your parent model’s slug (e.g., "my-awesome-ai-model").

    • +
    • Replace "INSERT_INSTANCE_SLUG_HERE" with a slug for this variation (e.g., "jax-implementation").

    • +
    • Replace "INSERT_FRAMEWORK_HERE" with the model framework (e.g., "jax", "tensorflow", "pytorch", "sklearn").

    • +
    • Update the "instance_size_bytes" if known, and add a "description".

    • +
    +
  8. +
  9. Create the model variation. This uploads the files in the current directory (e.g., flax_model.params) along with the variation metadata.

    +
    kaggle models variations create -p .
    +
    +
    +
  10. +
  11. Verify on Kaggle.com. Go to your model’s page on Kaggle by clicking on the model under in the Models tab on Your Work. You should see a new “jax-implementation” variation listed, and it will have one version containing flax_model.params.

  12. +
+
+
+

Tutorial: Create a Model Variation Version

+

This tutorial explains how to add a new version to an existing model variation, for example, when you have updated model weights or files.

+
    +
  1. Ensure you have a model variation. Follow the “Create a Model Variation” tutorial. Let’s assume your variation is YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation.

  2. +
  3. Prepare your updated files. In your model variation directory (e.g., my-new-model), update or add new files for this version. For example, create flax_model_v2.params.

    +
    # In the my-new-model directory
    +echo "Updated JAX model parameters for V2" > flax_model_v2.params
    +# You might also remove or update flax_model.params if it's being replaced
    +
    +
    +
  4. +
  5. Create the new model variation version. You need to specify the parent model variation and provide version notes. The files from the -p path will form the contents of this new version.

    +
    # Replace YOUR_USERNAME and the slugs for model and variation accordingly
    +kaggle models variations versions create YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation -p . -n "Second version with updated parameters"
    +
    +
    +

    Note: The -p . means all files in the current directory will be uploaded as part of this new version. If you only want to upload flax_model_v2.params, ensure only it (and any other V2 files) are in a directory and point -p to that directory, or manage your files carefully.

    +
  6. +
  7. Verify on Kaggle.com. Go to your model variation page on Kaggle (e.g., YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation) by clicking on the Models tab on Your Work. You should see a new version (e.g., version 2) listed with your notes and the new files.

  8. +
+
+
+

Tutorial: How to Submit to a Competition

+

This tutorial walks you through the process of making a submission to a Kaggle competition using the CLI.

+
    +
  1. Find a Competition and Accept Rules.

    +
      +
    • First, you need to find a competition. You can list active competitions using kaggle competitions list.

    • +
    • For this tutorial, we’ll use the “titanic” competition, which is a common starting point. You can find it at https://www.kaggle.com/c/titanic.

    • +
    • Important: Before you can download data or submit, you must join the competition and accept the competition’s rules on the Kaggle website. Navigate to the competition on kaggle.com to do this.

    • +
    +
  2. +
  3. Create a Directory and Download Competition Files.

    +
      +
    • Create a new directory for your competition files and navigate into it.

      +
      mkdir titanic-competition
      +cd titanic-competition
      +
      +
      +
    • +
    • Download the competition files. This usually includes training data, test data, and a sample submission file.

      +
      kaggle competitions download -c titanic
      +
      +
      +
    • +
    • This will download titanic.zip. You’ll need to unzip it to see the files (e.g., train.csv, test.csv, gender_submission.csv).

      +
      # Make sure you have unzip installed, or use your OS's GUI to extract
      +# The actual zip file name might vary based on the competition.
      +unzip titanic.zip
      +
      +
      +
    • +
    +
  4. +
  5. Create Your Submission File.

    +
      +
    • The required format for the submission file is specific to each competition. You can find this information on the competition’s “Evaluation” page or by examining the sample submission file (e.g., gender_submission.csv for the Titanic competition).

    • +
    • For the Titanic competition, the submission file needs two columns: PassengerId and Survived. The Survived column should contain your predictions (0 for deceased, 1 for survived).

    • +
    • Let’s create a very simple submission file based on the gender_submission.csv (which predicts survival based on gender). For this tutorial, we’ll just copy it and use it as our submission. In a real scenario, you would generate this file from your model’s predictions on the test.csv data.

      +
      cp gender_submission.csv my_submission.csv
      +
      +
      +
    • +
    • Your my_submission.csv should look something like this:

      +
      PassengerId,Survived
      +892,0
      +893,1
      +894,0
      +...
      +
      +
      +
    • +
    +
  6. +
  7. Submit to the Competition.

    +
      +
    • Use the kaggle competitions submit command. You need to specify:

      +
        +
      • The competition ID (-c titanic).

      • +
      • The path to your submission file (-f my_submission.csv).

      • +
      • A message describing your submission (-m "My first submission via CLI").

      • +
      +
      kaggle competitions submit -c titanic -f my_submission.csv -m "My first submission via CLI"
      +
      +
      +
    • +
    +
  8. +
  9. Check Your Submission Status.

    +
      +
    • After submitting, you’ll get a message indicating success or failure.

    • +
    • You can check your submission’s score and status on the “My Submissions” tab of the competition page on Kaggle.com (e.g., https://www.kaggle.com/c/titanic/submissions).

    • +
    • You can also list your recent submissions and their scores via the CLI:

      +
      kaggle competitions submissions -c titanic
      +
      +
      +
    • +
    • This command will show your submission, its status (e.g., complete, error), and your public/private scores if available.

    • +
    +
  10. +
+
+
+

Tutorial: How to Submit to a Code Competition

+

This tutorial walks you through the process of submitting to a code competition on Kaggle.

+
    +
  1. Find a Code Competition.

    +
      +
    • First, you need to find a code competition to participate in. You can browse the available competitions on the Kaggle competitions page. Many Featured Competitions are code competitions.

    • +
    +
  2. +
  3. Download the Dataset.

    +
      +
    • Once you have chosen a competition, you need to download the dataset. You can do this using the kaggle competitions download command:

    • +
    +
    kaggle competitions download -c <competition-name>
    +
    +
    +
      +
    • Replace <competition-name> with the name of the competition you want to participate in.

    • +
    +
  4. +
  5. Create a Notebook.

    +
      +
    • Next, you need to create a Kaggle Notebook to work on your submission. A Kaggle Notebook contains the code and environment settings for Kaggle to run and evaluate your submission. Follow the tutorial on Creating / Updating Notebooks if you’re not sure how to do this.

    • +
    +
  6. +
  7. Write Your Code.

    +
      +
    • Now it’s time to write your code! You can use any programming language or framework that is supported by Kaggle. The goal is to create a model that can make predictions on the test set.

    • +
    +
  8. +
  9. Submit Your Prediction.

    +
      +
    • Once you are happy with your model, you can submit your prediction to the competition. You can do this using the kaggle competitions submit command:

    • +
    +
    kaggle competitions submit -c <competition-name> -k <username>/<notebook-slug> -m <message>
    +
    +
    +
      +
    • Replace <competition-name> with the name of the competition, <username>/<notebook-slug> with the identifier of your notebook, and <message> with a brief description of your submission.

    • +
    +
  10. +
  11. Check Your Score.

    +
      +
    • After you have submitted your prediction, you can check your score on the competition leaderboard. The leaderboard shows the scores of all the participants in the competition. You can download the leaderboard using the kaggle competitions leaderboard command:

    • +
    +
    kaggle competitions leaderboard <competition-name>
    +
    +
    +
  12. +
+
+
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/documentation/conf.py b/documentation/conf.py index df49ada..a42b43a 100644 --- a/documentation/conf.py +++ b/documentation/conf.py @@ -8,7 +8,7 @@ import sys from pathlib import Path -sys.path.insert(0, str(Path("..", "src").resolve())) +sys.path.insert(0, str(Path("..").resolve())) def autodoc_skip_member(app, what, name, obj, skip, options): @@ -48,7 +48,7 @@ def setup(app): ] templates_path = ["_templates"] -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "**/kaggle_api.py", "**/kaggle/models/*.py"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "**/kaggle/models/*.py"] source_suffix = { ".rst": "restructuredtext", @@ -61,7 +61,13 @@ def setup(app): html_theme = "alabaster" -apidoc_modules = [ - {"path": "../src/kaggle", "destination": "source/"}, -] autoclass_content = "both" +autosectionlabel_prefix_document = True # ?? +myst_heading_anchors = 2 # ?? +suppress_warnings = ["ref.unknown"] + +# -- Options for sphinx.ext.apidoc ------------------------------------------- +apidoc_module_dir = "../src/kaggle" +apidoc_output_dir = "source" +apidoc_excluded_paths = ["api/kaggle_api.py"] +apidoc_separate_modules = True diff --git a/documentation/index.rst b/documentation/index.rst index 21d5713..a475280 100644 --- a/documentation/index.rst +++ b/documentation/index.rst @@ -1,3 +1,5 @@ +.. _kaggle: + .. kaggle-api documentation master file, created by sphinx-quickstart on Thu Jun 26 22:53:21 2025. You can adapt this file completely to your liking, but it should at least diff --git a/documentation/intro.md b/documentation/intro.md index 8031b01..4f9dad0 100644 --- a/documentation/intro.md +++ b/documentation/intro.md @@ -1,3 +1,5 @@ +.. _kaggle: + # Kaggle CLI Documentation Welcome to the Kaggle CLI documentation. This guide provides detailed information on how to use the Kaggle command-line interface to interact with Kaggle's platform. @@ -52,12 +54,12 @@ and it would be discovered by the client. Explore these tutorials to learn how to perform common tasks: -* [Tutorials](./tutorials.html) +* [Tutorials](./tutorials.md) * [Create a Dataset](./tutorials.md#tutorial-create-a-dataset) - * [Download a Dataset and Prepare for Analysis](./tutorials.md#tutorial-download-a-dataset-and-prepare-for-analysis) + * [Find and Download a Dataset](./tutorials.md#tutorial-find-and-download-a-dataset) * [Create a Model](./tutorials.md#tutorial-create-a-model) - * [Create a Model Variation](./tutorials.md#tutorial-create-a-model-instance) - * [Create a Model Variation Version](./tutorials.md#tutorial-create-a-model-instance-version) + * [Create a Model Variation](./tutorials.md#tutorial-create-a-model-variation) + * [Create a Model Variation Version](./tutorials.md#tutorial-create-a-model-variation-version) * [How to Submit to a Competition](./tutorials.md#tutorial-how-to-submit-to-a-competition) * [How to Submit to a Code Competition](./tutorials.md#tutorial-how-to-submit-to-a-code-competition) From 615467a18bfe2ebc0e575c25f08cba78af2ad7b3 Mon Sep 17 00:00:00 2001 From: Steve Messick Date: Tue, 11 Nov 2025 23:39:08 +0000 Subject: [PATCH 2/3] Use clean source --- .../_build/doctrees/competitions.doctree | Bin 42498 -> 0 bytes .../_build/doctrees/configuration.doctree | Bin 17153 -> 0 bytes .../_build/doctrees/datasets.doctree | Bin 59314 -> 0 bytes .../_build/doctrees/environment.pickle | Bin 67245 -> 0 bytes documentation/_build/doctrees/index.doctree | Bin 3930 -> 0 bytes documentation/_build/doctrees/intro.doctree | Bin 28368 -> 0 bytes documentation/_build/doctrees/kernels.doctree | Bin 52387 -> 0 bytes .../_build/doctrees/model_instances.doctree | Bin 35504 -> 0 bytes .../doctrees/model_instances_versions.doctree | Bin 29467 -> 0 bytes documentation/_build/doctrees/models.doctree | Bin 32013 -> 0 bytes .../_build/doctrees/tutorials.doctree | Bin 86833 -> 0 bytes documentation/_build/html/.buildinfo | 4 - .../_build/html/_sources/competitions.md.txt | 216 ----- .../_build/html/_sources/configuration.md.txt | 89 -- .../_build/html/_sources/datasets.md.txt | 309 ------ .../_build/html/_sources/index.rst.txt | 23 - .../_build/html/_sources/intro.md.txt | 87 -- .../_build/html/_sources/kernels.md.txt | 277 ------ .../html/_sources/model_instances.md.txt | 182 ---- .../_sources/model_instances_versions.md.txt | 135 --- .../_build/html/_sources/models.md.txt | 184 ---- .../_build/html/_sources/tutorials.md.txt | 322 ------- .../_build/html/_static/alabaster.css | 663 ------------- documentation/_build/html/_static/basic.css | 906 ------------------ documentation/_build/html/_static/custom.css | 1 - documentation/_build/html/_static/doctools.js | 149 --- .../html/_static/documentation_options.js | 13 - documentation/_build/html/_static/file.png | Bin 286 -> 0 bytes .../_build/html/_static/github-banner.svg | 5 - .../_build/html/_static/language_data.js | 192 ---- documentation/_build/html/_static/minus.png | Bin 90 -> 0 bytes documentation/_build/html/_static/plus.png | Bin 90 -> 0 bytes .../_build/html/_static/pygments.css | 84 -- .../_build/html/_static/searchtools.js | 635 ------------ .../_build/html/_static/sphinx_highlight.js | 154 --- documentation/_build/html/competitions.html | 301 ------ documentation/_build/html/configuration.html | 189 ---- documentation/_build/html/datasets.html | 373 ------- documentation/_build/html/genindex.html | 111 --- documentation/_build/html/index.html | 200 ---- documentation/_build/html/intro.html | 200 ---- documentation/_build/html/kernels.html | 346 ------- .../_build/html/model_instances.html | 262 ----- .../_build/html/model_instances_versions.html | 227 ----- documentation/_build/html/models.html | 266 ----- documentation/_build/html/objects.inv | Bin 1467 -> 0 bytes documentation/_build/html/search.html | 129 --- documentation/_build/html/searchindex.js | 1 - documentation/_build/html/tutorials.html | 488 ---------- 49 files changed, 7723 deletions(-) delete mode 100644 documentation/_build/doctrees/competitions.doctree delete mode 100644 documentation/_build/doctrees/configuration.doctree delete mode 100644 documentation/_build/doctrees/datasets.doctree delete mode 100644 documentation/_build/doctrees/environment.pickle delete mode 100644 documentation/_build/doctrees/index.doctree delete mode 100644 documentation/_build/doctrees/intro.doctree delete mode 100644 documentation/_build/doctrees/kernels.doctree delete mode 100644 documentation/_build/doctrees/model_instances.doctree delete mode 100644 documentation/_build/doctrees/model_instances_versions.doctree delete mode 100644 documentation/_build/doctrees/models.doctree delete mode 100644 documentation/_build/doctrees/tutorials.doctree delete mode 100644 documentation/_build/html/.buildinfo delete mode 100644 documentation/_build/html/_sources/competitions.md.txt delete mode 100644 documentation/_build/html/_sources/configuration.md.txt delete mode 100644 documentation/_build/html/_sources/datasets.md.txt delete mode 100644 documentation/_build/html/_sources/index.rst.txt delete mode 100644 documentation/_build/html/_sources/intro.md.txt delete mode 100644 documentation/_build/html/_sources/kernels.md.txt delete mode 100644 documentation/_build/html/_sources/model_instances.md.txt delete mode 100644 documentation/_build/html/_sources/model_instances_versions.md.txt delete mode 100644 documentation/_build/html/_sources/models.md.txt delete mode 100644 documentation/_build/html/_sources/tutorials.md.txt delete mode 100644 documentation/_build/html/_static/alabaster.css delete mode 100644 documentation/_build/html/_static/basic.css delete mode 100644 documentation/_build/html/_static/custom.css delete mode 100644 documentation/_build/html/_static/doctools.js delete mode 100644 documentation/_build/html/_static/documentation_options.js delete mode 100644 documentation/_build/html/_static/file.png delete mode 100644 documentation/_build/html/_static/github-banner.svg delete mode 100644 documentation/_build/html/_static/language_data.js delete mode 100644 documentation/_build/html/_static/minus.png delete mode 100644 documentation/_build/html/_static/plus.png delete mode 100644 documentation/_build/html/_static/pygments.css delete mode 100644 documentation/_build/html/_static/searchtools.js delete mode 100644 documentation/_build/html/_static/sphinx_highlight.js delete mode 100644 documentation/_build/html/competitions.html delete mode 100644 documentation/_build/html/configuration.html delete mode 100644 documentation/_build/html/datasets.html delete mode 100644 documentation/_build/html/genindex.html delete mode 100644 documentation/_build/html/index.html delete mode 100644 documentation/_build/html/intro.html delete mode 100644 documentation/_build/html/kernels.html delete mode 100644 documentation/_build/html/model_instances.html delete mode 100644 documentation/_build/html/model_instances_versions.html delete mode 100644 documentation/_build/html/models.html delete mode 100644 documentation/_build/html/objects.inv delete mode 100644 documentation/_build/html/search.html delete mode 100644 documentation/_build/html/searchindex.js delete mode 100644 documentation/_build/html/tutorials.html diff --git a/documentation/_build/doctrees/competitions.doctree b/documentation/_build/doctrees/competitions.doctree deleted file mode 100644 index 240458ad4b0f4c7d9a1c9661217060d9bd08270b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42498 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 a`MEUcKZgSN7_+$K{^~^i@ouLxH}QX?;4N+d diff --git a/documentation/_build/doctrees/configuration.doctree b/documentation/_build/doctrees/configuration.doctree deleted file mode 100644 index 182232aa825ecfd0211b195caf500a4a4731c21b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17153 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 diff --git a/documentation/_build/doctrees/datasets.doctree b/documentation/_build/doctrees/datasets.doctree deleted file mode 100644 index a56f039237c42ec6ba374739117699975ce0480b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59314 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 J>A9K={|8YF`P={i diff --git a/documentation/_build/doctrees/intro.doctree b/documentation/_build/doctrees/intro.doctree deleted file mode 100644 index e820488d2425dfc20253d08496f7f2f8c1939ba1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28368 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 diff --git a/documentation/_build/doctrees/kernels.doctree b/documentation/_build/doctrees/kernels.doctree deleted file mode 100644 index 0cf2c49c1567ac1bc2255ff2a862456a7cbde3f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52387 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 G^#28?zUNQ? diff --git a/documentation/_build/doctrees/model_instances.doctree b/documentation/_build/doctrees/model_instances.doctree deleted file mode 100644 index 2f82948f69ac53f95de39c1c44034aa665716acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35504 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 C_~-Nh diff --git a/documentation/_build/doctrees/model_instances_versions.doctree b/documentation/_build/doctrees/model_instances_versions.doctree deleted file mode 100644 index a4460a5ae4717d6490a5019ff4618690a919485c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29467 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 W?w6@|8$z9m&??>U*ZOh1w)o$*&&aj_ diff --git a/documentation/_build/doctrees/models.doctree b/documentation/_build/doctrees/models.doctree deleted file mode 100644 index afbf0cfe64aafb2b1d8a9abbf66a60288f1ab8fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32013 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 diff --git a/documentation/_build/html/.buildinfo b/documentation/_build/html/.buildinfo deleted file mode 100644 index 7faae69..0000000 --- a/documentation/_build/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file records the configuration used when building these files. When it is not found, a full rebuild will be done. -config: d0370e30f9d08145626c3bb6f1dd4f8e -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/documentation/_build/html/_sources/competitions.md.txt b/documentation/_build/html/_sources/competitions.md.txt deleted file mode 100644 index 7c05c31..0000000 --- a/documentation/_build/html/_sources/competitions.md.txt +++ /dev/null @@ -1,216 +0,0 @@ -# Competitions Commands - -Commands for interacting with Kaggle competitions. - -For tutorials on how to submit to competitions : -* [How to Submit to a Competition](./tutorials.md#tutorial-how-to-submit-to-a-competition) -* [How to Submit to a Code Competition](./tutorials.md#tutorial-how-to-submit-to-a-code-competition) - -## `kaggle competitions list` - -Lists available competitions. - -**Usage:** - -```bash -kaggle competitions list [options] -``` - -**Options:** - -* `--group `: Filter by competition group. Valid options: `general`, `entered`, `inClass`. -* `--category `: Filter by competition category. Valid options: `all`, `featured`, `research`, `recruitment`, `gettingStarted`, `masters`, `playground`. -* `--sort-by `: Sort results. Valid options: `grouped`, `prize`, `earliestDeadline`, `latestDeadline`, `numberOfTeams`, `recentlyCreated` (default: `latestDeadline`). -* `-p, --page `: Page number for results (default: 1). -* `-s, --search `: Search term. -* `-v, --csv`: Print results in CSV format. - -**Example:** - -List featured competitions in the general group, sorted by prize: - -```bash -kaggle competitions list --group general --category featured --sort-by prize -``` - -**Purpose:** - -This command helps you discover new competitions or find specific ones based on various criteria. - -## `kaggle competitions files` - -Lists files for a specific competition. - -**Usage:** - -```bash -kaggle competitions files [options] -``` - -**Arguments:** - -* ``: Competition URL suffix (e.g., `titanic`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `-q, --quiet`: Suppress verbose output. -* `--page-token `: Page token for results paging. -* `--page-size `: Number of items to show on a page (default: 20, max: 200). - -**Example:** - -List the first 3 files for the "titanic" competition in CSV format, quietly: - -```bash -kaggle competitions files titanic --page-size=3 -v -q -``` - -**Purpose:** - -Use this command to see the data files available for a competition before downloading them. - -## `kaggle competitions download` - -Downloads competition files. - -**Usage:** - -```bash -kaggle competitions download [options] -``` - -**Arguments:** - -* ``: Competition URL suffix (e.g., `titanic`). - -**Options:** - -* `-f, --file `: Specific file to download (downloads all if not specified). -* `-p, --path `: Folder to download files to (defaults to current directory). -* `-w, --wp`: Download files to the current working path (equivalent to `-p .`). -* `-o, --force`: Force download, overwriting existing files. -* `-q, --quiet`: Suppress verbose output. - -**Examples:** - -1. Download all files for the "titanic" competition to the current directory, overwriting existing files, quietly: - - ```bash - kaggle competitions download titanic -w -o -q - ``` - -2. Download the `test.csv` file from the "titanic" competition to a folder named `tost`: - - ```bash - kaggle competitions download titanic -f test.csv -p tost - ``` - -**Purpose:** - -This command allows you to get the necessary data files for a competition onto your local machine. - -## `kaggle competitions submit` - -Makes a new submission to a competition. - -**Usage:** - -```bash -kaggle competitions submit -f -m [options] -``` - -**Arguments:** - -* ``: Competition URL suffix (e.g., `house-prices-advanced-regression-techniques`). -* `-f, --file `: The submission file. -* `-m, --message `: The submission message. - -**Options:** - -* `-k, --kernel `: Name of the kernel (notebook) to submit (for code competitions). -* `-v, --version `: Version of the kernel to submit. -* `-q, --quiet`: Suppress verbose output. - -**Example:** - -Submit `sample_submission.csv` to the "house-prices-advanced-regression-techniques" competition with the message "Test message": - -```bash -kaggle competitions submit house-prices-advanced-regression-techniques -f sample_submission.csv -m "Test message" -``` - -**Purpose:** - -Use this command to upload your predictions or code to a competition for scoring. - -## `kaggle competitions submissions` - -Shows your past submissions for a competition. - -**Usage:** - -```bash -kaggle competitions submissions [options] -``` - -**Arguments:** - -* ``: Competition URL suffix (e.g., `house-prices-advanced-regression-techniques`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `-q, --quiet`: Suppress verbose output. - -**Example:** - -Show submissions for "house-prices-advanced-regression-techniques" in CSV format, quietly: - -```bash -kaggle competitions submissions house-prices-advanced-regression-techniques -v -q -``` - -**Purpose:** - -This command allows you to review your previous submission attempts and their scores. - -## `kaggle competitions leaderboard` - -Gets competition leaderboard information. - -**Usage:** - -```bash -kaggle competitions leaderboard [options] -``` - -**Arguments:** - -* ``: Competition URL suffix (e.g., `titanic`). - -**Options:** - -* `-s, --show`: Show the top of the leaderboard in the console. -* `-d, --download`: Download the entire leaderboard to a CSV file. -* `-p, --path `: Folder to download the leaderboard to (if `-d` is used). -* `-v, --csv`: Print results in CSV format (used with `-s`). -* `-q, --quiet`: Suppress verbose output. - -**Examples:** - -1. Download the "titanic" leaderboard to a folder named `leaders`, quietly: - - ```bash - kaggle competitions leaderboard titanic -d -p leaders -q - ``` - -2. Download the leaderboard and save it to `leaderboard.txt`: - - ```bash - kaggle competitions leaderboard titanic > leaderboard.txt - ``` - -**Purpose:** - -This command lets you view your ranking and the scores of other participants in a competition. diff --git a/documentation/_build/html/_sources/configuration.md.txt b/documentation/_build/html/_sources/configuration.md.txt deleted file mode 100644 index 067522f..0000000 --- a/documentation/_build/html/_sources/configuration.md.txt +++ /dev/null @@ -1,89 +0,0 @@ -# Kaggle CLI Configuration - -The Kaggle CLI uses a configuration file to store settings such as your API credentials and default values for commands. - -## Configuration Commands - -### `config view` - -Displays the current configuration values. - -**Usage:** - -```bash -kaggle config view -``` - -**Purpose:** - -This command allows you to inspect the current settings of your Kaggle CLI, such as the configured API endpoint, proxy settings, and default competition. - -### `config set` - -Sets a specific configuration value. - -**Usage:** - -```bash -kaggle config set -n -v -``` - -**Arguments:** - -* `-n, --name `: The name of the configuration parameter to set. Valid options are `competition`, `path`, and `proxy`. -* `-v, --value `: The value to set for the configuration parameter. - * For `competition`: The competition URL suffix (e.g., `titanic`). - * For `path`: The default folder where files will be downloaded. - * For `proxy`: The proxy server URL. - -**Example:** - -Set the default competition to "titanic": - -```bash -kaggle config set -n competition -v titanic -``` - -**Purpose:** - -Use this command to customize the behavior of the Kaggle CLI, such as setting a default competition to avoid specifying it in every command, defining a default download path, or configuring a proxy server. - -### `config unset` - -Clears a specific configuration value, reverting it to its default. - -**Usage:** - -```bash -kaggle config unset -n -``` - -**Arguments:** - -* `-n, --name `: The name of the configuration parameter to clear. Valid options are `competition`, `path`, and `proxy`. - -**Example:** - -Clear the default competition: - -```bash -kaggle config unset -n competition -``` - -**Purpose:** - -This command removes a previously set configuration value, allowing the CLI to use its default behavior or prompt for the value if required. - -## Configuration File Location - -The Kaggle CLI configuration is typically stored in a file named `kaggle.json` located in the `~/.kaggle/` directory on Linux and macOS, or `C:\Users\\.kaggle\` on Windows. - -This file contains your API username and key: - -```json -{"username":"YOUR_USERNAME","key":"YOUR_API_KEY"} -``` - -You can download this file from your Kaggle account page (`https://www.kaggle.com//account`) and place it in the correct directory. - -Alternatively, you can set the `KAGGLE_USERNAME` and `KAGGLE_KEY` environment variables. diff --git a/documentation/_build/html/_sources/datasets.md.txt b/documentation/_build/html/_sources/datasets.md.txt deleted file mode 100644 index 3163687..0000000 --- a/documentation/_build/html/_sources/datasets.md.txt +++ /dev/null @@ -1,309 +0,0 @@ -# Datasets Commands - -Commands for interacting with Kaggle datasets. - -## `kaggle datasets list` - -Lists available datasets. - -**Usage:** - -```bash -kaggle datasets list [options] -``` - -**Options:** - -* `--sort-by `: Sort results. Valid options: `hottest`, `votes`, `updated`, `active` (default: `hottest`). -* `--size `: DEPRECATED. Use `--min-size` and `--max-size`. -* `--file-type `: Filter by file type. Valid options: `all`, `csv`, `sqlite`, `json`, `bigQuery`. -* `--license `: Filter by license. Valid options: `all`, `cc`, `gpl`, `odb`, `other`. -* `--tags `: Filter by tags (comma-separated tag IDs). -* `-s, --search `: Search term. -* `-m, --mine`: Display only your datasets. -* `--user `: Filter by a specific user or organization. -* `-p, --page `: Page number for results (default: 1). -* `-v, --csv`: Print results in CSV format. -* `--max-size `: Maximum dataset size in bytes. -* `--min-size `: Minimum dataset size in bytes. - -**Examples:** - -1. List your own datasets: - - ```bash - kaggle datasets list -m - ``` - -2. List CSV datasets, page 2, sorted by last updated, containing "student" in their title, with size between 13000 and 15000 bytes: - - ```bash - kaggle datasets list --file-type csv --page 2 --sort-by updated -s student --min-size 13000 --max-size 15000 - ``` - -3. List datasets with an ODB license, tagged with "internet", and matching the search term "telco": - - ```bash - kaggle datasets list --license odb --tags internet --search telco - ``` - -**Purpose:** - -This command helps you find datasets on Kaggle based on various criteria like owner, file type, tags, and size. - -## `kaggle datasets files` - -Lists files for a specific dataset. - -**Usage:** - -```bash -kaggle datasets files [options] -``` - -**Arguments:** - -* ``: Dataset URL suffix in the format `owner/dataset-name` (e.g., `kerneler/brazilian-bird-observation-metadata-from-wikiaves`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `--page-token `: Page token for results paging. -* `--page-size `: Number of items to show on a page (default: 20, max: 200). - -**Example:** - -List the first 7 files for the dataset `kerneler/brazilian-bird-observation-metadata-from-wikiaves`: - -```bash -kaggle datasets files kerneler/brazilian-bird-observation-metadata-from-wikiaves --page-size=7 -``` - -**Purpose:** - -Use this command to see the individual files within a dataset before downloading. - -## `kaggle datasets download` - -Downloads dataset files. - -**Usage:** - -```bash -kaggle datasets download [options] -``` - -**Arguments:** - -* ``: Dataset URL suffix (e.g., `willianoliveiragibin/pixar-films`). - -**Options:** - -* `-f, --file `: Specific file to download (downloads all if not specified). -* `-p, --path `: Folder to download files to (defaults to current directory). -* `-w, --wp`: Download files to the current working path. -* `--unzip`: Unzip the downloaded file (deletes the .zip file afterwards). -* `-o, --force`: Force download, overwriting existing files. -* `-q, --quiet`: Suppress verbose output. - -**Examples:** - -1. Download all files for the dataset `willianoliveiragibin/pixar-films`: - - ```bash - kaggle datasets download -d willianoliveiragibin/pixar-films - ``` - -2. Download the dataset `goefft/public-datasets-with-file-types-and-columns`, unzip it into the `tmp` folder, overwriting if necessary, and suppress output: - - ```bash - kaggle datasets download goefft/public-datasets-with-file-types-and-columns -p tmp --unzip -o -q - ``` - -3. Download the specific file `dataset_results.csv` from `goefft/public-datasets-with-file-types-and-columns` to the current working directory, quietly, and force overwrite: - - ```bash - kaggle datasets download goefft/public-datasets-with-file-types-and-columns -f dataset_results.csv -w -q -o - ``` - -**Purpose:** - -This command allows you to retrieve dataset files for local use. - -## `kaggle datasets init` - -Initializes a metadata file (`dataset-metadata.json`) for creating a new dataset. - -**Usage:** - -```bash -kaggle datasets init -p -``` - -**Options:** - -* `-p, --path `: The path to the folder where the `dataset-metadata.json` file will be created (defaults to the current directory). - -**Example:** - -Initialize a dataset metadata file in the `tests/dataset` folder: - -```bash -kaggle datasets init -p tests/dataset -``` - -**Purpose:** - -This command creates a template `dataset-metadata.json` file that you need to edit before creating a new dataset on Kaggle. This file contains information like the dataset title, ID (slug), and licenses. - -## `kaggle datasets create` - -Creates a new dataset on Kaggle. - -**Usage:** - -```bash -kaggle datasets create -p [options] -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the data files and the `dataset-metadata.json` file (defaults to the current directory). -* `-u, --public`: Make the dataset public (default is private). -* `-q, --quiet`: Suppress verbose output. -* `-t, --keep-tabular`: Do not convert tabular files to CSV (default is to convert). -* `-r, --dir-mode `: How to handle directories: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). - -**Example:** - -Create a new public dataset from the files in `tests/dataset`, quietly, without converting tabular files, and skipping subdirectories. (Assumes `dataset-metadata.json` in `tests/dataset` has been properly edited with title and slug): - -```bash -# Example: Edit dataset-metadata.json first -# sed -i 's/INSERT_TITLE_HERE/My Dataset Title/' tests/dataset/dataset-metadata.json -# sed -i 's/INSERT_SLUG_HERE/my-dataset-slug/' tests/dataset/dataset-metadata.json - -kaggle datasets create -p tests/dataset --public -q -t -r skip -``` - -**Purpose:** - -This command uploads your local data files and the associated metadata to create a new dataset on Kaggle. - -## `kaggle datasets version` - -Creates a new version of an existing dataset. - -**Usage:** - -```bash -kaggle datasets version -p -m [options] -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the updated data files and `dataset-metadata.json` (defaults to current directory). -* `-m, --message `: (Required) Message describing the new version. -* `-q, --quiet`: Suppress verbose output. -* `-t, --keep-tabular`: Do not convert tabular files to CSV. -* `-r, --dir-mode `: Directory handling mode (`skip`, `zip`, `tar`). -* `-d, --delete-old-versions`: Delete old versions of this dataset. - -**Example:** - -Create a new version of a dataset using files from `tests/dataset` with version notes "Updated data", quietly, keeping tabular formats, skipping directories, and deleting old versions: - -```bash -kaggle datasets version -m "Updated data" -p tests/dataset -q -t -r skip -d -``` - -**Purpose:** - -Use this command to update an existing dataset with new files or metadata changes. - -## `kaggle datasets metadata` - -Downloads metadata for a dataset or updates existing local metadata. - -**Usage:** - -```bash -kaggle datasets metadata [options] -``` - -**Arguments:** - -* ``: Dataset URL suffix (e.g., `goefft/public-datasets-with-file-types-and-columns`). - -**Options:** - -* `-p, --path `: Directory to download/update metadata file (`dataset-metadata.json`). Defaults to current working directory. -* `--update`: Update existing local metadata file instead of downloading anew. - -**Example:** - -Download metadata for the dataset `goefft/public-datasets-with-file-types-and-columns` into the `tests/dataset` folder: - -```bash -kaggle datasets metadata goefft/public-datasets-with-file-types-and-columns -p tests/dataset -``` - -**Purpose:** - -This command allows you to fetch the `dataset-metadata.json` file for an existing dataset, which can be useful for inspection or as a template for creating a new version. - -## `kaggle datasets status` - -Gets the creation status of a dataset. - -**Usage:** - -```bash -kaggle datasets status -``` - -**Arguments:** - -* ``: Dataset URL suffix (e.g., `goefft/public-datasets-with-file-types-and-columns`). - -**Example:** - -Get the status of the dataset `goefft/public-datasets-with-file-types-and-columns`: - -```bash -kaggle datasets status goefft/public-datasets-with-file-types-and-columns -``` - -**Purpose:** - -After creating or updating a dataset, this command helps you check if the process was successful or if there were any issues. - -## `kaggle datasets delete` - -Deletes a dataset from Kaggle. - -**Usage:** - -```bash -kaggle datasets delete [options] -``` - -**Arguments:** - -* ``: Dataset URL suffix (e.g., `username/dataset-slug`). - -**Options:** - -* `-y, --yes`: Automatically confirm deletion without prompting. - -**Example:** - -Delete the dataset `username/dataset-slug` and automatically confirm: - -```bash -kaggle datasets delete username/dataset-slug --yes -``` - -**Purpose:** - -This command permanently removes one of your datasets from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/index.rst.txt b/documentation/_build/html/_sources/index.rst.txt deleted file mode 100644 index a475280..0000000 --- a/documentation/_build/html/_sources/index.rst.txt +++ /dev/null @@ -1,23 +0,0 @@ -.. _kaggle: - -.. kaggle-api documentation master file, created by - sphinx-quickstart on Thu Jun 26 22:53:21 2025. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -kaggle-api documentation -======================== - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - intro - configuration - competitions - datasets - kernels - models - model_instances - model_instances_versions - tutorials diff --git a/documentation/_build/html/_sources/intro.md.txt b/documentation/_build/html/_sources/intro.md.txt deleted file mode 100644 index 4f9dad0..0000000 --- a/documentation/_build/html/_sources/intro.md.txt +++ /dev/null @@ -1,87 +0,0 @@ -.. _kaggle: - -# Kaggle CLI Documentation - -Welcome to the Kaggle CLI documentation. This guide provides detailed information on how to use the Kaggle command-line interface to interact with Kaggle's platform. - -## Getting Started - -Before you begin, ensure you have the Kaggle CLI installed and configured with your API credentials. You can find your API token on your Kaggle account page. - -### Installation - -Ensure you have Python 3 and the package manager `pip` installed. - -Run the following command to access the Kaggle API using the command line: - -`pip install kaggle` -(You may need to do `pip install --user kaggle` on Mac/Linux. This is recommended if problems come up during the installation process.) -Installations done through the root user (i.e. `sudo pip install kaggle`) will not work correctly unless you understand what you're doing. Even then, they still might not work. User installs are strongly recommended in the case of permissions errors. - -You can now use the `kaggle` command as shown in the examples below. - -If you run into a `kaggle: command not found` error, ensure that your python binaries are on your path. You can see where `kaggle` is installed by doing `pip uninstall kaggle` and seeing where the binary is (then cancel the uninstall when prompted). For a local user install on Linux, the default location is `~/.local/bin`. On Windows, the default location is `$PYTHON_HOME/Scripts`. - -IMPORTANT: We do not offer Python 2 support. Please ensure that you are using Python 3 before reporting any issues. - -### API credentials - -To use the Kaggle API, sign up for a Kaggle account at https://www.kaggle.com. Then go to the 'Account' tab of your user profile (`https://www.kaggle.com//account`) and select 'Create API Token'. This will trigger the download of `kaggle.json`, a file containing your API credentials. -Place this file in the location appropriate for your operating system: -* Linux: `$XDG_CONFIG_HOME/kaggle/kaggle.json` (defaults to `~/.config/kaggle/kaggle.json`). The path `~/.kaggle/kaggle.json` which was used by older versions of the tool is also still supported. -* Windows: `C:\Users\\.kaggle\kaggle.json` - you can check the exact location, sans drive, with `echo %HOMEPATH%`. -* Other: `~/.kaggle/kaggle.json` - -You can define a shell environment variable `KAGGLE_CONFIG_DIR` to change this location to `$KAGGLE_CONFIG_DIR/kaggle.json` (on Windows it will be `%KAGGLE_CONFIG_DIR%\kaggle.json`). - - -For your security, ensure that other users of your computer do not have read access to your credentials. On Unix-based systems you can do this with the following command: - -`chmod 600 ~/.config/kaggle/kaggle.json` - -You can also choose to export your Kaggle username and token to the environment: - -```bash -export KAGGLE_USERNAME=datadinosaur -export KAGGLE_KEY=xxxxxxxxxxxxxx -``` -In addition, you can export any other configuration value that normally would be in -the `kaggle.json` in the format 'KAGGLE_' (note uppercase). -For example, if the file had the variable "proxy" you would export `KAGGLE_PROXY` -and it would be discovered by the client. - -## Tutorials - -Explore these tutorials to learn how to perform common tasks: - -* [Tutorials](./tutorials.md) - * [Create a Dataset](./tutorials.md#tutorial-create-a-dataset) - * [Find and Download a Dataset](./tutorials.md#tutorial-find-and-download-a-dataset) - * [Create a Model](./tutorials.md#tutorial-create-a-model) - * [Create a Model Variation](./tutorials.md#tutorial-create-a-model-variation) - * [Create a Model Variation Version](./tutorials.md#tutorial-create-a-model-variation-version) - * [How to Submit to a Competition](./tutorials.md#tutorial-how-to-submit-to-a-competition) - * [How to Submit to a Code Competition](./tutorials.md#tutorial-how-to-submit-to-a-code-competition) - -## CLI Reference - -The Kaggle CLI is organized into several command groups: - -* [Competitions](./competitions.md): Manage and participate in Kaggle competitions. -* [Datasets](./datasets.md): Search, download, and manage Kaggle datasets. -* [Kernels](./kernels.md): Interact with Kaggle Kernels (notebooks and scripts). -* [Models](./models.md): Manage your Kaggle Models. -* [Model Variations](./model_instances.md): Manage variations of your Kaggle Models. -* [Model Variation Versions](./model_instances_versions.md): Manage versions of your Kaggle Model Variations. -* [Configuration](./configuration.md): Configure the Kaggle CLI. - -## Python API Reference - -The Kaggle CLI provides a Python API for interacting with Kaggle's platform. You can access the API using the `kaggle` module: - -```python -import kaggle -``` - -For more information about the Python API, see the -Kaggle Python API documentation. \ No newline at end of file diff --git a/documentation/_build/html/_sources/kernels.md.txt b/documentation/_build/html/_sources/kernels.md.txt deleted file mode 100644 index 7bdb036..0000000 --- a/documentation/_build/html/_sources/kernels.md.txt +++ /dev/null @@ -1,277 +0,0 @@ -# Kernels Commands - -Commands for interacting with Kaggle Kernels (notebooks and scripts). - -## `kaggle kernels list` - -Lists available kernels. - -**Usage:** - -```bash -kaggle kernels list [options] -``` - -**Options:** - -* `-m, --mine`: Display only your kernels. -* `-p, --page `: Page number for results (default: 1). -* `--page-size `: Number of items per page (default: 20). -* `-s, --search `: Search term. -* `-v, --csv`: Print results in CSV format. -* `--parent `: Filter by parent kernel (format: `owner/kernel-slug`). -* `--competition `: Filter by competition. -* `--dataset `: Filter by dataset (format: `owner/dataset-slug`). -* `--user `: Filter by a specific user. -* `--language `: Filter by language (`all`, `python`, `r`, `sqlite`, `julia`). -* `--kernel-type `: Filter by kernel type (`all`, `script`, `notebook`). -* `--output-type `: Filter by output type (`all`, `visualizations`, `data`). -* `--sort-by `: Sort results (`hotness`, `commentCount`, `dateCreated`, `dateRun`, `relevance`, `scoreAscending`, `scoreDescending`, `viewCount`, `voteCount`). Default: `hotness`. - -**Examples:** - -1. List your own kernels containing "Exercise" in the title, page 2, 5 items per page, in CSV format, sorted by run date: - - ```bash - kaggle kernels list -m -s Exercise --page-size 5 -p 2 -v --sort-by dateRun - ``` - -2. List kernels that are children of `$KAGGLE_DEVELOPER/exercise-lists` (replace `$KAGGLE_DEVELOPER` with your username): - - ```bash - kaggle kernels list --parent $KAGGLE_DEVELOPER/exercise-lists - ``` - -3. List the first 5 kernels for the "house-prices-advanced-regression-techniques" competition: - - ```bash - kaggle kernels list --competition house-prices-advanced-regression-techniques --page-size 5 - ``` - -4. List the first 5 kernels associated with the dataset `dansbecker/home-data-for-ml-course`: - - ```bash - kaggle kernels list --dataset dansbecker/home-data-for-ml-course --page-size 5 - ``` - -5. List Python notebooks by user `$KAGGLE_DEVELOPER` that output data: - - ```bash - kaggle kernels list --user $KAGGLE_DEVELOPER --language python --kernel-type notebook --output-type data - ``` - -**Purpose:** - -This command allows you to find kernels based on various filters like ownership, associated competition/dataset, language, or type. - -## `kaggle kernels files` - -Lists output files for a specific kernel. - -**Usage:** - -```bash -kaggle kernels files [options] -``` - -**Arguments:** - -* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `kerneler/sqlite-global-default`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `--page-token `: Page token for results paging. -* `--page-size `: Number of items to show on a page (default: 20, max: 200). - -**Example:** - -List the first output file for the kernel `kerneler/sqlite-global-default` in CSV format: - -```bash -kaggle kernels files kerneler/sqlite-global-default -v --page-size=1 -``` - -**Purpose:** - -Use this command to view the files generated by a kernel run. - -## `kaggle kernels init` - -Initializes a metadata file (`kernel-metadata.json`) for a new or existing kernel. - -**Usage:** - -```bash -kaggle kernels init -p -``` - -**Options:** - -* `-p, --path `: The path to the folder where the `kernel-metadata.json` file will be created (defaults to the current directory). - -**Example:** - -Initialize a kernel metadata file in the `tests/kernel` folder: - -```bash -kaggle kernels init -p tests/kernel -``` - -**Purpose:** - -This command creates a template `kernel-metadata.json` file. You need to edit this file with details like the kernel's title, ID (slug), language, kernel type, and data sources before pushing it to Kaggle. - -## `kaggle kernels push` - -Pushes new code/notebook and metadata to a kernel, then runs the kernel. - -**Usage:** - -```bash -kaggle kernels push -p [options] -``` - -**Options:** - -* `-p, --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). -* `-t, --timeout `: Maximum run time in seconds. - -**Example:** - -Push the kernel from the `tests/kernel` folder (assuming it contains the kernel file and `kernel-metadata.json`): - -```bash -kaggle kernels push -p tests/kernel -``` - -**Purpose:** - -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. - -## `kaggle kernels pull` - -Pulls down the code/notebook and metadata for a kernel. - -**Usage:** - -```bash -kaggle kernels pull [options] -``` - -**Arguments:** - -* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `$KAGGLE_DEVELOPER/exercise-as-with`). - -**Options:** - -* `-p, --path `: Folder to download files to (defaults to current directory). -* `-w, --wp`: Download files to the current working path. -* `-m, --metadata`: Generate a `kernel-metadata.json` file along with the kernel code. - -**Examples:** - -1. Pull the kernel `$KAGGLE_DEVELOPER/exercise-as-with` and its metadata into the `tests/kernel` folder: - - ```bash - kaggle kernels pull -p tests/kernel $KAGGLE_DEVELOPER/exercise-as-with -m - ``` - -2. Pull the kernel `$KAGGLE_DEVELOPER/exercise-as-with` into the current working directory: - - ```bash - kaggle kernels pull --wp $KAGGLE_DEVELOPER/exercise-as-with - ``` - -**Purpose:** - -This command allows you to download the source code and optionally the metadata of a kernel from Kaggle to your local machine. - -## `kaggle kernels output` - -Gets the data output from the latest run of a kernel. - -**Usage:** - -```bash -kaggle kernels output [options] -``` - -**Arguments:** - -* ``: Kernel URL suffix (e.g., `kerneler/using-google-bird-vocalization-model`). - -**Options:** - -* `-p, --path `: Folder to download output files to (defaults to current directory). -* `-w, --wp`: Download files to the current working path. -* `-o, --force`: Force download, overwriting existing files. -* `-q, --quiet`: Suppress verbose output. - -**Example:** - -Download the output of the kernel `kerneler/using-google-bird-vocalization-model`, forcing overwrite: - -```bash -kaggle kernels output kerneler/sqlite-global-default -o -``` - -**Purpose:** - -Use this command to retrieve the files generated by a kernel run, such as submission files, processed data, or visualizations. - -## `kaggle kernels status` - -Displays the status of the latest run of a kernel. - -**Usage:** - -```bash -kaggle kernels status -``` - -**Arguments:** - -* ``: Kernel URL suffix (e.g., `kerneler/sqlite-global-default`). - -**Example:** - -Get the status of the kernel `kerneler/sqlite-global-default`: - -```bash -kaggle kernels status kerneler/sqlite-global-default -``` - -**Purpose:** - -This command tells you whether the latest run of your kernel is still running, completed successfully, or failed. - -## `kaggle kernels delete` - -Deletes a kernel from Kaggle. - -**Usage:** - -```bash -kaggle kernels delete [options] -``` - -**Arguments:** - -* ``: Kernel URL suffix (format: `owner/kernel-slug`, e.g., `$KAGGLE_DEVELOPER/exercise-delete`). - -**Options:** - -* `-y, --yes`: Automatically confirm deletion without prompting. - -**Example:** - -Delete the kernel `$KAGGLE_DEVELOPER/exercise-delete` and automatically confirm: - -```bash -kaggle kernels delete $KAGGLE_DEVELOPER/exercise-delete --yes -``` - -**Purpose:** - -This command permanently removes one of your kernels from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/model_instances.md.txt b/documentation/_build/html/_sources/model_instances.md.txt deleted file mode 100644 index eb1d37e..0000000 --- a/documentation/_build/html/_sources/model_instances.md.txt +++ /dev/null @@ -1,182 +0,0 @@ -# Model Variation Commands - -Commands for interacting with variations of Kaggle Models. A model variation typically represents a specific framework of a parent model. - -## `kaggle models variations init` - -Initializes a metadata file (`model-instance-metadata.json`) for creating a new model variation. - -**Usage:** - -```bash -kaggle models variations init -p -``` - -**Options:** - -* `-p, --path `: The path to the folder where the `model-instance-metadata.json` file will be created (defaults to the current directory). - -**Example:** - -Initialize a model variation metadata file in the `tmp` folder: - -```bash -kaggle models variations init -p tmp -``` - -**Purpose:** - -This command creates a template `model-instance-metadata.json` file. You must edit this file with details such as the owner slug, the parent model slug, the variation (or instance) slug (URL-friendly name for this variations), and the framework (e.g., `tensorflow`, `pytorch`, `jax`, `sklearn`) before creating the variation. - -## `kaggle models variations create` - -Creates a new model variation under an existing model on Kaggle. - -**Usage:** - -```bash -kaggle models variations create -p [options] -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the model variation files and the `model-instance-metadata.json` file (defaults to the current directory). -* `-q, --quiet`: Suppress verbose output. -* `-r, --dir-mode `: How to handle directories within the upload: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). - -**Example:** - -Create a new model variation using the metadata and files in the `tmp` folder, quietly, skipping subdirectories. (Assumes `model-instance-metadata.json` in `tmp` has been properly edited): - -```bash -# Example: Edit model-instance-metadata.json first -# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-instance-metadata.json -# sed -i 's/INSERT_EXISTING_MODEL_SLUG_HERE/parent-model-slug/' tmp/model-instance-metadata.json -# sed -i 's/INSERT_INSTANCE_SLUG_HERE/my-instance-slug/' tmp/model-instance-metadata.json -# sed -i 's/INSERT_FRAMEWORK_HERE/jax/' tmp/model-instance-metadata.json -# echo "a,b,c,d" > tmp/data.csv # Example model file - -kaggle models variations create -p tmp -q -r skip -``` - -**Purpose:** - -This command uploads your local model files (e.g., weights, architecture definition) and the associated variation metadata to create a new variation under a specified parent model on Kaggle. This effectively creates the first version of this model variation. - -## `kaggle models variations get` - -Downloads the `model-instance-metadata.json` file for an existing model variation. - -**Usage:** - -```bash -kaggle models variations get -p -``` - -**Arguments:** - -* ``: Model variation URL suffix in the format `owner/model-slug/framework/instance-slug` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). - -**Options:** - -* `-p, --path `: Folder to download the `model-instance-metadata.json` file to. - -**Example:** - -Download the metadata for model variation `$KAGGLE_DEVELOPER/test-model/jax/main` into the `tmp` folder: - -```bash -kaggle models variations get $KAGGLE_DEVELOPER/test-model/jax/main -p tmp -``` - -**Purpose:** - -This command retrieves the metadata file for an existing model variation. This can be useful for inspection or as a basis for an update. - -## `kaggle models variations files` - -Lists files for the current version of a model variation. - -**Usage:** - -```bash -kaggle models variations files [options] -``` - -**Arguments:** - -* ``: Model variation URL suffix (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `--page-size `: Number of items per page (default: 20). -* `--page-token `: Page token for results paging. - -**Example:** - -List the first 5 files for the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` in CSV format: - -```bash -kaggle models variations files $KAGGLE_DEVELOPER/test-model/jax/main -v --page-size 5 -``` - -**Purpose:** - -Use this command to see the files associated with the latest version of a specific model variation. - -## `kaggle models variations update` - -Updates an existing model variation on Kaggle using a local `model-instance-metadata.json` file. - -**Usage:** - -```bash -kaggle models variations update -p -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the `model-instance-metadata.json` file with the updated information (defaults to the current directory). Note: This command only updates the metadata of the variation, not the files. To update files, create a new version. - -**Example:** - -Update the model variation whose details are in `tmp/model-instance-metadata.json` (ensure the slugs and owner in the JSON match an existing model variation): - -```bash -kaggle models variations update -p tmp -``` - -**Purpose:** - -Use this command to change the metadata of an existing model variation, such as its description or other fields defined in the `model-instance-metadata.json` file. This does not upload new files or create a new version. - -## `kaggle models variations delete` - -Deletes a model variation from Kaggle. - -**Usage:** - -```bash -kaggle models variations delete [options] -``` - -**Arguments:** - -* ``: Model variation URL suffix in the format `owner/model-slug/framework/instance-slug` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). - -**Options:** - -* `-y, --yes`: Automatically confirm deletion without prompting. - -**Example:** - -Delete the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` and automatically confirm: - -```bash -kaggle models variations delete $KAGGLE_DEVELOPER/test-model/jax/main -y -``` - -**Purpose:** - -This command permanently removes one of your model variations (and all its versions) from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/model_instances_versions.md.txt b/documentation/_build/html/_sources/model_instances_versions.md.txt deleted file mode 100644 index 9640216..0000000 --- a/documentation/_build/html/_sources/model_instances_versions.md.txt +++ /dev/null @@ -1,135 +0,0 @@ -# Model Variation Versions Commands - -Commands for managing versions of a specific Kaggle Model Variation. Each version represents a snapshot of the model variation files at a point in time. - -## `kaggle models variations versions create` - -Creates a new version of an existing model variation. - -**Usage:** - -```bash -kaggle models variations versions create -p [options] -``` - -**Arguments:** - -* ``: The target model variation URL suffix for the new version (format: `owner/model-slug/framework/instance-slug`, e.g., `$KAGGLE_DEVELOPER/test-model/jax/main`). - -**Options:** - -* `-p, --path `: Path to the folder containing the files for this new version (defaults to the current directory). -* `-n, --version-notes `: Notes describing this version. -* `-q, --quiet`: Suppress verbose output. -* `-r, --dir-mode `: How to handle directories within the upload: `skip` (ignore), `zip` (compressed upload), `tar` (uncompressed upload) (default: `skip`). - -**Example:** - -Create a new version for the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` using files from the `tmp` folder, with version notes "Updated model files", quietly, and skipping subdirectories: - -```bash -# Ensure tmp folder contains the new files for the version, e.g., data_v2.csv -# echo "e,f,g,h" > tmp/data_v2.csv - -kaggle models variations versions create $KAGGLE_DEVELOPER/test-model/jax/main -p tmp -n "Updated model files" -q -r skip -``` - -**Purpose:** - -This command uploads a new set of files to an existing model variation, creating a new, numbered version. This allows you to track changes and revert to previous versions of your model variation files. - -## `kaggle models variations versions download` - -Downloads files for a specific version of a model variation. - -**Usage:** - -```bash -kaggle models variations versions download [options] -``` - -**Arguments:** - -* ``: Model variation version URL suffix in the format `owner/model-slug/framework/instance-slug/version-number` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main/1`). - -**Options:** - -* `-p, --path `: Folder to download files to (defaults to current directory). -* `--untar`: Untar the downloaded file if it's a `.tar` archive (deletes the `.tar` file afterwards). -* `--unzip`: Unzip the downloaded file if it's a `.zip` archive (deletes the `.zip` file afterwards). -* `-f, --force`: Force download, overwriting existing files. -* `-q, --quiet`: Suppress verbose output. - -**Example:** - -Download version 1 of the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` into the `tmp` folder, untar if applicable, force overwrite, and do it quietly: - -```bash -kaggle models variations versions download $KAGGLE_DEVELOPER/test-model/jax/main/1 -p tmp -q -f --untar -``` - -**Purpose:** - -This command allows you to retrieve the specific files associated with a particular version of a model variation. - -## `kaggle models variations versions files` - -Lists files for a specific version of a model variation. - -**Usage:** - -```bash -kaggle models variations versions files [options] -``` - -**Arguments:** - -* ``: Model variation version URL suffix (e.g., `google/gemma/pytorch/7b/2`). - -**Options:** - -* `-v, --csv`: Print results in CSV format. -* `--page-size `: Number of items per page (default: 20). -* `--page-token `: Page token for results paging. - -**Example:** - -List the first 3 files for version 2 of the model variation `google/gemma/pytorch/7b` in CSV format: - -```bash -kaggle models variations versions files google/gemma/pytorch/7b/2 -v --page-size=3 -``` - -**Purpose:** - -Use this command to see the individual files that constitute a specific version of a model variation before downloading. - -## `kaggle models variations versions delete` - -Deletes a specific version of a model variation from Kaggle. - -**Usage:** - -```bash -kaggle models variations versions delete [options] -``` - -**Arguments:** - -* ``: Model variation version URL suffix in the format `owner/model-slug/framework/instance-slug/version-number` (e.g., `$KAGGLE_DEVELOPER/test-model/jax/main/1`). - -**Options:** - -* `-y, --yes`: Automatically confirm deletion without prompting. - -**Example:** - -Delete version 1 of the model variation `$KAGGLE_DEVELOPER/test-model/jax/main` and automatically confirm: - -```bash -kaggle models variations versions delete $KAGGLE_DEVELOPER/test-model/jax/main/1 -y -``` - -**Purpose:** - -This command permanently removes a specific version of your model variation from Kaggle. Use with caution. If it's the only version, this may lead to the deletion of the model variation itself if no other versions exist. diff --git a/documentation/_build/html/_sources/models.md.txt b/documentation/_build/html/_sources/models.md.txt deleted file mode 100644 index 70921a2..0000000 --- a/documentation/_build/html/_sources/models.md.txt +++ /dev/null @@ -1,184 +0,0 @@ -# Models Commands - -Commands for interacting with Kaggle Models. - -## `kaggle models list` - -Lists available models. - -**Usage:** - -```bash -kaggle models list [options] -``` - -**Options:** - -* `--owner `: Filter by a specific user or organization. -* `--sort-by `: Sort results. Valid options: `hotness`, `downloadCount`, `voteCount`, `notebookCount`, `createTime` (default: `hotness`). -* `-s, --search `: Search term. -* `--page-size `: Number of items per page (default: 20). -* `--page-token `: Page token for results paging. -* `-v, --csv`: Print results in CSV format. - -**Examples:** - -1. List models owned by `$KAGGLE_DEVELOPER` (replace with your username), sorted by creation time, in CSV format: - - ```bash - kaggle models list --owner $KAGGLE_DEVELOPER --sort-by createTime -v - ``` - -2. List the first 5 models matching the search term "gemini": - - ```bash - kaggle models list -s gemini --page-size 5 - ``` - -**Purpose:** - -This command helps you find models on Kaggle, filtering by owner or searching by keywords, and sorting by various criteria. - -## `kaggle models init` - -Initializes a metadata file (`model-metadata.json`) for creating a new model. - -**Usage:** - -```bash -kaggle models init -p -``` - -**Options:** - -* `-p, --path `: The path to the folder where the `model-metadata.json` file will be created (defaults to the current directory). - -**Example:** - -Initialize a model metadata file in a new temporary folder `tmp`: - -```bash -mkdir tmp -kaggle models init -p tmp -``` - -**Purpose:** - -This command creates a template `model-metadata.json` file. You must edit this file with your model's details, such as owner slug, title, model slug (URL-friendly version of the title), and a description, before creating the model on Kaggle. - -## `kaggle models create` - -Creates a new model on Kaggle. - -**Usage:** - -```bash -kaggle models create -p -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the `model-metadata.json` file (defaults to the current directory). This folder should also contain your model files that you intend to upload as part of the first model variation. - -**Example:** - -Create a new model using the metadata in `tmp/model-metadata.json`. (Assumes the metadata file has been edited with owner, title, and slug): - -```bash -# Example: Edit model-metadata.json first -# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-metadata.json -# sed -i 's/INSERT_TITLE_HERE/My Awesome Model/' tmp/model-metadata.json -# sed -i 's/INSERT_SLUG_HERE/my-awesome-model/' tmp/model-metadata.json - -kaggle models create -p tmp -``` - -**Purpose:** - -This command registers a new model on Kaggle using the provided metadata. After this, you will typically create model variations and versions. - -## `kaggle models get` - -Downloads the `model-metadata.json` file for an existing model. - -**Usage:** - -```bash -kaggle models get -p -``` - -**Arguments:** - -* ``: Model URL suffix in the format `owner/model-slug` (e.g., `$KAGGLE_DEVELOPER/test-model`). - -**Options:** - -* `-p, --path `: Folder to download the `model-metadata.json` file to. - -**Example:** - -Download the metadata for model `$KAGGLE_DEVELOPER/test-model` into the `tmp` folder: - -```bash -kaggle models get -p tmp $KAGGLE_DEVELOPER/test-model -``` - -**Purpose:** - -This command retrieves the metadata file for an existing model, which can be useful for inspection or as a basis for an update. - -## `kaggle models update` - -Updates an existing model on Kaggle using a local `model-metadata.json` file. - -**Usage:** - -```bash -kaggle models update -p -``` - -**Options:** - -* `-p, --path `: Path to the folder containing the `model-metadata.json` file with the updated information (defaults to the current directory). - -**Example:** - -Update the model whose details are in `tmp/model-metadata.json` (ensure the slug and owner in the JSON match an existing model): - -```bash -kaggle models update -p tmp -``` - -**Purpose:** - -Use this command to change the metadata of an existing model, such as its title, description, or other fields defined in the `model-metadata.json` file. - -## `kaggle models delete` - -Deletes a model from Kaggle. - -**Usage:** - -```bash -kaggle models delete [options] -``` - -**Arguments:** - -* ``: Model URL suffix in the format `owner/model-slug` (e.g., `$KAGGLE_DEVELOPER/test-model`). - -**Options:** - -* `-y, --yes`: Automatically confirm deletion without prompting. - -**Example:** - -Delete the model `$KAGGLE_DEVELOPER/test-model` and automatically confirm: - -```bash -kaggle models delete $KAGGLE_DEVELOPER/test-model -y -``` - -**Purpose:** - -This command permanently removes one of your models (and all its variations and versions) from Kaggle. Use with caution. diff --git a/documentation/_build/html/_sources/tutorials.md.txt b/documentation/_build/html/_sources/tutorials.md.txt deleted file mode 100644 index 4b9c293..0000000 --- a/documentation/_build/html/_sources/tutorials.md.txt +++ /dev/null @@ -1,322 +0,0 @@ -# Kaggle CLI Tutorials - -These tutorials illustrate how to use a sequence of Kaggle CLI commands to accomplish common tasks. - -## Introduction - -Before starting these tutorials, please make sure you have: - -1. Installed the Kaggle CLI, following the instructions [here](https://github.com/Kaggle/kaggle-api/blob/main/documentation/intro.md#installation). -2. Set up your API credentials, following the instructions [here](https://github.com/Kaggle/kaggle-api/blob/main/documentation/intro.md#api-credentials) -3. Logged in to Kaggle in a web browser. This will allow you to verify the results of the CLI commands in the [`Your Work`](https://www.kaggle.com/work) section of your Kaggle profile. - -## Tutorial: Create a Dataset - -This tutorial walks you through creating a new dataset on Kaggle. - -1. **Start from an empty directory.** Create a new directory for your dataset files and navigate into it. - - ```bash - mkdir my-new-dataset - cd my-new-dataset - ``` - -2. **Create a sample data file.** For this example, create a CSV file named `sample_data.csv` with an index column and three random data columns, and a few rows of data. - - ```bash - echo "id,col_a,col_b,col_c" > sample_data.csv - echo "1,0.5,0.2,0.8" >> sample_data.csv - echo "2,0.1,0.7,0.3" >> sample_data.csv - echo "3,0.9,0.4,0.6" >> sample_data.csv - ``` - -3. **Initialize dataset metadata.** This creates a `dataset-metadata.json` file in your current directory. - - ```bash - kaggle datasets init - ``` - -4. **Edit the metadata file.** Open `dataset-metadata.json` in a text editor and make the following changes: - * Replace `"INSERT_TITLE_HERE"` with your desired dataset title, e.g., `"My Sample Dataset"`. - * Replace `"INSERT_SLUG_HERE"` with a URL-friendly version of your title, e.g., `"my-sample-dataset"`. The URL-friendly version is made by converting the title to lower-case and changing spaces to dashes. - * You can also add licenses, descriptions, and other relevant information. - -5. **Create the dataset.** This command uploads your `sample_data.csv` and `dataset-metadata.json` to Kaggle. - - ```bash - kaggle datasets create -p . - ``` - You can add `--public` to make it public immediately. - -6. **Verify on Kaggle.com.** Refresh the [`Datasets` tab in `Your Work`](https://www.kaggle.com/work/datasets). You should see "My Sample Dataset". - -## Tutorial: Find and Download a Dataset - -This tutorial explains how to find and download using the CLI. - -1. **Search for a Dataset (Optional).** - * If you know the dataset you want, you can skip this step. Otherwise, you can search for datasets. For example, to search for datasets related to "iris": - ```bash - kaggle datasets list -s iris - ``` - * This command will list datasets matching your search query. Note the dataset's "id" (e.g., `uciml/iris`) which you'll use for downloading. - -2. **Choose a Dataset and Create a Directory.** - * For this tutorial, we'll use the classic "Iris" dataset, which has the id `uciml/iris`. - * Create a new directory for your dataset and navigate into it: - ```bash - mkdir iris-dataset-analysis - cd iris-dataset-analysis - ``` - -3. **Download the Dataset.** - * Use the `kaggle datasets download` command with the dataset's id. - ```bash - kaggle datasets download -d uciml/iris - ``` - * This will download the dataset files, typically as a ZIP archive (e.g., `iris.zip`), into your current directory (`iris-dataset-analysis`). - -4. **Unzip the Dataset.** - * Note: you could skip this step by using the `--unzip` flag on the previous command. - * Most datasets are downloaded as ZIP files. You'll need to unzip the archive to access the data files (e.g., CSV files). - ```bash - # Make sure you have unzip installed, or use your OS's GUI to extract - # The actual zip file name might vary based on the dataset. - # For uciml/iris, it's iris.zip - unzip iris.zip - ``` - - -5. **Verify the results.** - * After unzipping, you should see the data files (e.g., `Iris.csv`, `database.sqlite`). - - -## Tutorial: Update a Kernel (Notebook) - -This tutorial shows how to download an existing kernel, modify it, and push the changes back to Kaggle. - -1. **Create or identify a kernel on Kaggle.com.** - * Log in to kaggle.com. - * Find an existing notebook you own (or create one). For this tutorial, let's assume its title is "My CLI Test Kernel". - * Note the kernel slug from the browser's address bar. It will be something like `YOUR_USERNAME/my-cli-test-kernel`. - -2. **Create a new local directory for your kernel.** - - ```bash - mkdir my-kernel-project - cd my-kernel-project - ``` - -3. **Pull the kernel.** Use the `kaggle kernels pull` command with your username and the kernel slug. The `-m` flag includes the `kernel-metadata.json` file, which is required for pushing updates. - - ```bash - # Replace YOUR_USERNAME with your actual Kaggle username - kaggle kernels pull YOUR_USERNAME/my-cli-test-kernel -m - ``` - This will download `my-cli-test-kernel.ipynb` (or `.py`/`.Rmd`) and `kernel-metadata.json`. - -4. **Edit the kernel or metadata.** - * Open the downloaded notebook file (e.g., `my-cli-test-kernel.ipynb`) and make some changes to the code or content. - * Open `kernel-metadata.json`. Let's add "benchmark" to the keywords. Find the `"keywords": []` line and change it to `"keywords": ["benchmark"]`. - * *Note: While you can edit keywords here, it's often best to manage them on kaggle.com, as there is a restricted list of allowed keywords.* - -5. **Push the kernel.** This uploads your changes and the updated metadata, then runs the kernel on Kaggle. - - ```bash - kaggle kernels push -p . - ``` - -6. **Verify on Kaggle.com.** Refresh the [`Code` tab in `Your Work`](https://www.kaggle.com/work/code). You should see your code changes and the "benchmark" tag added to the kernel settings. - -## Tutorial: Create a Model - -This tutorial guides you through creating a new model on Kaggle. - -1. **Start from an empty directory.** Create a new directory for your model files and navigate into it. - - ```bash - mkdir my-new-model - cd my-new-model - ``` - -2. **Copy your model definition files (optional for this step).** If you have files that define your model (e.g., Python scripts, model weights), copy them into this directory. For the `kaggle models create` step, only the metadata is strictly required, but you'll need files when you create a model variation. - -3. **Initialize model metadata.** This creates a `model-metadata.json` file. - - ```bash - kaggle models init - ``` - -4. **Edit the metadata file.** Open `model-metadata.json` and make the following changes: - * Replace `"INSERT_OWNER_SLUG_HERE"` with your Kaggle username (e.g., `"YOUR_USERNAME"`). - * Replace `"INSERT_TITLE_HERE"` with your model's title (e.g., `"My Awesome AI Model"`). - * Replace `"INSERT_SLUG_HERE"` with a URL-friendly version of the title (e.g., `"my-awesome-ai-model"`). - * Fill out the `"description"` field and other relevant sections like `"licenses"`. - -5. **Create the model.** - - ```bash - kaggle models create -p . - ``` - -6. **Verify on Kaggle.com.** Refresh the [`Models` tab in `Your Work`](https://www.kaggle.com/work/models). You should see "My Awesome AI Model". - -## Tutorial: Create a Model Variation - -This tutorial shows how to create a variation under an existing model. A model variation usually represents the model implemented in a specific framework (like TensorFlow, PyTorch, JAX, etc.) and includes the actual model files. - -1. **Ensure you have a parent model.** Follow the "Create a Model" tutorial if you haven't already. Let's assume your model slug is `my-awesome-ai-model` and your username is `YOUR_USERNAME`. - -2. **Prepare your model variation files.** In your model directory (e.g., `my-new-model`), create or place the files for this specific variation. For example, a JAX model might have a `flax_model.params` file. - - ```bash - # In the my-new-model directory - echo "This is a placeholder for JAX model parameters" > flax_model.params - ``` - -3. **Initialize model variation metadata.** This creates `model-instance-metadata.json`. - - ```bash - # Still in the my-new-model directory - kaggle models variations init - ``` - -4. **Edit the variation metadata file.** Open `model-instance-metadata.json` and make changes: - * Replace `"INSERT_OWNER_SLUG_HERE"` with your Kaggle username (e.g., `"YOUR_USERNAME"`). - * Replace `"INSERT_EXISTING_MODEL_SLUG_HERE"` with your parent model's slug (e.g., `"my-awesome-ai-model"`). - * Replace `"INSERT_INSTANCE_SLUG_HERE"` with a slug for this variation (e.g., `"jax-implementation"`). - * Replace `"INSERT_FRAMEWORK_HERE"` with the model framework (e.g., `"jax"`, `"tensorflow"`, `"pytorch"`, `"sklearn"`). - * Update the `"instance_size_bytes"` if known, and add a `"description"`. - -5. **Create the model variation.** This uploads the files in the current directory (e.g., `flax_model.params`) along with the variation metadata. - - ```bash - kaggle models variations create -p . - ``` - -6. **Verify on Kaggle.com.** Go to your model's page on Kaggle by clicking on the model under in the [`Models` tab on `Your Work`](https://www.kaggle.com/work/models). You should see a new "jax-implementation" variation listed, and it will have one version containing `flax_model.params`. - -## Tutorial: Create a Model Variation Version - -This tutorial explains how to add a new version to an existing model variation, for example, when you have updated model weights or files. - -1. **Ensure you have a model variation.** Follow the "Create a Model Variation" tutorial. Let's assume your variation is `YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation`. - -2. **Prepare your updated files.** In your model variation directory (e.g., `my-new-model`), update or add new files for this version. For example, create `flax_model_v2.params`. - - ```bash - # In the my-new-model directory - echo "Updated JAX model parameters for V2" > flax_model_v2.params - # You might also remove or update flax_model.params if it's being replaced - ``` - -3. **Create the new model variation version.** You need to specify the parent model variation and provide version notes. The files from the `-p` path will form the contents of this new version. - - ```bash - # Replace YOUR_USERNAME and the slugs for model and variation accordingly - kaggle models variations versions create YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation -p . -n "Second version with updated parameters" - ``` - *Note: The `-p .` means all files in the current directory will be uploaded as part of this new version. If you only want to upload `flax_model_v2.params`, ensure only it (and any other V2 files) are in a directory and point `-p` to that directory, or manage your files carefully.* - -4. **Verify on Kaggle.com.** Go to your model variation page on Kaggle (e.g., `YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation`) by clicking on the [`Models` tab on `Your Work`](https://www.kaggle.com/work/models). You should see a new version (e.g., version 2) listed with your notes and the new files. - -## Tutorial: How to Submit to a Competition - -This tutorial walks you through the process of making a submission to a Kaggle competition using the CLI. - -1. **Find a Competition and Accept Rules.** - * First, you need to find a competition. You can list active competitions using `kaggle competitions list`. - * For this tutorial, we'll use the "titanic" competition, which is a common starting point. You can find it at [`https://www.kaggle.com/c/titanic`](https://www.kaggle.com/c/titanic). - * **Important**: Before you can download data or submit, you *must* join the competition and accept the competition's rules on the Kaggle website. Navigate to the competition on kaggle.com to do this. - -2. **Create a Directory and Download Competition Files.** - * Create a new directory for your competition files and navigate into it. - ```bash - mkdir titanic-competition - cd titanic-competition - ``` - * Download the competition files. This usually includes training data, test data, and a sample submission file. - ```bash - kaggle competitions download -c titanic - ``` - * This will download `titanic.zip`. You'll need to unzip it to see the files (e.g., `train.csv`, `test.csv`, `gender_submission.csv`). - ```bash - # Make sure you have unzip installed, or use your OS's GUI to extract - # The actual zip file name might vary based on the competition. - unzip titanic.zip - ``` - -3. **Create Your Submission File.** - * The required format for the submission file is specific to each competition. You can find this information on the competition's "Evaluation" page or by examining the sample submission file (e.g., `gender_submission.csv` for the Titanic competition). - * For the Titanic competition, the submission file needs two columns: `PassengerId` and `Survived`. The `Survived` column should contain your predictions (0 for deceased, 1 for survived). - * Let's create a very simple submission file based on the `gender_submission.csv` (which predicts survival based on gender). For this tutorial, we'll just copy it and use it as our submission. In a real scenario, you would generate this file from your model's predictions on the `test.csv` data. - ```bash - cp gender_submission.csv my_submission.csv - ``` - * Your `my_submission.csv` should look something like this: - ``` - PassengerId,Survived - 892,0 - 893,1 - 894,0 - ... - ``` - -4. **Submit to the Competition.** - * Use the `kaggle competitions submit` command. You need to specify: - * The competition ID (`-c titanic`). - * The path to your submission file (`-f my_submission.csv`). - * A message describing your submission (`-m "My first submission via CLI"`). - ```bash - kaggle competitions submit -c titanic -f my_submission.csv -m "My first submission via CLI" - ``` - -5. **Check Your Submission Status.** - * After submitting, you'll get a message indicating success or failure. - * You can check your submission's score and status on the "My Submissions" tab of the competition page on Kaggle.com (e.g., [`https://www.kaggle.com/c/titanic/submissions`](https://www.kaggle.com/c/titanic/submissions)). - * You can also list your recent submissions and their scores via the CLI: - ```bash - kaggle competitions submissions -c titanic - ``` - * This command will show your submission, its status (e.g., `complete`, `error`), and your public/private scores if available. - - -## Tutorial: How to Submit to a Code Competition - -This tutorial walks you through the process of submitting to a code competition on Kaggle. - -1. **Find a Code Competition.** - - * First, you need to find a code competition to participate in. You can browse the available competitions on the [Kaggle competitions page](https://www.kaggle.com/competitions). Many Featured Competitions are code competitions. - -2. **Download the Dataset.** - - * Once you have chosen a competition, you need to download the dataset. You can do this using the `kaggle competitions download` command: - ```bash - kaggle competitions download -c - ``` - * Replace `` with the name of the competition you want to participate in. - -3. **Create a Notebook.** - - * Next, you need to create a Kaggle Notebook to work on your submission. A Kaggle Notebook contains the code and environment settings for Kaggle to run and evaluate your submission. Follow the tutorial on [Creating / Updating Notebooks](https://github.com/Kaggle/kaggle-api/blob/main/documentation/tutorials.md#tutorial-update-a-kernel-notebook) if you're not sure how to do this. - -4. **Write Your Code.** - - * Now it's time to write your code! You can use any programming language or framework that is supported by Kaggle. The goal is to create a model that can make predictions on the test set. - -5. **Submit Your Prediction.** - - * Once you are happy with your model, you can submit your prediction to the competition. You can do this using the `kaggle competitions submit` command: - ```bash - kaggle competitions submit -c -k / -m - ``` - * Replace `` with the name of the competition, `/` with the identifier of your notebook, and `` with a brief description of your submission. - -6. **Check Your Score.** - - * After you have submitted your prediction, you can check your score on the competition leaderboard. The leaderboard shows the scores of all the participants in the competition. You can download the leaderboard using the `kaggle competitions leaderboard` command: - ```bash - kaggle competitions leaderboard - ``` - diff --git a/documentation/_build/html/_static/alabaster.css b/documentation/_build/html/_static/alabaster.css deleted file mode 100644 index 7e75bf8..0000000 --- a/documentation/_build/html/_static/alabaster.css +++ /dev/null @@ -1,663 +0,0 @@ -/* -- page layout ----------------------------------------------------------- */ - -body { - font-family: Georgia, serif; - font-size: 17px; - background-color: #fff; - color: #000; - margin: 0; - padding: 0; -} - - -div.document { - width: 940px; - margin: 30px auto 0 auto; -} - -div.documentwrapper { - float: left; - width: 100%; -} - -div.bodywrapper { - margin: 0 0 0 220px; -} - -div.sphinxsidebar { - width: 220px; - font-size: 14px; - line-height: 1.5; -} - -hr { - border: 1px solid #B1B4B6; -} - -div.body { - background-color: #fff; - color: #3E4349; - padding: 0 30px 0 30px; -} - -div.body > .section { - text-align: left; -} - -div.footer { - width: 940px; - margin: 20px auto 30px auto; - font-size: 14px; - color: #888; - text-align: right; -} - -div.footer a { - color: #888; -} - -p.caption { - font-family: inherit; - font-size: inherit; -} - - -div.relations { - display: none; -} - - -div.sphinxsidebar { - max-height: 100%; - overflow-y: auto; -} - -div.sphinxsidebar a { - color: #444; - text-decoration: none; - border-bottom: 1px dotted #999; -} - -div.sphinxsidebar a:hover { - border-bottom: 1px solid #999; -} - -div.sphinxsidebarwrapper { - padding: 18px 10px; -} - -div.sphinxsidebarwrapper p.logo { - padding: 0; - margin: -10px 0 0 0px; - text-align: center; -} - -div.sphinxsidebarwrapper h1.logo { - margin-top: -10px; - text-align: center; - margin-bottom: 5px; - text-align: left; -} - -div.sphinxsidebarwrapper h1.logo-name { - margin-top: 0px; -} - -div.sphinxsidebarwrapper p.blurb { - margin-top: 0; - font-style: normal; -} - -div.sphinxsidebar h3, -div.sphinxsidebar h4 { - font-family: Georgia, serif; - color: #444; - font-size: 24px; - font-weight: normal; - margin: 0 0 5px 0; - padding: 0; -} - -div.sphinxsidebar h4 { - font-size: 20px; -} - -div.sphinxsidebar h3 a { - color: #444; -} - -div.sphinxsidebar p.logo a, -div.sphinxsidebar h3 a, -div.sphinxsidebar p.logo a:hover, -div.sphinxsidebar h3 a:hover { - border: none; -} - -div.sphinxsidebar p { - color: #555; - margin: 10px 0; -} - -div.sphinxsidebar ul { - margin: 10px 0; - padding: 0; - color: #000; -} - -div.sphinxsidebar ul li.toctree-l1 > a { - font-size: 120%; -} - -div.sphinxsidebar ul li.toctree-l2 > a { - font-size: 110%; -} - -div.sphinxsidebar input { - border: 1px solid #CCC; - font-family: Georgia, serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox { - margin: 1em 0; -} - -div.sphinxsidebar .search > div { - display: table-cell; -} - -div.sphinxsidebar hr { - border: none; - height: 1px; - color: #AAA; - background: #AAA; - - text-align: left; - margin-left: 0; - width: 50%; -} - -div.sphinxsidebar .badge { - border-bottom: none; -} - -div.sphinxsidebar .badge:hover { - border-bottom: none; -} - -/* To address an issue with donation coming after search */ -div.sphinxsidebar h3.donation { - margin-top: 10px; -} - -/* -- body styles ----------------------------------------------------------- */ - -a { - color: #004B6B; - text-decoration: underline; -} - -a:hover { - color: #6D4100; - text-decoration: underline; -} - -div.body h1, -div.body h2, -div.body h3, -div.body h4, -div.body h5, -div.body h6 { - font-family: Georgia, serif; - font-weight: normal; - margin: 30px 0px 10px 0px; - padding: 0; -} - -div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } -div.body h2 { font-size: 180%; } -div.body h3 { font-size: 150%; } -div.body h4 { font-size: 130%; } -div.body h5 { font-size: 100%; } -div.body h6 { font-size: 100%; } - -a.headerlink { - color: #DDD; - padding: 0 4px; - text-decoration: none; -} - -a.headerlink:hover { - color: #444; - background: #EAEAEA; -} - -div.body p, div.body dd, div.body li { - line-height: 1.4em; -} - -div.admonition { - margin: 20px 0px; - padding: 10px 30px; - background-color: #EEE; - border: 1px solid #CCC; -} - -div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fafafa; -} - -div.admonition p.admonition-title { - font-family: Georgia, serif; - font-weight: normal; - font-size: 24px; - margin: 0 0 10px 0; - padding: 0; - line-height: 1; -} - -div.admonition p.last { - margin-bottom: 0; -} - -dt:target, .highlight { - background: #FAF3E8; -} - -div.warning { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.danger { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.error { - background-color: #FCC; - border: 1px solid #FAA; - -moz-box-shadow: 2px 2px 4px #D52C2C; - -webkit-box-shadow: 2px 2px 4px #D52C2C; - box-shadow: 2px 2px 4px #D52C2C; -} - -div.caution { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.attention { - background-color: #FCC; - border: 1px solid #FAA; -} - -div.important { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.note { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.tip { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.hint { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.seealso { - background-color: #EEE; - border: 1px solid #CCC; -} - -div.topic { - background-color: #EEE; -} - -p.admonition-title { - display: inline; -} - -p.admonition-title:after { - content: ":"; -} - -pre, tt, code { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; - font-size: 0.9em; -} - -.hll { - background-color: #FFC; - margin: 0 -12px; - padding: 0 12px; - display: block; -} - -img.screenshot { -} - -tt.descname, tt.descclassname, code.descname, code.descclassname { - font-size: 0.95em; -} - -tt.descname, code.descname { - padding-right: 0.08em; -} - -img.screenshot { - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils { - border: 1px solid #888; - -moz-box-shadow: 2px 2px 4px #EEE; - -webkit-box-shadow: 2px 2px 4px #EEE; - box-shadow: 2px 2px 4px #EEE; -} - -table.docutils td, table.docutils th { - border: 1px solid #888; - padding: 0.25em 0.7em; -} - -table.field-list, table.footnote { - border: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -table.footnote { - margin: 15px 0; - width: 100%; - border: 1px solid #EEE; - background: #FDFDFD; - font-size: 0.9em; -} - -table.footnote + table.footnote { - margin-top: -15px; - border-top: none; -} - -table.field-list th { - padding: 0 0.8em 0 0; -} - -table.field-list td { - padding: 0; -} - -table.field-list p { - margin-bottom: 0.8em; -} - -/* Cloned from - * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 - */ -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -table.footnote td.label { - width: .1px; - padding: 0.3em 0 0.3em 0.5em; -} - -table.footnote td { - padding: 0.3em 0.5em; -} - -dl { - margin-left: 0; - margin-right: 0; - margin-top: 0; - padding: 0; -} - -dl dd { - margin-left: 30px; -} - -blockquote { - margin: 0 0 0 30px; - padding: 0; -} - -ul, ol { - /* Matches the 30px from the narrow-screen "li > ul" selector below */ - margin: 10px 0 10px 30px; - padding: 0; -} - -pre { - background: unset; - padding: 7px 30px; - margin: 15px 0px; - line-height: 1.3em; -} - -div.viewcode-block:target { - background: #ffd; -} - -dl pre, blockquote pre, li pre { - margin-left: 0; - padding-left: 30px; -} - -tt, code { - background-color: #ecf0f3; - color: #222; - /* padding: 1px 2px; */ -} - -tt.xref, code.xref, a tt { - background-color: #FBFBFB; - border-bottom: 1px solid #fff; -} - -a.reference { - text-decoration: none; - border-bottom: 1px dotted #004B6B; -} - -a.reference:hover { - border-bottom: 1px solid #6D4100; -} - -/* Don't put an underline on images */ -a.image-reference, a.image-reference:hover { - border-bottom: none; -} - -a.footnote-reference { - text-decoration: none; - font-size: 0.7em; - vertical-align: top; - border-bottom: 1px dotted #004B6B; -} - -a.footnote-reference:hover { - border-bottom: 1px solid #6D4100; -} - -a:hover tt, a:hover code { - background: #EEE; -} - -@media screen and (max-width: 940px) { - - body { - margin: 0; - padding: 20px 30px; - } - - div.documentwrapper { - float: none; - background: #fff; - margin-left: 0; - margin-top: 0; - margin-right: 0; - margin-bottom: 0; - } - - div.sphinxsidebar { - display: block; - float: none; - width: unset; - margin: 50px -30px -20px -30px; - padding: 10px 20px; - background: #333; - color: #FFF; - } - - div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, - div.sphinxsidebar h3 a { - color: #fff; - } - - div.sphinxsidebar a { - color: #AAA; - } - - div.sphinxsidebar p.logo { - display: none; - } - - div.document { - width: 100%; - margin: 0; - } - - div.footer { - display: none; - } - - div.bodywrapper { - margin: 0; - } - - div.body { - min-height: 0; - min-width: auto; /* fixes width on small screens, breaks .hll */ - padding: 0; - } - - .hll { - /* "fixes" the breakage */ - width: max-content; - } - - .rtd_doc_footer { - display: none; - } - - .document { - width: auto; - } - - .footer { - width: auto; - } - - .github { - display: none; - } - - ul { - margin-left: 0; - } - - li > ul { - /* Matches the 30px from the "ul, ol" selector above */ - margin-left: 30px; - } -} - - -/* misc. */ - -.revsys-inline { - display: none!important; -} - -/* Hide ugly table cell borders in ..bibliography:: directive output */ -table.docutils.citation, table.docutils.citation td, table.docutils.citation th { - border: none; - /* Below needed in some edge cases; if not applied, bottom shadows appear */ - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - - -/* relbar */ - -.related { - line-height: 30px; - width: 100%; - font-size: 0.9rem; -} - -.related.top { - border-bottom: 1px solid #EEE; - margin-bottom: 20px; -} - -.related.bottom { - border-top: 1px solid #EEE; -} - -.related ul { - padding: 0; - margin: 0; - list-style: none; -} - -.related li { - display: inline; -} - -nav#rellinks { - float: right; -} - -nav#rellinks li+li:before { - content: "|"; -} - -nav#breadcrumbs li+li:before { - content: "\00BB"; -} - -/* Hide certain items when printing */ -@media print { - div.related { - display: none; - } -} - -img.github { - position: absolute; - top: 0; - border: 0; - right: 0; -} \ No newline at end of file diff --git a/documentation/_build/html/_static/basic.css b/documentation/_build/html/_static/basic.css deleted file mode 100644 index 0028826..0000000 --- a/documentation/_build/html/_static/basic.css +++ /dev/null @@ -1,906 +0,0 @@ -/* - * Sphinx stylesheet -- basic theme. - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -div.section::after { - display: block; - content: ''; - clear: left; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin-top: 10px; -} - -ul.search li { - padding: 5px 0; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li p.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: inherit; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -a:visited { - color: #551A8B; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, figure.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, figure.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, figure.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -img.align-default, figure.align-default, .figure.align-default { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-default { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar, -aside.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px; - background-color: #ffe; - width: 40%; - float: right; - clear: right; - overflow-x: auto; -} - -p.sidebar-title { - font-weight: bold; -} - -nav.contents, -aside.topic, -div.admonition, div.topic, blockquote { - clear: left; -} - -/* -- topics ---------------------------------------------------------------- */ - -nav.contents, -aside.topic, -div.topic { - border: 1px solid #ccc; - padding: 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- content of sidebars/topics/admonitions -------------------------------- */ - -div.sidebar > :last-child, -aside.sidebar > :last-child, -nav.contents > :last-child, -aside.topic > :last-child, -div.topic > :last-child, -div.admonition > :last-child { - margin-bottom: 0; -} - -div.sidebar::after, -aside.sidebar::after, -nav.contents::after, -aside.topic::after, -div.topic::after, -div.admonition::after, -blockquote::after { - display: block; - content: ''; - clear: both; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - margin-top: 10px; - margin-bottom: 10px; - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table.align-default { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -th > :first-child, -td > :first-child { - margin-top: 0px; -} - -th > :last-child, -td > :last-child { - margin-bottom: 0px; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure, figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption, figcaption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number, -figcaption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text, -figcaption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist { - margin: 1em 0; -} - -table.hlist td { - vertical-align: top; -} - -/* -- object description styles --------------------------------------------- */ - -.sig { - font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; -} - -.sig-name, code.descname { - background-color: transparent; - font-weight: bold; -} - -.sig-name { - font-size: 1.1em; -} - -code.descname { - font-size: 1.2em; -} - -.sig-prename, code.descclassname { - background-color: transparent; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.sig-param.n { - font-style: italic; -} - -/* C++ specific styling */ - -.sig-inline.c-texpr, -.sig-inline.cpp-texpr { - font-family: unset; -} - -.sig.c .k, .sig.c .kt, -.sig.cpp .k, .sig.cpp .kt { - color: #0033B3; -} - -.sig.c .m, -.sig.cpp .m { - color: #1750EB; -} - -.sig.c .s, .sig.c .sc, -.sig.cpp .s, .sig.cpp .sc { - color: #067D17; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -:not(li) > ol > li:first-child > :first-child, -:not(li) > ul > li:first-child > :first-child { - margin-top: 0px; -} - -:not(li) > ol > li:last-child > :last-child, -:not(li) > ul > li:last-child > :last-child { - margin-bottom: 0px; -} - -ol.simple ol p, -ol.simple ul p, -ul.simple ol p, -ul.simple ul p { - margin-top: 0; -} - -ol.simple > li:not(:first-child) > p, -ul.simple > li:not(:first-child) > p { - margin-top: 0; -} - -ol.simple p, -ul.simple p { - margin-bottom: 0; -} - -aside.footnote > span, -div.citation > span { - float: left; -} -aside.footnote > span:last-of-type, -div.citation > span:last-of-type { - padding-right: 0.5em; -} -aside.footnote > p { - margin-left: 2em; -} -div.citation > p { - margin-left: 4em; -} -aside.footnote > p:last-of-type, -div.citation > p:last-of-type { - margin-bottom: 0em; -} -aside.footnote > p:last-of-type:after, -div.citation > p:last-of-type:after { - content: ""; - clear: both; -} - -dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; -} - -dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; -} - -dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; -} - -dl { - margin-bottom: 15px; -} - -dd > :first-child { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -.sig dd { - margin-top: 0px; - margin-bottom: 0px; -} - -.sig dl { - margin-top: 0px; - margin-bottom: 0px; -} - -dl > dd:last-child, -dl > dd:last-child > :last-child { - margin-bottom: 0; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -.classifier:before { - font-style: normal; - margin: 0 0.5em; - content: ":"; - display: inline-block; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -pre, div[class*="highlight-"] { - clear: both; -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; - white-space: nowrap; -} - -div[class*="highlight-"] { - margin: 1em 0; -} - -td.linenos pre { - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - display: block; -} - -table.highlighttable tbody { - display: block; -} - -table.highlighttable tr { - display: flex; -} - -table.highlighttable td { - margin: 0; - padding: 0; -} - -table.highlighttable td.linenos { - padding-right: 0.5em; -} - -table.highlighttable td.code { - flex: 1; - overflow: hidden; -} - -.highlight .hll { - display: block; -} - -div.highlight pre, -table.highlighttable pre { - margin: 0; -} - -div.code-block-caption + div { - margin-top: 0; -} - -div.code-block-caption { - margin-top: 1em; - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -table.highlighttable td.linenos, -span.linenos, -div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; - -webkit-user-select: text; /* Safari fallback only */ - -webkit-user-select: none; /* Chrome/Safari */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* IE10+ */ -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - margin: 1em 0; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: absolute; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/documentation/_build/html/_static/custom.css b/documentation/_build/html/_static/custom.css deleted file mode 100644 index 2a924f1..0000000 --- a/documentation/_build/html/_static/custom.css +++ /dev/null @@ -1 +0,0 @@ -/* This file intentionally left blank. */ diff --git a/documentation/_build/html/_static/doctools.js b/documentation/_build/html/_static/doctools.js deleted file mode 100644 index 0398ebb..0000000 --- a/documentation/_build/html/_static/doctools.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Base JavaScript utilities for all Sphinx HTML documentation. - */ -"use strict"; - -const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", -]); - -const _ready = (callback) => { - if (document.readyState !== "loading") { - callback(); - } else { - document.addEventListener("DOMContentLoaded", callback); - } -}; - -/** - * Small JavaScript module for the documentation. - */ -const Documentation = { - init: () => { - Documentation.initDomainIndexTable(); - Documentation.initOnKeyListeners(); - }, - - /** - * i18n support - */ - TRANSLATIONS: {}, - PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), - LOCALE: "unknown", - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext: (string) => { - const translated = Documentation.TRANSLATIONS[string]; - switch (typeof translated) { - case "undefined": - return string; // no translation - case "string": - return translated; // translation exists - default: - return translated[0]; // (singular, plural) translation tuple exists - } - }, - - ngettext: (singular, plural, n) => { - const translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated !== "undefined") - return translated[Documentation.PLURAL_EXPR(n)]; - return n === 1 ? singular : plural; - }, - - addTranslations: (catalog) => { - Object.assign(Documentation.TRANSLATIONS, catalog.messages); - Documentation.PLURAL_EXPR = new Function( - "n", - `return (${catalog.plural_expr})` - ); - Documentation.LOCALE = catalog.locale; - }, - - /** - * helper function to focus on search bar - */ - focusSearchBar: () => { - document.querySelectorAll("input[name=q]")[0]?.focus(); - }, - - /** - * Initialise the domain index toggle buttons - */ - initDomainIndexTable: () => { - const toggler = (el) => { - const idNumber = el.id.substr(7); - const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); - if (el.src.substr(-9) === "minus.png") { - el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; - toggledRows.forEach((el) => (el.style.display = "none")); - } else { - el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; - toggledRows.forEach((el) => (el.style.display = "")); - } - }; - - const togglerElements = document.querySelectorAll("img.toggler"); - togglerElements.forEach((el) => - el.addEventListener("click", (event) => toggler(event.currentTarget)) - ); - togglerElements.forEach((el) => (el.style.display = "")); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); - }, - - initOnKeyListeners: () => { - // only install a listener if it is really needed - if ( - !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && - !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS - ) - return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.altKey || event.ctrlKey || event.metaKey) return; - - if (!event.shiftKey) { - switch (event.key) { - case "ArrowLeft": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const prevLink = document.querySelector('link[rel="prev"]'); - if (prevLink && prevLink.href) { - window.location.href = prevLink.href; - event.preventDefault(); - } - break; - case "ArrowRight": - if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; - - const nextLink = document.querySelector('link[rel="next"]'); - if (nextLink && nextLink.href) { - window.location.href = nextLink.href; - event.preventDefault(); - } - break; - } - } - - // some keyboard layouts may need Shift to get / - switch (event.key) { - case "/": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.focusSearchBar(); - event.preventDefault(); - } - }); - }, -}; - -// quick alias for translations -const _ = Documentation.gettext; - -_ready(Documentation.init); diff --git a/documentation/_build/html/_static/documentation_options.js b/documentation/_build/html/_static/documentation_options.js deleted file mode 100644 index 7e4c114..0000000 --- a/documentation/_build/html/_static/documentation_options.js +++ /dev/null @@ -1,13 +0,0 @@ -const DOCUMENTATION_OPTIONS = { - VERSION: '', - LANGUAGE: 'en', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - LINK_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, - SHOW_SEARCH_SUMMARY: true, - ENABLE_SEARCH_SHORTCUTS: true, -}; \ No newline at end of file diff --git a/documentation/_build/html/_static/file.png b/documentation/_build/html/_static/file.png deleted file mode 100644 index a858a410e4faa62ce324d814e4b816fff83a6fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( diff --git a/documentation/_build/html/_static/github-banner.svg b/documentation/_build/html/_static/github-banner.svg deleted file mode 100644 index c47d9dc..0000000 --- a/documentation/_build/html/_static/github-banner.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/documentation/_build/html/_static/language_data.js b/documentation/_build/html/_static/language_data.js deleted file mode 100644 index c7fe6c6..0000000 --- a/documentation/_build/html/_static/language_data.js +++ /dev/null @@ -1,192 +0,0 @@ -/* - * This script contains the language-specific data used by searchtools.js, - * namely the list of stopwords, stemmer, scorer and splitter. - */ - -var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; - - -/* Non-minified version is copied as a separate JS file, if available */ - -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' - }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } -} - diff --git a/documentation/_build/html/_static/minus.png b/documentation/_build/html/_static/minus.png deleted file mode 100644 index d96755fdaf8bb2214971e0db9c1fd3077d7c419d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK diff --git a/documentation/_build/html/_static/plus.png b/documentation/_build/html/_static/plus.png deleted file mode 100644 index 7107cec93a979b9a5f64843235a16651d563ce2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz diff --git a/documentation/_build/html/_static/pygments.css b/documentation/_build/html/_static/pygments.css deleted file mode 100644 index 04a4174..0000000 --- a/documentation/_build/html/_static/pygments.css +++ /dev/null @@ -1,84 +0,0 @@ -pre { line-height: 125%; } -td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } -td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } -.highlight .hll { background-color: #ffffcc } -.highlight { background: #f8f8f8; } -.highlight .c { color: #8f5902; font-style: italic } /* Comment */ -.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ -.highlight .g { color: #000000 } /* Generic */ -.highlight .k { color: #004461; font-weight: bold } /* Keyword */ -.highlight .l { color: #000000 } /* Literal */ -.highlight .n { color: #000000 } /* Name */ -.highlight .o { color: #582800 } /* Operator */ -.highlight .x { color: #000000 } /* Other */ -.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ -.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ -.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ -.highlight .cp { color: #8f5902 } /* Comment.Preproc */ -.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ -.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ -.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ -.highlight .gd { color: #a40000 } /* Generic.Deleted */ -.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ -.highlight .ges { color: #000000 } /* Generic.EmphStrong */ -.highlight .gr { color: #ef2929 } /* Generic.Error */ -.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ -.highlight .gi { color: #00A000 } /* Generic.Inserted */ -.highlight .go { color: #888888 } /* Generic.Output */ -.highlight .gp { color: #745334 } /* Generic.Prompt */ -.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ -.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ -.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ -.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ -.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ -.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ -.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ -.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ -.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ -.highlight .ld { color: #000000 } /* Literal.Date */ -.highlight .m { color: #990000 } /* Literal.Number */ -.highlight .s { color: #4e9a06 } /* Literal.String */ -.highlight .na { color: #c4a000 } /* Name.Attribute */ -.highlight .nb { color: #004461 } /* Name.Builtin */ -.highlight .nc { color: #000000 } /* Name.Class */ -.highlight .no { color: #000000 } /* Name.Constant */ -.highlight .nd { color: #888888 } /* Name.Decorator */ -.highlight .ni { color: #ce5c00 } /* Name.Entity */ -.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ -.highlight .nf { color: #000000 } /* Name.Function */ -.highlight .nl { color: #f57900 } /* Name.Label */ -.highlight .nn { color: #000000 } /* Name.Namespace */ -.highlight .nx { color: #000000 } /* Name.Other */ -.highlight .py { color: #000000 } /* Name.Property */ -.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ -.highlight .nv { color: #000000 } /* Name.Variable */ -.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ -.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ -.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ -.highlight .mb { color: #990000 } /* Literal.Number.Bin */ -.highlight .mf { color: #990000 } /* Literal.Number.Float */ -.highlight .mh { color: #990000 } /* Literal.Number.Hex */ -.highlight .mi { color: #990000 } /* Literal.Number.Integer */ -.highlight .mo { color: #990000 } /* Literal.Number.Oct */ -.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ -.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ -.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ -.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ -.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ -.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ -.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ -.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ -.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ -.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ -.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ -.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ -.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ -.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ -.highlight .fm { color: #000000 } /* Name.Function.Magic */ -.highlight .vc { color: #000000 } /* Name.Variable.Class */ -.highlight .vg { color: #000000 } /* Name.Variable.Global */ -.highlight .vi { color: #000000 } /* Name.Variable.Instance */ -.highlight .vm { color: #000000 } /* Name.Variable.Magic */ -.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/documentation/_build/html/_static/searchtools.js b/documentation/_build/html/_static/searchtools.js deleted file mode 100644 index 91f4be5..0000000 --- a/documentation/_build/html/_static/searchtools.js +++ /dev/null @@ -1,635 +0,0 @@ -/* - * Sphinx JavaScript utilities for the full-text search. - */ -"use strict"; - -/** - * Simple result scoring code. - */ -if (typeof Scorer === "undefined") { - var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [docname, title, anchor, descr, score, filename] - // and returns the new score. - /* - score: result => { - const [docname, title, anchor, descr, score, filename, kind] = result - return score - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: { - 0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5, // used to be unimportantResults - }, - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - partialTitle: 7, - // query found in terms - term: 5, - partialTerm: 2, - }; -} - -// Global search result kind enum, used by themes to style search results. -class SearchResultKind { - static get index() { return "index"; } - static get object() { return "object"; } - static get text() { return "text"; } - static get title() { return "title"; } -} - -const _removeChildren = (element) => { - while (element && element.lastChild) element.removeChild(element.lastChild); -}; - -/** - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping - */ -const _escapeRegExp = (string) => - string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string - -const _displayItem = (item, searchTerms, highlightTerms) => { - const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; - const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; - const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; - const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const contentRoot = document.documentElement.dataset.content_root; - - const [docName, title, anchor, descr, score, _filename, kind] = item; - - let listItem = document.createElement("li"); - // Add a class representing the item's type: - // can be used by a theme's CSS selector for styling - // See SearchResultKind for the class names. - listItem.classList.add(`kind-${kind}`); - let requestUrl; - let linkUrl; - if (docBuilder === "dirhtml") { - // dirhtml builder - let dirname = docName + "/"; - if (dirname.match(/\/index\/$/)) - dirname = dirname.substring(0, dirname.length - 6); - else if (dirname === "index/") dirname = ""; - requestUrl = contentRoot + dirname; - linkUrl = requestUrl; - } else { - // normal html builders - requestUrl = contentRoot + docName + docFileSuffix; - linkUrl = docName + docLinkSuffix; - } - let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + anchor; - linkEl.dataset.score = score; - linkEl.innerHTML = title; - if (descr) { - listItem.appendChild(document.createElement("span")).innerHTML = - " (" + descr + ")"; - // highlight search terms in the description - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - } - else if (showSearchSummary) - fetch(requestUrl) - .then((responseData) => responseData.text()) - .then((data) => { - if (data) - listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, anchor) - ); - // highlight search terms in the summary - if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js - highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); - }); - Search.output.appendChild(listItem); -}; -const _finishSearch = (resultCount) => { - Search.stopPulse(); - Search.title.innerText = _("Search Results"); - if (!resultCount) - Search.status.innerText = Documentation.gettext( - "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." - ); - else - Search.status.innerText = Documentation.ngettext( - "Search finished, found one page matching the search query.", - "Search finished, found ${resultCount} pages matching the search query.", - resultCount, - ).replace('${resultCount}', resultCount); -}; -const _displayNextItem = ( - results, - resultCount, - searchTerms, - highlightTerms, -) => { - // results left, load the summary and display it - // this is intended to be dynamic (don't sub resultsCount) - if (results.length) { - _displayItem(results.pop(), searchTerms, highlightTerms); - setTimeout( - () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), - 5 - ); - } - // search finished, update title and status message - else _finishSearch(resultCount); -}; -// Helper function used by query() to order search results. -// Each input is an array of [docname, title, anchor, descr, score, filename, kind]. -// Order the results by score (in opposite order of appearance, since the -// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. -const _orderResultsByScoreThenName = (a, b) => { - const leftScore = a[4]; - const rightScore = b[4]; - if (leftScore === rightScore) { - // same score: sort alphabetically - const leftTitle = a[1].toLowerCase(); - const rightTitle = b[1].toLowerCase(); - if (leftTitle === rightTitle) return 0; - return leftTitle > rightTitle ? -1 : 1; // inverted is intentional - } - return leftScore > rightScore ? 1 : -1; -}; - -/** - * Default splitQuery function. Can be overridden in ``sphinx.search`` with a - * custom function per language. - * - * The regular expression works by splitting the string on consecutive characters - * that are not Unicode letters, numbers, underscores, or emoji characters. - * This is the same as ``\W+`` in Python, preserving the surrogate pair area. - */ -if (typeof splitQuery === "undefined") { - var splitQuery = (query) => query - .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) - .filter(term => term) // remove remaining empty strings -} - -/** - * Search Module - */ -const Search = { - _index: null, - _queued_query: null, - _pulse_status: -1, - - htmlToText: (htmlString, anchor) => { - const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); - for (const removalQuery of [".headerlink", "script", "style"]) { - htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); - } - if (anchor) { - const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); - if (anchorContent) return anchorContent.textContent; - - console.warn( - `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` - ); - } - - // if anchor not specified or not found, fall back to main content - const docContent = htmlElement.querySelector('[role="main"]'); - if (docContent) return docContent.textContent; - - console.warn( - "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." - ); - return ""; - }, - - init: () => { - const query = new URLSearchParams(window.location.search).get("q"); - document - .querySelectorAll('input[name="q"]') - .forEach((el) => (el.value = query)); - if (query) Search.performSearch(query); - }, - - loadIndex: (url) => - (document.body.appendChild(document.createElement("script")).src = url), - - setIndex: (index) => { - Search._index = index; - if (Search._queued_query !== null) { - const query = Search._queued_query; - Search._queued_query = null; - Search.query(query); - } - }, - - hasIndex: () => Search._index !== null, - - deferQuery: (query) => (Search._queued_query = query), - - stopPulse: () => (Search._pulse_status = -1), - - startPulse: () => { - if (Search._pulse_status >= 0) return; - - const pulse = () => { - Search._pulse_status = (Search._pulse_status + 1) % 4; - Search.dots.innerText = ".".repeat(Search._pulse_status); - if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); - }; - pulse(); - }, - - /** - * perform a search for something (or wait until index is loaded) - */ - performSearch: (query) => { - // create the required interface elements - const searchText = document.createElement("h2"); - searchText.textContent = _("Searching"); - const searchSummary = document.createElement("p"); - searchSummary.classList.add("search-summary"); - searchSummary.innerText = ""; - const searchList = document.createElement("ul"); - searchList.setAttribute("role", "list"); - searchList.classList.add("search"); - - const out = document.getElementById("search-results"); - Search.title = out.appendChild(searchText); - Search.dots = Search.title.appendChild(document.createElement("span")); - Search.status = out.appendChild(searchSummary); - Search.output = out.appendChild(searchList); - - const searchProgress = document.getElementById("search-progress"); - // Some themes don't use the search progress node - if (searchProgress) { - searchProgress.innerText = _("Preparing search..."); - } - Search.startPulse(); - - // index already loaded, the browser was quick! - if (Search.hasIndex()) Search.query(query); - else Search.deferQuery(query); - }, - - _parseQuery: (query) => { - // stem the search terms and add them to the correct list - const stemmer = new Stemmer(); - const searchTerms = new Set(); - const excludedTerms = new Set(); - const highlightTerms = new Set(); - const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); - splitQuery(query.trim()).forEach((queryTerm) => { - const queryTermLower = queryTerm.toLowerCase(); - - // maybe skip this "word" - // stopwords array is from language_data.js - if ( - stopwords.indexOf(queryTermLower) !== -1 || - queryTerm.match(/^\d+$/) - ) - return; - - // stem the word - let word = stemmer.stemWord(queryTermLower); - // select the correct list - if (word[0] === "-") excludedTerms.add(word.substr(1)); - else { - searchTerms.add(word); - highlightTerms.add(queryTermLower); - } - }); - - if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js - localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) - } - - // console.debug("SEARCH: searching for:"); - // console.info("required: ", [...searchTerms]); - // console.info("excluded: ", [...excludedTerms]); - - return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; - }, - - /** - * execute search (requires search index to be loaded) - */ - _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - const allTitles = Search._index.alltitles; - const indexEntries = Search._index.indexentries; - - // Collect multiple result groups to be sorted separately and then ordered. - // Each is an array of [docname, title, anchor, descr, score, filename, kind]. - const normalResults = []; - const nonMainIndexResults = []; - - _removeChildren(document.getElementById("search-progress")); - - const queryLower = query.toLowerCase().trim(); - for (const [title, foundTitles] of Object.entries(allTitles)) { - if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { - for (const [file, id] of foundTitles) { - const score = Math.round(Scorer.title * queryLower.length / title.length); - const boost = titles[file] === title ? 1 : 0; // add a boost for document titles - normalResults.push([ - docNames[file], - titles[file] !== title ? `${titles[file]} > ${title}` : title, - id !== null ? "#" + id : "", - null, - score + boost, - filenames[file], - SearchResultKind.title, - ]); - } - } - } - - // search for explicit entries in index directives - for (const [entry, foundEntries] of Object.entries(indexEntries)) { - if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { - for (const [file, id, isMain] of foundEntries) { - const score = Math.round(100 * queryLower.length / entry.length); - const result = [ - docNames[file], - titles[file], - id ? "#" + id : "", - null, - score, - filenames[file], - SearchResultKind.index, - ]; - if (isMain) { - normalResults.push(result); - } else { - nonMainIndexResults.push(result); - } - } - } - } - - // lookup as object - objectTerms.forEach((term) => - normalResults.push(...Search.performObjectSearch(term, objectTerms)) - ); - - // lookup as search terms in fulltext - normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); - - // let the scorer override scores with a custom scoring function - if (Scorer.score) { - normalResults.forEach((item) => (item[4] = Scorer.score(item))); - nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); - } - - // Sort each group of results by score and then alphabetically by name. - normalResults.sort(_orderResultsByScoreThenName); - nonMainIndexResults.sort(_orderResultsByScoreThenName); - - // Combine the result groups in (reverse) order. - // Non-main index entries are typically arbitrary cross-references, - // so display them after other results. - let results = [...nonMainIndexResults, ...normalResults]; - - // remove duplicate search results - // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept - let seen = new Set(); - results = results.reverse().reduce((acc, result) => { - let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); - if (!seen.has(resultStr)) { - acc.push(result); - seen.add(resultStr); - } - return acc; - }, []); - - return results.reverse(); - }, - - query: (query) => { - const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); - const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); - - // for debugging - //Search.lastresults = results.slice(); // a copy - // console.info("search results:", Search.lastresults); - - // print the results - _displayNextItem(results, results.length, searchTerms, highlightTerms); - }, - - /** - * search for object names - */ - performObjectSearch: (object, objectTerms) => { - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const objects = Search._index.objects; - const objNames = Search._index.objnames; - const titles = Search._index.titles; - - const results = []; - - const objectSearchCallback = (prefix, match) => { - const name = match[4] - const fullname = (prefix ? prefix + "." : "") + name; - const fullnameLower = fullname.toLowerCase(); - if (fullnameLower.indexOf(object) < 0) return; - - let score = 0; - const parts = fullnameLower.split("."); - - // check for different match types: exact matches of full name or - // "last name" (i.e. last dotted part) - if (fullnameLower === object || parts.slice(-1)[0] === object) - score += Scorer.objNameMatch; - else if (parts.slice(-1)[0].indexOf(object) > -1) - score += Scorer.objPartialMatch; // matches in last name - - const objName = objNames[match[1]][2]; - const title = titles[match[0]]; - - // If more than one term searched for, we require other words to be - // found in the name/title/description - const otherTerms = new Set(objectTerms); - otherTerms.delete(object); - if (otherTerms.size > 0) { - const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); - if ( - [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) - ) - return; - } - - let anchor = match[3]; - if (anchor === "") anchor = fullname; - else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; - - const descr = objName + _(", in ") + title; - - // add custom score for some objects according to scorer - if (Scorer.objPrio.hasOwnProperty(match[2])) - score += Scorer.objPrio[match[2]]; - else score += Scorer.objPrioDefault; - - results.push([ - docNames[match[0]], - fullname, - "#" + anchor, - descr, - score, - filenames[match[0]], - SearchResultKind.object, - ]); - }; - Object.keys(objects).forEach((prefix) => - objects[prefix].forEach((array) => - objectSearchCallback(prefix, array) - ) - ); - return results; - }, - - /** - * search for full-text terms in the index - */ - performTermsSearch: (searchTerms, excludedTerms) => { - // prepare search - const terms = Search._index.terms; - const titleTerms = Search._index.titleterms; - const filenames = Search._index.filenames; - const docNames = Search._index.docnames; - const titles = Search._index.titles; - - const scoreMap = new Map(); - const fileMap = new Map(); - - // perform the search on the required terms - searchTerms.forEach((word) => { - const files = []; - // find documents, if any, containing the query word in their text/title term indices - // use Object.hasOwnProperty to avoid mismatching against prototype properties - const arr = [ - { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term }, - { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title }, - ]; - // add support for partial matches - if (word.length > 2) { - const escapedWord = _escapeRegExp(word); - if (!terms.hasOwnProperty(word)) { - Object.keys(terms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: terms[term], score: Scorer.partialTerm }); - }); - } - if (!titleTerms.hasOwnProperty(word)) { - Object.keys(titleTerms).forEach((term) => { - if (term.match(escapedWord)) - arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); - }); - } - } - - // no match but word was a required one - if (arr.every((record) => record.files === undefined)) return; - - // found search word in contents - arr.forEach((record) => { - if (record.files === undefined) return; - - let recordFiles = record.files; - if (recordFiles.length === undefined) recordFiles = [recordFiles]; - files.push(...recordFiles); - - // set score for the word in each file - recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, new Map()); - const fileScores = scoreMap.get(file); - fileScores.set(word, record.score); - }); - }); - - // create the mapping - files.forEach((file) => { - if (!fileMap.has(file)) fileMap.set(file, [word]); - else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); - }); - }); - - // now check if the files don't contain excluded terms - const results = []; - for (const [file, wordList] of fileMap) { - // check if all requirements are matched - - // as search terms with length < 3 are discarded - const filteredTermCount = [...searchTerms].filter( - (term) => term.length > 2 - ).length; - if ( - wordList.length !== searchTerms.size && - wordList.length !== filteredTermCount - ) - continue; - - // ensure that none of the excluded terms is in the search result - if ( - [...excludedTerms].some( - (term) => - terms[term] === file || - titleTerms[term] === file || - (terms[term] || []).includes(file) || - (titleTerms[term] || []).includes(file) - ) - ) - break; - - // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); - // add result to the result list - results.push([ - docNames[file], - titles[file], - "", - null, - score, - filenames[file], - SearchResultKind.text, - ]); - } - return results; - }, - - /** - * helper function to return a node containing the - * search summary for a given text. keywords is a list - * of stemmed words. - */ - makeSearchSummary: (htmlText, keywords, anchor) => { - const text = Search.htmlToText(htmlText, anchor); - if (text === "") return null; - - const textLower = text.toLowerCase(); - const actualStartPosition = [...keywords] - .map((k) => textLower.indexOf(k.toLowerCase())) - .filter((i) => i > -1) - .slice(-1)[0]; - const startWithContext = Math.max(actualStartPosition - 120, 0); - - const top = startWithContext === 0 ? "" : "..."; - const tail = startWithContext + 240 < text.length ? "..." : ""; - - let summary = document.createElement("p"); - summary.classList.add("context"); - summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - - return summary; - }, -}; - -_ready(Search.init); diff --git a/documentation/_build/html/_static/sphinx_highlight.js b/documentation/_build/html/_static/sphinx_highlight.js deleted file mode 100644 index 8a96c69..0000000 --- a/documentation/_build/html/_static/sphinx_highlight.js +++ /dev/null @@ -1,154 +0,0 @@ -/* Highlighting utilities for Sphinx HTML documentation. */ -"use strict"; - -const SPHINX_HIGHLIGHT_ENABLED = true - -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - const rest = document.createTextNode(val.substr(pos + text.length)); - parent.insertBefore( - span, - parent.insertBefore( - rest, - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - /* There may be more occurrences of search term in this node. So call this - * function recursively on the remaining fragment. - */ - _highlight(rest, addItems, text, className); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(() => { - /* Do not call highlightSearchWords() when we are on the search page. - * It will highlight words from the *previous* search query. - */ - if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); - SphinxHighlight.initEscapeListener(); -}); diff --git a/documentation/_build/html/competitions.html b/documentation/_build/html/competitions.html deleted file mode 100644 index 5ed6a1f..0000000 --- a/documentation/_build/html/competitions.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - - Competitions Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Competitions Commands

-

Commands for interacting with Kaggle competitions.

-

For tutorials on how to submit to competitions :

- -
-

kaggle competitions list

-

Lists available competitions.

-

Usage:

-
kaggle competitions list [options]
-
-
-

Options:

-
    -
  • --group <GROUP>: Filter by competition group. Valid options: general, entered, inClass.

  • -
  • --category <CATEGORY>: Filter by competition category. Valid options: all, featured, research, recruitment, gettingStarted, masters, playground.

  • -
  • --sort-by <SORT_BY>: Sort results. Valid options: grouped, prize, earliestDeadline, latestDeadline, numberOfTeams, recentlyCreated (default: latestDeadline).

  • -
  • -p, --page <PAGE>: Page number for results (default: 1).

  • -
  • -s, --search <SEARCH_TERM>: Search term.

  • -
  • -v, --csv: Print results in CSV format.

  • -
-

Example:

-

List featured competitions in the general group, sorted by prize:

-
kaggle competitions list --group general --category featured --sort-by prize
-
-
-

Purpose:

-

This command helps you discover new competitions or find specific ones based on various criteria.

-
-
-

kaggle competitions files

-

Lists files for a specific competition.

-

Usage:

-
kaggle competitions files <COMPETITION> [options]
-
-
-

Arguments:

-
    -
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • -
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • -
-

Example:

-

List the first 3 files for the “titanic” competition in CSV format, quietly:

-
kaggle competitions files titanic --page-size=3 -v -q
-
-
-

Purpose:

-

Use this command to see the data files available for a competition before downloading them.

-
-
-

kaggle competitions download

-

Downloads competition files.

-

Usage:

-
kaggle competitions download <COMPETITION> [options]
-
-
-

Arguments:

-
    -
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • -
-

Options:

-
    -
  • -f, --file <FILE_NAME>: Specific file to download (downloads all if not specified).

  • -
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • -
  • -w, --wp: Download files to the current working path (equivalent to -p .).

  • -
  • -o, --force: Force download, overwriting existing files.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Examples:

-
    -
  1. Download all files for the “titanic” competition to the current directory, overwriting existing files, quietly:

    -
    kaggle competitions download titanic -w -o -q
    -
    -
    -
  2. -
  3. Download the test.csv file from the “titanic” competition to a folder named tost:

    -
    kaggle competitions download titanic -f test.csv -p tost
    -
    -
    -
  4. -
-

Purpose:

-

This command allows you to get the necessary data files for a competition onto your local machine.

-
-
-

kaggle competitions submit

-

Makes a new submission to a competition.

-

Usage:

-
kaggle competitions submit <COMPETITION> -f <FILE_NAME> -m <MESSAGE> [options]
-
-
-

Arguments:

-
    -
  • <COMPETITION>: Competition URL suffix (e.g., house-prices-advanced-regression-techniques).

  • -
  • -f, --file <FILE_NAME>: The submission file.

  • -
  • -m, --message <MESSAGE>: The submission message.

  • -
-

Options:

-
    -
  • -k, --kernel <KERNEL>: Name of the kernel (notebook) to submit (for code competitions).

  • -
  • -v, --version <VERSION>: Version of the kernel to submit.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Example:

-

Submit sample_submission.csv to the “house-prices-advanced-regression-techniques” competition with the message “Test message”:

-
kaggle competitions submit house-prices-advanced-regression-techniques -f sample_submission.csv -m "Test message"
-
-
-

Purpose:

-

Use this command to upload your predictions or code to a competition for scoring.

-
-
-

kaggle competitions submissions

-

Shows your past submissions for a competition.

-

Usage:

-
kaggle competitions submissions <COMPETITION> [options]
-
-
-

Arguments:

-
    -
  • <COMPETITION>: Competition URL suffix (e.g., house-prices-advanced-regression-techniques).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Example:

-

Show submissions for “house-prices-advanced-regression-techniques” in CSV format, quietly:

-
kaggle competitions submissions house-prices-advanced-regression-techniques -v -q
-
-
-

Purpose:

-

This command allows you to review your previous submission attempts and their scores.

-
-
-

kaggle competitions leaderboard

-

Gets competition leaderboard information.

-

Usage:

-
kaggle competitions leaderboard <COMPETITION> [options]
-
-
-

Arguments:

-
    -
  • <COMPETITION>: Competition URL suffix (e.g., titanic).

  • -
-

Options:

-
    -
  • -s, --show: Show the top of the leaderboard in the console.

  • -
  • -d, --download: Download the entire leaderboard to a CSV file.

  • -
  • -p, --path <PATH>: Folder to download the leaderboard to (if -d is used).

  • -
  • -v, --csv: Print results in CSV format (used with -s).

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Examples:

-
    -
  1. Download the “titanic” leaderboard to a folder named leaders, quietly:

    -
    kaggle competitions leaderboard titanic -d -p leaders -q
    -
    -
    -
  2. -
  3. Download the leaderboard and save it to leaderboard.txt:

    -
    kaggle competitions leaderboard titanic > leaderboard.txt
    -
    -
    -
  4. -
-

Purpose:

-

This command lets you view your ranking and the scores of other participants in a competition.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/configuration.html b/documentation/_build/html/configuration.html deleted file mode 100644 index e7ff6dd..0000000 --- a/documentation/_build/html/configuration.html +++ /dev/null @@ -1,189 +0,0 @@ - - - - - - - - Kaggle CLI Configuration — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Kaggle CLI Configuration

-

The Kaggle CLI uses a configuration file to store settings such as your API credentials and default values for commands.

-
-

Configuration Commands

-
-

config view

-

Displays the current configuration values.

-

Usage:

-
kaggle config view
-
-
-

Purpose:

-

This command allows you to inspect the current settings of your Kaggle CLI, such as the configured API endpoint, proxy settings, and default competition.

-
-
-

config set

-

Sets a specific configuration value.

-

Usage:

-
kaggle config set -n <NAME> -v <VALUE>
-
-
-

Arguments:

-
    -
  • -n, --name <NAME>: The name of the configuration parameter to set. Valid options are competition, path, and proxy.

  • -
  • -v, --value <VALUE>: The value to set for the configuration parameter.

    -
      -
    • For competition: The competition URL suffix (e.g., titanic).

    • -
    • For path: The default folder where files will be downloaded.

    • -
    • For proxy: The proxy server URL.

    • -
    -
  • -
-

Example:

-

Set the default competition to “titanic”:

-
kaggle config set -n competition -v titanic
-
-
-

Purpose:

-

Use this command to customize the behavior of the Kaggle CLI, such as setting a default competition to avoid specifying it in every command, defining a default download path, or configuring a proxy server.

-
-
-

config unset

-

Clears a specific configuration value, reverting it to its default.

-

Usage:

-
kaggle config unset -n <NAME>
-
-
-

Arguments:

-
    -
  • -n, --name <NAME>: The name of the configuration parameter to clear. Valid options are competition, path, and proxy.

  • -
-

Example:

-

Clear the default competition:

-
kaggle config unset -n competition
-
-
-

Purpose:

-

This command removes a previously set configuration value, allowing the CLI to use its default behavior or prompt for the value if required.

-
-
-
-

Configuration File Location

-

The Kaggle CLI configuration is typically stored in a file named kaggle.json located in the ~/.kaggle/ directory on Linux and macOS, or C:\Users\<Windows-username>\.kaggle\ on Windows.

-

This file contains your API username and key:

-
{"username":"YOUR_USERNAME","key":"YOUR_API_KEY"}
-
-
-

You can download this file from your Kaggle account page (https://www.kaggle.com/<YOUR_USERNAME>/account) and place it in the correct directory.

-

Alternatively, you can set the KAGGLE_USERNAME and KAGGLE_KEY environment variables.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/datasets.html b/documentation/_build/html/datasets.html deleted file mode 100644 index a4ea936..0000000 --- a/documentation/_build/html/datasets.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - Datasets Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Datasets Commands

-

Commands for interacting with Kaggle datasets.

-
-

kaggle datasets list

-

Lists available datasets.

-

Usage:

-
kaggle datasets list [options]
-
-
-

Options:

-
    -
  • --sort-by <SORT_BY>: Sort results. Valid options: hottest, votes, updated, active (default: hottest).

  • -
  • --size <SIZE_CATEGORY>: DEPRECATED. Use --min-size and --max-size.

  • -
  • --file-type <FILE_TYPE>: Filter by file type. Valid options: all, csv, sqlite, json, bigQuery.

  • -
  • --license <LICENSE_NAME>: Filter by license. Valid options: all, cc, gpl, odb, other.

  • -
  • --tags <TAG_IDS>: Filter by tags (comma-separated tag IDs).

  • -
  • -s, --search <SEARCH_TERM>: Search term.

  • -
  • -m, --mine: Display only your datasets.

  • -
  • --user <USER>: Filter by a specific user or organization.

  • -
  • -p, --page <PAGE>: Page number for results (default: 1).

  • -
  • -v, --csv: Print results in CSV format.

  • -
  • --max-size <BYTES>: Maximum dataset size in bytes.

  • -
  • --min-size <BYTES>: Minimum dataset size in bytes.

  • -
-

Examples:

-
    -
  1. List your own datasets:

    -
    kaggle datasets list -m
    -
    -
    -
  2. -
  3. List CSV datasets, page 2, sorted by last updated, containing “student” in their title, with size between 13000 and 15000 bytes:

    -
    kaggle datasets list --file-type csv --page 2 --sort-by updated -s student --min-size 13000 --max-size 15000
    -
    -
    -
  4. -
  5. List datasets with an ODB license, tagged with “internet”, and matching the search term “telco”:

    -
    kaggle datasets list --license odb --tags internet --search telco
    -
    -
    -
  6. -
-

Purpose:

-

This command helps you find datasets on Kaggle based on various criteria like owner, file type, tags, and size.

-
-
-

kaggle datasets files

-

Lists files for a specific dataset.

-

Usage:

-
kaggle datasets files <DATASET> [options]
-
-
-

Arguments:

-
    -
  • <DATASET>: Dataset URL suffix in the format owner/dataset-name (e.g., kerneler/brazilian-bird-observation-metadata-from-wikiaves).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • -
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • -
-

Example:

-

List the first 7 files for the dataset kerneler/brazilian-bird-observation-metadata-from-wikiaves:

-
kaggle datasets files kerneler/brazilian-bird-observation-metadata-from-wikiaves --page-size=7
-
-
-

Purpose:

-

Use this command to see the individual files within a dataset before downloading.

-
-
-

kaggle datasets download

-

Downloads dataset files.

-

Usage:

-
kaggle datasets download <DATASET> [options]
-
-
-

Arguments:

-
    -
  • <DATASET>: Dataset URL suffix (e.g., willianoliveiragibin/pixar-films).

  • -
-

Options:

-
    -
  • -f, --file <FILE_NAME>: Specific file to download (downloads all if not specified).

  • -
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • -
  • -w, --wp: Download files to the current working path.

  • -
  • --unzip: Unzip the downloaded file (deletes the .zip file afterwards).

  • -
  • -o, --force: Force download, overwriting existing files.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Examples:

-
    -
  1. Download all files for the dataset willianoliveiragibin/pixar-films:

    -
    kaggle datasets download -d willianoliveiragibin/pixar-films
    -
    -
    -
  2. -
  3. Download the dataset goefft/public-datasets-with-file-types-and-columns, unzip it into the tmp folder, overwriting if necessary, and suppress output:

    -
    kaggle datasets download goefft/public-datasets-with-file-types-and-columns -p tmp --unzip -o -q
    -
    -
    -
  4. -
  5. Download the specific file dataset_results.csv from goefft/public-datasets-with-file-types-and-columns to the current working directory, quietly, and force overwrite:

    -
    kaggle datasets download goefft/public-datasets-with-file-types-and-columns -f dataset_results.csv -w -q -o
    -
    -
    -
  6. -
-

Purpose:

-

This command allows you to retrieve dataset files for local use.

-
-
-

kaggle datasets init

-

Initializes a metadata file (dataset-metadata.json) for creating a new dataset.

-

Usage:

-
kaggle datasets init -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: The path to the folder where the dataset-metadata.json file will be created (defaults to the current directory).

  • -
-

Example:

-

Initialize a dataset metadata file in the tests/dataset folder:

-
kaggle datasets init -p tests/dataset
-
-
-

Purpose:

-

This command creates a template dataset-metadata.json file that you need to edit before creating a new dataset on Kaggle. This file contains information like the dataset title, ID (slug), and licenses.

-
-
-

kaggle datasets create

-

Creates a new dataset on Kaggle.

-

Usage:

-
kaggle datasets create -p <FOLDER_PATH> [options]
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the data files and the dataset-metadata.json file (defaults to the current directory).

  • -
  • -u, --public: Make the dataset public (default is private).

  • -
  • -q, --quiet: Suppress verbose output.

  • -
  • -t, --keep-tabular: Do not convert tabular files to CSV (default is to convert).

  • -
  • -r, --dir-mode <MODE>: How to handle directories: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • -
-

Example:

-

Create a new public dataset from the files in tests/dataset, quietly, without converting tabular files, and skipping subdirectories. (Assumes dataset-metadata.json in tests/dataset has been properly edited with title and slug):

-
# Example: Edit dataset-metadata.json first
-# sed -i 's/INSERT_TITLE_HERE/My Dataset Title/' tests/dataset/dataset-metadata.json
-# sed -i 's/INSERT_SLUG_HERE/my-dataset-slug/' tests/dataset/dataset-metadata.json
-
-kaggle datasets create -p tests/dataset --public -q -t -r skip
-
-
-

Purpose:

-

This command uploads your local data files and the associated metadata to create a new dataset on Kaggle.

-
-
-

kaggle datasets version

-

Creates a new version of an existing dataset.

-

Usage:

-
kaggle datasets version -p <FOLDER_PATH> -m <VERSION_NOTES> [options]
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the updated data files and dataset-metadata.json (defaults to current directory).

  • -
  • -m, --message <VERSION_NOTES>: (Required) Message describing the new version.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
  • -t, --keep-tabular: Do not convert tabular files to CSV.

  • -
  • -r, --dir-mode <MODE>: Directory handling mode (skip, zip, tar).

  • -
  • -d, --delete-old-versions: Delete old versions of this dataset.

  • -
-

Example:

-

Create a new version of a dataset using files from tests/dataset with version notes “Updated data”, quietly, keeping tabular formats, skipping directories, and deleting old versions:

-
kaggle datasets version -m "Updated data" -p tests/dataset -q -t -r skip -d
-
-
-

Purpose:

-

Use this command to update an existing dataset with new files or metadata changes.

-
-
-

kaggle datasets metadata

-

Downloads metadata for a dataset or updates existing local metadata.

-

Usage:

-
kaggle datasets metadata <DATASET> [options]
-
-
-

Arguments:

-
    -
  • <DATASET>: Dataset URL suffix (e.g., goefft/public-datasets-with-file-types-and-columns).

  • -
-

Options:

-
    -
  • -p, --path <PATH>: Directory to download/update metadata file (dataset-metadata.json). Defaults to current working directory.

  • -
  • --update: Update existing local metadata file instead of downloading anew.

  • -
-

Example:

-

Download metadata for the dataset goefft/public-datasets-with-file-types-and-columns into the tests/dataset folder:

-
kaggle datasets metadata goefft/public-datasets-with-file-types-and-columns -p tests/dataset
-
-
-

Purpose:

-

This command allows you to fetch the dataset-metadata.json file for an existing dataset, which can be useful for inspection or as a template for creating a new version.

-
-
-

kaggle datasets status

-

Gets the creation status of a dataset.

-

Usage:

-
kaggle datasets status <DATASET>
-
-
-

Arguments:

-
    -
  • <DATASET>: Dataset URL suffix (e.g., goefft/public-datasets-with-file-types-and-columns).

  • -
-

Example:

-

Get the status of the dataset goefft/public-datasets-with-file-types-and-columns:

-
kaggle datasets status goefft/public-datasets-with-file-types-and-columns
-
-
-

Purpose:

-

After creating or updating a dataset, this command helps you check if the process was successful or if there were any issues.

-
-
-

kaggle datasets delete

-

Deletes a dataset from Kaggle.

-

Usage:

-
kaggle datasets delete <DATASET> [options]
-
-
-

Arguments:

-
    -
  • <DATASET>: Dataset URL suffix (e.g., username/dataset-slug).

  • -
-

Options:

-
    -
  • -y, --yes: Automatically confirm deletion without prompting.

  • -
-

Example:

-

Delete the dataset username/dataset-slug and automatically confirm:

-
kaggle datasets delete username/dataset-slug --yes
-
-
-

Purpose:

-

This command permanently removes one of your datasets from Kaggle. Use with caution.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/genindex.html b/documentation/_build/html/genindex.html deleted file mode 100644 index 20d83c1..0000000 --- a/documentation/_build/html/genindex.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - Index — kaggle-api documentation - - - - - - - - - - - - - - - - - - -
-
-
- - -
- - -

Index

- -
- -
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/index.html b/documentation/_build/html/index.html deleted file mode 100644 index 43f8c73..0000000 --- a/documentation/_build/html/index.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - kaggle-api documentation — kaggle-api documentation - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

kaggle-api documentation

-
-

Contents:

- -
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/intro.html b/documentation/_build/html/intro.html deleted file mode 100644 index 584dd34..0000000 --- a/documentation/_build/html/intro.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - Kaggle CLI Documentation — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -

.. _kaggle:

-
-

Kaggle CLI Documentation

-

Welcome to the Kaggle CLI documentation. This guide provides detailed information on how to use the Kaggle command-line interface to interact with Kaggle’s platform.

-
-

Getting Started

-

Before you begin, ensure you have the Kaggle CLI installed and configured with your API credentials. You can find your API token on your Kaggle account page.

-
-

Installation

-

Ensure you have Python 3 and the package manager pip installed.

-

Run the following command to access the Kaggle API using the command line:

-

pip install kaggle -(You may need to do pip install --user kaggle on Mac/Linux. This is recommended if problems come up during the installation process.) -Installations done through the root user (i.e. sudo pip install kaggle) will not work correctly unless you understand what you’re doing. Even then, they still might not work. User installs are strongly recommended in the case of permissions errors.

-

You can now use the kaggle command as shown in the examples below.

-

If you run into a kaggle: command not found error, ensure that your python binaries are on your path. You can see where kaggle is installed by doing pip uninstall kaggle and seeing where the binary is (then cancel the uninstall when prompted). For a local user install on Linux, the default location is ~/.local/bin. On Windows, the default location is $PYTHON_HOME/Scripts.

-

IMPORTANT: We do not offer Python 2 support. Please ensure that you are using Python 3 before reporting any issues.

-
-
-

API credentials

-

To use the Kaggle API, sign up for a Kaggle account at https://www.kaggle.com. Then go to the ‘Account’ tab of your user profile (https://www.kaggle.com/<username>/account) and select ‘Create API Token’. This will trigger the download of kaggle.json, a file containing your API credentials. -Place this file in the location appropriate for your operating system:

-
    -
  • Linux: $XDG_CONFIG_HOME/kaggle/kaggle.json (defaults to ~/.config/kaggle/kaggle.json). The path ~/.kaggle/kaggle.json which was used by older versions of the tool is also still supported.

  • -
  • Windows: C:\Users\<Windows-username>\.kaggle\kaggle.json - you can check the exact location, sans drive, with echo %HOMEPATH%.

  • -
  • Other: ~/.kaggle/kaggle.json

  • -
-

You can define a shell environment variable KAGGLE_CONFIG_DIR to change this location to $KAGGLE_CONFIG_DIR/kaggle.json (on Windows it will be %KAGGLE_CONFIG_DIR%\kaggle.json).

-

For your security, ensure that other users of your computer do not have read access to your credentials. On Unix-based systems you can do this with the following command:

-

chmod 600 ~/.config/kaggle/kaggle.json

-

You can also choose to export your Kaggle username and token to the environment:

-
export KAGGLE_USERNAME=datadinosaur
-export KAGGLE_KEY=xxxxxxxxxxxxxx
-
-
-

In addition, you can export any other configuration value that normally would be in -the kaggle.json in the format ‘KAGGLE_’ (note uppercase).
-For example, if the file had the variable “proxy” you would export KAGGLE_PROXY -and it would be discovered by the client.

-
-
-
-

Tutorials

-

Explore these tutorials to learn how to perform common tasks:

- -
-
-

CLI Reference

-

The Kaggle CLI is organized into several command groups:

- -
-
-

Python API Reference

-

The Kaggle CLI provides a Python API for interacting with Kaggle’s platform. You can access the API using the kaggle module:

-
import kaggle
-
-
-

For more information about the Python API, see the -Kaggle Python API documentation.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/kernels.html b/documentation/_build/html/kernels.html deleted file mode 100644 index bcd038d..0000000 --- a/documentation/_build/html/kernels.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - - Kernels Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Kernels Commands

-

Commands for interacting with Kaggle Kernels (notebooks and scripts).

-
-

kaggle kernels list

-

Lists available kernels.

-

Usage:

-
kaggle kernels list [options]
-
-
-

Options:

-
    -
  • -m, --mine: Display only your kernels.

  • -
  • -p, --page <PAGE>: Page number for results (default: 1).

  • -
  • --page-size <SIZE>: Number of items per page (default: 20).

  • -
  • -s, --search <SEARCH_TERM>: Search term.

  • -
  • -v, --csv: Print results in CSV format.

  • -
  • --parent <PARENT_KERNEL>: Filter by parent kernel (format: owner/kernel-slug).

  • -
  • --competition <COMPETITION_SLUG>: Filter by competition.

  • -
  • --dataset <DATASET_SLUG>: Filter by dataset (format: owner/dataset-slug).

  • -
  • --user <USER>: Filter by a specific user.

  • -
  • --language <LANGUAGE>: Filter by language (all, python, r, sqlite, julia).

  • -
  • --kernel-type <TYPE>: Filter by kernel type (all, script, notebook).

  • -
  • --output-type <TYPE>: Filter by output type (all, visualizations, data).

  • -
  • --sort-by <SORT_BY>: Sort results (hotness, commentCount, dateCreated, dateRun, relevance, scoreAscending, scoreDescending, viewCount, voteCount). Default: hotness.

  • -
-

Examples:

-
    -
  1. List your own kernels containing “Exercise” in the title, page 2, 5 items per page, in CSV format, sorted by run date:

    -
    kaggle kernels list -m -s Exercise --page-size 5 -p 2 -v --sort-by dateRun
    -
    -
    -
  2. -
  3. List kernels that are children of $KAGGLE_DEVELOPER/exercise-lists (replace $KAGGLE_DEVELOPER with your username):

    -
    kaggle kernels list --parent $KAGGLE_DEVELOPER/exercise-lists
    -
    -
    -
  4. -
  5. List the first 5 kernels for the “house-prices-advanced-regression-techniques” competition:

    -
    kaggle kernels list --competition house-prices-advanced-regression-techniques --page-size 5
    -
    -
    -
  6. -
  7. List the first 5 kernels associated with the dataset dansbecker/home-data-for-ml-course:

    -
    kaggle kernels list --dataset dansbecker/home-data-for-ml-course --page-size 5
    -
    -
    -
  8. -
  9. List Python notebooks by user $KAGGLE_DEVELOPER that output data:

    -
    kaggle kernels list --user $KAGGLE_DEVELOPER --language python --kernel-type notebook --output-type data
    -
    -
    -
  10. -
-

Purpose:

-

This command allows you to find kernels based on various filters like ownership, associated competition/dataset, language, or type.

-
-
-

kaggle kernels files

-

Lists output files for a specific kernel.

-

Usage:

-
kaggle kernels files <KERNEL> [options]
-
-
-

Arguments:

-
    -
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., kerneler/sqlite-global-default).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • --page-token <PAGE_TOKEN>: Page token for results paging.

  • -
  • --page-size <PAGE_SIZE>: Number of items to show on a page (default: 20, max: 200).

  • -
-

Example:

-

List the first output file for the kernel kerneler/sqlite-global-default in CSV format:

-
kaggle kernels files kerneler/sqlite-global-default -v --page-size=1
-
-
-

Purpose:

-

Use this command to view the files generated by a kernel run.

-
-
-

kaggle kernels init

-

Initializes a metadata file (kernel-metadata.json) for a new or existing kernel.

-

Usage:

-
kaggle kernels init -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: The path to the folder where the kernel-metadata.json file will be created (defaults to the current directory).

  • -
-

Example:

-

Initialize a kernel metadata file in the tests/kernel folder:

-
kaggle kernels init -p tests/kernel
-
-
-

Purpose:

-

This command creates a template kernel-metadata.json file. You need to edit this file with details like the kernel’s title, ID (slug), language, kernel type, and data sources before pushing it to Kaggle.

-
-
-

kaggle kernels push

-

Pushes new code/notebook and metadata to a kernel, then runs the kernel.

-

Usage:

-
kaggle kernels push -p <FOLDER_PATH> [options]
-
-
-

Options:

-
    -
  • -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).

  • -
  • -t, --timeout <SECONDS>: Maximum run time in seconds.

  • -
-

Example:

-

Push the kernel from the tests/kernel folder (assuming it contains the kernel file and kernel-metadata.json):

-
kaggle kernels push -p tests/kernel
-
-
-

Purpose:

-

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.

-
-
-

kaggle kernels pull

-

Pulls down the code/notebook and metadata for a kernel.

-

Usage:

-
kaggle kernels pull <KERNEL> [options]
-
-
-

Arguments:

-
    -
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., $KAGGLE_DEVELOPER/exercise-as-with).

  • -
-

Options:

-
    -
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • -
  • -w, --wp: Download files to the current working path.

  • -
  • -m, --metadata: Generate a kernel-metadata.json file along with the kernel code.

  • -
-

Examples:

-
    -
  1. Pull the kernel $KAGGLE_DEVELOPER/exercise-as-with and its metadata into the tests/kernel folder:

    -
    kaggle kernels pull -p tests/kernel $KAGGLE_DEVELOPER/exercise-as-with -m
    -
    -
    -
  2. -
  3. Pull the kernel $KAGGLE_DEVELOPER/exercise-as-with into the current working directory:

    -
    kaggle kernels pull --wp $KAGGLE_DEVELOPER/exercise-as-with
    -
    -
    -
  4. -
-

Purpose:

-

This command allows you to download the source code and optionally the metadata of a kernel from Kaggle to your local machine.

-
-
-

kaggle kernels output

-

Gets the data output from the latest run of a kernel.

-

Usage:

-
kaggle kernels output <KERNEL> [options]
-
-
-

Arguments:

-
    -
  • <KERNEL>: Kernel URL suffix (e.g., kerneler/using-google-bird-vocalization-model).

  • -
-

Options:

-
    -
  • -p, --path <PATH>: Folder to download output files to (defaults to current directory).

  • -
  • -w, --wp: Download files to the current working path.

  • -
  • -o, --force: Force download, overwriting existing files.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Example:

-

Download the output of the kernel kerneler/using-google-bird-vocalization-model, forcing overwrite:

-
kaggle kernels output kerneler/sqlite-global-default -o
-
-
-

Purpose:

-

Use this command to retrieve the files generated by a kernel run, such as submission files, processed data, or visualizations.

-
-
-

kaggle kernels status

-

Displays the status of the latest run of a kernel.

-

Usage:

-
kaggle kernels status <KERNEL>
-
-
-

Arguments:

-
    -
  • <KERNEL>: Kernel URL suffix (e.g., kerneler/sqlite-global-default).

  • -
-

Example:

-

Get the status of the kernel kerneler/sqlite-global-default:

-
kaggle kernels status kerneler/sqlite-global-default
-
-
-

Purpose:

-

This command tells you whether the latest run of your kernel is still running, completed successfully, or failed.

-
-
-

kaggle kernels delete

-

Deletes a kernel from Kaggle.

-

Usage:

-
kaggle kernels delete <KERNEL> [options]
-
-
-

Arguments:

-
    -
  • <KERNEL>: Kernel URL suffix (format: owner/kernel-slug, e.g., $KAGGLE_DEVELOPER/exercise-delete).

  • -
-

Options:

-
    -
  • -y, --yes: Automatically confirm deletion without prompting.

  • -
-

Example:

-

Delete the kernel $KAGGLE_DEVELOPER/exercise-delete and automatically confirm:

-
kaggle kernels delete $KAGGLE_DEVELOPER/exercise-delete --yes
-
-
-

Purpose:

-

This command permanently removes one of your kernels from Kaggle. Use with caution.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/model_instances.html b/documentation/_build/html/model_instances.html deleted file mode 100644 index 22656cd..0000000 --- a/documentation/_build/html/model_instances.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - Model Variation Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Model Variation Commands

-

Commands for interacting with variations of Kaggle Models. A model variation typically represents a specific framework of a parent model.

-
-

kaggle models variations init

-

Initializes a metadata file (model-instance-metadata.json) for creating a new model variation.

-

Usage:

-
kaggle models variations init -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: The path to the folder where the model-instance-metadata.json file will be created (defaults to the current directory).

  • -
-

Example:

-

Initialize a model variation metadata file in the tmp folder:

-
kaggle models variations init -p tmp
-
-
-

Purpose:

-

This command creates a template model-instance-metadata.json file. You must edit this file with details such as the owner slug, the parent model slug, the variation (or instance) slug (URL-friendly name for this variations), and the framework (e.g., tensorflow, pytorch, jax, sklearn) before creating the variation.

-
-
-

kaggle models variations create

-

Creates a new model variation under an existing model on Kaggle.

-

Usage:

-
kaggle models variations create -p <FOLDER_PATH> [options]
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model variation files and the model-instance-metadata.json file (defaults to the current directory).

  • -
  • -q, --quiet: Suppress verbose output.

  • -
  • -r, --dir-mode <MODE>: How to handle directories within the upload: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • -
-

Example:

-

Create a new model variation using the metadata and files in the tmp folder, quietly, skipping subdirectories. (Assumes model-instance-metadata.json in tmp has been properly edited):

-
# Example: Edit model-instance-metadata.json first
-# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-instance-metadata.json
-# sed -i 's/INSERT_EXISTING_MODEL_SLUG_HERE/parent-model-slug/' tmp/model-instance-metadata.json
-# sed -i 's/INSERT_INSTANCE_SLUG_HERE/my-instance-slug/' tmp/model-instance-metadata.json
-# sed -i 's/INSERT_FRAMEWORK_HERE/jax/' tmp/model-instance-metadata.json
-# echo "a,b,c,d" > tmp/data.csv # Example model file
-
-kaggle models variations create -p tmp -q -r skip
-
-
-

Purpose:

-

This command uploads your local model files (e.g., weights, architecture definition) and the associated variation metadata to create a new variation under a specified parent model on Kaggle. This effectively creates the first version of this model variation.

-
-
-

kaggle models variations get

-

Downloads the model-instance-metadata.json file for an existing model variation.

-

Usage:

-
kaggle models variations get <MODEL_INSTANCE> -p <FOLDER_PATH>
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE>: Model variation URL suffix in the format owner/model-slug/framework/instance-slug (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • -
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Folder to download the model-instance-metadata.json file to.

  • -
-

Example:

-

Download the metadata for model variation $KAGGLE_DEVELOPER/test-model/jax/main into the tmp folder:

-
kaggle models variations get $KAGGLE_DEVELOPER/test-model/jax/main -p tmp
-
-
-

Purpose:

-

This command retrieves the metadata file for an existing model variation. This can be useful for inspection or as a basis for an update.

-
-
-

kaggle models variations files

-

Lists files for the current version of a model variation.

-

Usage:

-
kaggle models variations files <MODEL_INSTANCE> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE>: Model variation URL suffix (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • --page-size <SIZE>: Number of items per page (default: 20).

  • -
  • --page-token <TOKEN>: Page token for results paging.

  • -
-

Example:

-

List the first 5 files for the model variation $KAGGLE_DEVELOPER/test-model/jax/main in CSV format:

-
kaggle models variations files $KAGGLE_DEVELOPER/test-model/jax/main -v --page-size 5
-
-
-

Purpose:

-

Use this command to see the files associated with the latest version of a specific model variation.

-
-
-

kaggle models variations update

-

Updates an existing model variation on Kaggle using a local model-instance-metadata.json file.

-

Usage:

-
kaggle models variations update -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-instance-metadata.json file with the updated information (defaults to the current directory). Note: This command only updates the metadata of the variation, not the files. To update files, create a new version.

  • -
-

Example:

-

Update the model variation whose details are in tmp/model-instance-metadata.json (ensure the slugs and owner in the JSON match an existing model variation):

-
kaggle models variations update -p tmp
-
-
-

Purpose:

-

Use this command to change the metadata of an existing model variation, such as its description or other fields defined in the model-instance-metadata.json file. This does not upload new files or create a new version.

-
-
-

kaggle models variations delete

-

Deletes a model variation from Kaggle.

-

Usage:

-
kaggle models variations delete <MODEL_INSTANCE> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE>: Model variation URL suffix in the format owner/model-slug/framework/instance-slug (e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • -
-

Options:

-
    -
  • -y, --yes: Automatically confirm deletion without prompting.

  • -
-

Example:

-

Delete the model variation $KAGGLE_DEVELOPER/test-model/jax/main and automatically confirm:

-
kaggle models variations delete $KAGGLE_DEVELOPER/test-model/jax/main -y
-
-
-

Purpose:

-

This command permanently removes one of your model variations (and all its versions) from Kaggle. Use with caution.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/model_instances_versions.html b/documentation/_build/html/model_instances_versions.html deleted file mode 100644 index 15229df..0000000 --- a/documentation/_build/html/model_instances_versions.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - - Model Variation Versions Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Model Variation Versions Commands

-

Commands for managing versions of a specific Kaggle Model Variation. Each version represents a snapshot of the model variation files at a point in time.

-
-

kaggle models variations versions create

-

Creates a new version of an existing model variation.

-

Usage:

-
kaggle models variations versions create <MODEL_INSTANCE> -p <FOLDER_PATH> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE>: The target model variation URL suffix for the new version (format: owner/model-slug/framework/instance-slug, e.g., $KAGGLE_DEVELOPER/test-model/jax/main).

  • -
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the files for this new version (defaults to the current directory).

  • -
  • -n, --version-notes <NOTES>: Notes describing this version.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
  • -r, --dir-mode <MODE>: How to handle directories within the upload: skip (ignore), zip (compressed upload), tar (uncompressed upload) (default: skip).

  • -
-

Example:

-

Create a new version for the model variation $KAGGLE_DEVELOPER/test-model/jax/main using files from the tmp folder, with version notes “Updated model files”, quietly, and skipping subdirectories:

-
# Ensure tmp folder contains the new files for the version, e.g., data_v2.csv
-# echo "e,f,g,h" > tmp/data_v2.csv
-
-kaggle models variations versions create $KAGGLE_DEVELOPER/test-model/jax/main -p tmp -n "Updated model files" -q -r skip
-
-
-

Purpose:

-

This command uploads a new set of files to an existing model variation, creating a new, numbered version. This allows you to track changes and revert to previous versions of your model variation files.

-
-
-

kaggle models variations versions download

-

Downloads files for a specific version of a model variation.

-

Usage:

-
kaggle models variations versions download <MODEL_INSTANCE_VERSION> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix in the format owner/model-slug/framework/instance-slug/version-number (e.g., $KAGGLE_DEVELOPER/test-model/jax/main/1).

  • -
-

Options:

-
    -
  • -p, --path <PATH>: Folder to download files to (defaults to current directory).

  • -
  • --untar: Untar the downloaded file if it’s a .tar archive (deletes the .tar file afterwards).

  • -
  • --unzip: Unzip the downloaded file if it’s a .zip archive (deletes the .zip file afterwards).

  • -
  • -f, --force: Force download, overwriting existing files.

  • -
  • -q, --quiet: Suppress verbose output.

  • -
-

Example:

-

Download version 1 of the model variation $KAGGLE_DEVELOPER/test-model/jax/main into the tmp folder, untar if applicable, force overwrite, and do it quietly:

-
kaggle models variations versions download $KAGGLE_DEVELOPER/test-model/jax/main/1 -p tmp -q -f --untar
-
-
-

Purpose:

-

This command allows you to retrieve the specific files associated with a particular version of a model variation.

-
-
-

kaggle models variations versions files

-

Lists files for a specific version of a model variation.

-

Usage:

-
kaggle models variations versions files <MODEL_INSTANCE_VERSION> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix (e.g., google/gemma/pytorch/7b/2).

  • -
-

Options:

-
    -
  • -v, --csv: Print results in CSV format.

  • -
  • --page-size <SIZE>: Number of items per page (default: 20).

  • -
  • --page-token <TOKEN>: Page token for results paging.

  • -
-

Example:

-

List the first 3 files for version 2 of the model variation google/gemma/pytorch/7b in CSV format:

-
kaggle models variations versions files google/gemma/pytorch/7b/2 -v --page-size=3
-
-
-

Purpose:

-

Use this command to see the individual files that constitute a specific version of a model variation before downloading.

-
-
-

kaggle models variations versions delete

-

Deletes a specific version of a model variation from Kaggle.

-

Usage:

-
kaggle models variations versions delete <MODEL_INSTANCE_VERSION> [options]
-
-
-

Arguments:

-
    -
  • <MODEL_INSTANCE_VERSION>: Model variation version URL suffix in the format owner/model-slug/framework/instance-slug/version-number (e.g., $KAGGLE_DEVELOPER/test-model/jax/main/1).

  • -
-

Options:

-
    -
  • -y, --yes: Automatically confirm deletion without prompting.

  • -
-

Example:

-

Delete version 1 of the model variation $KAGGLE_DEVELOPER/test-model/jax/main and automatically confirm:

-
kaggle models variations versions delete $KAGGLE_DEVELOPER/test-model/jax/main/1 -y
-
-
-

Purpose:

-

This command permanently removes a specific version of your model variation from Kaggle. Use with caution. If it’s the only version, this may lead to the deletion of the model variation itself if no other versions exist.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/models.html b/documentation/_build/html/models.html deleted file mode 100644 index 4a65714..0000000 --- a/documentation/_build/html/models.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - - Models Commands — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Models Commands

-

Commands for interacting with Kaggle Models.

-
-

kaggle models list

-

Lists available models.

-

Usage:

-
kaggle models list [options]
-
-
-

Options:

-
    -
  • --owner <OWNER>: Filter by a specific user or organization.

  • -
  • --sort-by <SORT_BY>: Sort results. Valid options: hotness, downloadCount, voteCount, notebookCount, createTime (default: hotness).

  • -
  • -s, --search <SEARCH_TERM>: Search term.

  • -
  • --page-size <SIZE>: Number of items per page (default: 20).

  • -
  • --page-token <TOKEN>: Page token for results paging.

  • -
  • -v, --csv: Print results in CSV format.

  • -
-

Examples:

-
    -
  1. List models owned by $KAGGLE_DEVELOPER (replace with your username), sorted by creation time, in CSV format:

    -
    kaggle models list --owner $KAGGLE_DEVELOPER --sort-by createTime -v
    -
    -
    -
  2. -
  3. List the first 5 models matching the search term “gemini”:

    -
    kaggle models list -s gemini --page-size 5
    -
    -
    -
  4. -
-

Purpose:

-

This command helps you find models on Kaggle, filtering by owner or searching by keywords, and sorting by various criteria.

-
-
-

kaggle models init

-

Initializes a metadata file (model-metadata.json) for creating a new model.

-

Usage:

-
kaggle models init -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: The path to the folder where the model-metadata.json file will be created (defaults to the current directory).

  • -
-

Example:

-

Initialize a model metadata file in a new temporary folder tmp:

-
mkdir tmp
-kaggle models init -p tmp
-
-
-

Purpose:

-

This command creates a template model-metadata.json file. You must edit this file with your model’s details, such as owner slug, title, model slug (URL-friendly version of the title), and a description, before creating the model on Kaggle.

-
-
-

kaggle models create

-

Creates a new model on Kaggle.

-

Usage:

-
kaggle models create -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-metadata.json file (defaults to the current directory). This folder should also contain your model files that you intend to upload as part of the first model variation.

  • -
-

Example:

-

Create a new model using the metadata in tmp/model-metadata.json. (Assumes the metadata file has been edited with owner, title, and slug):

-
# Example: Edit model-metadata.json first
-# sed -i 's/INSERT_OWNER_SLUG_HERE/your-username/' tmp/model-metadata.json
-# sed -i 's/INSERT_TITLE_HERE/My Awesome Model/' tmp/model-metadata.json
-# sed -i 's/INSERT_SLUG_HERE/my-awesome-model/' tmp/model-metadata.json
-
-kaggle models create -p tmp
-
-
-

Purpose:

-

This command registers a new model on Kaggle using the provided metadata. After this, you will typically create model variations and versions.

-
-
-

kaggle models get

-

Downloads the model-metadata.json file for an existing model.

-

Usage:

-
kaggle models get <MODEL> -p <FOLDER_PATH>
-
-
-

Arguments:

-
    -
  • <MODEL>: Model URL suffix in the format owner/model-slug (e.g., $KAGGLE_DEVELOPER/test-model).

  • -
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Folder to download the model-metadata.json file to.

  • -
-

Example:

-

Download the metadata for model $KAGGLE_DEVELOPER/test-model into the tmp folder:

-
kaggle models get -p tmp $KAGGLE_DEVELOPER/test-model
-
-
-

Purpose:

-

This command retrieves the metadata file for an existing model, which can be useful for inspection or as a basis for an update.

-
-
-

kaggle models update

-

Updates an existing model on Kaggle using a local model-metadata.json file.

-

Usage:

-
kaggle models update -p <FOLDER_PATH>
-
-
-

Options:

-
    -
  • -p, --path <FOLDER_PATH>: Path to the folder containing the model-metadata.json file with the updated information (defaults to the current directory).

  • -
-

Example:

-

Update the model whose details are in tmp/model-metadata.json (ensure the slug and owner in the JSON match an existing model):

-
kaggle models update -p tmp
-
-
-

Purpose:

-

Use this command to change the metadata of an existing model, such as its title, description, or other fields defined in the model-metadata.json file.

-
-
-

kaggle models delete

-

Deletes a model from Kaggle.

-

Usage:

-
kaggle models delete <MODEL> [options]
-
-
-

Arguments:

-
    -
  • <MODEL>: Model URL suffix in the format owner/model-slug (e.g., $KAGGLE_DEVELOPER/test-model).

  • -
-

Options:

-
    -
  • -y, --yes: Automatically confirm deletion without prompting.

  • -
-

Example:

-

Delete the model $KAGGLE_DEVELOPER/test-model and automatically confirm:

-
kaggle models delete $KAGGLE_DEVELOPER/test-model -y
-
-
-

Purpose:

-

This command permanently removes one of your models (and all its variations and versions) from Kaggle. Use with caution.

-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/objects.inv b/documentation/_build/html/objects.inv deleted file mode 100644 index d8819671bb914aa7325877ff090f1297347d5b8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1467 zcmV;s1w{HIAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkwVP|J- zWi4TFX$m7CR%LQ?X>V>iAPOTORA^-&a%F8{X>Md?av*PJAarPHb0B7EY-J#6b0A}H zZE$jBb8}^6Aa!$TZf78RY-wUH3V7PBSxs-_HW0o0R}e@K?Lh^4^{q&-ZLr%SXxhE* zG8SVCktIW-Hr;<;Qv8~shLmXcCXqAmJ(2SvQHTC~5wej@-;HdP^}g;8tonr=!1&K6 zd2ZP~v{W}|-qqs{+U>u-@#C=-$eGpsd)M~7{yM|A{6(}R!JTog;6&w|Sq^!Fh}WhS z<5db~PnN{oz}*U7i{Yi`!*y!_{Micr7B$T%ualu1SqgCj@i@Jln{m|FSMdXXwt~M^ zjl5onOlyc10~s7_-mLK=LhqDH!S1y=P6OBDIETT6N#c)2^!=wtPjGIYX)5tu-_W-z8O^;GvF9u;^jhrvxoy}ooO1LoLE5Imj>$-?x#VgmQMYkpCP*Kgg(aqCn2S%Y}NQf4fCxNXEp=3zTLUMgmMC6=U3N1r8N-n3eJu)tgM#@lq6NB!f zMO@a0C9ncpNI0^zVwRA!&UjfIj-qS2TKtP~+^8ujkNR>K%xv8O7WR4grBV5En9ib; zre4i9`_wch4S09Kp~4OsB02O}of=s5?T4k)UW2LnRjc8Kw__~I!Q5#z(C*i#N9bqK zbQc)Js~ALg5J@au@`IID_LsY}I7cC6(;aoZ4N}xeBx_eWyWgzev$?luO{eDDmRxlY zg^V7-jRgUHF1w8$5cD_fu(BhU@A9Oq^v0|&r7@mkB^W;$1ieM^!pceZLw2Ks#oz8~ zXP-S4us^VB_a=r;w5T=PAsdEv-shg3^(Djski8N@xrMc3QK!T(NfxSWseuU@f?kD;kPC8Bh_&U2tl8!1&M@RmH?RW3+s3f(uqqhFPV}s{T2l2#3BjE zl!587AV{=E5`EbQeeYY~rurNSO!TzS$QIDVCqfz;ejot<1a!I|lHg?TgALDyeKyEp zNXG$;1CTh?xqPqOgpb=vX))(JV0OjLeq1B(QSjk#!j5Ll_&l5WCw>$=`~`0F$qz2h zY{Eylx7p8M>-BV49zS55J7o9>ZU7iK*GL==M4;eYBRH%mc2|3w!;HJrx-6BuwdJ7V z?$FSa?Ag5ow8wjSR#RKcIE@d%I0xPqzEI1rU=GDQsUcMFGBxhx^(IyR{B~WP>n)_p zSCwQ;C9v=Br9q+rDh1%*CCGUB;AkEKO)hj!{X3Jr{XeU(xGGUK`g^-go&u_5Z~p=7 zD_&_J_=gzC{N2z#1KN8{3x4Eom-~Mx-7GS%&o%;X4>8z}T`$E;-@pB|O`Gvoij05d V+<~fp9K}aV@u#EM{RhIx`Mo!;)P?{6 diff --git a/documentation/_build/html/search.html b/documentation/_build/html/search.html deleted file mode 100644 index 2749f4a..0000000 --- a/documentation/_build/html/search.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - Search — kaggle-api documentation - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -

Search

- - - - -

- Searching for multiple words only shows matches that contain - all words. -

- - -
- - - -
- - -
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file diff --git a/documentation/_build/html/searchindex.js b/documentation/_build/html/searchindex.js deleted file mode 100644 index 0c06e3f..0000000 --- a/documentation/_build/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"alltitles":{"API credentials":[[4,"api-credentials"]],"CLI Reference":[[4,"cli-reference"]],"Competitions Commands":[[0,null]],"Configuration Commands":[[1,"configuration-commands"]],"Configuration File Location":[[1,"configuration-file-location"]],"Contents:":[[3,null]],"Datasets Commands":[[2,null]],"Getting Started":[[4,"getting-started"]],"Installation":[[4,"installation"]],"Introduction":[[9,"introduction"]],"Kaggle CLI Configuration":[[1,null]],"Kaggle CLI Documentation":[[4,null]],"Kaggle CLI Tutorials":[[9,null]],"Kernels Commands":[[5,null]],"Model Variation Commands":[[6,null]],"Model Variation Versions Commands":[[7,null]],"Models Commands":[[8,null]],"Python API Reference":[[4,"python-api-reference"]],"Tutorial: Create a Dataset":[[9,"tutorial-create-a-dataset"]],"Tutorial: Create a Model":[[9,"tutorial-create-a-model"]],"Tutorial: Create a Model Variation":[[9,"tutorial-create-a-model-variation"]],"Tutorial: Create a Model Variation Version":[[9,"tutorial-create-a-model-variation-version"]],"Tutorial: Find and Download a Dataset":[[9,"tutorial-find-and-download-a-dataset"]],"Tutorial: How to Submit to a Code Competition":[[9,"tutorial-how-to-submit-to-a-code-competition"]],"Tutorial: How to Submit to a Competition":[[9,"tutorial-how-to-submit-to-a-competition"]],"Tutorial: Update a Kernel (Notebook)":[[9,"tutorial-update-a-kernel-notebook"]],"Tutorials":[[4,"tutorials"]],"config set":[[1,"config-set"]],"config unset":[[1,"config-unset"]],"config view":[[1,"config-view"]],"kaggle competitions download":[[0,"kaggle-competitions-download"]],"kaggle competitions files":[[0,"kaggle-competitions-files"]],"kaggle competitions leaderboard":[[0,"kaggle-competitions-leaderboard"]],"kaggle competitions list":[[0,"kaggle-competitions-list"]],"kaggle competitions submissions":[[0,"kaggle-competitions-submissions"]],"kaggle competitions submit":[[0,"kaggle-competitions-submit"]],"kaggle datasets create":[[2,"kaggle-datasets-create"]],"kaggle datasets delete":[[2,"kaggle-datasets-delete"]],"kaggle datasets download":[[2,"kaggle-datasets-download"]],"kaggle datasets files":[[2,"kaggle-datasets-files"]],"kaggle datasets init":[[2,"kaggle-datasets-init"]],"kaggle datasets list":[[2,"kaggle-datasets-list"]],"kaggle datasets metadata":[[2,"kaggle-datasets-metadata"]],"kaggle datasets status":[[2,"kaggle-datasets-status"]],"kaggle datasets version":[[2,"kaggle-datasets-version"]],"kaggle kernels delete":[[5,"kaggle-kernels-delete"]],"kaggle kernels files":[[5,"kaggle-kernels-files"]],"kaggle kernels init":[[5,"kaggle-kernels-init"]],"kaggle kernels list":[[5,"kaggle-kernels-list"]],"kaggle kernels output":[[5,"kaggle-kernels-output"]],"kaggle kernels pull":[[5,"kaggle-kernels-pull"]],"kaggle kernels push":[[5,"kaggle-kernels-push"]],"kaggle kernels status":[[5,"kaggle-kernels-status"]],"kaggle models create":[[8,"kaggle-models-create"]],"kaggle models delete":[[8,"kaggle-models-delete"]],"kaggle models get":[[8,"kaggle-models-get"]],"kaggle models init":[[8,"kaggle-models-init"]],"kaggle models list":[[8,"kaggle-models-list"]],"kaggle models update":[[8,"kaggle-models-update"]],"kaggle models variations create":[[6,"kaggle-models-variations-create"]],"kaggle models variations delete":[[6,"kaggle-models-variations-delete"]],"kaggle models variations files":[[6,"kaggle-models-variations-files"]],"kaggle models variations get":[[6,"kaggle-models-variations-get"]],"kaggle models variations init":[[6,"kaggle-models-variations-init"]],"kaggle models variations update":[[6,"kaggle-models-variations-update"]],"kaggle models variations versions create":[[7,"kaggle-models-variations-versions-create"]],"kaggle models variations versions delete":[[7,"kaggle-models-variations-versions-delete"]],"kaggle models variations versions download":[[7,"kaggle-models-variations-versions-download"]],"kaggle models variations versions files":[[7,"kaggle-models-variations-versions-files"]],"kaggle-api documentation":[[3,null]]},"docnames":["competitions","configuration","datasets","index","intro","kernels","model_instances","model_instances_versions","models","tutorials"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["competitions.md","configuration.md","datasets.md","index.rst","intro.md","kernels.md","model_instances.md","model_instances_versions.md","models.md","tutorials.md"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":[0,2,4,5,6,7,8,9],"0":9,"1":[0,2,5,7,9],"13000":2,"15000":2,"2":[2,4,5,7,9],"20":[0,2,5,6,7,8],"200":[0,2,5],"3":[0,4,7,9],"4":9,"5":[5,6,8,9],"6":9,"600":4,"7":[2,9],"7b":7,"8":9,"892":9,"893":9,"894":9,"9":9,"A":[6,9],"For":[0,1,4,9],"If":[4,5,7,9],"In":[4,9],"It":9,"On":4,"The":[0,1,2,4,5,6,7,8,9],"Then":4,"These":9,"To":[4,6],"_kaggl":4,"about":4,"accept":9,"access":[4,9],"accomplish":9,"accordingli":9,"account":[1,4,5],"activ":[2,9],"actual":9,"ad":9,"add":9,"addit":4,"address":9,"advanc":[0,5],"after":[2,5,8,9],"afterward":[2,7],"ai":9,"all":[0,2,5,6,8,9],"allow":[0,1,2,5,7,9],"along":[5,9],"alreadi":9,"also":[4,8,9],"altern":1,"an":[2,6,7,8,9],"analysi":9,"anew":2,"ani":[2,4,9],"api":[1,9],"applic":7,"appropri":4,"ar":[1,4,5,6,8,9],"architectur":6,"archiv":[7,9],"argument":[0,1,2,5,6,7,8],"associ":[2,5,6,7],"assum":[2,5,6,8,9],"attempt":[0,5],"automat":[2,5,6,7,8],"avail":[0,2,5,8,9],"avoid":1,"awesom":[8,9],"b":6,"back":9,"bar":9,"base":[0,2,4,5,9],"basi":[6,8],"been":[2,6,8],"befor":[0,2,4,5,6,7,8,9],"begin":4,"behavior":1,"being":9,"below":4,"benchmark":9,"best":9,"between":2,"bigqueri":2,"bin":4,"binari":4,"bird":[2,5],"brazilian":2,"brief":9,"brows":9,"browser":9,"byte":2,"c":[1,4,6,9],"can":[1,2,4,6,8,9],"cancel":4,"carefulli":9,"case":[4,9],"categori":0,"caution":[2,5,6,7,8],"cc":2,"cd":9,"chang":[2,4,6,7,8,9],"check":[2,4,9],"children":5,"chmod":4,"choos":[4,9],"chosen":9,"classic":9,"clear":1,"cli":3,"click":9,"client":4,"code":[0,3,4,5],"col_a":9,"col_b":9,"col_c":9,"column":[2,9],"com":[1,4,9],"come":4,"comma":2,"command":[3,4,9],"commentcount":5,"common":[4,9],"competit":[1,3,4,5],"competition_slug":5,"complet":[5,9],"compress":[2,6,7],"comput":4,"config":4,"configur":[3,4],"confirm":[2,5,6,7,8],"consol":0,"constitut":7,"contain":[1,2,4,5,6,7,8,9],"content":9,"convert":[2,9],"copi":9,"correct":1,"correctli":4,"could":9,"cours":5,"cp":9,"creat":[3,4,5],"createtim":8,"creation":[2,8],"credenti":[1,9],"criteria":[0,2,8],"csv":[0,2,5,6,7,8,9],"current":[0,1,2,5,6,7,8,9],"custom":1,"d":[0,2,6,9],"dansbeck":5,"dash":9,"data":[0,2,5,6,9],"data_v2":7,"databas":9,"datadinosaur":4,"dataset":[3,4,5],"dataset_result":2,"dataset_slug":5,"date":5,"datecr":5,"daterun":5,"deceas":9,"default":[0,1,2,4,5,6,7,8],"defin":[1,4,6,8,9],"definit":[6,9],"delet":3,"deprec":2,"describ":[2,7,9],"descript":[6,8,9],"desir":9,"detail":[4,5,6,8],"dir":[2,6,7],"directori":[0,1,2,5,6,7,8,9],"discov":[0,4],"displai":[1,2,5],"do":[2,4,7,9],"doe":6,"done":4,"down":5,"download":[1,3,4,5,6,8],"downloadcount":8,"drive":4,"dure":4,"e":[0,1,2,4,5,6,7,8,9],"each":[7,9],"earliestdeadlin":0,"echo":[4,6,7,9],"edit":[2,5,6,8,9],"editor":9,"effect":6,"empti":9,"endpoint":1,"ensur":[4,6,7,8,9],"enter":0,"entir":0,"environ":[1,4,9],"equival":0,"error":[4,9],"etc":9,"evalu":9,"even":4,"everi":1,"exact":4,"examin":9,"exampl":[0,1,2,4,5,6,7,8,9],"exercis":5,"exist":[0,2,5,6,7,8,9],"explain":9,"explor":4,"export":4,"extract":9,"f":[0,2,7,9],"fail":5,"failur":9,"featur":[0,9],"fetch":2,"few":9,"field":[6,8,9],"file":[3,4,8,9],"file_nam":[0,2],"file_typ":2,"fill":9,"film":2,"filter":[0,2,5,8],"find":[0,2,3,4,5,8],"first":[0,2,5,6,7,8,9],"flag":9,"flax_model":9,"flax_model_v2":9,"folder":[0,1,2,5,6,7,8],"folder_path":[2,5,6,7,8],"follow":[4,9],"forc":[0,2,5,7],"form":9,"format":[0,2,4,5,6,7,8,9],"found":4,"framework":[6,7,9],"friendli":[6,8,9],"from":[0,1,2,5,6,7,8,9],"g":[0,1,2,5,6,7,8,9],"gemini":8,"gemma":7,"gender":9,"gender_submiss":9,"gener":[0,5,9],"get":[0,2,3,5,9],"gettingstart":0,"global":5,"go":[4,9],"goal":9,"goefft":2,"googl":[5,7],"gpl":2,"group":[0,4],"gui":9,"guid":[4,9],"h":7,"ha":[2,6,8,9],"had":4,"handl":[2,6,7],"happi":9,"have":[4,9],"haven":9,"help":[0,2,8],"here":9,"home":5,"homepath":4,"hot":[5,8],"hottest":2,"hous":[0,5],"how":[0,2,3,4,6,7],"http":[1,4,9],"i":[0,1,2,4,5,6,8,9],"id":[2,5,9],"identifi":9,"ignor":[2,6,7],"illustr":9,"immedi":9,"implement":9,"import":[4,9],"inclass":0,"includ":9,"index":9,"indic":9,"individu":[2,7],"inform":[0,2,4,6,8,9],"init":[3,9],"initi":[2,5,6,8,9],"insert_existing_model_slug_her":[6,9],"insert_framework_her":[6,9],"insert_instance_slug_her":[6,9],"insert_owner_slug_her":[6,8,9],"insert_slug_her":[2,8,9],"insert_title_her":[2,8,9],"inspect":[1,2,6,8],"instal":9,"instanc":[6,7,9],"instance_size_byt":9,"instead":2,"instruct":9,"intend":8,"interact":[0,2,4,5,6,8],"interfac":4,"internet":2,"introduct":3,"ipynb":[5,9],"iri":9,"issu":[2,4],"item":[0,2,5,6,7,8],"its":[1,5,6,8,9],"itself":7,"jax":[6,7,9],"join":9,"json":[1,2,4,5,6,8,9],"julia":5,"just":9,"k":[0,9],"kaggle_":4,"kaggle_config_dir":4,"kaggle_develop":[5,6,7,8],"kaggle_kei":[1,4],"kaggle_proxi":4,"kaggle_usernam":[1,4],"keep":2,"kei":1,"kernel":[0,2,3,4],"keyword":[8,9],"know":9,"known":9,"languag":[5,9],"last":2,"latest":[5,6],"latestdeadlin":0,"lead":7,"leader":0,"leaderboard":[3,9],"learn":4,"let":[0,9],"licens":[2,9],"license_nam":2,"like":[2,5,9],"line":[4,9],"linux":[1,4],"list":[3,6,7,9],"ll":9,"local":[0,2,4,5,6,8,9],"locat":[3,4],"log":9,"look":9,"lower":9,"m":[0,2,5,9],"mac":4,"machin":[0,5],"maco":1,"made":9,"mai":[4,7],"main":[6,7],"make":[0,2,9],"manag":[4,7,9],"mani":9,"master":0,"match":[2,6,8,9],"max":[0,2,5],"maximum":[2,5],"mean":9,"messag":[0,2,9],"metadata":[3,5,6,8,9],"might":[4,9],"min":2,"mine":[2,5],"minimum":2,"mkdir":[8,9],"ml":5,"mode":[2,6,7],"model":[3,4,5],"model_inst":[6,7],"model_instance_vers":7,"modifi":9,"modul":4,"more":4,"most":9,"must":[6,8,9],"my":[2,6,8,9],"my_submiss":9,"n":[1,7,9],"name":[0,1,2,6,9],"navig":9,"necessari":[0,2],"need":[2,4,5,9],"new":[0,2,5,6,7,8,9],"next":9,"normal":4,"note":[2,4,6,7,9],"notebook":[0,3,4,5],"notebookcount":8,"now":[4,9],"number":[0,2,5,6,7,8],"numberofteam":0,"o":[0,2,5,9],"observ":2,"odb":2,"offer":4,"often":9,"old":2,"older":4,"onc":9,"one":[2,5,6,8,9],"ones":0,"onli":[2,5,6,7,9],"onto":0,"open":9,"oper":4,"option":[0,1,2,5,6,7,8,9],"organ":[2,4,8],"other":[0,2,4,6,7,8,9],"otherwis":[5,9],"our":9,"out":9,"output":[0,2,3,6,7],"overwrit":[0,2,5,7],"own":[2,5,8,9],"owner":[2,5,6,7,8],"ownership":5,"p":[0,2,5,6,7,8,9],"packag":4,"page":[0,1,2,4,5,6,7,8,9],"page_s":[0,2,5],"page_token":[0,2,5],"param":9,"paramet":[1,9],"parent":[5,6,9],"parent_kernel":5,"part":[8,9],"particip":[0,4,9],"particular":7,"passengerid":9,"past":0,"path":[0,1,2,4,5,6,7,8,9],"per":[5,6,7,8],"perform":4,"perman":[2,5,6,7,8],"permiss":4,"pip":4,"pixar":2,"place":[1,4,9],"placehold":9,"platform":4,"playground":0,"pleas":[4,9],"point":[7,9],"predict":[0,9],"prepar":9,"previou":[0,7,9],"previous":1,"price":[0,5],"print":[0,2,5,6,7,8],"privat":[2,9],"prize":0,"problem":4,"process":[2,4,5,9],"profil":[4,9],"program":9,"project":9,"prompt":[1,2,4,5,6,7,8],"properli":[2,6],"provid":[4,8,9],"proxi":[1,4],"public":[2,9],"pull":[3,9],"purpos":[0,1,2,5,6,7,8],"push":[3,9],"py":[5,9],"python":[3,5,9],"python_hom":4,"pytorch":[6,7,9],"q":[0,2,5,6,7],"queri":9,"quiet":[0,2,5,6,7],"quietli":[0,2,6,7],"r":[2,5,6,7],"random":9,"rank":0,"re":[4,9],"read":4,"real":9,"recent":9,"recentlycr":0,"recommend":4,"recruit":0,"refer":3,"refresh":9,"regist":8,"regress":[0,5],"relat":9,"relev":[5,9],"remov":[1,2,5,6,7,8,9],"replac":[5,8,9],"report":4,"repres":[6,7,9],"requir":[1,2,9],"research":0,"restrict":9,"result":[0,2,5,6,7,8,9],"retriev":[2,5,6,7,8],"revert":[1,7],"review":0,"rmd":[5,9],"root":4,"row":9,"rule":9,"run":[4,5,9],"sampl":9,"sample_data":9,"sample_submiss":0,"san":4,"save":0,"scenario":9,"score":[0,9],"scoreascend":5,"scoredescend":5,"script":[4,5,9],"search":[0,2,4,5,8,9],"search_term":[0,2,5,8],"second":[5,9],"section":9,"secur":4,"sed":[2,6,8],"see":[0,2,4,6,7,9],"select":4,"separ":2,"sequenc":9,"server":1,"set":[7,9],"sever":4,"shell":4,"should":[8,9],"show":[0,2,5,9],"shown":4,"sign":4,"simpl":9,"size":[0,2,5,6,7,8],"size_categori":2,"skip":[2,6,7,9],"sklearn":[6,9],"slug":[2,5,6,7,8,9],"snapshot":7,"some":9,"someth":9,"sort":[0,2,5,8],"sort_bi":[0,2,5,8],"sourc":5,"space":9,"specif":[0,1,2,5,6,7,8,9],"specifi":[0,1,2,5,6,9],"sqlite":[2,5,9],"start":[3,9],"statu":[3,9],"step":9,"still":[4,5,9],"store":1,"strictli":9,"strongli":4,"student":2,"subdirectori":[2,6,7],"submiss":[3,5,9],"submit":[3,4],"success":[2,9],"successfulli":5,"sudo":4,"suffix":[0,1,2,5,6,7,8],"support":[4,9],"suppress":[0,2,5,6,7],"sure":9,"surviv":9,"system":4,"t":[2,5,9],"tab":[4,9],"tabular":2,"tag":[2,9],"tag_id":2,"tar":[2,6,7],"target":7,"task":[4,9],"techniqu":[0,5],"telco":2,"tell":5,"templat":[2,5,6,8],"temporari":8,"tensorflow":[6,9],"term":[0,2,5,8],"test":[0,2,5,6,7,8,9],"text":9,"thei":4,"them":[0,9],"thi":[0,1,2,4,5,6,7,8,9],"three":9,"through":[4,9],"time":[5,7,8,9],"timeout":5,"titan":[0,1,9],"titl":[2,5,8,9],"tmp":[2,6,7,8],"token":[0,2,4,5,6,7,8],"tool":4,"top":0,"tost":0,"track":7,"train":9,"trigger":4,"tutori":[0,3],"two":9,"txt":0,"type":[2,5],"typic":[1,6,8,9],"u":2,"uciml":9,"uncompress":[2,6,7],"under":[5,6,9],"understand":4,"uninstal":4,"unix":4,"unless":4,"untar":7,"unzip":[2,7,9],"up":[4,9],"updat":[2,3,5,7],"upload":[0,2,5,6,7,8,9],"uppercas":4,"url":[0,1,2,5,6,7,8,9],"us":[0,1,2,4,5,6,7,8,9],"usag":[0,1,2,5,6,7,8],"user":[1,2,4,5,8],"usernam":[1,2,4,5,6,8,9],"usual":9,"v":[0,1,2,5,6,7,8],"v2":9,"valid":[0,1,2,8],"valu":[1,4],"vari":9,"variabl":[1,4],"variat":[3,4,8],"variou":[0,2,5,8],"verbos":[0,2,5,6,7],"veri":9,"verifi":9,"version":[0,3,4,6,8],"version_not":2,"via":9,"view":[0,5],"viewcount":5,"visual":5,"vocal":5,"vote":2,"votecount":[5,8],"w":[0,2,5],"wa":[2,4],"walk":9,"want":9,"we":[4,9],"web":9,"websit":9,"weight":[6,9],"welcom":4,"were":2,"what":4,"when":[4,9],"where":[1,2,4,5,6,8],"whether":5,"which":[2,4,8,9],"while":9,"whose":[6,8],"wikiav":2,"willianoliveiragibin":2,"window":[1,4],"within":[2,6,7],"without":[2,5,6,7,8],"work":[0,2,4,5,9],"would":[4,9],"wp":[0,2,5],"write":9,"www":[1,4,9],"xdg_config_hom":4,"xxxxxxxxxxxxxx":4,"y":[2,5,6,7,8],"ye":[2,5,6,7,8],"you":[0,1,2,4,5,6,7,8,9],"your":[0,1,2,4,5,6,7,8,9],"your_api_kei":1,"your_usernam":[1,9],"zip":[2,6,7,9]},"titles":["Competitions Commands","Kaggle CLI Configuration","Datasets Commands","kaggle-api documentation","Kaggle CLI Documentation","Kernels Commands","Model Variation Commands","Model Variation Versions Commands","Models Commands","Kaggle CLI Tutorials"],"titleterms":{"api":[3,4],"cli":[1,4,9],"code":9,"command":[0,1,2,5,6,7,8],"competit":[0,9],"config":1,"configur":1,"content":3,"creat":[2,6,7,8,9],"credenti":4,"dataset":[2,9],"delet":[2,5,6,7,8],"document":[3,4],"download":[0,2,7,9],"file":[0,1,2,5,6,7],"find":9,"get":[4,6,8],"how":9,"init":[2,5,6,8],"instal":4,"introduct":9,"kaggl":[0,1,2,3,4,5,6,7,8,9],"kernel":[5,9],"leaderboard":0,"list":[0,2,5,8],"locat":1,"metadata":2,"model":[6,7,8,9],"notebook":9,"output":5,"pull":5,"push":5,"python":4,"refer":4,"set":1,"start":4,"statu":[2,5],"submiss":0,"submit":[0,9],"tutori":[4,9],"unset":1,"updat":[6,8,9],"variat":[6,7,9],"version":[2,7,9],"view":1}}) \ No newline at end of file diff --git a/documentation/_build/html/tutorials.html b/documentation/_build/html/tutorials.html deleted file mode 100644 index 7ff2f40..0000000 --- a/documentation/_build/html/tutorials.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - - - Kaggle CLI Tutorials — kaggle-api documentation - - - - - - - - - - - - - - - - - - - -
-
-
- - -
- -
-

Kaggle CLI Tutorials

-

These tutorials illustrate how to use a sequence of Kaggle CLI commands to accomplish common tasks.

-
-

Introduction

-

Before starting these tutorials, please make sure you have:

-
    -
  1. Installed the Kaggle CLI, following the instructions here.

  2. -
  3. Set up your API credentials, following the instructions here

  4. -
  5. Logged in to Kaggle in a web browser. This will allow you to verify the results of the CLI commands in the Your Work section of your Kaggle profile.

  6. -
-
-
-

Tutorial: Create a Dataset

-

This tutorial walks you through creating a new dataset on Kaggle.

-
    -
  1. Start from an empty directory. Create a new directory for your dataset files and navigate into it.

    -
    mkdir my-new-dataset
    -cd my-new-dataset
    -
    -
    -
  2. -
  3. Create a sample data file. For this example, create a CSV file named sample_data.csv with an index column and three random data columns, and a few rows of data.

    -
    echo "id,col_a,col_b,col_c" > sample_data.csv
    -echo "1,0.5,0.2,0.8" >> sample_data.csv
    -echo "2,0.1,0.7,0.3" >> sample_data.csv
    -echo "3,0.9,0.4,0.6" >> sample_data.csv
    -
    -
    -
  4. -
  5. Initialize dataset metadata. This creates a dataset-metadata.json file in your current directory.

    -
    kaggle datasets init
    -
    -
    -
  6. -
  7. Edit the metadata file. Open dataset-metadata.json in a text editor and make the following changes:

    -
      -
    • Replace "INSERT_TITLE_HERE" with your desired dataset title, e.g., "My Sample Dataset".

    • -
    • Replace "INSERT_SLUG_HERE" with a URL-friendly version of your title, e.g., "my-sample-dataset". The URL-friendly version is made by converting the title to lower-case and changing spaces to dashes.

    • -
    • You can also add licenses, descriptions, and other relevant information.

    • -
    -
  8. -
  9. Create the dataset. This command uploads your sample_data.csv and dataset-metadata.json to Kaggle.

    -
    kaggle datasets create -p .
    -
    -
    -

    You can add --public to make it public immediately.

    -
  10. -
  11. Verify on Kaggle.com. Refresh the Datasets tab in Your Work. You should see “My Sample Dataset”.

  12. -
-
-
-

Tutorial: Find and Download a Dataset

-

This tutorial explains how to find and download using the CLI.

-
    -
  1. Search for a Dataset (Optional).

    -
      -
    • If you know the dataset you want, you can skip this step. Otherwise, you can search for datasets. For example, to search for datasets related to “iris”:

      -
      kaggle datasets list -s iris
      -
      -
      -
    • -
    • This command will list datasets matching your search query. Note the dataset’s “id” (e.g., uciml/iris) which you’ll use for downloading.

    • -
    -
  2. -
  3. Choose a Dataset and Create a Directory.

    -
      -
    • For this tutorial, we’ll use the classic “Iris” dataset, which has the id uciml/iris.

    • -
    • Create a new directory for your dataset and navigate into it:

      -
      mkdir iris-dataset-analysis
      -cd iris-dataset-analysis
      -
      -
      -
    • -
    -
  4. -
  5. Download the Dataset.

    -
      -
    • Use the kaggle datasets download command with the dataset’s id.

      -
      kaggle datasets download -d uciml/iris
      -
      -
      -
    • -
    • This will download the dataset files, typically as a ZIP archive (e.g., iris.zip), into your current directory (iris-dataset-analysis).

    • -
    -
  6. -
  7. Unzip the Dataset.

    -
      -
    • Note: you could skip this step by using the --unzip flag on the previous command.

    • -
    • Most datasets are downloaded as ZIP files. You’ll need to unzip the archive to access the data files (e.g., CSV files).

      -
      # Make sure you have unzip installed, or use your OS's GUI to extract
      -# The actual zip file name might vary based on the dataset.
      -# For uciml/iris, it's iris.zip
      -unzip iris.zip
      -
      -
      -
    • -
    -
  8. -
  9. Verify the results.

    -
      -
    • After unzipping, you should see the data files (e.g., Iris.csv, database.sqlite).

    • -
    -
  10. -
-
-
-

Tutorial: Update a Kernel (Notebook)

-

This tutorial shows how to download an existing kernel, modify it, and push the changes back to Kaggle.

-
    -
  1. Create or identify a kernel on Kaggle.com.

    -
      -
    • Log in to kaggle.com.

    • -
    • Find an existing notebook you own (or create one). For this tutorial, let’s assume its title is “My CLI Test Kernel”.

    • -
    • Note the kernel slug from the browser’s address bar. It will be something like YOUR_USERNAME/my-cli-test-kernel.

    • -
    -
  2. -
  3. Create a new local directory for your kernel.

    -
    mkdir my-kernel-project
    -cd my-kernel-project
    -
    -
    -
  4. -
  5. Pull the kernel. Use the kaggle kernels pull command with your username and the kernel slug. The -m flag includes the kernel-metadata.json file, which is required for pushing updates.

    -
    # Replace YOUR_USERNAME with your actual Kaggle username
    -kaggle kernels pull YOUR_USERNAME/my-cli-test-kernel -m
    -
    -
    -

    This will download my-cli-test-kernel.ipynb (or .py/.Rmd) and kernel-metadata.json.

    -
  6. -
  7. Edit the kernel or metadata.

    -
      -
    • Open the downloaded notebook file (e.g., my-cli-test-kernel.ipynb) and make some changes to the code or content.

    • -
    • Open kernel-metadata.json. Let’s add “benchmark” to the keywords. Find the "keywords": [] line and change it to "keywords": ["benchmark"].

    • -
    • Note: While you can edit keywords here, it’s often best to manage them on kaggle.com, as there is a restricted list of allowed keywords.

    • -
    -
  8. -
  9. Push the kernel. This uploads your changes and the updated metadata, then runs the kernel on Kaggle.

    -
    kaggle kernels push -p .
    -
    -
    -
  10. -
  11. Verify on Kaggle.com. Refresh the Code tab in Your Work. You should see your code changes and the “benchmark” tag added to the kernel settings.

  12. -
-
-
-

Tutorial: Create a Model

-

This tutorial guides you through creating a new model on Kaggle.

-
    -
  1. Start from an empty directory. Create a new directory for your model files and navigate into it.

    -
    mkdir my-new-model
    -cd my-new-model
    -
    -
    -
  2. -
  3. Copy your model definition files (optional for this step). If you have files that define your model (e.g., Python scripts, model weights), copy them into this directory. For the kaggle models create step, only the metadata is strictly required, but you’ll need files when you create a model variation.

  4. -
  5. Initialize model metadata. This creates a model-metadata.json file.

    -
    kaggle models init
    -
    -
    -
  6. -
  7. Edit the metadata file. Open model-metadata.json and make the following changes:

    -
      -
    • Replace "INSERT_OWNER_SLUG_HERE" with your Kaggle username (e.g., "YOUR_USERNAME").

    • -
    • Replace "INSERT_TITLE_HERE" with your model’s title (e.g., "My Awesome AI Model").

    • -
    • Replace "INSERT_SLUG_HERE" with a URL-friendly version of the title (e.g., "my-awesome-ai-model").

    • -
    • Fill out the "description" field and other relevant sections like "licenses".

    • -
    -
  8. -
  9. Create the model.

    -
    kaggle models create -p .
    -
    -
    -
  10. -
  11. Verify on Kaggle.com. Refresh the Models tab in Your Work. You should see “My Awesome AI Model”.

  12. -
-
-
-

Tutorial: Create a Model Variation

-

This tutorial shows how to create a variation under an existing model. A model variation usually represents the model implemented in a specific framework (like TensorFlow, PyTorch, JAX, etc.) and includes the actual model files.

-
    -
  1. Ensure you have a parent model. Follow the “Create a Model” tutorial if you haven’t already. Let’s assume your model slug is my-awesome-ai-model and your username is YOUR_USERNAME.

  2. -
  3. Prepare your model variation files. In your model directory (e.g., my-new-model), create or place the files for this specific variation. For example, a JAX model might have a flax_model.params file.

    -
    # In the my-new-model directory
    -echo "This is a placeholder for JAX model parameters" > flax_model.params
    -
    -
    -
  4. -
  5. Initialize model variation metadata. This creates model-instance-metadata.json.

    -
    # Still in the my-new-model directory
    -kaggle models variations init
    -
    -
    -
  6. -
  7. Edit the variation metadata file. Open model-instance-metadata.json and make changes:

    -
      -
    • Replace "INSERT_OWNER_SLUG_HERE" with your Kaggle username (e.g., "YOUR_USERNAME").

    • -
    • Replace "INSERT_EXISTING_MODEL_SLUG_HERE" with your parent model’s slug (e.g., "my-awesome-ai-model").

    • -
    • Replace "INSERT_INSTANCE_SLUG_HERE" with a slug for this variation (e.g., "jax-implementation").

    • -
    • Replace "INSERT_FRAMEWORK_HERE" with the model framework (e.g., "jax", "tensorflow", "pytorch", "sklearn").

    • -
    • Update the "instance_size_bytes" if known, and add a "description".

    • -
    -
  8. -
  9. Create the model variation. This uploads the files in the current directory (e.g., flax_model.params) along with the variation metadata.

    -
    kaggle models variations create -p .
    -
    -
    -
  10. -
  11. Verify on Kaggle.com. Go to your model’s page on Kaggle by clicking on the model under in the Models tab on Your Work. You should see a new “jax-implementation” variation listed, and it will have one version containing flax_model.params.

  12. -
-
-
-

Tutorial: Create a Model Variation Version

-

This tutorial explains how to add a new version to an existing model variation, for example, when you have updated model weights or files.

-
    -
  1. Ensure you have a model variation. Follow the “Create a Model Variation” tutorial. Let’s assume your variation is YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation.

  2. -
  3. Prepare your updated files. In your model variation directory (e.g., my-new-model), update or add new files for this version. For example, create flax_model_v2.params.

    -
    # In the my-new-model directory
    -echo "Updated JAX model parameters for V2" > flax_model_v2.params
    -# You might also remove or update flax_model.params if it's being replaced
    -
    -
    -
  4. -
  5. Create the new model variation version. You need to specify the parent model variation and provide version notes. The files from the -p path will form the contents of this new version.

    -
    # Replace YOUR_USERNAME and the slugs for model and variation accordingly
    -kaggle models variations versions create YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation -p . -n "Second version with updated parameters"
    -
    -
    -

    Note: The -p . means all files in the current directory will be uploaded as part of this new version. If you only want to upload flax_model_v2.params, ensure only it (and any other V2 files) are in a directory and point -p to that directory, or manage your files carefully.

    -
  6. -
  7. Verify on Kaggle.com. Go to your model variation page on Kaggle (e.g., YOUR_USERNAME/my-awesome-ai-model/jax/jax-implementation) by clicking on the Models tab on Your Work. You should see a new version (e.g., version 2) listed with your notes and the new files.

  8. -
-
-
-

Tutorial: How to Submit to a Competition

-

This tutorial walks you through the process of making a submission to a Kaggle competition using the CLI.

-
    -
  1. Find a Competition and Accept Rules.

    -
      -
    • First, you need to find a competition. You can list active competitions using kaggle competitions list.

    • -
    • For this tutorial, we’ll use the “titanic” competition, which is a common starting point. You can find it at https://www.kaggle.com/c/titanic.

    • -
    • Important: Before you can download data or submit, you must join the competition and accept the competition’s rules on the Kaggle website. Navigate to the competition on kaggle.com to do this.

    • -
    -
  2. -
  3. Create a Directory and Download Competition Files.

    -
      -
    • Create a new directory for your competition files and navigate into it.

      -
      mkdir titanic-competition
      -cd titanic-competition
      -
      -
      -
    • -
    • Download the competition files. This usually includes training data, test data, and a sample submission file.

      -
      kaggle competitions download -c titanic
      -
      -
      -
    • -
    • This will download titanic.zip. You’ll need to unzip it to see the files (e.g., train.csv, test.csv, gender_submission.csv).

      -
      # Make sure you have unzip installed, or use your OS's GUI to extract
      -# The actual zip file name might vary based on the competition.
      -unzip titanic.zip
      -
      -
      -
    • -
    -
  4. -
  5. Create Your Submission File.

    -
      -
    • The required format for the submission file is specific to each competition. You can find this information on the competition’s “Evaluation” page or by examining the sample submission file (e.g., gender_submission.csv for the Titanic competition).

    • -
    • For the Titanic competition, the submission file needs two columns: PassengerId and Survived. The Survived column should contain your predictions (0 for deceased, 1 for survived).

    • -
    • Let’s create a very simple submission file based on the gender_submission.csv (which predicts survival based on gender). For this tutorial, we’ll just copy it and use it as our submission. In a real scenario, you would generate this file from your model’s predictions on the test.csv data.

      -
      cp gender_submission.csv my_submission.csv
      -
      -
      -
    • -
    • Your my_submission.csv should look something like this:

      -
      PassengerId,Survived
      -892,0
      -893,1
      -894,0
      -...
      -
      -
      -
    • -
    -
  6. -
  7. Submit to the Competition.

    -
      -
    • Use the kaggle competitions submit command. You need to specify:

      -
        -
      • The competition ID (-c titanic).

      • -
      • The path to your submission file (-f my_submission.csv).

      • -
      • A message describing your submission (-m "My first submission via CLI").

      • -
      -
      kaggle competitions submit -c titanic -f my_submission.csv -m "My first submission via CLI"
      -
      -
      -
    • -
    -
  8. -
  9. Check Your Submission Status.

    -
      -
    • After submitting, you’ll get a message indicating success or failure.

    • -
    • You can check your submission’s score and status on the “My Submissions” tab of the competition page on Kaggle.com (e.g., https://www.kaggle.com/c/titanic/submissions).

    • -
    • You can also list your recent submissions and their scores via the CLI:

      -
      kaggle competitions submissions -c titanic
      -
      -
      -
    • -
    • This command will show your submission, its status (e.g., complete, error), and your public/private scores if available.

    • -
    -
  10. -
-
-
-

Tutorial: How to Submit to a Code Competition

-

This tutorial walks you through the process of submitting to a code competition on Kaggle.

-
    -
  1. Find a Code Competition.

    -
      -
    • First, you need to find a code competition to participate in. You can browse the available competitions on the Kaggle competitions page. Many Featured Competitions are code competitions.

    • -
    -
  2. -
  3. Download the Dataset.

    -
      -
    • Once you have chosen a competition, you need to download the dataset. You can do this using the kaggle competitions download command:

    • -
    -
    kaggle competitions download -c <competition-name>
    -
    -
    -
      -
    • Replace <competition-name> with the name of the competition you want to participate in.

    • -
    -
  4. -
  5. Create a Notebook.

    -
      -
    • Next, you need to create a Kaggle Notebook to work on your submission. A Kaggle Notebook contains the code and environment settings for Kaggle to run and evaluate your submission. Follow the tutorial on Creating / Updating Notebooks if you’re not sure how to do this.

    • -
    -
  6. -
  7. Write Your Code.

    -
      -
    • Now it’s time to write your code! You can use any programming language or framework that is supported by Kaggle. The goal is to create a model that can make predictions on the test set.

    • -
    -
  8. -
  9. Submit Your Prediction.

    -
      -
    • Once you are happy with your model, you can submit your prediction to the competition. You can do this using the kaggle competitions submit command:

    • -
    -
    kaggle competitions submit -c <competition-name> -k <username>/<notebook-slug> -m <message>
    -
    -
    -
      -
    • Replace <competition-name> with the name of the competition, <username>/<notebook-slug> with the identifier of your notebook, and <message> with a brief description of your submission.

    • -
    -
  10. -
  11. Check Your Score.

    -
      -
    • After you have submitted your prediction, you can check your score on the competition leaderboard. The leaderboard shows the scores of all the participants in the competition. You can download the leaderboard using the kaggle competitions leaderboard command:

    • -
    -
    kaggle competitions leaderboard <competition-name>
    -
    -
    -
  12. -
-
-
- - -
- -
-
- -
-
- - - - - - - \ No newline at end of file From 0691c9f826c6bf0539008a8a6c821860581d8d09 Mon Sep 17 00:00:00 2001 From: Steve Messick Date: Fri, 14 Nov 2025 20:10:20 +0000 Subject: [PATCH 3/3] cleanup --- documentation/conf.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/documentation/conf.py b/documentation/conf.py index a42b43a..858da47 100644 --- a/documentation/conf.py +++ b/documentation/conf.py @@ -62,8 +62,7 @@ def setup(app): html_theme = "alabaster" autoclass_content = "both" -autosectionlabel_prefix_document = True # ?? -myst_heading_anchors = 2 # ?? +myst_heading_anchors = 2 suppress_warnings = ["ref.unknown"] # -- Options for sphinx.ext.apidoc -------------------------------------------