Skip to content

Commit aa97c59

Browse files
authored
cleanup(agents): unified version parameter across agent sources (#713)
* cleanup(agents): unified version parameter across agent sources * increase snapshot test timeout * reinsert version parameter into example code
1 parent 1021c5a commit aa97c59

7 files changed

Lines changed: 68 additions & 38 deletions

File tree

src/runloop_api_client/sdk/async_.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,6 @@ async def create_from_npm(
599599
self,
600600
*,
601601
package_name: str,
602-
npm_version: Optional[str] = None,
603602
registry_url: Optional[str] = None,
604603
agent_setup: Optional[list[str]] = None,
605604
**params: Unpack[SDKAgentCreateParams],
@@ -608,8 +607,6 @@ async def create_from_npm(
608607
609608
:param package_name: NPM package name
610609
:type package_name: str
611-
:param npm_version: NPM version constraint, defaults to None
612-
:type npm_version: Optional[str], optional
613610
:param registry_url: NPM registry URL, defaults to None
614611
:type registry_url: Optional[str], optional
615612
:param agent_setup: Setup commands to run after installation, defaults to None
@@ -625,8 +622,6 @@ async def create_from_npm(
625622
)
626623

627624
npm_config: Npm = {"package_name": package_name}
628-
if npm_version is not None:
629-
npm_config["npm_version"] = npm_version
630625
if registry_url is not None:
631626
npm_config["registry_url"] = registry_url
632627
if agent_setup is not None:
@@ -639,7 +634,6 @@ async def create_from_pip(
639634
self,
640635
*,
641636
package_name: str,
642-
pip_version: Optional[str] = None,
643637
registry_url: Optional[str] = None,
644638
agent_setup: Optional[list[str]] = None,
645639
**params: Unpack[SDKAgentCreateParams],
@@ -648,8 +642,6 @@ async def create_from_pip(
648642
649643
:param package_name: Pip package name
650644
:type package_name: str
651-
:param pip_version: Pip version constraint, defaults to None
652-
:type pip_version: Optional[str], optional
653645
:param registry_url: Pip registry URL, defaults to None
654646
:type registry_url: Optional[str], optional
655647
:param agent_setup: Setup commands to run after installation, defaults to None
@@ -665,8 +657,6 @@ async def create_from_pip(
665657
)
666658

667659
pip_config: Pip = {"package_name": package_name}
668-
if pip_version is not None:
669-
pip_config["pip_version"] = pip_version
670660
if registry_url is not None:
671661
pip_config["registry_url"] = registry_url
672662
if agent_setup is not None:

src/runloop_api_client/sdk/sync.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,6 @@ def create_from_npm(
594594
self,
595595
*,
596596
package_name: str,
597-
npm_version: Optional[str] = None,
598597
registry_url: Optional[str] = None,
599598
agent_setup: Optional[list[str]] = None,
600599
**params: Unpack[SDKAgentCreateParams],
@@ -603,13 +602,11 @@ def create_from_npm(
603602
604603
Example:
605604
>>> agent = runloop.agent.create_from_npm(
606-
... name="my-npm-agent", package_name="@runloop/example-agent", npm_version="^1.0.0"
605+
... name="my-npm-agent", package_name="@runloop/example-agent", version="1.0.0"
607606
... )
608607
609608
:param package_name: NPM package name
610609
:type package_name: str
611-
:param npm_version: NPM version constraint, defaults to None
612-
:type npm_version: Optional[str], optional
613610
:param registry_url: NPM registry URL, defaults to None
614611
:type registry_url: Optional[str], optional
615612
:param agent_setup: Setup commands to run after installation, defaults to None
@@ -625,8 +622,6 @@ def create_from_npm(
625622
)
626623

627624
npm_config: Npm = {"package_name": package_name}
628-
if npm_version is not None:
629-
npm_config["npm_version"] = npm_version
630625
if registry_url is not None:
631626
npm_config["registry_url"] = registry_url
632627
if agent_setup is not None:
@@ -639,7 +634,6 @@ def create_from_pip(
639634
self,
640635
*,
641636
package_name: str,
642-
pip_version: Optional[str] = None,
643637
registry_url: Optional[str] = None,
644638
agent_setup: Optional[list[str]] = None,
645639
**params: Unpack[SDKAgentCreateParams],
@@ -648,13 +642,11 @@ def create_from_pip(
648642
649643
Example:
650644
>>> agent = runloop.agent.create_from_pip(
651-
... name="my-pip-agent", package_name="runloop-example-agent", pip_version=">=1.0.0"
645+
... name="my-pip-agent", package_name="runloop-example-agent", version="1.0.0"
652646
... )
653647
654648
:param package_name: Pip package name
655649
:type package_name: str
656-
:param pip_version: Pip version constraint, defaults to None
657-
:type pip_version: Optional[str], optional
658650
:param registry_url: Pip registry URL, defaults to None
659651
:type registry_url: Optional[str], optional
660652
:param agent_setup: Setup commands to run after installation, defaults to None
@@ -670,8 +662,6 @@ def create_from_pip(
670662
)
671663

672664
pip_config: Pip = {"package_name": package_name}
673-
if pip_version is not None:
674-
pip_config["pip_version"] = pip_version
675665
if registry_url is not None:
676666
pip_config["registry_url"] = registry_url
677667
if agent_setup is not None:
@@ -696,6 +686,7 @@ def create_from_git(
696686
... repository="https://github.com/user/agent-repo",
697687
... ref="main",
698688
... agent_setup=["npm install", "npm run build"],
689+
... version="1.0.0",
699690
... )
700691
701692
:param repository: Git repository URL
@@ -737,7 +728,10 @@ def create_from_object(
737728
>>> obj = runloop.storage_object.upload_from_dir("./my-agent")
738729
>>> # Then create agent from the object
739730
>>> agent = runloop.agent.create_from_object(
740-
... name="my-object-agent", object_id=obj.id, agent_setup=["chmod +x setup.sh", "./setup.sh"]
731+
... name="my-object-agent",
732+
... object_id=obj.id,
733+
... agent_setup=["chmod +x setup.sh", "./setup.sh"],
734+
... version="1.0.0",
741735
... )
742736
743737
:param object_id: Storage object ID

tests/sdk/test_async_ops.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,7 @@ async def test_create(self, mock_async_client: AsyncMock, agent_view: MockAgentV
793793
client = AsyncAgentOps(mock_async_client)
794794
agent = await client.create(
795795
name="test-agent",
796+
version="1.2.3",
796797
)
797798

798799
assert isinstance(agent, AsyncAgent)
@@ -901,6 +902,7 @@ async def test_create_from_npm(self, mock_async_client: AsyncMock, agent_view: M
901902
agent = await client.create_from_npm(
902903
name="test-agent",
903904
package_name="@runloop/example-agent",
905+
version="1.2.3",
904906
)
905907

906908
assert isinstance(agent, AsyncAgent)
@@ -913,6 +915,7 @@ async def test_create_from_npm(self, mock_async_client: AsyncMock, agent_view: M
913915
},
914916
},
915917
name="test-agent",
918+
version="1.2.3",
916919
)
917920

918921
@pytest.mark.asyncio
@@ -926,9 +929,9 @@ async def test_create_from_npm_with_all_options(
926929
agent = await client.create_from_npm(
927930
name="test-agent",
928931
package_name="@runloop/example-agent",
929-
npm_version="1.2.3",
930932
registry_url="https://registry.example.com",
931933
agent_setup=["npm install", "npm run setup"],
934+
version="1.2.3",
932935
extra_headers={"X-Custom": "header"},
933936
)
934937

@@ -939,12 +942,12 @@ async def test_create_from_npm_with_all_options(
939942
"type": "npm",
940943
"npm": {
941944
"package_name": "@runloop/example-agent",
942-
"npm_version": "1.2.3",
943945
"registry_url": "https://registry.example.com",
944946
"agent_setup": ["npm install", "npm run setup"],
945947
},
946948
},
947949
name="test-agent",
950+
version="1.2.3",
948951
extra_headers={"X-Custom": "header"},
949952
)
950953

@@ -957,6 +960,7 @@ async def test_create_from_npm_raises_when_source_provided(self, mock_async_clie
957960
await client.create_from_npm(
958961
name="test-agent",
959962
package_name="@runloop/example-agent",
963+
version="1.2.3",
960964
source={"type": "git", "git": {"repository": "https://github.com/example/repo"}},
961965
)
962966

@@ -969,6 +973,7 @@ async def test_create_from_pip(self, mock_async_client: AsyncMock, agent_view: M
969973
agent = await client.create_from_pip(
970974
name="test-agent",
971975
package_name="runloop-example-agent",
976+
version="1.2.3",
972977
)
973978

974979
assert isinstance(agent, AsyncAgent)
@@ -981,6 +986,7 @@ async def test_create_from_pip(self, mock_async_client: AsyncMock, agent_view: M
981986
},
982987
},
983988
name="test-agent",
989+
version="1.2.3",
984990
)
985991

986992
@pytest.mark.asyncio
@@ -994,9 +1000,9 @@ async def test_create_from_pip_with_all_options(
9941000
agent = await client.create_from_pip(
9951001
name="test-agent",
9961002
package_name="runloop-example-agent",
997-
pip_version="1.2.3",
9981003
registry_url="https://pypi.example.com",
9991004
agent_setup=["pip install extra-deps"],
1005+
version="1.2.3",
10001006
)
10011007

10021008
assert isinstance(agent, AsyncAgent)
@@ -1006,12 +1012,12 @@ async def test_create_from_pip_with_all_options(
10061012
"type": "pip",
10071013
"pip": {
10081014
"package_name": "runloop-example-agent",
1009-
"pip_version": "1.2.3",
10101015
"registry_url": "https://pypi.example.com",
10111016
"agent_setup": ["pip install extra-deps"],
10121017
},
10131018
},
10141019
name="test-agent",
1020+
version="1.2.3",
10151021
)
10161022

10171023
@pytest.mark.asyncio
@@ -1023,6 +1029,7 @@ async def test_create_from_git(self, mock_async_client: AsyncMock, agent_view: M
10231029
agent = await client.create_from_git(
10241030
name="test-agent",
10251031
repository="https://github.com/example/agent-repo",
1032+
version="1.2.3",
10261033
)
10271034

10281035
assert isinstance(agent, AsyncAgent)
@@ -1035,6 +1042,7 @@ async def test_create_from_git(self, mock_async_client: AsyncMock, agent_view: M
10351042
},
10361043
},
10371044
name="test-agent",
1045+
version="1.2.3",
10381046
)
10391047

10401048
@pytest.mark.asyncio
@@ -1050,6 +1058,7 @@ async def test_create_from_git_with_all_options(
10501058
repository="https://github.com/example/agent-repo",
10511059
ref="develop",
10521060
agent_setup=["npm install", "npm run build"],
1061+
version="1.2.3",
10531062
)
10541063

10551064
assert isinstance(agent, AsyncAgent)
@@ -1064,6 +1073,7 @@ async def test_create_from_git_with_all_options(
10641073
},
10651074
},
10661075
name="test-agent",
1076+
version="1.2.3",
10671077
)
10681078

10691079
@pytest.mark.asyncio
@@ -1075,6 +1085,7 @@ async def test_create_from_object(self, mock_async_client: AsyncMock, agent_view
10751085
agent = await client.create_from_object(
10761086
name="test-agent",
10771087
object_id="obj_123",
1088+
version="1.2.3",
10781089
)
10791090

10801091
assert isinstance(agent, AsyncAgent)
@@ -1087,6 +1098,7 @@ async def test_create_from_object(self, mock_async_client: AsyncMock, agent_view
10871098
},
10881099
},
10891100
name="test-agent",
1101+
version="1.2.3",
10901102
)
10911103

10921104
@pytest.mark.asyncio
@@ -1101,6 +1113,7 @@ async def test_create_from_object_with_agent_setup(
11011113
name="test-agent",
11021114
object_id="obj_123",
11031115
agent_setup=["chmod +x setup.sh", "./setup.sh"],
1116+
version="1.2.3",
11041117
)
11051118

11061119
assert isinstance(agent, AsyncAgent)
@@ -1114,6 +1127,7 @@ async def test_create_from_object_with_agent_setup(
11141127
},
11151128
},
11161129
name="test-agent",
1130+
version="1.2.3",
11171131
)
11181132

11191133

0 commit comments

Comments
 (0)