# 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"
}