Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

Commit fa7ed63

Browse files
Change the imports to absolute instead of relative
They're easier to understand and a better practice
1 parent c0ab0d0 commit fa7ed63

File tree

15 files changed

+104
-96
lines changed

15 files changed

+104
-96
lines changed

src/codegate/__init__.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1-
"""Codegate - A configurable service gateway."""
1+
"""Codegate - A Generative AI security gateway."""
22

3+
from importlib import metadata
34
import logging as python_logging
45

5-
from .config import Config, LogFormat, LogLevel
6-
from .exceptions import ConfigurationError
7-
from .logging import setup_logging
6+
from codegate.config import Config
7+
from codegate.codegate_logging import setup_logging, LogFormat, LogLevel
8+
from codegate.exceptions import ConfigurationError
9+
10+
try:
11+
__version__ = metadata.version("codegate")
12+
__description__ = metadata.metadata("codegate")["Summary"]
13+
except metadata.PackageNotFoundError: # pragma: no cover
14+
__version__ = "unknown"
15+
__description__ = "codegate"
816

917
__version__ = "0.1.0"
1018
__description__ = "A configurable service gateway"

src/codegate/cli.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
"""Command-line interface for codegate."""
22

3-
import logging
43
import sys
54
from pathlib import Path
65
from typing import Optional
76

87
import click
98

10-
from .config import Config, ConfigurationError, LogFormat, LogLevel
11-
from .logging import setup_logging
12-
from .server import init_app
9+
from codegate.config import Config, ConfigurationError
10+
from codegate.codegate_logging import setup_logging, LogFormat, LogLevel
11+
from codegate.server import init_app
1312

1413

1514
def validate_port(ctx: click.Context, param: click.Parameter, value: int) -> int:
@@ -110,9 +109,8 @@ def serve(
110109
cli_log_format=log_format,
111110
)
112111

113-
setup_logging(cfg.log_level, cfg.log_format)
114-
logger = logging.getLogger(__name__)
115-
112+
logger = setup_logging(cfg.log_level, cfg.log_format)
113+
print(f'Logger: {logger}')
116114
logger.info(
117115
"Starting server",
118116
extra={
Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,49 @@
11
import datetime
2+
from enum import Enum
23
import json
34
import logging
45
import sys
56
from typing import Any, Optional
67

7-
from .config import LogFormat, LogLevel
8+
9+
class LogLevel(str, Enum):
10+
"""Valid log levels."""
11+
12+
ERROR = "ERROR"
13+
WARNING = "WARNING"
14+
INFO = "INFO"
15+
DEBUG = "DEBUG"
16+
17+
@classmethod
18+
def _missing_(cls, value: str) -> Optional["LogLevel"]:
19+
"""Handle case-insensitive lookup of enum values."""
20+
try:
21+
# Convert to uppercase and look up directly
22+
return cls[value.upper()]
23+
except (KeyError, AttributeError):
24+
raise ValueError(
25+
f"'{value}' is not a valid LogLevel. "
26+
f"Valid levels are: {', '.join(level.value for level in cls)}"
27+
)
28+
29+
30+
class LogFormat(str, Enum):
31+
"""Valid log formats."""
32+
33+
JSON = "JSON"
34+
TEXT = "TEXT"
35+
36+
@classmethod
37+
def _missing_(cls, value: str) -> Optional["LogFormat"]:
38+
"""Handle case-insensitive lookup of enum values."""
39+
try:
40+
# Convert to uppercase and look up directly
41+
return cls[value.upper()]
42+
except (KeyError, AttributeError):
43+
raise ValueError(
44+
f"'{value}' is not a valid LogFormat. "
45+
f"Valid formats are: {', '.join(format.value for format in cls)}"
46+
)
847

948

1049
class JSONFormatter(logging.Formatter):
@@ -126,7 +165,7 @@ def formatTime( # noqa: N802
126165

127166
def setup_logging(
128167
log_level: Optional[LogLevel] = None, log_format: Optional[LogFormat] = None
129-
) -> None:
168+
) -> logging.Logger:
130169
"""Configure the logging system.
131170
132171
Args:
@@ -178,3 +217,5 @@ def setup_logging(
178217
"handlers": ["stdout", "stderr"],
179218
},
180219
)
220+
221+
return logger

src/codegate/config.py

Lines changed: 5 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,54 +2,16 @@
22

33
import os
44
from dataclasses import dataclass, field
5-
from enum import Enum
65
from pathlib import Path
76
from typing import Optional, Union
87

98
import yaml
109

11-
from .exceptions import ConfigurationError
12-
from .prompts import PromptConfig
10+
from codegate.codegate_logging import setup_logging, LogFormat, LogLevel
11+
from codegate.exceptions import ConfigurationError
12+
from codegate.prompts import PromptConfig
1313

14-
15-
class LogLevel(str, Enum):
16-
"""Valid log levels."""
17-
18-
ERROR = "ERROR"
19-
WARNING = "WARNING"
20-
INFO = "INFO"
21-
DEBUG = "DEBUG"
22-
23-
@classmethod
24-
def _missing_(cls, value: str) -> Optional["LogLevel"]:
25-
"""Handle case-insensitive lookup of enum values."""
26-
try:
27-
# Convert to uppercase and look up directly
28-
return cls[value.upper()]
29-
except (KeyError, AttributeError):
30-
raise ValueError(
31-
f"'{value}' is not a valid LogLevel. "
32-
f"Valid levels are: {', '.join(level.value for level in cls)}"
33-
)
34-
35-
36-
class LogFormat(str, Enum):
37-
"""Valid log formats."""
38-
39-
JSON = "JSON"
40-
TEXT = "TEXT"
41-
42-
@classmethod
43-
def _missing_(cls, value: str) -> Optional["LogFormat"]:
44-
"""Handle case-insensitive lookup of enum values."""
45-
try:
46-
# Convert to uppercase and look up directly
47-
return cls[value.upper()]
48-
except (KeyError, AttributeError):
49-
raise ValueError(
50-
f"'{value}' is not a valid LogFormat. "
51-
f"Valid formats are: {', '.join(format.value for format in cls)}"
52-
)
14+
logger = setup_logging()
5315

5416

5517
@dataclass
@@ -219,9 +181,7 @@ def load(
219181
config = cls.from_file(config_path)
220182
except ConfigurationError as e:
221183
# Log warning but continue with defaults
222-
import logging
223-
224-
logging.warning(f"Failed to load config file: {e}")
184+
logger.warning(f"Failed to load config file: {e}")
225185

226186
# Override with environment variables
227187
env_config = cls.from_env()

src/codegate/providers/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from .anthropic.provider import AnthropicProvider
2-
from .base import BaseProvider
3-
from .openai.provider import OpenAIProvider
4-
from .registry import ProviderRegistry
1+
from codegate.providers.anthropic.provider import AnthropicProvider
2+
from codegate.providers.base import BaseProvider
3+
from codegate.providers.openai.provider import OpenAIProvider
4+
from codegate.providers.registry import ProviderRegistry
55

66
__all__ = [
77
"BaseProvider",

src/codegate/providers/anthropic/adapter.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66
)
77
from litellm.types.llms.anthropic import AnthropicResponse
88

9-
from ..base import StreamGenerator
10-
from ..litellmshim import anthropic_stream_generator
11-
from ..litellmshim.litellmshim import BaseAdapter
9+
from codegate.providers.base import StreamGenerator
10+
from codegate.providers.litellmshim import anthropic_stream_generator, BaseAdapter
1211

1312

1413
class AnthropicAdapter(BaseAdapter):

src/codegate/providers/anthropic/provider.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
from fastapi import Header, HTTPException, Request
44

5-
from ..base import BaseProvider
6-
from ..litellmshim.litellmshim import LiteLLmShim
7-
from .adapter import AnthropicAdapter
5+
from codegate.providers.base import BaseProvider
6+
from codegate.providers.litellmshim import LiteLLmShim
7+
from codegate.providers.anthropic.adapter import AnthropicAdapter
88

99

1010
class AnthropicProvider(BaseProvider):

src/codegate/providers/litellmshim/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from .adapter import BaseAdapter
2-
from .generators import anthropic_stream_generator, sse_stream_generator, llamacpp_stream_generator
3-
from .litellmshim import LiteLLmShim
1+
from codegate.providers.litellmshim.adapter import BaseAdapter
2+
from codegate.providers.litellmshim.generators import anthropic_stream_generator, sse_stream_generator
3+
from codegate.providers.litellmshim.litellmshim import LiteLLmShim
44

55
__all__ = [
66
"sse_stream_generator",

src/codegate/providers/litellmshim/litellmshim.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
from fastapi.responses import StreamingResponse
44
from litellm import ModelResponse, acompletion
55

6-
from ..base import BaseCompletionHandler
7-
from .adapter import BaseAdapter
6+
from codegate.providers.base import BaseCompletionHandler
7+
from codegate.providers.litellmshim.adapter import BaseAdapter
88

99

1010
class LiteLLmShim(BaseCompletionHandler):

src/codegate/providers/openai/adapter.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
from litellm import ChatCompletionRequest, ModelResponse
44

5-
from ..base import StreamGenerator
6-
from ..litellmshim import sse_stream_generator
7-
from ..litellmshim.litellmshim import BaseAdapter
5+
from codegate.providers.base import StreamGenerator
6+
from codegate.providers.litellmshim import sse_stream_generator, BaseAdapter
87

98

109
class OpenAIAdapter(BaseAdapter):

0 commit comments

Comments
 (0)