# GPTComet: AI-Powered Git Commit Message Generator
[![PyPI version](https://img.shields.io/pypi/v/gptcomet?style=for-the-badge)](https://pypi.org/project/gptcomet/)
[![License](https://img.shields.io/github/license/belingud/gptcomet.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)
![Static Badge](https://img.shields.io/badge/language-Python-%233572A5?style=for-the-badge)
![PyPI - Downloads](https://img.shields.io/pypi/dm/gptcomet?logo=pypi&style=for-the-badge)
![Pepy Total Downloads](https://img.shields.io/pepy/dt/gptcomet?style=for-the-badge&logo=python)
<!-- TOC -->
- [Overview](#overview)
- [Features](#features)
- [Installation](#installation)
- [Setup](#setup)
- [Usage](#usage)
- [Commands](#commands)
- [Configuration](#configuration)
- [file_ignore](#file_ignore)
- [provider](#provider)
- [output](#output)
- [console](#console)
- [Supported Keys](#supported-keys)
- [Example](#example)
- [Development](#development)
- [License](#license)
- [Contact](#contact)
<!-- /TOC -->
## Overview
GPTComet is a Python library designed to automate the process of generating commit messages for Git repositories.
It leverages the power of AI to create meaningful commit messages based on the changes made in the codebase.
## Features
* **Automatic Commit Message Generation**: GPTComet can generate commit messages based on the changes made in the code.
* **Support for Multiple Languages**: GPTComet supports multiple languages, including English, Chinese and so on.
* **Customizable Configuration**: GPTComet allows users to customize the configuration to suit their needs, such llm model and prompt.
* **Support for Rich Commit Messages**: GPTComet supports rich commit messages, which include a title, summary, and detailed description.
## Installation
To use GPTComet, you need to have Python installed on your system. You can install the library using pip:
```shell
pip install gptcomet
```
Install use `pipx` on Mac or Linux.
```shell
pipx install gptcomet
```
After installing GPTComet, you will have two commands: `gptcomet` and `gmsg`.
```shell
$ pipx install gptcomet
installed package gptcomet 0.0.3, installed using Python 3.12.3
These apps are now globally available
- gmsg
- gptcomet
done! ✨ 🌟 ✨
```
Install by `uv`
```shell
uv tool install gptcomet
```
## Setup
Before using GPTComet, you need to configure it with your OpenAI API key and other settings.
You can do this by running the following command:
```shell
gmsg config set openai.api_key YOUR_API_KEY
gmsg config set openai.model gpt-4o
```
Replace `YOUR_API_KEY` with your actual API key for the OpenAI provider.
The configuration file will be created at `~/.config/gptcomet/gptcomet.yaml`
Or you can use `gmsg newprovider` to setup a custom provider.
```shell
$ gmsg newprovider
Enter provider name (lowercase) [openai]:
Enter API Base URL: [https://api.openai.com/v1/]: https://api.siliconflow.cn/v1
Enter model name: [text-davinci-003]: Qwen/Qwen2.5-7B-Instruct
Enter API key: ***************************************************
Enter max tokens [1024]:
[GPTComet] Provider silicon configured successfully.
```
## Usage
To use gptcomet, follow these steps:
1. **Install GPTComet**: Install GPTComet through pypi.
2. **Configure GPTComet**: Configure GPTComet with your api_key The configuration file should contain the following keys:
* `provider`: The provider of the language model (default `openai`).
* `api_base`: The base URL of the API (default `https://api.openai.com/v1`).
* `api_key`: The API key for the provider.
* `model`: The model used for generating commit messages (default `text-davinci-003`).
* `retries`: The number of retries for the API request (default `2`).
3. **Run GPTComet**: Run GPTComet using the following command: `gmsg commit`.
If you are using `openai` provider, and finished set `api_key`, you can run `gmsg commit` directly.
## Commands
The following are the available commands for GPTComet:
* `gmsg config`: Config manage commands group.
* `set`: Set a configuration value.
* `get`: Get a configuration value.
* `list`: List all configuration values.
* `reset`: Reset the configuration to its default values.
* `keys`: List all supported keys.
* `append`: Append a value to a configuration key. (List value only, like `fileignore`)
* `remove`: Remove a value from a configuration key. (List value only, like `fileignore`)
* `gmsg commit`: Generate commit message by changes/diff.
* `gmsg newprovider`: Add a new provider.
## Configuration
The configuration file for GPTComet is `gptcomet.yaml`. The file should contain the following keys:
* `file_ignore`: The file to ignore when generating a commit.
* `provider`: The provider of the language model (default `openai`).
* `api_base`: The base URL of the API (default `https://api.openai.com/v1`).
* `api_key`: The API key for the provider.
* `model`: The model used for generating commit messages (default `text-davinci-003`).
* `retries`: The number of retries for the API request (default `2`).
* `proxy`: The proxy URL for the provider.
* `max_tokens`: The maximum number of tokens for the provider.
* `top_p`: The top_p parameter for the provider (default `0.7`).
* `temperature`: The temperature parameter for the provider (default `0.7`).
* `frequency_penalty`: The frequency_penalty parameter for the provider (default `0`).
* `extra_headers`: The extra headers for the provider, json string.
* `answer_path`: The json path for the answer. Default `choices[0].message.content`
* `completion_path`: The url path for the completion api. Default `/chat/completions`
* `prompt`: The prompt for generating commit messages.
* `brief_commit_message`: The prompt for generating brief commit messages.
* `rich_commit_message`: The prompt for generating rich commit messages.
* `translation`: The prompt for translating commit messages to a target language.
* `output`: The output configuration.
* `output.lang`: The language of the commit message (default `en`).
* `output.rich_template`: The template for generating rich commit messages.
### file_ignore
The file to ignore when generating a commit. The default value is
```yaml
- bun.lockb
- Cargo.lock
- composer.lock
- Gemfile.lock
- package-lock.json
- pnpm-lock.yaml
- poetry.lock
- yarn.lock
- pdm.lock
- Pipfile.lock
- '*.py[cod]'
- go.mod
- go.sum
- uv.lock
```
You can add more file_ignore by using the `gmsg config append file_ignore <xxx>` command.
`<xxx>` is same syntax as `gitignore`, like `*.so` to ignore all `.so` suffix files.
### provider
The provider configuration of the language model.
The default provider is `openai`.
Provider config just like:
```yaml
provider: openai
openai:
api_base: https://api.openai.com/v1
api_key: YOUR_API_KEY
model: gpt-4o
retries: 2
max_tokens: 1024
temperature: 0.7
top_p: 0.7
frequency_penalty: 0
extra_headers: {}
answer_path: choices[0].message.content
completion_path: /chat/completions
```
If you are using `openai`, just leave the `api_base` as default. Set your `api_key` in the `config` section.
If you are using an `openai` class provider, or a provider compatible interface, you can set the provider to `openai`.
And set your custom `api_base`, `api_key` and `model`.
For example:
`Openrouter` providers api interface compatible with openai,
you can set provider to `openai` and set `api_base` to `https://openrouter.ai/api/v1`,
`api_key` to your api key from [keys page](https://openrouter.ai/settings/keys)
and `model` to `meta-llama/llama-3.1-8b-instruct:free` or some other you prefer.
```shell
gmsg config set openai.api_base https://openrouter.ai/api/v1
gmsg config set openai.api_key YOUR_API_KEY
gmsg config set openai.model meta-llama/llama-3.1-8b-instruct:free
gmsg config set openai.max_tokens 1024
```
Silicon providers the similar interface with openrouter, so you can set provider to `openai`
and set `api_base` to `https://api.siliconflow.cn/v1`.
**Note that max tokens may vary, and will return an error if it is too large.**
### output
The output configuration of the commit message.
The default output is
```yaml
output:
lang: en
rich_template: "<title>:<summary>\n\n<detail>"
```
You can set `lang` to change the language of the commit message.
Supported languages:
* `en`: English
* `zh-cn`: Simplified Chinese
* `zh-tw`: Traditional Chinese
* `fr`: French
* `vi`: Vietnamese
* `ja`: Japanese
* `ko`: Korean
* `ru`: Russian
* `tr`: Turkish
* `id`: Indonesian
* `th`: Thai
* `de`: German
* `es`: Spanish
* `pt`: Portuguese
* `it`: Italian
* `ar`: Arabic
* `hi`: Hindi
* `el`: Greek
* `pl`: Polish
* `nl`: Dutch
* `sv`: Swedish
* `fi`: Finnish
* `hu`: Hungarian
* `cs`: Czech
* `ro`: Romanian
* `bg`: Bulgarian
* `uk`: Ukrainian
* `he`: Hebrew
* `lt`: Lithuanian
* `la`: Latin
* `ca`: Catalan
* `sr`: Serbian
* `sl`: Slovenian
* `mk`: Macedonian
* `lv`: Latvian
You can set `rich_template` to change the template of the rich commit message.
### console
The console output config.
The default console is
```yaml
console:
verbose: true
```
When `verbose` is true, more information will be printed in the console.
## Supported Keys
You can use `gmsg config keys` to check supported keys.
## Example
Here is an example of how to use GPTComet:
1. When you first set your OpenAI KEY by `gmsg config set openai.api_key YOUR_API_KEY`, it will generate config file at `~/.local/gptcomet/gptcomet.yaml`, includes:
```
provider: "openai"
api_base: "https://api.openai.com/v1"
api_key: "YOUR_API_KEY"
model: "gpt-4o"
retries: 2
output:
lang: "en"
```
2. Run the following command to generate a commit message: `gmsg commit`
3. GPTComet will generate a commit message based on the changes made in the code and display it in the console.
Note: Replace `YOUR_API_KEY` with your actual API key for the provider.
## Development
If you'd like to contribute to GPTComet, feel free to fork this project and submit a pull request.
First, fork the project and clone your repo.
```shell
git clone https://github.com/<yourname>/gptcomet
```
Second, make sure you have `pdm`, you can install by `pip`, `brew` or other way in their [installation](https://github.com/pdm-project/pdm?tab=readme-ov-file#installation) docs
Use `just` command install dependence, `just` is a handy way to save and run project-specific commands, `just` docs [https://github.com/casey/just](https://github.com/casey/just)
```shell
just install
```
Or use `pdm` directly `pdm install`.
Then, you can submit a pull request.
## License
GPTComet is licensed under the MIT License.
## Contact
If you have any questions or suggestions, feel free to contact.
Raw data
{
"_id": null,
"home_page": null,
"name": "gptcomet",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "ai, git, commit, message, ai-powered, commit-message, gptcomet, chatgpt",
"author": null,
"author_email": "belingud <im.victor@qq.com>",
"download_url": "https://files.pythonhosted.org/packages/ae/1e/c4588c7132e86226bcfb7168ee4754fa16ad0fe8f0442a22f32978988d2b/gptcomet-0.1.0.tar.gz",
"platform": null,
"description": "# GPTComet: AI-Powered Git Commit Message Generator\n\n[![PyPI version](https://img.shields.io/pypi/v/gptcomet?style=for-the-badge)](https://pypi.org/project/gptcomet/)\n[![License](https://img.shields.io/github/license/belingud/gptcomet.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n![Static Badge](https://img.shields.io/badge/language-Python-%233572A5?style=for-the-badge)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/gptcomet?logo=pypi&style=for-the-badge)\n![Pepy Total Downloads](https://img.shields.io/pepy/dt/gptcomet?style=for-the-badge&logo=python)\n\n<!-- TOC -->\n- [Overview](#overview)\n- [Features](#features)\n- [Installation](#installation)\n- [Setup](#setup)\n- [Usage](#usage)\n- [Commands](#commands)\n- [Configuration](#configuration)\n - [file_ignore](#file_ignore)\n - [provider](#provider)\n - [output](#output)\n - [console](#console)\n- [Supported Keys](#supported-keys)\n- [Example](#example)\n- [Development](#development)\n- [License](#license)\n- [Contact](#contact)\n<!-- /TOC -->\n\n## Overview\n\nGPTComet is a Python library designed to automate the process of generating commit messages for Git repositories.\nIt leverages the power of AI to create meaningful commit messages based on the changes made in the codebase.\n\n## Features\n\n* **Automatic Commit Message Generation**: GPTComet can generate commit messages based on the changes made in the code.\n* **Support for Multiple Languages**: GPTComet supports multiple languages, including English, Chinese and so on.\n* **Customizable Configuration**: GPTComet allows users to customize the configuration to suit their needs, such llm model and prompt.\n* **Support for Rich Commit Messages**: GPTComet supports rich commit messages, which include a title, summary, and detailed description.\n\n## Installation\n\nTo use GPTComet, you need to have Python installed on your system. You can install the library using pip:\n\n```shell\npip install gptcomet\n```\n\nInstall use `pipx` on Mac or Linux.\n\n```shell\npipx install gptcomet\n```\nAfter installing GPTComet, you will have two commands: `gptcomet` and `gmsg`.\n\n```shell\n$ pipx install gptcomet\n installed package gptcomet 0.0.3, installed using Python 3.12.3\n These apps are now globally available\n - gmsg\n - gptcomet\ndone! \u2728 \ud83c\udf1f \u2728\n```\n\nInstall by `uv`\n\n```shell\nuv tool install gptcomet\n```\n\n## Setup\n\nBefore using GPTComet, you need to configure it with your OpenAI API key and other settings.\nYou can do this by running the following command:\n\n```shell\ngmsg config set openai.api_key YOUR_API_KEY\ngmsg config set openai.model gpt-4o\n```\n\nReplace `YOUR_API_KEY` with your actual API key for the OpenAI provider.\nThe configuration file will be created at `~/.config/gptcomet/gptcomet.yaml`\n\nOr you can use `gmsg newprovider` to setup a custom provider.\n\n```shell\n$ gmsg newprovider\nEnter provider name (lowercase) [openai]:\nEnter API Base URL: [https://api.openai.com/v1/]: https://api.siliconflow.cn/v1\nEnter model name: [text-davinci-003]: Qwen/Qwen2.5-7B-Instruct\nEnter API key: ***************************************************\nEnter max tokens [1024]:\n[GPTComet] Provider silicon configured successfully.\n```\n\n## Usage\n\nTo use gptcomet, follow these steps:\n\n1. **Install GPTComet**: Install GPTComet through pypi.\n2. **Configure GPTComet**: Configure GPTComet with your api_key The configuration file should contain the following keys:\n * `provider`: The provider of the language model (default `openai`).\n * `api_base`: The base URL of the API (default `https://api.openai.com/v1`).\n * `api_key`: The API key for the provider.\n * `model`: The model used for generating commit messages (default `text-davinci-003`).\n * `retries`: The number of retries for the API request (default `2`).\n3. **Run GPTComet**: Run GPTComet using the following command: `gmsg commit`.\n\nIf you are using `openai` provider, and finished set `api_key`, you can run `gmsg commit` directly.\n\n## Commands\n\nThe following are the available commands for GPTComet:\n\n* `gmsg config`: Config manage commands group.\n * `set`: Set a configuration value.\n * `get`: Get a configuration value.\n * `list`: List all configuration values.\n * `reset`: Reset the configuration to its default values.\n * `keys`: List all supported keys.\n * `append`: Append a value to a configuration key. (List value only, like `fileignore`)\n * `remove`: Remove a value from a configuration key. (List value only, like `fileignore`)\n* `gmsg commit`: Generate commit message by changes/diff.\n* `gmsg newprovider`: Add a new provider.\n\n\n## Configuration\n\nThe configuration file for GPTComet is `gptcomet.yaml`. The file should contain the following keys:\n\n* `file_ignore`: The file to ignore when generating a commit.\n* `provider`: The provider of the language model (default `openai`).\n * `api_base`: The base URL of the API (default `https://api.openai.com/v1`).\n * `api_key`: The API key for the provider.\n * `model`: The model used for generating commit messages (default `text-davinci-003`).\n * `retries`: The number of retries for the API request (default `2`).\n * `proxy`: The proxy URL for the provider.\n * `max_tokens`: The maximum number of tokens for the provider.\n * `top_p`: The top_p parameter for the provider (default `0.7`).\n * `temperature`: The temperature parameter for the provider (default `0.7`).\n * `frequency_penalty`: The frequency_penalty parameter for the provider (default `0`).\n * `extra_headers`: The extra headers for the provider, json string.\n * `answer_path`: The json path for the answer. Default `choices[0].message.content`\n * `completion_path`: The url path for the completion api. Default `/chat/completions`\n* `prompt`: The prompt for generating commit messages.\n * `brief_commit_message`: The prompt for generating brief commit messages.\n * `rich_commit_message`: The prompt for generating rich commit messages.\n * `translation`: The prompt for translating commit messages to a target language.\n* `output`: The output configuration.\n * `output.lang`: The language of the commit message (default `en`).\n * `output.rich_template`: The template for generating rich commit messages.\n\n### file_ignore\n\nThe file to ignore when generating a commit. The default value is\n```yaml\n- bun.lockb\n- Cargo.lock\n- composer.lock\n- Gemfile.lock\n- package-lock.json\n- pnpm-lock.yaml\n- poetry.lock\n- yarn.lock\n- pdm.lock\n- Pipfile.lock\n- '*.py[cod]'\n- go.mod\n- go.sum\n- uv.lock\n```\n\nYou can add more file_ignore by using the `gmsg config append file_ignore <xxx>` command.\n`<xxx>` is same syntax as `gitignore`, like `*.so` to ignore all `.so` suffix files.\n\n### provider\n\nThe provider configuration of the language model.\n\nThe default provider is `openai`.\n\nProvider config just like:\n\n```yaml\nprovider: openai\nopenai:\n api_base: https://api.openai.com/v1\n api_key: YOUR_API_KEY\n model: gpt-4o\n retries: 2\n max_tokens: 1024\n temperature: 0.7\n top_p: 0.7\n frequency_penalty: 0\n extra_headers: {}\n answer_path: choices[0].message.content\n completion_path: /chat/completions\n```\n\nIf you are using `openai`, just leave the `api_base` as default. Set your `api_key` in the `config` section.\n\nIf you are using an `openai` class provider, or a provider compatible interface, you can set the provider to `openai`.\nAnd set your custom `api_base`, `api_key` and `model`.\n\nFor example:\n\n`Openrouter` providers api interface compatible with openai,\nyou can set provider to `openai` and set `api_base` to `https://openrouter.ai/api/v1`,\n`api_key` to your api key from [keys page](https://openrouter.ai/settings/keys)\nand `model` to `meta-llama/llama-3.1-8b-instruct:free` or some other you prefer.\n\n```shell\ngmsg config set openai.api_base https://openrouter.ai/api/v1\ngmsg config set openai.api_key YOUR_API_KEY\ngmsg config set openai.model meta-llama/llama-3.1-8b-instruct:free\ngmsg config set openai.max_tokens 1024\n```\n\nSilicon providers the similar interface with openrouter, so you can set provider to `openai`\nand set `api_base` to `https://api.siliconflow.cn/v1`.\n\n**Note that max tokens may vary, and will return an error if it is too large.**\n\n### output\n\nThe output configuration of the commit message.\n\nThe default output is\n```yaml\noutput:\n lang: en\n rich_template: \"<title>:<summary>\\n\\n<detail>\"\n```\n\nYou can set `lang` to change the language of the commit message.\n\nSupported languages:\n\n* `en`: English\n* `zh-cn`: Simplified Chinese\n* `zh-tw`: Traditional Chinese\n* `fr`: French\n* `vi`: Vietnamese\n* `ja`: Japanese\n* `ko`: Korean\n* `ru`: Russian\n* `tr`: Turkish\n* `id`: Indonesian\n* `th`: Thai\n* `de`: German\n* `es`: Spanish\n* `pt`: Portuguese\n* `it`: Italian\n* `ar`: Arabic\n* `hi`: Hindi\n* `el`: Greek\n* `pl`: Polish\n* `nl`: Dutch\n* `sv`: Swedish\n* `fi`: Finnish\n* `hu`: Hungarian\n* `cs`: Czech\n* `ro`: Romanian\n* `bg`: Bulgarian\n* `uk`: Ukrainian\n* `he`: Hebrew\n* `lt`: Lithuanian\n* `la`: Latin\n* `ca`: Catalan\n* `sr`: Serbian\n* `sl`: Slovenian\n* `mk`: Macedonian\n* `lv`: Latvian\n\nYou can set `rich_template` to change the template of the rich commit message.\n\n### console\n\nThe console output config.\n\nThe default console is\n\n```yaml\nconsole:\n verbose: true\n```\n\nWhen `verbose` is true, more information will be printed in the console.\n\n## Supported Keys\n\nYou can use `gmsg config keys` to check supported keys.\n\n## Example\n\nHere is an example of how to use GPTComet:\n\n1. When you first set your OpenAI KEY by `gmsg config set openai.api_key YOUR_API_KEY`, it will generate config file at `~/.local/gptcomet/gptcomet.yaml`, includes:\n ```\n provider: \"openai\"\n api_base: \"https://api.openai.com/v1\"\n api_key: \"YOUR_API_KEY\"\n model: \"gpt-4o\"\n retries: 2\n output:\n lang: \"en\"\n ```\n2. Run the following command to generate a commit message: `gmsg commit`\n3. GPTComet will generate a commit message based on the changes made in the code and display it in the console.\n\nNote: Replace `YOUR_API_KEY` with your actual API key for the provider.\n\n\n## Development\n\nIf you'd like to contribute to GPTComet, feel free to fork this project and submit a pull request.\n\nFirst, fork the project and clone your repo.\n\n```shell\ngit clone https://github.com/<yourname>/gptcomet\n```\n\nSecond, make sure you have `pdm`, you can install by `pip`, `brew` or other way in their [installation](https://github.com/pdm-project/pdm?tab=readme-ov-file#installation) docs\n\nUse `just` command install dependence, `just` is a handy way to save and run project-specific commands, `just` docs [https://github.com/casey/just](https://github.com/casey/just)\n\n```shell\njust install\n```\n\nOr use `pdm` directly `pdm install`.\n\nThen, you can submit a pull request.\n\n## License\n\nGPTComet is licensed under the MIT License.\n\n## Contact\n\nIf you have any questions or suggestions, feel free to contact.\n",
"bugtrack_url": null,
"license": "MIT license",
"summary": "gptcomet: A tool that leverages AI to automatically generate Git commit messages.",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://github.com/belingud/gptcomet",
"Homepage": "https://github.com/belingud/gptcomet",
"Repository": "https://github.com/belingud/gptcomet"
},
"split_keywords": [
"ai",
" git",
" commit",
" message",
" ai-powered",
" commit-message",
" gptcomet",
" chatgpt"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "656d2435b3f0119a79dae2694c408f6192ca967f141ba5980d175a52dc517732",
"md5": "2ca5e8085da9bba3a3e772ded25808e3",
"sha256": "b80772ee29996ebd4cd70516762bfb72e2de9933ef774da6a4a7108a2c2aec67"
},
"downloads": -1,
"filename": "gptcomet-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2ca5e8085da9bba3a3e772ded25808e3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 34552,
"upload_time": "2024-12-12T13:34:51",
"upload_time_iso_8601": "2024-12-12T13:34:51.658132Z",
"url": "https://files.pythonhosted.org/packages/65/6d/2435b3f0119a79dae2694c408f6192ca967f141ba5980d175a52dc517732/gptcomet-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae1ec4588c7132e86226bcfb7168ee4754fa16ad0fe8f0442a22f32978988d2b",
"md5": "6e0bc0294a0e95956db64476e460b085",
"sha256": "280a9674334b194df4d6bcb017acfbeb66fc7312b80fc491029ba4742bd6f012"
},
"downloads": -1,
"filename": "gptcomet-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "6e0bc0294a0e95956db64476e460b085",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 42716,
"upload_time": "2024-12-12T13:34:53",
"upload_time_iso_8601": "2024-12-12T13:34:53.331050Z",
"url": "https://files.pythonhosted.org/packages/ae/1e/c4588c7132e86226bcfb7168ee4754fa16ad0fe8f0442a22f32978988d2b/gptcomet-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-12 13:34:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "belingud",
"github_project": "gptcomet",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "gptcomet"
}