icodes


Nameicodes JSON
Version 0.1.4 PyPI version JSON
download
home_pagehttps://github.com/a115/iCODES
SummaryLLM-powered Git archeology tool (a.k.a. Intelligent Commit Ontology Distiller and Enhanced Search)
upload_time2024-05-19 15:33:09
maintainerNone
docs_urlNone
authorJordan Dimov
requires_python<4.0,>=3.11
licenseCC0-1.0
keywords git llm archeology commit search
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # iCODES: LLM-powered Git archeology
## a.k.a. Intelligent Commit Ontology Distiller and Enhanced Search

iCODES is an innovative tool that leverages LLM techniques to analyse and index Git commit histories in context. By intelligently summarizing commit intents and enabling powerful semantic search, iCODES empowers developers to understand and navigate codebases more efficiently. 

## Features

* Intelligent commit analysis powered by large language models
* Semantic search (coming soon) to find relevant commits and code changes
* Flexible search options to filter by author, file path, and date range
* Commit timeline visualisation
* Insight extraction to identify trends and patterns in code evolution
* CLI and web-based UI (comming soon)

## Installation

iCODES requires Python 3.11 or higher. 

    pip install icodes

Since the only supported LLM backend right now is OpenAI, you will need to export your OpenAI API key to the environment variable `OPENAI_API_KEY`. You can also set the `DEFAULT_MODEL` environment variable to the GPT model you wish to use (default value is "gpt-3.5-turbo" for a reasonable price / quality ratio.)

### Alternative installation 

Or clone the repo:

    git clone https://github.com/a115/iCODES.git

It is recommended to use Poetry for dependency management. To install the dependencies, run: 

    poetry install

If this method is used, prefix all commands with `poetry run python icodes.py` (instead of `icodes`) to run the iCODES commands.

## Usage

### Inspecting a Repository

To inspect a repository with iCODES, run:

    icodes inspect-repo /path/to/repo [--branch-name BRANCH_NAME]

Replace /path/to/repo with the path to the Git repository you want to analyse. You can optionally specify a branch name using the --branch-name flag. If no branch is provided, iCODES will use the current branch for the repository.

iCODES will analyse the latest commit on the specified branch and log the changes.


### Building an Index

To build an index for a Git repository with iCODES, run the following command:

    icodes build-index <path-to-repo>

This will generate an indexed database of commit insights. 

### Searching Commits

iCODES provides a powerful search interface to find relevant commits based on various criteria. To search the indexed commit data, use the following command:

    icodes search <query> [--author AUTHOR] [--file FILE] [--start-date START_DATE] [--end-date END_DATE]

- `<query>`: The search query string to match against commit messages and details.
- `--author AUTHOR`: Filter commits by the specified author.
- `--file FILE`: Filter commits that modified the specified file path.
- `--start-date START_DATE`: Filter commits after the specified date (YYYY-MM-DD).
- `--end-date END_DATE`: Filter commits before the specified date (YYYY-MM-DD).

Example usage:

    icodes search "bug fix" --author "Jane Doe" --file "src/main.py" --start-date "2023-01-01" --end-date "2023-12-31"

This command will search for commits containing the phrase "bug fix" authored by "John Doe", modifying the file "src/main.py", between the dates "2023-01-01" and "2023-12-31".

### Suggesting a commit for the currently staged changes

You can now use the `suggest-commit-message` command to analyse the currently staged changes and suggest a commit message:

    icodes suggest_commit_message /path/to/repo

This command will retrieve the staged changes, format them into a commit-like format, and then use the LLM to analyse the changes and suggest a commit message.

The suggested commit message and the detailed analysis will be displayed in the console output.


## Contributing

We welcome contributions to iCODES!

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/a115/iCODES",
    "name": "icodes",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": "git, llm, archeology, commit, search",
    "author": "Jordan Dimov",
    "author_email": "jdimov@a115.co.uk",
    "download_url": "https://files.pythonhosted.org/packages/d5/4b/da0a6bf00be8db6d3e10a733de61d42a680536f8e3f4c1f4703b5cddf49f/icodes-0.1.4.tar.gz",
    "platform": null,
    "description": "# iCODES: LLM-powered Git archeology\n## a.k.a. Intelligent Commit Ontology Distiller and Enhanced Search\n\niCODES is an innovative tool that leverages LLM techniques to analyse and index Git commit histories in context. By intelligently summarizing commit intents and enabling powerful semantic search, iCODES empowers developers to understand and navigate codebases more efficiently. \n\n## Features\n\n* Intelligent commit analysis powered by large language models\n* Semantic search (coming soon) to find relevant commits and code changes\n* Flexible search options to filter by author, file path, and date range\n* Commit timeline visualisation\n* Insight extraction to identify trends and patterns in code evolution\n* CLI and web-based UI (comming soon)\n\n## Installation\n\niCODES requires Python 3.11 or higher. \n\n    pip install icodes\n\nSince the only supported LLM backend right now is OpenAI, you will need to export your OpenAI API key to the environment variable `OPENAI_API_KEY`. You can also set the `DEFAULT_MODEL` environment variable to the GPT model you wish to use (default value is \"gpt-3.5-turbo\" for a reasonable price / quality ratio.)\n\n### Alternative installation \n\nOr clone the repo:\n\n    git clone https://github.com/a115/iCODES.git\n\nIt is recommended to use Poetry for dependency management. To install the dependencies, run: \n\n    poetry install\n\nIf this method is used, prefix all commands with `poetry run python icodes.py` (instead of `icodes`) to run the iCODES commands.\n\n## Usage\n\n### Inspecting a Repository\n\nTo inspect a repository with iCODES, run:\n\n    icodes inspect-repo /path/to/repo [--branch-name BRANCH_NAME]\n\nReplace /path/to/repo with the path to the Git repository you want to analyse. You can optionally specify a branch name using the --branch-name flag. If no branch is provided, iCODES will use the current branch for the repository.\n\niCODES will analyse the latest commit on the specified branch and log the changes.\n\n\n### Building an Index\n\nTo build an index for a Git repository with iCODES, run the following command:\n\n    icodes build-index <path-to-repo>\n\nThis will generate an indexed database of commit insights. \n\n### Searching Commits\n\niCODES provides a powerful search interface to find relevant commits based on various criteria. To search the indexed commit data, use the following command:\n\n    icodes search <query> [--author AUTHOR] [--file FILE] [--start-date START_DATE] [--end-date END_DATE]\n\n- `<query>`: The search query string to match against commit messages and details.\n- `--author AUTHOR`: Filter commits by the specified author.\n- `--file FILE`: Filter commits that modified the specified file path.\n- `--start-date START_DATE`: Filter commits after the specified date (YYYY-MM-DD).\n- `--end-date END_DATE`: Filter commits before the specified date (YYYY-MM-DD).\n\nExample usage:\n\n    icodes search \"bug fix\" --author \"Jane Doe\" --file \"src/main.py\" --start-date \"2023-01-01\" --end-date \"2023-12-31\"\n\nThis command will search for commits containing the phrase \"bug fix\" authored by \"John Doe\", modifying the file \"src/main.py\", between the dates \"2023-01-01\" and \"2023-12-31\".\n\n### Suggesting a commit for the currently staged changes\n\nYou can now use the `suggest-commit-message` command to analyse the currently staged changes and suggest a commit message:\n\n    icodes suggest_commit_message /path/to/repo\n\nThis command will retrieve the staged changes, format them into a commit-like format, and then use the LLM to analyse the changes and suggest a commit message.\n\nThe suggested commit message and the detailed analysis will be displayed in the console output.\n\n\n## Contributing\n\nWe welcome contributions to iCODES!\n",
    "bugtrack_url": null,
    "license": "CC0-1.0",
    "summary": "LLM-powered Git archeology tool (a.k.a. Intelligent Commit Ontology Distiller and Enhanced Search)",
    "version": "0.1.4",
    "project_urls": {
        "Documentation": "https://github.com/a115/iCODES",
        "Homepage": "https://github.com/a115/iCODES",
        "Repository": "https://github.com/a115/iCODES"
    },
    "split_keywords": [
        "git",
        " llm",
        " archeology",
        " commit",
        " search"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8feb462f6a1a58bab22ca206d5f4665224628e61f02330371169c52e50ae751f",
                "md5": "462e22157a4923170db3beb5d7f64e5f",
                "sha256": "81223637e69379dabafb1ddb01bfcf2c69632285eb5b093d81c0ca7e48e144a4"
            },
            "downloads": -1,
            "filename": "icodes-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "462e22157a4923170db3beb5d7f64e5f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 11776,
            "upload_time": "2024-05-19T15:33:07",
            "upload_time_iso_8601": "2024-05-19T15:33:07.810365Z",
            "url": "https://files.pythonhosted.org/packages/8f/eb/462f6a1a58bab22ca206d5f4665224628e61f02330371169c52e50ae751f/icodes-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d54bda0a6bf00be8db6d3e10a733de61d42a680536f8e3f4c1f4703b5cddf49f",
                "md5": "824a351a4d5f0fbd53af6571e64e72a8",
                "sha256": "179e69e93ce6b8ff05b0493239ecf51bf781404e7b6588c5a5d9c9d22cd828af"
            },
            "downloads": -1,
            "filename": "icodes-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "824a351a4d5f0fbd53af6571e64e72a8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 11162,
            "upload_time": "2024-05-19T15:33:09",
            "upload_time_iso_8601": "2024-05-19T15:33:09.401754Z",
            "url": "https://files.pythonhosted.org/packages/d5/4b/da0a6bf00be8db6d3e10a733de61d42a680536f8e3f4c1f4703b5cddf49f/icodes-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-19 15:33:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "a115",
    "github_project": "iCODES",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "icodes"
}
        
Elapsed time: 3.02476s