Skip to content

Commit f43fc40

Browse files
Merge pull request #51 from vbossica/move_initialization
Move providers initialization inside ProviderClient
2 parents 3aa3686 + cad067e commit f43fc40

File tree

4 files changed

+27
-41
lines changed

4 files changed

+27
-41
lines changed

python_gpt_po/main.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
from .models.provider_clients import ProviderClients
1717
from .services.model_manager import ModelManager
1818
from .services.translation_service import TranslationService
19-
from .utils.cli import (auto_select_provider, create_language_mapping, get_api_keys_from_args, get_provider_from_args,
20-
parse_args, parse_languages, show_help_and_exit, validate_provider_key)
19+
from .utils.cli import (auto_select_provider, create_language_mapping, get_provider_from_args, parse_args,
20+
parse_languages, show_help_and_exit, validate_provider_key)
2121

2222

2323
def setup_logging():
@@ -44,12 +44,9 @@ def initialize_provider(args: Namespace) -> tuple[ProviderClients, ModelProvider
4444
Raises:
4545
SystemExit: If no valid provider can be found or initialized
4646
"""
47-
# Get API keys from arguments and environment variables
48-
api_keys = get_api_keys_from_args(args)
49-
5047
# Initialize provider clients
5148
provider_clients = ProviderClients()
52-
provider_clients.initialize_clients(args, api_keys)
49+
api_keys = provider_clients.initialize_clients(args)
5350

5451
# Get provider from arguments or auto-select
5552
provider = get_provider_from_args(args)

python_gpt_po/models/enums.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,4 @@ class ModelProvider(Enum):
1313
AZURE_OPENAI = "azure_openai"
1414

1515

16-
ModelProviderList = [
17-
ModelProvider.OPENAI.value,
18-
ModelProvider.ANTHROPIC.value,
19-
ModelProvider.DEEPSEEK.value,
20-
ModelProvider.AZURE_OPENAI.value
21-
]
16+
ModelProviderList = [provider.value for provider in ModelProvider]

python_gpt_po/models/provider_clients.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,20 @@ def __init__(self):
2222
self.deepseek_api_key = None
2323
self.deepseek_base_url = "https://api.deepseek.com/v1"
2424

25-
def initialize_clients(self, args: Namespace, api_keys: Dict[str, str]):
25+
def initialize_clients(self, args: Namespace) -> Dict[str, str]:
2626
"""Initialize API clients for all providers with available keys.
2727
2828
Args:
29-
api_keys (Dict[str, str]): Dictionary of provider names to API keys
29+
args (Namespace): Parsed command line arguments
30+
Returns:
31+
Dict[str, str]: Dictionary of API keys for each provider
3032
"""
31-
if api_keys.get(ModelProvider.OPENAI.value):
32-
self.openai_client = OpenAI(api_key=api_keys[ModelProvider.OPENAI.value])
33+
openai_key = args.openai_key or args.api_key or os.getenv("OPENAI_API_KEY", "")
34+
if openai_key:
35+
self.openai_client = OpenAI(api_key=openai_key)
3336

34-
if api_keys.get(ModelProvider.AZURE_OPENAI.value):
37+
azure_openai_key = args.azure_openai_key or os.getenv("AZURE_OPENAI_API_KEY", "")
38+
if azure_openai_key:
3539
endpoint = args.azure_openai_endpoint or os.getenv("AZURE_OPENAI_ENDPOINT")
3640
if not endpoint:
3741
raise ValueError("Missing Azure OpenAI endpoint.")
@@ -42,12 +46,21 @@ def initialize_clients(self, args: Namespace, api_keys: Dict[str, str]):
4246

4347
self.azure_openai_client = AzureOpenAI(
4448
azure_endpoint=endpoint,
45-
api_key=api_keys[ModelProvider.AZURE_OPENAI.value],
49+
api_key=azure_openai_key,
4650
api_version=api_version
4751
)
4852

49-
if api_keys.get(ModelProvider.ANTHROPIC.value):
50-
self.anthropic_client = Anthropic(api_key=api_keys[ModelProvider.ANTHROPIC.value])
53+
antropic_key = args.anthropic_key or os.getenv("ANTHROPIC_API_KEY", "")
54+
if antropic_key:
55+
self.anthropic_client = Anthropic(api_key=antropic_key)
5156

52-
if api_keys.get(ModelProvider.DEEPSEEK.value):
53-
self.deepseek_api_key = api_keys[ModelProvider.DEEPSEEK.value]
57+
deepseek_key = args.deepseek_key or os.getenv("DEEPSEEK_API_KEY", "")
58+
if deepseek_key:
59+
self.deepseek_api_key = deepseek_key
60+
61+
return {
62+
ModelProvider.OPENAI.value: openai_key,
63+
ModelProvider.ANTHROPIC.value: antropic_key,
64+
ModelProvider.DEEPSEEK.value: deepseek_key,
65+
ModelProvider.AZURE_OPENAI.value: azure_openai_key,
66+
}

python_gpt_po/utils/cli.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
including argument definitions, help text generation, and command processing.
55
"""
66
import logging
7-
import os
87
import sys
98
from argparse import ArgumentParser, Namespace, RawDescriptionHelpFormatter
109
from typing import Dict, List, Optional
@@ -259,24 +258,6 @@ def get_provider_from_args(args: Namespace) -> Optional[ModelProvider]:
259258
return None
260259

261260

262-
def get_api_keys_from_args(args: Namespace) -> Dict[str, str]:
263-
"""
264-
Extract API keys from command line arguments and environment variables.
265-
266-
Args:
267-
args (Namespace): Parsed command line arguments
268-
269-
Returns:
270-
Dict[str, str]: Dictionary of provider names to API keys
271-
"""
272-
return {
273-
ModelProvider.OPENAI.value: args.openai_key or args.api_key or os.getenv("OPENAI_API_KEY", ""),
274-
ModelProvider.ANTHROPIC.value: args.anthropic_key or os.getenv("ANTHROPIC_API_KEY", ""),
275-
ModelProvider.DEEPSEEK.value: args.deepseek_key or os.getenv("DEEPSEEK_API_KEY", ""),
276-
ModelProvider.AZURE_OPENAI.value: args.azure_openai_key or os.getenv("AZURE_OPENAI_API_KEY", ""),
277-
}
278-
279-
280261
def auto_select_provider(api_keys: Dict[str, str]) -> Optional[ModelProvider]:
281262
"""
282263
Auto-select a provider based on available API keys.

0 commit comments

Comments
 (0)