mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-05-04 13:22:39 +02:00
refine code: gloabl context to CONTEXT
This commit is contained in:
parent
ba6793383f
commit
f5bb850f25
18 changed files with 85 additions and 85 deletions
|
|
@ -12,7 +12,7 @@ import pytest
|
|||
|
||||
from metagpt.actions.debug_error import DebugError
|
||||
from metagpt.const import TEST_CODES_FILE_REPO, TEST_OUTPUTS_FILE_REPO
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.schema import RunCodeContext, RunCodeResult
|
||||
|
||||
CODE_CONTENT = '''
|
||||
|
|
@ -117,7 +117,7 @@ if __name__ == '__main__':
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_debug_error():
|
||||
context.src_workspace = context.git_repo.workdir / uuid.uuid4().hex
|
||||
CONTEXT.src_workspace = CONTEXT.git_repo.workdir / uuid.uuid4().hex
|
||||
ctx = RunCodeContext(
|
||||
code_filename="player.py",
|
||||
test_filename="test_player.py",
|
||||
|
|
@ -125,8 +125,8 @@ async def test_debug_error():
|
|||
output_filename="output.log",
|
||||
)
|
||||
|
||||
repo = context.file_repo
|
||||
await repo.save_file(filename=ctx.code_filename, content=CODE_CONTENT, relative_path=context.src_workspace)
|
||||
repo = CONTEXT.file_repo
|
||||
await repo.save_file(filename=ctx.code_filename, content=CODE_CONTENT, relative_path=CONTEXT.src_workspace)
|
||||
await repo.save_file(filename=ctx.test_filename, content=TEST_CONTENT, relative_path=TEST_CODES_FILE_REPO)
|
||||
output_data = RunCodeResult(
|
||||
stdout=";",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import pytest
|
|||
|
||||
from metagpt.actions.design_api import WriteDesign
|
||||
from metagpt.const import PRDS_FILE_REPO
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.schema import Message
|
||||
|
||||
|
|
@ -18,7 +18,7 @@ from metagpt.schema import Message
|
|||
@pytest.mark.asyncio
|
||||
async def test_design_api():
|
||||
inputs = ["我们需要一个音乐播放器,它应该有播放、暂停、上一曲、下一曲等功能。"] # PRD_SAMPLE
|
||||
repo = context.file_repo
|
||||
repo = CONTEXT.file_repo
|
||||
for prd in inputs:
|
||||
await repo.save_file("new_prd.txt", content=prd, relative_path=PRDS_FILE_REPO)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import pytest
|
|||
|
||||
from metagpt.actions.prepare_documents import PrepareDocuments
|
||||
from metagpt.const import DOCS_FILE_REPO, REQUIREMENT_FILENAME
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.schema import Message
|
||||
|
||||
|
||||
|
|
@ -18,12 +18,12 @@ from metagpt.schema import Message
|
|||
async def test_prepare_documents():
|
||||
msg = Message(content="New user requirements balabala...")
|
||||
|
||||
if context.git_repo:
|
||||
context.git_repo.delete_repository()
|
||||
context.git_repo = None
|
||||
if CONTEXT.git_repo:
|
||||
CONTEXT.git_repo.delete_repository()
|
||||
CONTEXT.git_repo = None
|
||||
|
||||
await PrepareDocuments(g_context=context).run(with_messages=[msg])
|
||||
assert context.git_repo
|
||||
doc = await context.file_repo.get_file(filename=REQUIREMENT_FILENAME, relative_path=DOCS_FILE_REPO)
|
||||
await PrepareDocuments(g_context=CONTEXT).run(with_messages=[msg])
|
||||
assert CONTEXT.git_repo
|
||||
doc = await CONTEXT.file_repo.get_file(filename=REQUIREMENT_FILENAME, relative_path=DOCS_FILE_REPO)
|
||||
assert doc
|
||||
assert doc.content == msg.content
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import pytest
|
|||
|
||||
from metagpt.actions.project_management import WriteTasks
|
||||
from metagpt.const import PRDS_FILE_REPO, SYSTEM_DESIGN_FILE_REPO
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.schema import Message
|
||||
from tests.metagpt.actions.mock_json import DESIGN, PRD
|
||||
|
|
@ -18,9 +18,9 @@ from tests.metagpt.actions.mock_json import DESIGN, PRD
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_design_api():
|
||||
await context.file_repo.save_file("1.txt", content=str(PRD), relative_path=PRDS_FILE_REPO)
|
||||
await context.file_repo.save_file("1.txt", content=str(DESIGN), relative_path=SYSTEM_DESIGN_FILE_REPO)
|
||||
logger.info(context.git_repo)
|
||||
await CONTEXT.file_repo.save_file("1.txt", content=str(PRD), relative_path=PRDS_FILE_REPO)
|
||||
await CONTEXT.file_repo.save_file("1.txt", content=str(DESIGN), relative_path=SYSTEM_DESIGN_FILE_REPO)
|
||||
logger.info(CONTEXT.git_repo)
|
||||
|
||||
action = WriteTasks()
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import pytest
|
|||
from metagpt.actions.summarize_code import SummarizeCode
|
||||
from metagpt.config import CONFIG
|
||||
from metagpt.const import SYSTEM_DESIGN_FILE_REPO, TASK_FILE_REPO
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.schema import CodeSummarizeContext
|
||||
|
||||
|
|
@ -178,15 +178,15 @@ class Snake:
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_summarize_code():
|
||||
context.src_workspace = context.git_repo.workdir / "src"
|
||||
await context.file_repo.save_file(filename="1.json", relative_path=SYSTEM_DESIGN_FILE_REPO, content=DESIGN_CONTENT)
|
||||
await context.file_repo.save_file(filename="1.json", relative_path=TASK_FILE_REPO, content=TASK_CONTENT)
|
||||
await context.file_repo.save_file(filename="food.py", relative_path=CONFIG.src_workspace, content=FOOD_PY)
|
||||
await context.file_repo.save_file(filename="game.py", relative_path=CONFIG.src_workspace, content=GAME_PY)
|
||||
await context.file_repo.save_file(filename="main.py", relative_path=CONFIG.src_workspace, content=MAIN_PY)
|
||||
await context.file_repo.save_file(filename="snake.py", relative_path=CONFIG.src_workspace, content=SNAKE_PY)
|
||||
CONTEXT.src_workspace = CONTEXT.git_repo.workdir / "src"
|
||||
await CONTEXT.file_repo.save_file(filename="1.json", relative_path=SYSTEM_DESIGN_FILE_REPO, content=DESIGN_CONTENT)
|
||||
await CONTEXT.file_repo.save_file(filename="1.json", relative_path=TASK_FILE_REPO, content=TASK_CONTENT)
|
||||
await CONTEXT.file_repo.save_file(filename="food.py", relative_path=CONFIG.src_workspace, content=FOOD_PY)
|
||||
await CONTEXT.file_repo.save_file(filename="game.py", relative_path=CONFIG.src_workspace, content=GAME_PY)
|
||||
await CONTEXT.file_repo.save_file(filename="main.py", relative_path=CONFIG.src_workspace, content=MAIN_PY)
|
||||
await CONTEXT.file_repo.save_file(filename="snake.py", relative_path=CONFIG.src_workspace, content=SNAKE_PY)
|
||||
|
||||
src_file_repo = context.git_repo.new_file_repository(relative_path=CONFIG.src_workspace)
|
||||
src_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=CONFIG.src_workspace)
|
||||
all_files = src_file_repo.all_files
|
||||
ctx = CodeSummarizeContext(design_filename="1.json", task_filename="1.json", codes_filenames=all_files)
|
||||
action = SummarizeCode(context=ctx)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ from metagpt.const import (
|
|||
TASK_FILE_REPO,
|
||||
TEST_OUTPUTS_FILE_REPO,
|
||||
)
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.provider.openai_api import OpenAILLM as LLM
|
||||
from metagpt.schema import CodingContext, Document
|
||||
|
|
@ -53,35 +53,35 @@ async def test_write_code_directly():
|
|||
@pytest.mark.asyncio
|
||||
async def test_write_code_deps():
|
||||
# Prerequisites
|
||||
context.src_workspace = context.git_repo.workdir / "snake1/snake1"
|
||||
CONTEXT.src_workspace = CONTEXT.git_repo.workdir / "snake1/snake1"
|
||||
demo_path = Path(__file__).parent / "../../data/demo_project"
|
||||
await context.file_repo.save_file(
|
||||
await CONTEXT.file_repo.save_file(
|
||||
filename="test_game.py.json",
|
||||
content=await aread(str(demo_path / "test_game.py.json")),
|
||||
relative_path=TEST_OUTPUTS_FILE_REPO,
|
||||
)
|
||||
await context.file_repo.save_file(
|
||||
await CONTEXT.file_repo.save_file(
|
||||
filename="20231221155954.json",
|
||||
content=await aread(str(demo_path / "code_summaries.json")),
|
||||
relative_path=CODE_SUMMARIES_FILE_REPO,
|
||||
)
|
||||
await context.file_repo.save_file(
|
||||
await CONTEXT.file_repo.save_file(
|
||||
filename="20231221155954.json",
|
||||
content=await aread(str(demo_path / "system_design.json")),
|
||||
relative_path=SYSTEM_DESIGN_FILE_REPO,
|
||||
)
|
||||
await context.file_repo.save_file(
|
||||
await CONTEXT.file_repo.save_file(
|
||||
filename="20231221155954.json", content=await aread(str(demo_path / "tasks.json")), relative_path=TASK_FILE_REPO
|
||||
)
|
||||
await context.file_repo.save_file(
|
||||
filename="main.py", content='if __name__ == "__main__":\nmain()', relative_path=context.src_workspace
|
||||
await CONTEXT.file_repo.save_file(
|
||||
filename="main.py", content='if __name__ == "__main__":\nmain()', relative_path=CONTEXT.src_workspace
|
||||
)
|
||||
ccontext = CodingContext(
|
||||
filename="game.py",
|
||||
design_doc=await context.file_repo.get_file(
|
||||
design_doc=await CONTEXT.file_repo.get_file(
|
||||
filename="20231221155954.json", relative_path=SYSTEM_DESIGN_FILE_REPO
|
||||
),
|
||||
task_doc=await context.file_repo.get_file(filename="20231221155954.json", relative_path=TASK_FILE_REPO),
|
||||
task_doc=await CONTEXT.file_repo.get_file(filename="20231221155954.json", relative_path=TASK_FILE_REPO),
|
||||
code_doc=Document(filename="game.py", content="", root_path="snake1"),
|
||||
)
|
||||
coding_doc = Document(root_path="snake1", filename="game.py", content=ccontext.json())
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import pytest
|
|||
|
||||
from metagpt.actions import UserRequirement, WritePRD
|
||||
from metagpt.const import DOCS_FILE_REPO, PRDS_FILE_REPO, REQUIREMENT_FILENAME
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.roles.product_manager import ProductManager
|
||||
from metagpt.roles.role import RoleReactMode
|
||||
|
|
@ -33,7 +33,7 @@ async def test_write_prd(new_filename):
|
|||
# Assert the prd is not None or empty
|
||||
assert prd is not None
|
||||
assert prd.content != ""
|
||||
assert context.git_repo.new_file_repository(relative_path=PRDS_FILE_REPO).changed_files
|
||||
assert CONTEXT.git_repo.new_file_repository(relative_path=PRDS_FILE_REPO).changed_files
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import pytest
|
|||
|
||||
from metagpt.actions import WriteDesign, WritePRD
|
||||
from metagpt.const import PRDS_FILE_REPO
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.roles import Architect
|
||||
from metagpt.schema import Message
|
||||
|
|
@ -25,7 +25,7 @@ from tests.metagpt.roles.mock import MockMessages
|
|||
async def test_architect():
|
||||
# Prerequisites
|
||||
filename = uuid.uuid4().hex + ".json"
|
||||
await awrite(context.git_repo.workdir / PRDS_FILE_REPO / filename, data=MockMessages.prd.content)
|
||||
await awrite(CONTEXT.git_repo.workdir / PRDS_FILE_REPO / filename, data=MockMessages.prd.content)
|
||||
|
||||
role = Architect()
|
||||
rsp = await role.run(with_message=Message(content="", cause_by=WritePRD))
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ from pydantic import BaseModel
|
|||
|
||||
from metagpt.actions.skill_action import SkillAction
|
||||
from metagpt.actions.talk_action import TalkAction
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.memory.brain_memory import BrainMemory
|
||||
from metagpt.roles.assistant import Assistant
|
||||
from metagpt.schema import Message
|
||||
|
|
@ -21,7 +21,7 @@ from metagpt.utils.common import any_to_str
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_run():
|
||||
context.kwargs.language = "Chinese"
|
||||
CONTEXT.kwargs.language = "Chinese"
|
||||
|
||||
class Input(BaseModel):
|
||||
memory: BrainMemory
|
||||
|
|
@ -65,7 +65,7 @@ async def test_run():
|
|||
"cause_by": any_to_str(SkillAction),
|
||||
},
|
||||
]
|
||||
context.kwargs.agent_skills = [
|
||||
CONTEXT.kwargs.agent_skills = [
|
||||
{"id": 1, "name": "text_to_speech", "type": "builtin", "config": {}, "enabled": True},
|
||||
{"id": 2, "name": "text_to_image", "type": "builtin", "config": {}, "enabled": True},
|
||||
{"id": 3, "name": "ai_call", "type": "builtin", "config": {}, "enabled": True},
|
||||
|
|
@ -77,8 +77,8 @@ async def test_run():
|
|||
|
||||
for i in inputs:
|
||||
seed = Input(**i)
|
||||
context.kwargs.language = seed.language
|
||||
context.kwargs.agent_description = seed.agent_description
|
||||
CONTEXT.kwargs.language = seed.language
|
||||
CONTEXT.kwargs.agent_description = seed.agent_description
|
||||
role = Assistant(language="Chinese")
|
||||
role.memory = seed.memory # Restore historical conversation content.
|
||||
while True:
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ from metagpt.const import (
|
|||
SYSTEM_DESIGN_FILE_REPO,
|
||||
TASK_FILE_REPO,
|
||||
)
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.logs import logger
|
||||
from metagpt.roles.engineer import Engineer
|
||||
from metagpt.schema import CodingContext, Message
|
||||
|
|
@ -32,19 +32,19 @@ from tests.metagpt.roles.mock import STRS_FOR_PARSING, TASKS, MockMessages
|
|||
async def test_engineer():
|
||||
# Prerequisites
|
||||
rqno = "20231221155954.json"
|
||||
await context.file_repo.save_file(REQUIREMENT_FILENAME, content=MockMessages.req.content)
|
||||
await context.file_repo.save_file(rqno, relative_path=PRDS_FILE_REPO, content=MockMessages.prd.content)
|
||||
await context.file_repo.save_file(
|
||||
await CONTEXT.file_repo.save_file(REQUIREMENT_FILENAME, content=MockMessages.req.content)
|
||||
await CONTEXT.file_repo.save_file(rqno, relative_path=PRDS_FILE_REPO, content=MockMessages.prd.content)
|
||||
await CONTEXT.file_repo.save_file(
|
||||
rqno, relative_path=SYSTEM_DESIGN_FILE_REPO, content=MockMessages.system_design.content
|
||||
)
|
||||
await context.file_repo.save_file(rqno, relative_path=TASK_FILE_REPO, content=MockMessages.json_tasks.content)
|
||||
await CONTEXT.file_repo.save_file(rqno, relative_path=TASK_FILE_REPO, content=MockMessages.json_tasks.content)
|
||||
|
||||
engineer = Engineer()
|
||||
rsp = await engineer.run(Message(content="", cause_by=WriteTasks))
|
||||
|
||||
logger.info(rsp)
|
||||
assert rsp.cause_by == any_to_str(WriteCode)
|
||||
src_file_repo = context.git_repo.new_file_repository(context.src_workspace)
|
||||
src_file_repo = CONTEXT.git_repo.new_file_repository(CONTEXT.src_workspace)
|
||||
assert src_file_repo.changed_files
|
||||
|
||||
|
||||
|
|
@ -116,19 +116,19 @@ async def test_new_coding_context():
|
|||
# Prerequisites
|
||||
demo_path = Path(__file__).parent / "../../data/demo_project"
|
||||
deps = json.loads(await aread(demo_path / "dependencies.json"))
|
||||
dependency = await context.git_repo.get_dependency()
|
||||
dependency = await CONTEXT.git_repo.get_dependency()
|
||||
for k, v in deps.items():
|
||||
await dependency.update(k, set(v))
|
||||
data = await aread(demo_path / "system_design.json")
|
||||
rqno = "20231221155954.json"
|
||||
await awrite(context.git_repo.workdir / SYSTEM_DESIGN_FILE_REPO / rqno, data)
|
||||
await awrite(CONTEXT.git_repo.workdir / SYSTEM_DESIGN_FILE_REPO / rqno, data)
|
||||
data = await aread(demo_path / "tasks.json")
|
||||
await awrite(context.git_repo.workdir / TASK_FILE_REPO / rqno, data)
|
||||
await awrite(CONTEXT.git_repo.workdir / TASK_FILE_REPO / rqno, data)
|
||||
|
||||
context.src_workspace = Path(context.git_repo.workdir) / "game_2048"
|
||||
src_file_repo = context.git_repo.new_file_repository(relative_path=context.src_workspace)
|
||||
task_file_repo = context.git_repo.new_file_repository(relative_path=TASK_FILE_REPO)
|
||||
design_file_repo = context.git_repo.new_file_repository(relative_path=SYSTEM_DESIGN_FILE_REPO)
|
||||
CONTEXT.src_workspace = Path(CONTEXT.git_repo.workdir) / "game_2048"
|
||||
src_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=CONTEXT.src_workspace)
|
||||
task_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=TASK_FILE_REPO)
|
||||
design_file_repo = CONTEXT.git_repo.new_file_repository(relative_path=SYSTEM_DESIGN_FILE_REPO)
|
||||
|
||||
filename = "game.py"
|
||||
ctx_doc = await Engineer._new_coding_doc(
|
||||
|
|
@ -149,8 +149,8 @@ async def test_new_coding_context():
|
|||
assert ctx.task_doc.content
|
||||
assert ctx.code_doc
|
||||
|
||||
context.git_repo.add_change({f"{TASK_FILE_REPO}/{rqno}": ChangeType.UNTRACTED})
|
||||
context.git_repo.commit("mock env")
|
||||
CONTEXT.git_repo.add_change({f"{TASK_FILE_REPO}/{rqno}": ChangeType.UNTRACTED})
|
||||
CONTEXT.git_repo.commit("mock env")
|
||||
await src_file_repo.save(filename=filename, content="content")
|
||||
role = Engineer()
|
||||
assert not role.code_todos
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ from pydantic import Field
|
|||
|
||||
from metagpt.actions import DebugError, RunCode, WriteTest
|
||||
from metagpt.actions.summarize_code import SummarizeCode
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.environment import Environment
|
||||
from metagpt.roles import QaEngineer
|
||||
from metagpt.schema import Message
|
||||
|
|
@ -23,10 +23,10 @@ from metagpt.utils.common import any_to_str, aread, awrite
|
|||
async def test_qa():
|
||||
# Prerequisites
|
||||
demo_path = Path(__file__).parent / "../../data/demo_project"
|
||||
context.src_workspace = Path(context.git_repo.workdir) / "qa/game_2048"
|
||||
CONTEXT.src_workspace = Path(CONTEXT.git_repo.workdir) / "qa/game_2048"
|
||||
data = await aread(filename=demo_path / "game.py", encoding="utf-8")
|
||||
await awrite(filename=context.src_workspace / "game.py", data=data, encoding="utf-8")
|
||||
await awrite(filename=Path(context.git_repo.workdir) / "requirements.txt", data="")
|
||||
await awrite(filename=CONTEXT.src_workspace / "game.py", data=data, encoding="utf-8")
|
||||
await awrite(filename=Path(CONTEXT.git_repo.workdir) / "requirements.txt", data="")
|
||||
|
||||
class MockEnv(Environment):
|
||||
msgs: List[Message] = Field(default_factory=list)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from typing import Dict, Optional
|
|||
import pytest
|
||||
from pydantic import BaseModel
|
||||
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.roles.teacher import Teacher
|
||||
from metagpt.schema import Message
|
||||
|
||||
|
|
@ -97,8 +97,8 @@ async def test_new_file_name():
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_run():
|
||||
context.kwargs.language = "Chinese"
|
||||
context.kwargs.teaching_language = "English"
|
||||
CONTEXT.kwargs.language = "Chinese"
|
||||
CONTEXT.kwargs.teaching_language = "English"
|
||||
lesson = """
|
||||
UNIT 1 Making New Friends
|
||||
TOPIC 1 Welcome to China!
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
@File : test_context.py
|
||||
"""
|
||||
from metagpt.configs.llm_config import LLMType
|
||||
from metagpt.context import AttrDict, Context, context
|
||||
from metagpt.context import CONTEXT, AttrDict, Context
|
||||
|
||||
|
||||
def test_attr_dict_1():
|
||||
|
|
@ -52,11 +52,11 @@ def test_context_1():
|
|||
|
||||
|
||||
def test_context_2():
|
||||
llm = context.config.get_openai_llm()
|
||||
llm = CONTEXT.config.get_openai_llm()
|
||||
assert llm is not None
|
||||
assert llm.api_type == LLMType.OPENAI
|
||||
|
||||
kwargs = context.kwargs
|
||||
kwargs = CONTEXT.kwargs
|
||||
assert kwargs is not None
|
||||
|
||||
kwargs.test_key = "test_value"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ from pathlib import Path
|
|||
import pytest
|
||||
|
||||
from metagpt.actions import UserRequirement
|
||||
from metagpt.context import context
|
||||
from metagpt.context import CONTEXT
|
||||
from metagpt.environment import Environment
|
||||
from metagpt.logs import logger
|
||||
from metagpt.roles import Architect, ProductManager, Role
|
||||
|
|
@ -46,9 +46,9 @@ def test_get_roles(env: Environment):
|
|||
|
||||
@pytest.mark.asyncio
|
||||
async def test_publish_and_process_message(env: Environment):
|
||||
if context.git_repo:
|
||||
context.git_repo.delete_repository()
|
||||
context.git_repo = None
|
||||
if CONTEXT.git_repo:
|
||||
CONTEXT.git_repo.delete_repository()
|
||||
CONTEXT.git_repo = None
|
||||
|
||||
product_manager = ProductManager(name="Alice", profile="Product Manager", goal="做AI Native产品", constraints="资源有限")
|
||||
architect = Architect(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue