MCPcopy Create free account
hub / github.com/BUPT-GAMMA/MASFactory / Codes

Class Codes

applications/chatdev/chatdev/codes.py:8–185  ·  view source on GitHub ↗

Manages code files, including extraction, updates, rewriting, and version control.

Source from the content-addressed store, hash-verified

6
7
8class Codes:
9 """
10 Manages code files, including extraction, updates, rewriting, and version control.
11 """
12
13 def __init__(self, generated_content: list | dict | None = None):
14 """
15 Initializes the Codes class and stores parsed generated code content in codebooks.
16 Args:
17 generated_content: Generated code content (in string format).
18 """
19 self.directory: str = None # Project directory path
20 self.version: float = 0.0 # Code version
21 self.generated_content: str = generated_content # Generated code content
22 self.codebooks = {} # Stores filename and code content pairs
23
24 def extract_filename_from_code(code):
25 """
26 Extracts filename from code content.
27 Args:
28 code: Code content
29 Returns:
30 file_name: Extracted filename
31 """
32 file_name = ""
33 regex_extract = r"class (\S+?):\n"
34 matches_extract = re.finditer(regex_extract, code, re.DOTALL)
35 for match_extract in matches_extract:
36 file_name = match_extract.group(1)
37 file_name = file_name.lower().split("(")[0] + ".py"
38 return file_name
39
40 def process_code_item(item_dict):
41 """
42 Processes a single code dictionary item, extracting filename and code, and storing them in codebooks.
43 Args:
44 item_dict: Dictionary containing filename and code
45 """
46 filename = item_dict.get("filename", "").lower()
47 code = item_dict.get("code", "")
48 # If code contains __main__, set filename as main.py
49 if "__main__" in code:
50 filename = "main.py"
51 # If filename is not provided, try extracting it from code
52 if filename == "":
53 filename = extract_filename_from_code(code)
54 assert filename != "", "Filename extraction failed"
55 if filename and code:
56 self.codebooks[filename] = self._format_code(code)
57
58 # Parse and store the generated code if content is provided
59 if generated_content:
60 if isinstance(generated_content, list):
61 for item in generated_content:
62 process_code_item(item)
63 elif isinstance(generated_content, dict):
64 process_code_item(generated_content)
65

Callers 3

update_and_rewriteFunction · 0.90
get_attributesFunction · 0.90
_update_codesMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected