cjm-transcription-plugin-gemini


Namecjm-transcription-plugin-gemini JSON
Version 0.0.5 PyPI version JSON
download
home_pagehttps://github.com/cj-mills/cjm-transcription-plugin-gemini
SummaryGoogle Gemini API plugin for the cjm-transcription-plugin-system library - provides speech-to-text transcription with configurable model selection and parameter control.
upload_time2025-10-25 00:34:31
maintainerNone
docs_urlNone
authorChristian J. Mills
requires_python>=3.9
licenseApache Software License 2.0
keywords nbdev jupyter notebook python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # cjm-transcription-plugin-gemini


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Install

``` bash
pip install cjm_transcription_plugin_gemini
```

## Project Structure

    nbs/
    └── plugin.ipynb # Plugin implementation for Google Gemini API transcription

Total: 1 notebook across 1 directory

## Module Dependencies

``` mermaid
graph LR
    plugin[plugin<br/>Gemini Plugin]
```

No cross-module dependencies detected.

## CLI Reference

No CLI commands found in this project.

## Module Overview

Detailed documentation for each module in the project:

### Gemini Plugin (`plugin.ipynb`)

> Plugin implementation for Google Gemini API transcription

#### Import

``` python
from cjm_transcription_plugin_gemini.plugin import (
    GeminiPlugin
)
```

#### Functions

``` python
@patch
def _get_api_key(
    self:GeminiPlugin
) -> str:  # Returns the API key string
    "Get API key from config or environment."
```

``` python
@patch
def _refresh_available_models(
    self:GeminiPlugin
) -> List[str]:  # Returns list of available model names
    "Fetch and filter available models from Gemini API."
```

``` python
@patch
def _update_max_tokens_for_model(
    self:GeminiPlugin,
    model_name: str  # Model name to update tokens for
) -> None
    "Update max_output_tokens config based on the model's token limit."
```

``` python
@patch
def update_config(
    self:GeminiPlugin,
    config: Dict[str, Any]  # New configuration values
) -> None
    "Update plugin configuration, adjusting max_tokens if model changes."
```

``` python
@patch
def _prepare_audio(
    self:GeminiPlugin,
    audio: Union[AudioData, str, Path]  # Audio data object or path to audio file
) -> Tuple[Path, bool]:  # Returns tuple of (processed audio path, whether temp file was created)
    "Prepare audio file for upload."
```

``` python
@patch
def _upload_audio_file(
    self:GeminiPlugin,
    audio_path: Path  # Path to audio file to upload
) -> Any:  # Returns uploaded file object
    "Upload audio file to Gemini API."
```

``` python
@patch
def _delete_uploaded_file(
    self:GeminiPlugin,
    file_name: str  # Name of file to delete
) -> None
    "Delete an uploaded file from Gemini API."
```

``` python
@patch
def cleanup(
    self:GeminiPlugin
) -> None
    "Clean up resources."
```

``` python
@patch
def get_available_models(
    self:GeminiPlugin
) -> List[str]:  # Returns list of available model names
    "Get list of available audio-capable models."
```

``` python
@patch
def get_model_info(
    self:GeminiPlugin,
    model_name: Optional[str] = None  # Model name to get info for, defaults to current model
) -> Dict[str, Any]:  # Returns dict with model information
    "Get information about a specific model including token limits."
```

``` python
@patch
def supports_streaming(
    self:GeminiPlugin
) -> bool:  # Returns True if streaming is supported
    "Check if this plugin supports streaming transcription."
```

``` python
@patch
def execute_stream(
    self:GeminiPlugin,
    audio: Union[AudioData, str, Path],  # Audio data object or path to audio file
    **kwargs  # Additional arguments to override config
) -> Generator[str, None, TranscriptionResult]:  # Yields text chunks, returns final result
    "Stream transcription results chunk by chunk."
```

#### Classes

``` python
class GeminiPlugin:
    def __init__(self):
        """Initialize the Gemini plugin with default configuration."""
        self.logger = logging.getLogger(f"{__name__}.{type(self).__name__}")
        self.config = {}
        self.client = None
        self.available_models = []
        self.model_token_limits = {}  # Store model name -> output_token_limit mapping
        self.uploaded_files = []  # Track uploaded files for cleanup
    
    @property
    def name(
        self
    ) -> str:  # Returns the plugin name identifier
    "Google Gemini API transcription plugin."
    
    def __init__(self):
            """Initialize the Gemini plugin with default configuration."""
            self.logger = logging.getLogger(f"{__name__}.{type(self).__name__}")
            self.config = {}
            self.client = None
            self.available_models = []
            self.model_token_limits = {}  # Store model name -> output_token_limit mapping
            self.uploaded_files = []  # Track uploaded files for cleanup
        
        @property
        def name(
            self
        ) -> str:  # Returns the plugin name identifier
        "Initialize the Gemini plugin with default configuration."
    
    def name(
            self
        ) -> str:  # Returns the plugin name identifier
        "Return the plugin name identifier."
    
    def version(
            self
        ) -> str:  # Returns the plugin version string
        "Return the plugin version string."
    
    def supported_formats(
            self
        ) -> List[str]:  # Returns list of supported audio formats
        "Return list of supported audio file formats."
    
    def get_config_schema(
            current_model: str="gemini-2.5-flash",
            max_tokens: int=65536,
            available_models: List[str]=None
        ) -> Dict[str, Any]:  # Returns JSON schema for configuration validation
        "Return configuration schema for Gemini."
    
    def get_current_config(
            self
        ) -> Dict[str, Any]:  # Returns the merged configuration dictionary
        "Return current configuration."
    
    def initialize(
            self,
            config: Optional[Dict[str, Any]] = None  # Configuration dictionary to override defaults
        ) -> None
        "Initialize the plugin with configuration."
    
    def execute(
            self,
            audio: Union[AudioData, str, Path],  # Audio data object or path to audio file
            **kwargs # Additional arguments to override config
        ) -> TranscriptionResult:  # Returns transcription result object
        "Transcribe audio using Gemini."
    
    def is_available(
            self
        ) -> bool:  # Returns True if the Gemini API is available
        "Check if Gemini API is available."
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cj-mills/cjm-transcription-plugin-gemini",
    "name": "cjm-transcription-plugin-gemini",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "nbdev jupyter notebook python",
    "author": "Christian J. Mills",
    "author_email": "9126128+cj-mills@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/d8/07/914b9aeb95278b3daea47059c25d11d89a3a47f2037bdedfcb069b421872/cjm_transcription_plugin_gemini-0.0.5.tar.gz",
    "platform": null,
    "description": "# cjm-transcription-plugin-gemini\n\n\n<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->\n\n## Install\n\n``` bash\npip install cjm_transcription_plugin_gemini\n```\n\n## Project Structure\n\n    nbs/\n    \u2514\u2500\u2500 plugin.ipynb # Plugin implementation for Google Gemini API transcription\n\nTotal: 1 notebook across 1 directory\n\n## Module Dependencies\n\n``` mermaid\ngraph LR\n    plugin[plugin<br/>Gemini Plugin]\n```\n\nNo cross-module dependencies detected.\n\n## CLI Reference\n\nNo CLI commands found in this project.\n\n## Module Overview\n\nDetailed documentation for each module in the project:\n\n### Gemini Plugin (`plugin.ipynb`)\n\n> Plugin implementation for Google Gemini API transcription\n\n#### Import\n\n``` python\nfrom cjm_transcription_plugin_gemini.plugin import (\n    GeminiPlugin\n)\n```\n\n#### Functions\n\n``` python\n@patch\ndef _get_api_key(\n    self:GeminiPlugin\n) -> str:  # Returns the API key string\n    \"Get API key from config or environment.\"\n```\n\n``` python\n@patch\ndef _refresh_available_models(\n    self:GeminiPlugin\n) -> List[str]:  # Returns list of available model names\n    \"Fetch and filter available models from Gemini API.\"\n```\n\n``` python\n@patch\ndef _update_max_tokens_for_model(\n    self:GeminiPlugin,\n    model_name: str  # Model name to update tokens for\n) -> None\n    \"Update max_output_tokens config based on the model's token limit.\"\n```\n\n``` python\n@patch\ndef update_config(\n    self:GeminiPlugin,\n    config: Dict[str, Any]  # New configuration values\n) -> None\n    \"Update plugin configuration, adjusting max_tokens if model changes.\"\n```\n\n``` python\n@patch\ndef _prepare_audio(\n    self:GeminiPlugin,\n    audio: Union[AudioData, str, Path]  # Audio data object or path to audio file\n) -> Tuple[Path, bool]:  # Returns tuple of (processed audio path, whether temp file was created)\n    \"Prepare audio file for upload.\"\n```\n\n``` python\n@patch\ndef _upload_audio_file(\n    self:GeminiPlugin,\n    audio_path: Path  # Path to audio file to upload\n) -> Any:  # Returns uploaded file object\n    \"Upload audio file to Gemini API.\"\n```\n\n``` python\n@patch\ndef _delete_uploaded_file(\n    self:GeminiPlugin,\n    file_name: str  # Name of file to delete\n) -> None\n    \"Delete an uploaded file from Gemini API.\"\n```\n\n``` python\n@patch\ndef cleanup(\n    self:GeminiPlugin\n) -> None\n    \"Clean up resources.\"\n```\n\n``` python\n@patch\ndef get_available_models(\n    self:GeminiPlugin\n) -> List[str]:  # Returns list of available model names\n    \"Get list of available audio-capable models.\"\n```\n\n``` python\n@patch\ndef get_model_info(\n    self:GeminiPlugin,\n    model_name: Optional[str] = None  # Model name to get info for, defaults to current model\n) -> Dict[str, Any]:  # Returns dict with model information\n    \"Get information about a specific model including token limits.\"\n```\n\n``` python\n@patch\ndef supports_streaming(\n    self:GeminiPlugin\n) -> bool:  # Returns True if streaming is supported\n    \"Check if this plugin supports streaming transcription.\"\n```\n\n``` python\n@patch\ndef execute_stream(\n    self:GeminiPlugin,\n    audio: Union[AudioData, str, Path],  # Audio data object or path to audio file\n    **kwargs  # Additional arguments to override config\n) -> Generator[str, None, TranscriptionResult]:  # Yields text chunks, returns final result\n    \"Stream transcription results chunk by chunk.\"\n```\n\n#### Classes\n\n``` python\nclass GeminiPlugin:\n    def __init__(self):\n        \"\"\"Initialize the Gemini plugin with default configuration.\"\"\"\n        self.logger = logging.getLogger(f\"{__name__}.{type(self).__name__}\")\n        self.config = {}\n        self.client = None\n        self.available_models = []\n        self.model_token_limits = {}  # Store model name -> output_token_limit mapping\n        self.uploaded_files = []  # Track uploaded files for cleanup\n    \n    @property\n    def name(\n        self\n    ) -> str:  # Returns the plugin name identifier\n    \"Google Gemini API transcription plugin.\"\n    \n    def __init__(self):\n            \"\"\"Initialize the Gemini plugin with default configuration.\"\"\"\n            self.logger = logging.getLogger(f\"{__name__}.{type(self).__name__}\")\n            self.config = {}\n            self.client = None\n            self.available_models = []\n            self.model_token_limits = {}  # Store model name -> output_token_limit mapping\n            self.uploaded_files = []  # Track uploaded files for cleanup\n        \n        @property\n        def name(\n            self\n        ) -> str:  # Returns the plugin name identifier\n        \"Initialize the Gemini plugin with default configuration.\"\n    \n    def name(\n            self\n        ) -> str:  # Returns the plugin name identifier\n        \"Return the plugin name identifier.\"\n    \n    def version(\n            self\n        ) -> str:  # Returns the plugin version string\n        \"Return the plugin version string.\"\n    \n    def supported_formats(\n            self\n        ) -> List[str]:  # Returns list of supported audio formats\n        \"Return list of supported audio file formats.\"\n    \n    def get_config_schema(\n            current_model: str=\"gemini-2.5-flash\",\n            max_tokens: int=65536,\n            available_models: List[str]=None\n        ) -> Dict[str, Any]:  # Returns JSON schema for configuration validation\n        \"Return configuration schema for Gemini.\"\n    \n    def get_current_config(\n            self\n        ) -> Dict[str, Any]:  # Returns the merged configuration dictionary\n        \"Return current configuration.\"\n    \n    def initialize(\n            self,\n            config: Optional[Dict[str, Any]] = None  # Configuration dictionary to override defaults\n        ) -> None\n        \"Initialize the plugin with configuration.\"\n    \n    def execute(\n            self,\n            audio: Union[AudioData, str, Path],  # Audio data object or path to audio file\n            **kwargs # Additional arguments to override config\n        ) -> TranscriptionResult:  # Returns transcription result object\n        \"Transcribe audio using Gemini.\"\n    \n    def is_available(\n            self\n        ) -> bool:  # Returns True if the Gemini API is available\n        \"Check if Gemini API is available.\"\n```\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "Google Gemini API plugin for the cjm-transcription-plugin-system library - provides speech-to-text transcription with configurable model selection and parameter control.",
    "version": "0.0.5",
    "project_urls": {
        "Homepage": "https://github.com/cj-mills/cjm-transcription-plugin-gemini"
    },
    "split_keywords": [
        "nbdev",
        "jupyter",
        "notebook",
        "python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b86920d22adc2d3adb57c286632a415227dc8530d49bebe27f29dc6319267cab",
                "md5": "6d459b47be68ef8aeab8e4dd8c99711d",
                "sha256": "fce2dcb271e608fcad36e32547a1d65c718a5912f65a183c5cac003c21cfed7d"
            },
            "downloads": -1,
            "filename": "cjm_transcription_plugin_gemini-0.0.5-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6d459b47be68ef8aeab8e4dd8c99711d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 15944,
            "upload_time": "2025-10-25T00:34:30",
            "upload_time_iso_8601": "2025-10-25T00:34:30.048523Z",
            "url": "https://files.pythonhosted.org/packages/b8/69/20d22adc2d3adb57c286632a415227dc8530d49bebe27f29dc6319267cab/cjm_transcription_plugin_gemini-0.0.5-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d807914b9aeb95278b3daea47059c25d11d89a3a47f2037bdedfcb069b421872",
                "md5": "c9c6f0876cca00d1666ebae982255408",
                "sha256": "92d09f3ddcc333f7513ff49786cb2ab3ed89ea8681a6a4cd490911dee211792d"
            },
            "downloads": -1,
            "filename": "cjm_transcription_plugin_gemini-0.0.5.tar.gz",
            "has_sig": false,
            "md5_digest": "c9c6f0876cca00d1666ebae982255408",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 16910,
            "upload_time": "2025-10-25T00:34:31",
            "upload_time_iso_8601": "2025-10-25T00:34:31.449516Z",
            "url": "https://files.pythonhosted.org/packages/d8/07/914b9aeb95278b3daea47059c25d11d89a3a47f2037bdedfcb069b421872/cjm_transcription_plugin_gemini-0.0.5.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-25 00:34:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cj-mills",
    "github_project": "cjm-transcription-plugin-gemini",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "cjm-transcription-plugin-gemini"
}
        
Elapsed time: 1.46851s