File size: 2,291 Bytes
bd91486
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from dataclasses import dataclass, field
from typing import Dict, Any, List
import json
import os

@dataclass
class CogenConfig:
    # Model settings
    model_name: str = "codegen-16B-multi"
    max_length: int = 2048
    temperature: float = 0.8
    top_p: float = 0.95
    
    # Language settings
    default_language: str = "python"
    supported_languages: List[str] = field(default_factory=lambda: [
        "python",
        "javascript",
        "typescript",
        "java",
        "rust",
        "go",
        "cpp",
        "csharp",
        "php",
        "ruby",
        "kotlin",
        "swift",
        "dart"  # Added dart
    ])
    
    code_style: Dict[str, str] = field(default_factory=lambda: {
        "python": "black",
        "javascript": "prettier",
        "typescript": "prettier",
        "java": "google",
        "rust": "rustfmt",
        "go": "gofmt",
        "cpp": "clang-format",
        "csharp": "dotnet-format",
        "php": "php-cs-fixer",
        "ruby": "rubocop",
        "kotlin": "ktlint",
        "swift": "swiftformat",
        "dart": "dart format"  # Added dart formatter
    })
    
    language_extensions: Dict[str, List[str]] = field(default_factory=lambda: {
        "python": [".py", ".pyi", ".pyx"],
        "javascript": [".js", ".jsx", ".mjs"],
        "typescript": [".ts", ".tsx"],
        "java": [".java"],
        "rust": [".rs"],
        "go": [".go"],
        "cpp": [".cpp", ".hpp", ".cc", ".h"],
        "csharp": [".cs"],
        "php": [".php"],
        "ruby": [".rb"],
        "kotlin": [".kt"],
        "swift": [".swift"],
        "dart": [".dart"]  # Added dart extension
    })
    
    # Generation settings
    add_comments: bool = True
    add_type_hints: bool = True
    add_docstrings: bool = True
    
    # Performance settings
    use_gpu: bool = True
    batch_size: int = 1
    num_workers: int = 4
    
    @classmethod
    def load(cls, config_path: str) -> 'CogenConfig':
        if os.path.exists(config_path):
            with open(config_path, 'r') as f:
                config_dict = json.load(f)
            return cls(**config_dict)
        return cls()
    
    def save(self, config_path: str):
        with open(config_path, 'w') as f:
            json.dump(self.__dict__, f, indent=2)