Metadata-Version: 2.1
Name: codemie-tools
Version: 0.0.377
Summary: Package with CodeMie tools for AI Agents
Author: CodeMie Team
Author-email: codemie@epam.com
Requires-Python: >=3.12,<4.0
Classifier: Programming Language :: Python :: 3
Requires-Dist: PyGithub (>=2.2.0,<3.0.0)
Requires-Dist: atlassian-python-api (>=3.41.14,<4.0.0)
Requires-Dist: azure-core (>=1.30.2,<2.0.0)
Requires-Dist: azure-devops (==7.1.0b4)
Requires-Dist: azure-identity (>=1.16.0,<2.0.0)
Requires-Dist: boto3 (>=1.34.147,<2.0.0)
Requires-Dist: chardet (>=5.2.0,<6.0.0)
Requires-Dist: clevercsv (>=0.8.3,<0.9.0)
Requires-Dist: codeboxapi (>=0.1.21,<0.2.0)
Requires-Dist: elastic-transport (==8.17.1)
Requires-Dist: elasticsearch (==8.18.1)
Requires-Dist: flake8 (>=7.1.1,<8.0.0)
Requires-Dist: gitpython (>=3.1.32,<4.0.0)
Requires-Dist: google-api-python-client (>=2.137.0,<3.0.0)
Requires-Dist: googlemaps (>=4.10.0,<5.0.0)
Requires-Dist: httpx (>=0.28.1,<0.29.0)
Requires-Dist: influxdb-client (>=1.48.0,<2.0.0)
Requires-Dist: ipykernel (>=6.25.2,<7.0.0)
Requires-Dist: jupyter-kernel-gateway (>=3.0.1,<4.0.0)
Requires-Dist: kubernetes (>=30.1.0,<31.0.0)
Requires-Dist: langchain (==0.3.25)
Requires-Dist: langchain-community (==0.3.24)
Requires-Dist: langchain-core (==0.3.60)
Requires-Dist: langchain-experimental (==0.3.4)
Requires-Dist: langchain-google-community (==2.0.7)
Requires-Dist: langchain-openai (==0.3.17)
Requires-Dist: markdown (>=3.8,<4.0)
Requires-Dist: markdownify (>=0.13.1,<0.14.0)
Requires-Dist: matplotlib (>=3.9.1,<4.0.0)
Requires-Dist: msrest (==0.7.1)
Requires-Dist: openapi-schema-pydantic (>=1.2.4,<2.0.0)
Requires-Dist: opencv-python-headless (>=4.11.0.86,<5.0.0.0)
Requires-Dist: openhands_aci (==0.1.2)
Requires-Dist: pandas (>=2.2.2,<3.0.0)
Requires-Dist: psycopg[binary,pool] (>=3.2.9,<4.0.0)
Requires-Dist: pydantic (>=2.9.2,<3.0.0)
Requires-Dist: pydantic-settings (>=2.5.2,<3.0.0)
Requires-Dist: pymssql (==2.2.11)
Requires-Dist: pymupdf4llm (>=0.0.24,<0.0.25)
Requires-Dist: pymysql (>=1.1.1,<2.0.0)
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
Requires-Dist: python-gitlab (>=4.6.0,<5.0.0)
Requires-Dist: python-pptx (>=1.0.2,<2.0.0)
Requires-Dist: sqlalchemy (>=2.0.35,<3.0.0)
Requires-Dist: tiktoken (>=0.9.0,<0.10.0)
Requires-Dist: wikipedia (>=1.4.0,<2.0.0)
Requires-Dist: zephyr-python-api (>=0.1.0,<0.2.0)
Description-Content-Type: text/markdown

# Codemie Tools

## Overview

Codemie Tools is a comprehensive toolkit designed to simplify and streamline various development tasks. This toolkit provides a set of tools for access management, notification, code quality, data management, version control, project management, research, PDF processing, and image text extraction.

## Installation

To install Codemie Tools, use the following pip command:

```bash
pip install codemie-tools
```

```bash
poetry add codemie-tools
```
For local development, clone the repository and run:

```bash
make install
```

```bash
make build
```


## Usage

### Using `get_toolkit` Function

The `get_toolkit` function is used to get the toolkit instance with the provided configuration. Here is an example of how to use this function:

```python
from codemie_tools.<toolkit_module> import <ToolkitClass>

config = {
    'email': {
        'url': 'smtp.example.com',
        'smtp_username': 'your_username',
        'smtp_password': 'your_password'
    },
    'keycloak': {
        'base_url': 'http://localhost:8080',
        'realm': 'example-realm',
        'client_id': 'example-client-id',
        'client_secret': 'example-client-secret',
        'username': 'admin',
        'password': 'password'
    },
    'sonar_creds': {
        'url': 'http://sonarqube.example.com',
        'sonar_token': 'your_sonar_token',
        'sonar_project_name': 'example_project'
    },
    'elastic': {
        'hosts': ['http://localhost:9200'],
        'username': 'elastic',
        'password': 'password'
    },
    'jira': {
        'url': 'http://jira.example.com',
        'token': 'your_jira_token'
    },
    'confluence': {
        'url': 'http://confluence.example.com',
        'token': 'your_confluence_token'
    },
    'research_config': {
        'google_search_api_key': 'your_google_search_api_key',
        'google_search_cde_id': 'your_google_search_cde_id'
    },
    'root_directory': '/path/to/root_directory',
    'user_id': 'your_user_id',
    'azure_dalle_config': {
        'api_key': 'your_azure_dalle_api_key'
    }
}

toolkit = <ToolkitClass>.get_toolkit(config)
tools = toolkit.get_tools()
```

## Toolkits

### Access Management Toolkit

```python
from codemie_tools.access_management.toolkit import AccessManagementToolkit

config = {
    'keycloak': {
        'base_url': 'http://localhost:8080',
        'realm': 'example-realm',
        'client_id': 'example-client-id',
        'client_secret': 'example-client-secret'
    }
}

toolkit = AccessManagementToolkit.get_toolkit(config)
```

### Notification Toolkit

```python
from codemie_tools.notification.toolkit import NotificationToolkit

config = {
    'email': {
        'url': 'smtp.example.com',
        'smtp_username': 'your_username',
        'smtp_password': 'your_password'
    }
}

toolkit = NotificationToolkit.get_toolkit(config)
```

### Code Toolkit

```python
from codemie_tools.code.sonar.toolkit import SonarToolkit

config = {
    'url': 'http://sonarqube.example.com',
    'sonar_token': 'your_sonar_token',
    'sonar_project_name': 'example_project'
}

toolkit = SonarToolkit.get_toolkit(config)
```

### Data Management Toolkit

```python
from codemie_tools.data_management.toolkit import DataManagementToolkit

config = {
    'elastic': {
        'url': ['http://localhost:9200'],
        'api_key': 'elastic'
    }
}

toolkit = DataManagementToolkit.get_toolkit(config)
```

### Version Control Toolkit

```python
from codemie_tools.vcs.toolkit import VcsToolkit

config = {
    'base_url': 'http://gitlab.example.com',
    'access_token': 'your_gitlab_access_token'
}

toolkit = VcsToolkit.get_toolkit(config)
```

### Project Management Toolkit

```python
from codemie_tools.project_management.toolkit import ProjectManagementToolkit

config = {
    'jira': {
        'url': 'http://jira.example.com',
        'token': 'your_jira_token'
    },
    'confluence': {
        'url': 'http://confluence.example.com',
        'token': 'your_confluence_token'
    }
}

toolkit = ProjectManagementToolkit.get_toolkit(config)
```

### Research Toolkit

```python
from codemie_tools.research.toolkit import ResearchToolkit

config = {
    'google_search_api_key': 'your_google_search_api_key',
    'google_search_cde_id': 'your_google_search_cde_id'
}

toolkit = ResearchToolkit.get_toolkit(config)
```

### File System Toolkit

```python
from codemie_tools.data_management.file_system.toolkit import FileSystemToolkit

config = {
    'root_directory': '/path/to/root_directory',
    'user_id': 'your_user_id',
    'azure_dalle_config': {
        'api_key': 'your_azure_dalle_api_key',
        ...
    }
}

toolkit = FileSystemToolkit.get_toolkit(config)
```

### PDF Processing Toolkit

```python
from codemie_tools.pdf.toolkit import PDFToolkit
from langchain_openai import ChatOpenAI

# Create a vision-capable LLM for OCR capabilities
chat_model = ChatOpenAI(model_name="gpt-4-vision-preview", max_tokens=1000)

# PDF processing without OCR
pdf_toolkit = PDFToolkit.get_toolkit(
    configs={"pdf_bytes": pdf_content_bytes}
)

# PDF processing with OCR capabilities for extracting text from images
pdf_toolkit_with_ocr = PDFToolkit.get_toolkit(
    configs={"pdf_bytes": pdf_content_bytes},
    chat_model=chat_model
)

# Get tools for extracting text, analyzing structure, and performing OCR
tools = pdf_toolkit_with_ocr.get_tools()

# Example usage:
pdf_tool = tools[0]

# Get total pages
total_pages = pdf_tool.execute(pages=[], query="Total_Pages")

# Extract text from pages 1-3
text_content = pdf_tool.execute(pages=[1, 2, 3], query="Text")

# Extract text with metadata
text_with_metadata = pdf_tool.execute(pages=[1], query="Text_with_Metadata")

# Extract text from images using OCR
image_text = pdf_tool.execute(pages=[1, 2], query="OCR_Images")

# Use the dedicated OCR tool for more control
ocr_tool = tools[1]  # Available if a chat_model was provided
specific_image_text = ocr_tool.execute(
    pages=[1],  # Process page 1
    image_indices=[0, 1]  # Only process the first two images on the page
)
```

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

