From be8418613de0fc370f9426227152c3e3ed074923 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Sun, 14 Apr 2024 20:52:36 -0400 Subject: [PATCH 01/18] support agentprofile and environmentprofile serialization --- sotopia/database/__init__.py | 16 ++- sotopia/database/serialization.py | 170 +++++++++++++++++++++++++++++- 2 files changed, 184 insertions(+), 2 deletions(-) diff --git a/sotopia/database/__init__.py b/sotopia/database/__init__.py index 591ab1e2e..b64a57525 100644 --- a/sotopia/database/__init__.py +++ b/sotopia/database/__init__.py @@ -8,9 +8,16 @@ RelationshipType, ) from .serialization import ( + agentprofiles_to_csv, + agentprofiles_to_json, + environmentprofiles_to_csv, + environmentprofiles_to_json, episodes_to_csv, episodes_to_json, get_rewards_from_episode, + jsonl_to_agentprofiles, + jsonl_to_environmentprofiles, + jsonl_to_episodes, ) from .session_transaction import MessageTransaction, SessionTransaction from .waiting_room import MatchingInWaitingRoom @@ -28,7 +35,14 @@ "SessionTransaction", "MessageTransaction", "MatchingInWaitingRoom", + "agentprofiles_to_csv", + "agentprofiles_to_json", + "environmentprofiles_to_csv", + "environmentprofiles_to_json", "episodes_to_csv", "episodes_to_json", - "get_rewards_from_episodes", + "jsonl_to_agentprofiles", + "jsonl_to_environmentprofiles", + "jsonl_to_episodes", + "get_rewards_from_episode", ] diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index 939d988a5..60d2528d7 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -6,7 +6,6 @@ from .logs import EpisodeLog from .persistent_profile import AgentProfile, EnvironmentProfile - class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): episode_id: str = Field(required=True) scenario: str = Field(required=True) @@ -17,6 +16,34 @@ class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): reasoning: str = Field(required=False) rewards: list[dict[str, float]] = Field(required=False) +class AgentProfileWithPersonalInformation(BaseModel): + agent_id: str = Field(required=True) + first_name: str = Field(required=True) + last_name: str = Field(required=True) + age: int = Field(required=True) + occupation: str = Field(required=True) + gender: str = Field(required=True) + gender_pronoun: str = Field(required=True) + public_info: str = Field(required=True) + big_five: str = Field(required=True) + moral_values: list[str] = Field(required=True) + schwartz_personal_values: list[str] = Field(required=True) + personality_and_values: str = Field(required=True) + decision_making_style: str = Field(required=True) + secret: str = Field(required=True) + mbti: str = Field(required=True) + +class EnvironmentProfileWithTwoAgentRequirements(BaseModel): + scenario_id: str = Field(required=True) + codename: str = Field(required=True) + source: str = Field(required=True) + scenario: str = Field(required=True) + agent_goals: list[str] = Field(required=True) + relationship: str = Field(required=True) + age_constraint: str = Field(required=True) + occupation_constraint: str = Field(required=True) + agent_constraint: str = Field(required=True) + def _map_gender_to_adj(gender: str) -> str: gender_to_adj = { @@ -179,6 +206,107 @@ def episodes_to_json( json.dump(dict(data), f) f.write("\n") +def agentprofiles_to_csv( + agent_profiles: list[AgentProfile], csv_file_path: str = "agent_profiles.csv" +) -> None: + """Save agent profiles to a csv file. + + Args: + agent_profiles (list[AgentProfile]): List of agent profiles. + filepath (str, optional): The file path. Defaults to "agent_profiles.csv". + """ + data = { + "agent_id": [profile.pk for profile in agent_profiles], + "first_name": [profile.first_name for profile in agent_profiles], + "last_name": [profile.last_name for profile in agent_profiles], + "age": [profile.age for profile in agent_profiles], + "occupation": [profile.occupation for profile in agent_profiles], + } + df = pd.DataFrame(data) + df.to_csv(csv_file_path, index=False) + + +def agentprofiles_to_jsonl( + agent_profiles: list[AgentProfile], jsonl_file_path: str = "agent_profiles.jsonl" +) -> None: + """Save agent profiles to a json file. + + Args: + agent_profiles (list[AgentProfile]): List of agent profiles. + filepath (str, optional): The file path. Defaults to "agent_profiles.json". + """ + with open(jsonl_file_path, "w") as f: + for profile in agent_profiles: + data = AgentProfileWithPersonalInformation( + agent_id=profile.pk, + first_name=profile.first_name, + last_name=profile.last_name, + age=profile.age, + occupation=profile.occupation, + gender=profile.gender, + gender_pronoun=profile.gender_pronoun, + public_info=profile.public_info, + big_five=profile.big_five, + moral_values=profile.moral_values, + schwartz_personal_values=profile.schwartz_personal_values, + personality_and_values=profile.personality_and_values, + decision_making_style=profile.decision_making_style, + secret=profile.secret, + mbti=profile.mbti + ) + json.dump(dict(data), f) + f.write("\n") + + +def environmentprofiles_to_csv( + environment_profiles: list[EnvironmentProfile], csv_file_path: str = "environment_profiles.csv" +) -> None: + """Save environment profiles to a csv file. + + Args: + environment_profiles (list[EnvironmentProfile]): List of environment profiles. + filepath (str, optional): The file path. Defaults to "environment_profiles.csv". + """ + data = { + "scenario_id": [profile.pk for profile in environment_profiles], + "codename": [profile.codename for profile in environment_profiles], + "source": [profile.source for profile in environment_profiles], + "scenario": [profile.scenario for profile in environment_profiles], + "agent_goals": [profile.agent_goals for profile in environment_profiles], + "relationship": [profile.relationship for profile in environment_profiles], + "age_constraint": [profile.age_constraint for profile in environment_profiles], + "occupation_constraint": [profile.occupation_constraint for profile in environment_profiles], + "agent_constraint": [profile.agent_constraint for profile in environment_profiles], + } + df = pd.DataFrame(data) + df.to_csv(csv_file_path, index=False) + + +def environmentprofiles_to_jsonl( + environment_profiles: list[EnvironmentProfile], jsonl_file_path: str = "environment_profiles.jsonl" +) -> None: + """Save environment profiles to a json file. + + Args: + environment_profiles (list[EnvironmentProfile]): List of environment profiles. + filepath (str, optional): The file path. Defaults to "environment_profiles.json". + """ + with open(jsonl_file_path, "w") as f: + for profile in environment_profiles: + data = EnvironmentProfileWithTwoAgentRequirements( + scenario_id=profile.pk, + codename=profile.codename, + source=profile.source, + scenario=profile.scenario, + agent_goals=profile.agent_goals, + relationship=profile.relationship, + age_constraint=profile.age_constraint, + occupation_constraint=profile.occupation_constraint, + agent_constraint=profile.agent_constraint if profile.agent_constraint else "nan" + ) + json.dump(dict(data), f) + f.write("\n") + def jsonl_to_episodes( jsonl_file_path: str, @@ -198,3 +326,43 @@ def jsonl_to_episodes( episode = TwoAgentEpisodeWithScenarioBackgroundGoals(**data) episodes.append(episode) return episodes + + +def jsonl_to_agentprofiles( + jsonl_file_path: str, +) -> list[AgentProfileWithPersonalInformation]: + """Load agent profiles from a jsonl file. + + Args: + jsonl_file_path (str): The file path. + + Returns: + list[AgentProfileWithPersonalInformation]: List of agent profiles. + """ + agent_profiles = [] + with open(jsonl_file_path, "r") as f: + for line in f: + data = json.loads(line) + agent_profile = AgentProfileWithPersonalInformation(**data) + agent_profiles.append(agent_profile) + return agent_profiles + + +def jsonl_to_environmentprofiles( + jsonl_file_path: str, +) -> list[EnvironmentProfileWithTwoAgentRequirements]: + """Load environment profiles from a jsonl file. + + Args: + jsonl_file_path (str): The file path. + + Returns: + list[EnvironmentProfileWithTwoAgentSettings]: List of environment profiles. + """ + environment_profiles = [] + with open(jsonl_file_path, "r") as f: + for line in f: + data = json.loads(line) + environment_profile = EnvironmentProfileWithTwoAgentRequirements(**data) + environment_profiles.append(environment_profile) + return environment_profiles From 839bfdb343d553120cdb5098a2ef8d08fd724fef Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Sun, 14 Apr 2024 20:54:08 -0400 Subject: [PATCH 02/18] convert json to jsonl --- sotopia/database/__init__.py | 12 ++++++------ sotopia/database/serialization.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/sotopia/database/__init__.py b/sotopia/database/__init__.py index b64a57525..a3343e0cc 100644 --- a/sotopia/database/__init__.py +++ b/sotopia/database/__init__.py @@ -9,11 +9,11 @@ ) from .serialization import ( agentprofiles_to_csv, - agentprofiles_to_json, + agentprofiles_to_jsonl, environmentprofiles_to_csv, - environmentprofiles_to_json, + environmentprofiles_to_jsonl, episodes_to_csv, - episodes_to_json, + episodes_to_jsonl, get_rewards_from_episode, jsonl_to_agentprofiles, jsonl_to_environmentprofiles, @@ -36,11 +36,11 @@ "MessageTransaction", "MatchingInWaitingRoom", "agentprofiles_to_csv", - "agentprofiles_to_json", + "agentprofiles_to_jsonl", "environmentprofiles_to_csv", - "environmentprofiles_to_json", + "environmentprofiles_to_jsonl", "episodes_to_csv", - "episodes_to_json", + "episodes_to_jsonl", "jsonl_to_agentprofiles", "jsonl_to_environmentprofiles", "jsonl_to_episodes", diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index 60d2528d7..bf4f2e7fc 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -178,7 +178,7 @@ def episodes_to_csv( df.to_csv(csv_file_path, index=False) -def episodes_to_json( +def episodes_to_jsonl( episodes: list[EpisodeLog], jsonl_file_path: str = "episodes.jsonl" ) -> None: """Save episodes to a json file. From 02119dff648c898bb218fd6fb64c94700c0dee99 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Sun, 14 Apr 2024 20:54:53 -0400 Subject: [PATCH 03/18] pass pre-commit test --- sotopia/database/serialization.py | 48 ++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index bf4f2e7fc..392d901be 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -6,6 +6,7 @@ from .logs import EpisodeLog from .persistent_profile import AgentProfile, EnvironmentProfile + class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): episode_id: str = Field(required=True) scenario: str = Field(required=True) @@ -16,6 +17,7 @@ class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): reasoning: str = Field(required=False) rewards: list[dict[str, float]] = Field(required=False) + class AgentProfileWithPersonalInformation(BaseModel): agent_id: str = Field(required=True) first_name: str = Field(required=True) @@ -33,6 +35,7 @@ class AgentProfileWithPersonalInformation(BaseModel): secret: str = Field(required=True) mbti: str = Field(required=True) + class EnvironmentProfileWithTwoAgentRequirements(BaseModel): scenario_id: str = Field(required=True) codename: str = Field(required=True) @@ -206,8 +209,10 @@ def episodes_to_jsonl( json.dump(dict(data), f) f.write("\n") + def agentprofiles_to_csv( - agent_profiles: list[AgentProfile], csv_file_path: str = "agent_profiles.csv" + agent_profiles: list[AgentProfile], + csv_file_path: str = "agent_profiles.csv", ) -> None: """Save agent profiles to a csv file. @@ -227,7 +232,8 @@ def agentprofiles_to_csv( def agentprofiles_to_jsonl( - agent_profiles: list[AgentProfile], jsonl_file_path: str = "agent_profiles.jsonl" + agent_profiles: list[AgentProfile], + jsonl_file_path: str = "agent_profiles.jsonl", ) -> None: """Save agent profiles to a json file. @@ -252,14 +258,15 @@ def agentprofiles_to_jsonl( personality_and_values=profile.personality_and_values, decision_making_style=profile.decision_making_style, secret=profile.secret, - mbti=profile.mbti + mbti=profile.mbti, ) json.dump(dict(data), f) f.write("\n") - + def environmentprofiles_to_csv( - environment_profiles: list[EnvironmentProfile], csv_file_path: str = "environment_profiles.csv" + environment_profiles: list[EnvironmentProfile], + csv_file_path: str = "environment_profiles.csv", ) -> None: """Save environment profiles to a csv file. @@ -272,18 +279,29 @@ def environmentprofiles_to_csv( "codename": [profile.codename for profile in environment_profiles], "source": [profile.source for profile in environment_profiles], "scenario": [profile.scenario for profile in environment_profiles], - "agent_goals": [profile.agent_goals for profile in environment_profiles], - "relationship": [profile.relationship for profile in environment_profiles], - "age_constraint": [profile.age_constraint for profile in environment_profiles], - "occupation_constraint": [profile.occupation_constraint for profile in environment_profiles], - "agent_constraint": [profile.agent_constraint for profile in environment_profiles], + "agent_goals": [ + profile.agent_goals for profile in environment_profiles + ], + "relationship": [ + profile.relationship for profile in environment_profiles + ], + "age_constraint": [ + profile.age_constraint for profile in environment_profiles + ], + "occupation_constraint": [ + profile.occupation_constraint for profile in environment_profiles + ], + "agent_constraint": [ + profile.agent_constraint for profile in environment_profiles + ], } df = pd.DataFrame(data) df.to_csv(csv_file_path, index=False) def environmentprofiles_to_jsonl( - environment_profiles: list[EnvironmentProfile], jsonl_file_path: str = "environment_profiles.jsonl" + environment_profiles: list[EnvironmentProfile], + jsonl_file_path: str = "environment_profiles.jsonl", ) -> None: """Save environment profiles to a json file. @@ -302,7 +320,9 @@ def environmentprofiles_to_jsonl( relationship=profile.relationship, age_constraint=profile.age_constraint, occupation_constraint=profile.occupation_constraint, - agent_constraint=profile.agent_constraint if profile.agent_constraint else "nan" + agent_constraint=profile.agent_constraint + if profile.agent_constraint + else "nan", ) json.dump(dict(data), f) f.write("\n") @@ -363,6 +383,8 @@ def jsonl_to_environmentprofiles( with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - environment_profile = EnvironmentProfileWithTwoAgentRequirements(**data) + environment_profile = EnvironmentProfileWithTwoAgentRequirements( + **data + ) environment_profiles.append(environment_profile) return environment_profiles From 6e4ec33741cd3a707c621cbaa7da0bfb66d76c64 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Sun, 14 Apr 2024 21:07:48 -0400 Subject: [PATCH 04/18] add missing attribute --- sotopia/database/persistent_profile.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sotopia/database/persistent_profile.py b/sotopia/database/persistent_profile.py index 2ea0a9e8b..680a335ca 100644 --- a/sotopia/database/persistent_profile.py +++ b/sotopia/database/persistent_profile.py @@ -33,6 +33,7 @@ class AgentProfile(JsonModel): decision_making_style: str = Field(index=True, default_factory=lambda: "") secret: str = Field(default_factory=lambda: "") model_id: str = Field(default_factory=lambda: "") + mbti: str = Field(default_factory=lambda: "") class EnvironmentProfile(JsonModel): From 1ba57ff5509e08d1289a92d323befa21fc8c6fd4 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Mon, 15 Apr 2024 00:51:02 -0400 Subject: [PATCH 05/18] support other serialization --- sotopia/database/__init__.py | 12 +++ sotopia/database/serialization.py | 148 +++++++++++++++++++++++++++++- 2 files changed, 155 insertions(+), 5 deletions(-) diff --git a/sotopia/database/__init__.py b/sotopia/database/__init__.py index a3343e0cc..603af52a8 100644 --- a/sotopia/database/__init__.py +++ b/sotopia/database/__init__.py @@ -14,10 +14,16 @@ environmentprofiles_to_jsonl, episodes_to_csv, episodes_to_jsonl, + relationshipprofiles_to_csv, + relationshipprofiles_to_jsonl, + envagnetcombostorage_to_csv, + envagnetcombostorage_to_jsonl, get_rewards_from_episode, jsonl_to_agentprofiles, jsonl_to_environmentprofiles, jsonl_to_episodes, + jsonl_to_relationshipprofiles, + jsonl_to_envagnetcombostorage ) from .session_transaction import MessageTransaction, SessionTransaction from .waiting_room import MatchingInWaitingRoom @@ -39,10 +45,16 @@ "agentprofiles_to_jsonl", "environmentprofiles_to_csv", "environmentprofiles_to_jsonl", + "relationshipprofiles_to_csv", + "relationshipprofiles_to_jsonl", + "envagnetcombostorage_to_csv", + "envagnetcombostorage_to_jsonl", "episodes_to_csv", "episodes_to_jsonl", "jsonl_to_agentprofiles", "jsonl_to_environmentprofiles", "jsonl_to_episodes", + "jsonl_to_relationshipprofiles", + "jsonl_to_envagnetcombostorage", "get_rewards_from_episode", ] diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index 392d901be..9c16ab63f 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -4,7 +4,8 @@ from pydantic import BaseModel, Field from .logs import EpisodeLog -from .persistent_profile import AgentProfile, EnvironmentProfile +from .persistent_profile import AgentProfile, EnvironmentProfile, RelationshipProfile +from .env_agent_combo_storage import EnvAgentComboStorage class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): @@ -37,7 +38,7 @@ class AgentProfileWithPersonalInformation(BaseModel): class EnvironmentProfileWithTwoAgentRequirements(BaseModel): - scenario_id: str = Field(required=True) + env_id: str = Field(required=True) codename: str = Field(required=True) source: str = Field(required=True) scenario: str = Field(required=True) @@ -48,6 +49,20 @@ class EnvironmentProfileWithTwoAgentRequirements(BaseModel): agent_constraint: str = Field(required=True) +class RelationshipProfileBetweenTwoAgents(BaseModel): + relationship_id: str = Field(required=True) + agent1_id: str = Field(required=True) + agent2_id: str = Field(required=True) + relationship: str = Field(required=True) + background_story: str = Field(required=True) + + +class EnvAgentComboStorageWithID(BaseModel): + combo_id: str = Field(default_factory=lambda: "", index=True) + env_id: str = Field(default_factory=lambda: "", index=True) + agent_ids: list[str] = Field(default_factory=lambda: [], index=True) + + def _map_gender_to_adj(gender: str) -> str: gender_to_adj = { "Man": "male", @@ -275,7 +290,7 @@ def environmentprofiles_to_csv( filepath (str, optional): The file path. Defaults to "environment_profiles.csv". """ data = { - "scenario_id": [profile.pk for profile in environment_profiles], + "env_id": [profile.pk for profile in environment_profiles], "codename": [profile.codename for profile in environment_profiles], "source": [profile.source for profile in environment_profiles], "scenario": [profile.scenario for profile in environment_profiles], @@ -312,7 +327,7 @@ def environmentprofiles_to_jsonl( with open(jsonl_file_path, "w") as f: for profile in environment_profiles: data = EnvironmentProfileWithTwoAgentRequirements( - scenario_id=profile.pk, + env_id=profile.pk, codename=profile.codename, source=profile.source, scenario=profile.scenario, @@ -322,7 +337,92 @@ def environmentprofiles_to_jsonl( occupation_constraint=profile.occupation_constraint, agent_constraint=profile.agent_constraint if profile.agent_constraint - else "nan", + else "none", + ) + json.dump(dict(data), f) + f.write("\n") + + +def relationshipprofiles_to_csv( + relationship_profiles: list[RelationshipProfile], + csv_file_path: str = "relationship_profiles.csv", +) -> None: + """Save relationship profiles to a csv file. + + Args: + relationship_profiles (list[RelationshipProfile]): List of relationship profiles. + filepath (str, optional): The file path. Defaults to "relationship_profiles.csv". + """ + data = { + "relationship_id": [profile.pk for profile in relationship_profiles], + "agent1_id": [profile.agent_1_id for profile in relationship_profiles], + "agent2_id": [profile.agent_2_id for profile in relationship_profiles], + "relationship": [profile.relationship for profile in relationship_profiles], + "background_story": [ + profile.background_story for profile in relationship_profiles + ], + } + df = pd.DataFrame(data) + df.to_csv(csv_file_path, index=False) + + +def envagnetcombostorage_to_csv( + env_agent_combo_storages: list[EnvAgentComboStorage], + csv_file_path: str = "env_agent_combo_storages.csv", +) -> None: + """Save environment-agent combo storages to a csv file. + + Args: + env_agent_combo_storages (list[EnvAgentComboStorage]): List of environment-agent combo storages. + filepath (str, optional): The file path. Defaults to "env_agent_combo_storages.csv". + """ + data = { + "combo_id": [storage.pk for storage in env_agent_combo_storages], + "env_id": [storage.env_id for storage in env_agent_combo_storages], + "agent_ids": [storage.agent_ids for storage in env_agent_combo_storages], + } + df = pd.DataFrame(data) + df.to_csv(csv_file_path, index=False) + + +def relationshipprofiles_to_jsonl( + relationship_profiles: list[RelationshipProfile], + jsonl_file_path: str = "relationship_profiles.jsonl", +) -> None: + """Save relationship profiles to a json file. + + Args: + relationship_profiles (list[RelationshipProfile]): List of relationship profiles. + filepath (str, optional): The file path. Defaults to "relationship_profiles.json". + """ + with open(jsonl_file_path, "w") as f: + for profile in relationship_profiles: + data = RelationshipProfileBetweenTwoAgents( + relationship_id=profile.pk, + agent1_id=profile.agent_1_id, + agent2_id=profile.agent_2_id, + relationship=profile.relationship, + background_story=profile.background_story, + ) + json.dump(dict(data), f) + f.write("\n") + +def envagnetcombostorage_to_jsonl( + env_agent_combo_storages: list[EnvAgentComboStorage], + jsonl_file_path: str = "env_agent_combo_storages.jsonl", +) -> None: + """Save environment-agent combo storages to a json file. + + Args: + env_agent_combo_storages (list[EnvAgentComboStorage]): List of environment-agent combo storages. + filepath (str, optional): The file path. Defaults to "env_agent_combo_storages.json". + """ + with open(jsonl_file_path, "w") as f: + for storage in env_agent_combo_storages: + data = EnvAgentComboStorageWithID( + combo_id=storage.pk, + env_id=storage.env_id, + agent_ids=storage.agent_ids, ) json.dump(dict(data), f) f.write("\n") @@ -388,3 +488,41 @@ def jsonl_to_environmentprofiles( ) environment_profiles.append(environment_profile) return environment_profiles + +def jsonl_to_relationshipprofiles( + jsonl_file_path: str, +) -> list[RelationshipProfileBetweenTwoAgents]: + """Load relationship profiles from a jsonl file. + + Args: + jsonl_file_path (str): The file path. + + Returns: + list[RelationshipProfileBetweenTwoAgents]: List of relationship profiles. + """ + relationship_profiles = [] + with open(jsonl_file_path, "r") as f: + for line in f: + data = json.loads(line) + relationship_profile = RelationshipProfileBetweenTwoAgents(**data) + relationship_profiles.append(relationship_profile) + return relationship_profiles + +def jsonl_to_envagnetcombostorage( + jsonl_file_path: str, +) -> list[EnvAgentComboStorageWithID]: + """Load environment-agent combo storages from a jsonl file. + + Args: + jsonl_file_path (str): The file path. + + Returns: + list[EnvAgentComboStorageWithID]: List of environment-agent combo storages. + """ + env_agent_combo_storages = [] + with open(jsonl_file_path, "r") as f: + for line in f: + data = json.loads(line) + env_agent_combo_storage = EnvAgentComboStorageWithID(**data) + env_agent_combo_storages.append(env_agent_combo_storage) + return env_agent_combo_storages \ No newline at end of file From 46aa57ade6178674e0e7864614ff4697e07f938e Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Mon, 15 Apr 2024 00:51:24 -0400 Subject: [PATCH 06/18] precommit check --- sotopia/database/__init__.py | 10 +++++----- sotopia/database/serialization.py | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/sotopia/database/__init__.py b/sotopia/database/__init__.py index 603af52a8..f8634faab 100644 --- a/sotopia/database/__init__.py +++ b/sotopia/database/__init__.py @@ -10,20 +10,20 @@ from .serialization import ( agentprofiles_to_csv, agentprofiles_to_jsonl, + envagnetcombostorage_to_csv, + envagnetcombostorage_to_jsonl, environmentprofiles_to_csv, environmentprofiles_to_jsonl, episodes_to_csv, episodes_to_jsonl, - relationshipprofiles_to_csv, - relationshipprofiles_to_jsonl, - envagnetcombostorage_to_csv, - envagnetcombostorage_to_jsonl, get_rewards_from_episode, jsonl_to_agentprofiles, + jsonl_to_envagnetcombostorage, jsonl_to_environmentprofiles, jsonl_to_episodes, jsonl_to_relationshipprofiles, - jsonl_to_envagnetcombostorage + relationshipprofiles_to_csv, + relationshipprofiles_to_jsonl, ) from .session_transaction import MessageTransaction, SessionTransaction from .waiting_room import MatchingInWaitingRoom diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index 9c16ab63f..d8d0c11e5 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -3,9 +3,13 @@ import pandas as pd from pydantic import BaseModel, Field -from .logs import EpisodeLog -from .persistent_profile import AgentProfile, EnvironmentProfile, RelationshipProfile from .env_agent_combo_storage import EnvAgentComboStorage +from .logs import EpisodeLog +from .persistent_profile import ( + AgentProfile, + EnvironmentProfile, + RelationshipProfile, +) class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): @@ -357,7 +361,9 @@ def relationshipprofiles_to_csv( "relationship_id": [profile.pk for profile in relationship_profiles], "agent1_id": [profile.agent_1_id for profile in relationship_profiles], "agent2_id": [profile.agent_2_id for profile in relationship_profiles], - "relationship": [profile.relationship for profile in relationship_profiles], + "relationship": [ + profile.relationship for profile in relationship_profiles + ], "background_story": [ profile.background_story for profile in relationship_profiles ], @@ -379,7 +385,9 @@ def envagnetcombostorage_to_csv( data = { "combo_id": [storage.pk for storage in env_agent_combo_storages], "env_id": [storage.env_id for storage in env_agent_combo_storages], - "agent_ids": [storage.agent_ids for storage in env_agent_combo_storages], + "agent_ids": [ + storage.agent_ids for storage in env_agent_combo_storages + ], } df = pd.DataFrame(data) df.to_csv(csv_file_path, index=False) @@ -407,6 +415,7 @@ def relationshipprofiles_to_jsonl( json.dump(dict(data), f) f.write("\n") + def envagnetcombostorage_to_jsonl( env_agent_combo_storages: list[EnvAgentComboStorage], jsonl_file_path: str = "env_agent_combo_storages.jsonl", @@ -489,6 +498,7 @@ def jsonl_to_environmentprofiles( environment_profiles.append(environment_profile) return environment_profiles + def jsonl_to_relationshipprofiles( jsonl_file_path: str, ) -> list[RelationshipProfileBetweenTwoAgents]: @@ -508,6 +518,7 @@ def jsonl_to_relationshipprofiles( relationship_profiles.append(relationship_profile) return relationship_profiles + def jsonl_to_envagnetcombostorage( jsonl_file_path: str, ) -> list[EnvAgentComboStorageWithID]: @@ -525,4 +536,4 @@ def jsonl_to_envagnetcombostorage( data = json.loads(line) env_agent_combo_storage = EnvAgentComboStorageWithID(**data) env_agent_combo_storages.append(env_agent_combo_storage) - return env_agent_combo_storages \ No newline at end of file + return env_agent_combo_storages From c5b51a604bd1f985fa103243748490051e65b8e8 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Wed, 17 Apr 2024 06:15:16 -0400 Subject: [PATCH 07/18] support testing of serialization --- sotopia/database/serialization.py | 109 ++++++++++++++++++++++----- tests/database/test_serialization.py | 89 ++++++++++++++++++++++ 2 files changed, 181 insertions(+), 17 deletions(-) create mode 100644 tests/database/test_serialization.py diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index b64508cb6..19e081ca1 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -14,6 +14,13 @@ class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): episode_id: str = Field(required=True) + environment_id: str = Field(required=True) + agent_ids: list[str] = Field(required=True) + experiment_tag: str = Field(required=True) + experiment_model_name_pairs: list[str] = Field(required=True) + raw_messages: list[list[tuple[str, str, str]]] = Field(required=True) + raw_rewards: list[tuple[float, dict[str, float]] | float] = Field(required=True) + raw_rewards_prompt: str = Field(required=True) scenario: str = Field(required=True) codename: str = Field(required=True) agents_background: dict[str, str] = Field(required=True) @@ -23,6 +30,7 @@ class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): rewards: list[dict[str, float]] = Field(required=False) + class AgentProfileWithPersonalInformation(BaseModel): agent_id: str = Field(required=True) first_name: str = Field(required=True) @@ -39,6 +47,7 @@ class AgentProfileWithPersonalInformation(BaseModel): decision_making_style: str = Field(required=True) secret: str = Field(required=True) mbti: str = Field(required=True) + model_id: str = Field(required=True) class EnvironmentProfileWithTwoAgentRequirements(BaseModel): @@ -50,7 +59,7 @@ class EnvironmentProfileWithTwoAgentRequirements(BaseModel): relationship: str = Field(required=True) age_constraint: str = Field(required=True) occupation_constraint: str = Field(required=True) - agent_constraint: str = Field(required=True) + agent_constraint: str | None = Field(required=False) class RelationshipProfileBetweenTwoAgents(BaseModel): @@ -176,17 +185,27 @@ def episodes_to_csv( """ data = { "episode_id": [episode.pk for episode in episodes], + "environment_id": [episode.environment for episode in episodes], + "agent_ids": [episode.agents for episode in episodes], + "experiment_tag": [episode.tag for episode in episodes], + "experiment_model_name_pairs": [episode.models for episode in episodes], + "raw_messages": [episode.messages for episode in episodes], + "raw_rewards_prompt": [episode.rewards_prompt for episode in episodes], + "raw_rewards": [episode.rewards for episode in episodes], "scenario": [get_scenario_from_episode(episode) for episode in episodes], "codename": [get_codename_from_episode(episode) for episode in episodes], "agents_background": [ get_agents_background_from_episode(episode) for episode in episodes ], "social_goals": [ - get_agent_name_to_social_goal_from_episode(episode) for episode in episodes + get_agent_name_to_social_goal_from_episode(episode) + for episode in episodes ], "social_interactions": [ get_social_interactions_from_episode(episode) for episode in episodes ], + "reasoning": [episode.reasoning for episode in episodes], + "rewards": [get_rewards_from_episode(episode) for episode in episodes], } df = pd.DataFrame(data) df.to_csv(csv_file_path, index=False) @@ -205,6 +224,13 @@ def episodes_to_jsonl( for episode in episodes: data = TwoAgentEpisodeWithScenarioBackgroundGoals( episode_id=episode.pk, + environment_id=episode.environment, + agent_ids=episode.agents, + experiment_tag=episode.tag, + experiment_model_name_pairs=episode.models, + raw_messages=episode.messages, + raw_rewards_prompt=episode.rewards_prompt, + raw_rewards=episode.rewards, scenario=get_scenario_from_episode(episode), codename=get_codename_from_episode(episode), agents_background=get_agents_background_from_episode(episode), @@ -266,6 +292,7 @@ def agentprofiles_to_jsonl( decision_making_style=profile.decision_making_style, secret=profile.secret, mbti=profile.mbti, + model_id=profile.model_id, ) json.dump(dict(data), f) f.write("\n") @@ -427,69 +454,107 @@ def envagnetcombostorage_to_jsonl( def jsonl_to_episodes( jsonl_file_path: str, -) -> list[TwoAgentEpisodeWithScenarioBackgroundGoals]: +) -> list[EpisodeLog]: """Load episodes from a jsonl file. Args: jsonl_file_path (str): The file path. Returns: - list[TwoAgentEpisodeWithScenarioBackgroundGoals]: List of episodes. + list[EpisodeLog]: List of episodes. """ episodes = [] with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - episode = TwoAgentEpisodeWithScenarioBackgroundGoals(**data) + episode = EpisodeLog( + pk=data["episode_id"], + environment=data["environment_id"], + agents=data["agent_ids"], + tag=data["experiment_tag"], + models=data["experiment_model_name_pairs"], + messages=data["raw_messages"], + reasoning=data["reasoning"], + rewards=data["raw_rewards"], + rewards_prompt=data["raw_rewards_prompt"], + ) episodes.append(episode) return episodes + def jsonl_to_agentprofiles( jsonl_file_path: str, -) -> list[AgentProfileWithPersonalInformation]: +) -> list[AgentProfile]: """Load agent profiles from a jsonl file. Args: jsonl_file_path (str): The file path. Returns: - list[AgentProfileWithPersonalInformation]: List of agent profiles. + list[AgentProfile]: List of agent profiles. """ agent_profiles = [] with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - agent_profile = AgentProfileWithPersonalInformation(**data) + agent_profile = AgentProfile( + pk=data["agent_id"], + first_name=data["first_name"], + last_name=data["last_name"], + age=data["age"], + occupation=data["occupation"], + gender=data["gender"], + gender_pronoun=data["gender_pronoun"], + public_info=data["public_info"], + big_five=data["big_five"], + moral_values=data["moral_values"], + schwartz_personal_values=data["schwartz_personal_values"], + personality_and_values=data["personality_and_values"], + decision_making_style=data["decision_making_style"], + secret=data["secret"], + model_id=data["model_id"], + mbti=data["mbti"], + ) agent_profiles.append(agent_profile) return agent_profiles + def jsonl_to_environmentprofiles( jsonl_file_path: str, -) -> list[EnvironmentProfileWithTwoAgentRequirements]: +) -> list[EnvironmentProfile]: """Load environment profiles from a jsonl file. Args: jsonl_file_path (str): The file path. Returns: - list[EnvironmentProfileWithTwoAgentSettings]: List of environment profiles. + list[EnvironmentProfile]: List of environment profiles. """ environment_profiles = [] with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - environment_profile = EnvironmentProfileWithTwoAgentRequirements( - **data + environment_profile = EnvironmentProfile( + pk=data["env_id"], + codename=data["codename"], + source=data["source"], + scenario=data["scenario"], + agent_goals=data["agent_goals"], + relationship=data["relationship"], + age_constraint=data["age_constraint"], + occupation_constraint=data["occupation_constraint"], + agent_constraint=data["agent_constraint"] if data["agent_constraint"] != "none" else None, ) environment_profiles.append(environment_profile) return environment_profiles + def jsonl_to_relationshipprofiles( jsonl_file_path: str, -) -> list[RelationshipProfileBetweenTwoAgents]: +) -> list[RelationshipProfile]: """Load relationship profiles from a jsonl file. Args: @@ -502,14 +567,20 @@ def jsonl_to_relationshipprofiles( with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - relationship_profile = RelationshipProfileBetweenTwoAgents(**data) + relationship_profile = RelationshipProfile( + pk=data["relationship_id"], + agent_1_id=data["agent1_id"], + agent_2_id=data["agent2_id"], + relationship=data["relationship"], + background_story=data["background_story"], + ) relationship_profiles.append(relationship_profile) return relationship_profiles def jsonl_to_envagnetcombostorage( jsonl_file_path: str, -) -> list[EnvAgentComboStorageWithID]: +) -> list[EnvAgentComboStorage]: """Load environment-agent combo storages from a jsonl file. Args: @@ -522,6 +593,10 @@ def jsonl_to_envagnetcombostorage( with open(jsonl_file_path, "r") as f: for line in f: data = json.loads(line) - env_agent_combo_storage = EnvAgentComboStorageWithID(**data) + env_agent_combo_storage = EnvAgentComboStorage( + pk=data["combo_id"], + env_id=data["env_id"], + agent_ids=data["agent_ids"], + ) env_agent_combo_storages.append(env_agent_combo_storage) - return env_agent_combo_storages + return env_agent_combo_storages \ No newline at end of file diff --git a/tests/database/test_serialization.py b/tests/database/test_serialization.py new file mode 100644 index 000000000..4baf52cc9 --- /dev/null +++ b/tests/database/test_serialization.py @@ -0,0 +1,89 @@ +from typing import Any, Generator + +import pytest +from pydantic.error_wrappers import ValidationError + +from sotopia.agents import LLMAgent +from sotopia.database import ( + AgentProfile, + RelationshipProfile, + EnvironmentProfile, + EnvAgentComboStorage, + EpisodeLog, + relationshipprofiles_to_csv, + relationshipprofiles_to_jsonl, + environmentprofiles_to_csv, + environmentprofiles_to_jsonl, + envagnetcombostorage_to_csv, + envagnetcombostorage_to_jsonl, + agentprofiles_to_csv, + agentprofiles_to_jsonl, + episodes_to_csv, + episodes_to_jsonl, + jsonl_to_episodes, + jsonl_to_relationshipprofiles, + jsonl_to_environmentprofiles, + jsonl_to_envagnetcombostorage, + jsonl_to_agentprofiles, +) +from sotopia.envs.parallel import ParallelSotopiaEnv +from sotopia.messages import SimpleMessage + +PK = "test_pk" + +def test_env_profile_serialization() -> None: + env_profile = EnvironmentProfile( + pk=PK, + scenario="The conversation between two friends in a cafe", + agent_goals=[ + "trying to figure out the gift preference of the other agent, but not let them know you are buying gift for them", + "to have a good time", + ], + ) + +def test_episode_log_serialization() -> None: + episode_log = EpisodeLog(pk='01H9FG15A2NDTNH8K6F2T5MZN3', environment='01H7VFHNN7XTR99319DS8KZCQM', agents=['01H5TNE5PAZABGW79HJ07TACCZ', '01H5TNE5P83CZ1TDBVN74NGEEJ'], tag='togethercomputer/mpt-30b-chat_togethercomputer/llama-2-70b-chat_v0.0.1_clean', models=['gpt-4', 'togethercomputer/mpt-30b-chat', 'togethercomputer/llama-2-70b-chat'], messages=[[('Environment', 'Mia Davis', "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. Mia's secrets: Part of a rebellious punk rock band in her youth\nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. \nMia Davis's goal: Share the only blanket available (Extra information: you are extremely cold and need the blanket to keep warm Hint: you can stress the benefit of sharing.)\nWilliam Brown's goal: Unknown\nConversation Starts:\n"), ('Environment', 'William Brown', "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. \nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. William's secrets: Sabotaged a competitor's dish to win a cooking contest\nMia Davis's goal: Unknown\nWilliam Brown's goal: Keep the blanket for yourself as you are also very cold (Extra information: you have a lower tolerance for cold, and you feel that you need the blanket more)\nConversation Starts:\n"), ('Mia Davis', 'Environment', 'said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #0: Mia Davis said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."\n'), ('Environment', 'William Brown', 'Turn #0: Mia Davis said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."')], [('Environment', 'Mia Davis', 'Turn #1: William Brown said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."\n'), ('Environment', 'William Brown', 'Turn #1: William Brown said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."\n'), ('Mia Davis', 'Environment', 'said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #2: Mia Davis said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."\n'), ('Environment', 'William Brown', 'Turn #2: Mia Davis said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"')], [('Environment', 'Mia Davis', 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n'), ('Environment', 'William Brown', 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n'), ('Mia Davis', 'Environment', 'said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #4: Mia Davis said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."\n'), ('Environment', 'William Brown', 'Turn #4: Mia Davis said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #5: \n'), ('Environment', 'William Brown', 'Turn #5: \n')]], reasoning="Environment comments: terminated: The conversation stales for too long; \nAgent 1 comments:\nbelievability: Mia Davis interacts naturally and realistically with William. She does not confuse her identity or repeat others' words/actions without reason. She is not overly polite considering the context. Mia's actions align with her character traits. She is decisive and direct in her decision-making, which is evident in her suggestion to share the blanket.\nrelationship: Mia and William are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. Mia's suggestion to share the blanket and her agreement to let William use it first shows her consideration for William's comfort, which could enhance their friendship.\nknowledge: Mia does not gain any new or important information through this interaction.\nsecret: Mia's secret is that she was part of a rebellious punk rock band in her youth. This secret is not revealed in this interaction.\nsocial_rules: Mia does not violate any moral rules or laws in her interactions with William.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: Mia's goal is to share the only blanket available. She successfully convinces William to share the blanket and even agrees to let him use it first, showing progress towards her goal.\nAgent 2 comments:\nbelievability: William Brown interacts naturally and realistically with Mia. He does not confuse his identity or repeat others' words/actions without reason. He is not overly polite considering the context. William's actions align with his character traits. He is methodical and organized, which is evident in his agreement to share the blanket and his suggestion to take turns using it.\nrelationship: William and Mia are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. William's agreement to share the blanket and his suggestion to take turns using it shows his consideration for Mia's comfort, which could enhance their friendship.\nknowledge: William does not gain any new or important information through this interaction.\nsecret: William's secret is that he sabotaged a competitor's dish to win a cooking contest. This secret is not revealed in this interaction.\nsocial_rules: William does not violate any moral rules or laws in his interactions with Mia.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: William's goal is to keep the blanket for himself. He partially achieves this goal by agreeing to share the blanket and suggesting to take turns using it, which allows him to use the blanket first.\n", rewards=[(3.142857142857143, {'believability': 10.0, 'relationship': 4.0, 'knowledge': 0.0, 'secret': 0.0, 'social_rules': 0.0, 'financial_and_material_benefits': 0.0, 'goal': 8.0, 'overall_score': 3.142857142857143}), (2.7142857142857144, {'believability': 10.0, 'relationship': 4.0, 'knowledge': 0.0, 'secret': 0.0, 'social_rules': 0.0, 'financial_and_material_benefits': 0.0, 'goal': 5.0, 'overall_score': 2.7142857142857144})], rewards_prompt='Prompt after formatting:\n\n Given the string that can not be parsed by json parser, reformat it to a string that can be parsed by json parser.\n Original string: \n\n Turn #9: You decide to speak.\n\n "I understand your concerns, Noah, but I believe that supporting children in conflict zones is a cause worth investing in. While we may not be able to solve the problem on our own, every little bit helps. I plan to donate, and I hope you will consider doing the same."\n\n You wait for Noah Davis\'s response.\n\n Turn #10: Noah Davis said: "I understand your perspective, Finnegan. However, I still have my own financial commitments to consider. Is there a way we can support\n\n Format instructions: The output should be formatted as a JSON instance that conforms to the JSON schema below.\n\nAs an example, for the schema {"properties": {"foo": {"title": "Foo", "description": "a list of strings", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}}\nthe object {"foo": ["bar", "baz"]} is a well-formatted instance of the schema. The object {"properties": {"foo": ["bar", "baz"]}} is not well-formatted.\n\nHere is the output schema:\n```\n{"description": "An interface for messages.\\nThere is only one required method: to_natural_language", "properties": {"action_type": {"title": "Action Type", "description": "whether to speak at this turn or choose to not do anything", "enum": ["none", "speak", "non-verbal communication", "action", "leave"], "type": "string"}, "argument": {"title": "Argument", "description": "the utterance if choose to speak, the expression or gesture if choose non-verbal communication, or the physical action if choose action", "type": "string"}}, "required": ["action_type", "argument"]}\n```\n\n Please only generate the JSON:\n \x1b[0m') + + episodes_to_jsonl([episode_log], "./data/test_episode_log.jsonl") + rebuild_episode_log = jsonl_to_episodes("./data/test_episode_log.jsonl")[0] + assert episode_log.dict() == rebuild_episode_log.dict() + + episodes_to_csv([episode_log], "./data/test_episode_log.csv") + + +def test_relationship_profile_serialization() -> None: + relationship_profile = RelationshipProfile(pk='01H6HH3KG4M9E1J5H25WHQG6NN', agent_1_id='01H5TNE5PT06B3QPXJ65HHACV7', agent_2_id='01H5TNE5P6KZKR2AEY6SZB83H0', relationship=4, background_story="Donovan and Oliver met at a local cafe where they both enjoy spending their leisure time. They have shared a few conversations talking about their interests and work. Donovan appreciates Oliver's meticulousness and analytical thinking, while Oliver admires Donovan's skills in coding. They have not developed a close friendship but are familiar with each other's names and backgrounds.") + + relationshipprofiles_to_jsonl([relationship_profile], "./data/test_relationship_profile.jsonl") + rebuild_relationship_profile = jsonl_to_relationshipprofiles("./data/test_relationship_profile.jsonl")[0] + assert relationship_profile.dict() == rebuild_relationship_profile.dict() + + relationshipprofiles_to_csv([relationship_profile], "./data/test_relationship_profile.csv") + + +def test_environment_profile_serialization() -> None: + environment_profile = EnvironmentProfile(pk='01H7VFHN1PK2FXY7TPWQK343BQ', codename='borrow_money', source='hand-craft', scenario='Conversation between two friends at a tea party', agent_goals=['Borrow money (Extra information: you need $3000 to support life.)', 'Maintain financial stability while maintaining friendship (Extra information: you only have $2000 available right now. Hint: you can not lend all $2000 since you still need to maintain your financial stability.)'], relationship=3, age_constraint='[(18, 70), (18, 70)]', occupation_constraint='nan', agent_constraint=None) + + environmentprofiles_to_jsonl([environment_profile], "./data/test_environment_profile.jsonl") + rebuild_environment_profile = jsonl_to_environmentprofiles("./data/test_environment_profile.jsonl")[0] + assert environment_profile.dict() == rebuild_environment_profile.dict() + + environmentprofiles_to_csv([environment_profile], "./data/test_environment_profile.csv") + +def test_envagentcombostorage_serialization() -> None: + envagentcombo_storage = EnvAgentComboStorage(pk='01H7ZDKVZJPQT6G109BKAZTHCF', env_id='01H7VFHN94S6Z5T6ZNC23238NT', agent_ids=['01H5TNE5PRCAF1CK5ERS5MVZ22', '01H5TNE5Q1J7Z7Q12WA1W90MR9']) + + envagnetcombostorage_to_jsonl([envagentcombo_storage], "./data/test_envagentcombo_storage.jsonl") + rebuild_envagentcombo_storage = jsonl_to_envagnetcombostorage("./data/test_envagentcombo_storage.jsonl")[0] + assert envagentcombo_storage.dict() == rebuild_envagentcombo_storage.dict() + + envagnetcombostorage_to_csv([envagentcombo_storage], "./data/test_envagentcombo_storage.csv") + +def test_agentprofile_serialization() -> None: + agent_profile = AgentProfile(pk='01H5TNE5PBXGRD41HXQC1ZXHVN', first_name='Ethan', last_name='Johnson', age=34, occupation='Chef', gender='Man', gender_pronoun='He/him', public_info='Ethan Johnson is famous for cooking Italian food.', big_five='Openness to Experience - High; Conscientiousness - Low; Extraversion - High; Agreeableness - Low; Neuroticism - Low', moral_values=['Fairness/Reciprocity'], schwartz_personal_values=['Power'], personality_and_values='Ethan Johnson, a creative yet somewhat reserved individual, values power and fairness. He likes to analyse situations before deciding.', decision_making_style='Analytical', secret='He is a closeted romance novel author.', model_id='', mbti='ENTP') + + agentprofiles_to_jsonl([agent_profile], "./data/test_agent_profile.jsonl") + rebuild_agent_profile = jsonl_to_agentprofiles("./data/test_agent_profile.jsonl")[0] + assert agent_profile.dict() == rebuild_agent_profile.dict() + + agentprofiles_to_csv([agent_profile], "./data/test_agent_profile.csv") \ No newline at end of file From 4deaf22f9557d663026d563f67bb8dd9a4d7447c Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Wed, 17 Apr 2024 06:17:28 -0400 Subject: [PATCH 08/18] support testing of serialization --- sotopia/database/serialization.py | 33 ++-- tests/database/test_serialization.py | 250 ++++++++++++++++++++++++--- 2 files changed, 237 insertions(+), 46 deletions(-) diff --git a/sotopia/database/serialization.py b/sotopia/database/serialization.py index 19e081ca1..30c7944f6 100644 --- a/sotopia/database/serialization.py +++ b/sotopia/database/serialization.py @@ -30,7 +30,6 @@ class TwoAgentEpisodeWithScenarioBackgroundGoals(BaseModel): rewards: list[dict[str, float]] = Field(required=False) - class AgentProfileWithPersonalInformation(BaseModel): agent_id: str = Field(required=True) first_name: str = Field(required=True) @@ -198,8 +197,7 @@ def episodes_to_csv( get_agents_background_from_episode(episode) for episode in episodes ], "social_goals": [ - get_agent_name_to_social_goal_from_episode(episode) - for episode in episodes + get_agent_name_to_social_goal_from_episode(episode) for episode in episodes ], "social_interactions": [ get_social_interactions_from_episode(episode) for episode in episodes @@ -313,15 +311,9 @@ def environmentprofiles_to_csv( "codename": [profile.codename for profile in environment_profiles], "source": [profile.source for profile in environment_profiles], "scenario": [profile.scenario for profile in environment_profiles], - "agent_goals": [ - profile.agent_goals for profile in environment_profiles - ], - "relationship": [ - profile.relationship for profile in environment_profiles - ], - "age_constraint": [ - profile.age_constraint for profile in environment_profiles - ], + "agent_goals": [profile.agent_goals for profile in environment_profiles], + "relationship": [profile.relationship for profile in environment_profiles], + "age_constraint": [profile.age_constraint for profile in environment_profiles], "occupation_constraint": [ profile.occupation_constraint for profile in environment_profiles ], @@ -376,9 +368,7 @@ def relationshipprofiles_to_csv( "relationship_id": [profile.pk for profile in relationship_profiles], "agent1_id": [profile.agent_1_id for profile in relationship_profiles], "agent2_id": [profile.agent_2_id for profile in relationship_profiles], - "relationship": [ - profile.relationship for profile in relationship_profiles - ], + "relationship": [profile.relationship for profile in relationship_profiles], "background_story": [ profile.background_story for profile in relationship_profiles ], @@ -400,9 +390,7 @@ def envagnetcombostorage_to_csv( data = { "combo_id": [storage.pk for storage in env_agent_combo_storages], "env_id": [storage.env_id for storage in env_agent_combo_storages], - "agent_ids": [ - storage.agent_ids for storage in env_agent_combo_storages - ], + "agent_ids": [storage.agent_ids for storage in env_agent_combo_storages], } df = pd.DataFrame(data) df.to_csv(csv_file_path, index=False) @@ -482,7 +470,6 @@ def jsonl_to_episodes( return episodes - def jsonl_to_agentprofiles( jsonl_file_path: str, ) -> list[AgentProfile]: @@ -520,7 +507,6 @@ def jsonl_to_agentprofiles( return agent_profiles - def jsonl_to_environmentprofiles( jsonl_file_path: str, ) -> list[EnvironmentProfile]: @@ -545,13 +531,14 @@ def jsonl_to_environmentprofiles( relationship=data["relationship"], age_constraint=data["age_constraint"], occupation_constraint=data["occupation_constraint"], - agent_constraint=data["agent_constraint"] if data["agent_constraint"] != "none" else None, + agent_constraint=data["agent_constraint"] + if data["agent_constraint"] != "none" + else None, ) environment_profiles.append(environment_profile) return environment_profiles - def jsonl_to_relationshipprofiles( jsonl_file_path: str, ) -> list[RelationshipProfile]: @@ -599,4 +586,4 @@ def jsonl_to_envagnetcombostorage( agent_ids=data["agent_ids"], ) env_agent_combo_storages.append(env_agent_combo_storage) - return env_agent_combo_storages \ No newline at end of file + return env_agent_combo_storages diff --git a/tests/database/test_serialization.py b/tests/database/test_serialization.py index 4baf52cc9..be29b889a 100644 --- a/tests/database/test_serialization.py +++ b/tests/database/test_serialization.py @@ -1,9 +1,3 @@ -from typing import Any, Generator - -import pytest -from pydantic.error_wrappers import ValidationError - -from sotopia.agents import LLMAgent from sotopia.database import ( AgentProfile, RelationshipProfile, @@ -26,11 +20,10 @@ jsonl_to_envagnetcombostorage, jsonl_to_agentprofiles, ) -from sotopia.envs.parallel import ParallelSotopiaEnv -from sotopia.messages import SimpleMessage PK = "test_pk" + def test_env_profile_serialization() -> None: env_profile = EnvironmentProfile( pk=PK, @@ -41,8 +34,159 @@ def test_env_profile_serialization() -> None: ], ) + def test_episode_log_serialization() -> None: - episode_log = EpisodeLog(pk='01H9FG15A2NDTNH8K6F2T5MZN3', environment='01H7VFHNN7XTR99319DS8KZCQM', agents=['01H5TNE5PAZABGW79HJ07TACCZ', '01H5TNE5P83CZ1TDBVN74NGEEJ'], tag='togethercomputer/mpt-30b-chat_togethercomputer/llama-2-70b-chat_v0.0.1_clean', models=['gpt-4', 'togethercomputer/mpt-30b-chat', 'togethercomputer/llama-2-70b-chat'], messages=[[('Environment', 'Mia Davis', "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. Mia's secrets: Part of a rebellious punk rock band in her youth\nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. \nMia Davis's goal: Share the only blanket available (Extra information: you are extremely cold and need the blanket to keep warm Hint: you can stress the benefit of sharing.)\nWilliam Brown's goal: Unknown\nConversation Starts:\n"), ('Environment', 'William Brown', "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. \nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. William's secrets: Sabotaged a competitor's dish to win a cooking contest\nMia Davis's goal: Unknown\nWilliam Brown's goal: Keep the blanket for yourself as you are also very cold (Extra information: you have a lower tolerance for cold, and you feel that you need the blanket more)\nConversation Starts:\n"), ('Mia Davis', 'Environment', 'said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #0: Mia Davis said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."\n'), ('Environment', 'William Brown', 'Turn #0: Mia Davis said: "Hey William, I know it\'s cold and I\'m shivering too. But we only have this one blanket, and I need it to keep warm. Why don\'t we take turns using it, so we both can get some warmth? It\'s just for a few hours, and then the sun will be up soon."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."')], [('Environment', 'Mia Davis', 'Turn #1: William Brown said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."\n'), ('Environment', 'William Brown', 'Turn #1: William Brown said: "I think it\'s a good idea to take turns using the blanket. It\'s the fairest way to make sure we both stay warm."\n'), ('Mia Davis', 'Environment', 'said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #2: Mia Davis said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."\n'), ('Environment', 'William Brown', 'Turn #2: Mia Davis said: "That sounds like a good idea, Mia. Let\'s take turns using the blanket so we both can get some warmth. We\'ll both survive the night, and then we can enjoy the beauty of the wilderness in the morning."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"')], [('Environment', 'Mia Davis', 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n'), ('Environment', 'William Brown', 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n'), ('Mia Davis', 'Environment', 'said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #4: Mia Davis said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."\n'), ('Environment', 'William Brown', 'Turn #4: Mia Davis said: "I think it\'s fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let\'s start with you using it for the next couple of hours, and then I\'ll take over."\n'), ('Mia Davis', 'Environment', 'did nothing'), ('William Brown', 'Environment', 'did nothing')], [('Environment', 'Mia Davis', 'Turn #5: \n'), ('Environment', 'William Brown', 'Turn #5: \n')]], reasoning="Environment comments: terminated: The conversation stales for too long; \nAgent 1 comments:\nbelievability: Mia Davis interacts naturally and realistically with William. She does not confuse her identity or repeat others' words/actions without reason. She is not overly polite considering the context. Mia's actions align with her character traits. She is decisive and direct in her decision-making, which is evident in her suggestion to share the blanket.\nrelationship: Mia and William are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. Mia's suggestion to share the blanket and her agreement to let William use it first shows her consideration for William's comfort, which could enhance their friendship.\nknowledge: Mia does not gain any new or important information through this interaction.\nsecret: Mia's secret is that she was part of a rebellious punk rock band in her youth. This secret is not revealed in this interaction.\nsocial_rules: Mia does not violate any moral rules or laws in her interactions with William.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: Mia's goal is to share the only blanket available. She successfully convinces William to share the blanket and even agrees to let him use it first, showing progress towards her goal.\nAgent 2 comments:\nbelievability: William Brown interacts naturally and realistically with Mia. He does not confuse his identity or repeat others' words/actions without reason. He is not overly polite considering the context. William's actions align with his character traits. He is methodical and organized, which is evident in his agreement to share the blanket and his suggestion to take turns using it.\nrelationship: William and Mia are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. William's agreement to share the blanket and his suggestion to take turns using it shows his consideration for Mia's comfort, which could enhance their friendship.\nknowledge: William does not gain any new or important information through this interaction.\nsecret: William's secret is that he sabotaged a competitor's dish to win a cooking contest. This secret is not revealed in this interaction.\nsocial_rules: William does not violate any moral rules or laws in his interactions with Mia.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: William's goal is to keep the blanket for himself. He partially achieves this goal by agreeing to share the blanket and suggesting to take turns using it, which allows him to use the blanket first.\n", rewards=[(3.142857142857143, {'believability': 10.0, 'relationship': 4.0, 'knowledge': 0.0, 'secret': 0.0, 'social_rules': 0.0, 'financial_and_material_benefits': 0.0, 'goal': 8.0, 'overall_score': 3.142857142857143}), (2.7142857142857144, {'believability': 10.0, 'relationship': 4.0, 'knowledge': 0.0, 'secret': 0.0, 'social_rules': 0.0, 'financial_and_material_benefits': 0.0, 'goal': 5.0, 'overall_score': 2.7142857142857144})], rewards_prompt='Prompt after formatting:\n\n Given the string that can not be parsed by json parser, reformat it to a string that can be parsed by json parser.\n Original string: \n\n Turn #9: You decide to speak.\n\n "I understand your concerns, Noah, but I believe that supporting children in conflict zones is a cause worth investing in. While we may not be able to solve the problem on our own, every little bit helps. I plan to donate, and I hope you will consider doing the same."\n\n You wait for Noah Davis\'s response.\n\n Turn #10: Noah Davis said: "I understand your perspective, Finnegan. However, I still have my own financial commitments to consider. Is there a way we can support\n\n Format instructions: The output should be formatted as a JSON instance that conforms to the JSON schema below.\n\nAs an example, for the schema {"properties": {"foo": {"title": "Foo", "description": "a list of strings", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}}\nthe object {"foo": ["bar", "baz"]} is a well-formatted instance of the schema. The object {"properties": {"foo": ["bar", "baz"]}} is not well-formatted.\n\nHere is the output schema:\n```\n{"description": "An interface for messages.\\nThere is only one required method: to_natural_language", "properties": {"action_type": {"title": "Action Type", "description": "whether to speak at this turn or choose to not do anything", "enum": ["none", "speak", "non-verbal communication", "action", "leave"], "type": "string"}, "argument": {"title": "Argument", "description": "the utterance if choose to speak, the expression or gesture if choose non-verbal communication, or the physical action if choose action", "type": "string"}}, "required": ["action_type", "argument"]}\n```\n\n Please only generate the JSON:\n \x1b[0m') + episode_log = EpisodeLog( + pk="01H9FG15A2NDTNH8K6F2T5MZN3", + environment="01H7VFHNN7XTR99319DS8KZCQM", + agents=["01H5TNE5PAZABGW79HJ07TACCZ", "01H5TNE5P83CZ1TDBVN74NGEEJ"], + tag="togethercomputer/mpt-30b-chat_togethercomputer/llama-2-70b-chat_v0.0.1_clean", + models=[ + "gpt-4", + "togethercomputer/mpt-30b-chat", + "togethercomputer/llama-2-70b-chat", + ], + messages=[ + [ + ( + "Environment", + "Mia Davis", + "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. Mia's secrets: Part of a rebellious punk rock band in her youth\nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. \nMia Davis's goal: Share the only blanket available (Extra information: you are extremely cold and need the blanket to keep warm Hint: you can stress the benefit of sharing.)\nWilliam Brown's goal: Unknown\nConversation Starts:\n", + ), + ( + "Environment", + "William Brown", + "\nHere is the context of this interaction:\nScenario: Two friends are camping in the wilderness and the temperature drops significantly at night\nParticipants: Mia Davis and William Brown\nMia Davis's background: Mia Davis is a 50-year-old female high school principal. She/her pronouns. Mia Davis has two cats. Personality and values description: Mia Davis, an extraverted stickler for routines, values tradition and authority. Her decision-making style is decisive and direct. \nWilliam Brown's background: William Brown is a 35-year-old male chef. He/him pronouns. William Brown loves exploring the food scene in his city and trying out new recipes at home. Personality and values description: William Brown is an ambitious and extraverted individual. Methodical and organized, he values achievement and displays strategic decision-making. William's secrets: Sabotaged a competitor's dish to win a cooking contest\nMia Davis's goal: Unknown\nWilliam Brown's goal: Keep the blanket for yourself as you are also very cold (Extra information: you have a lower tolerance for cold, and you feel that you need the blanket more)\nConversation Starts:\n", + ), + ( + "Mia Davis", + "Environment", + "said: \"Hey William, I know it's cold and I'm shivering too. But we only have this one blanket, and I need it to keep warm. Why don't we take turns using it, so we both can get some warmth? It's just for a few hours, and then the sun will be up soon.\"", + ), + ("William Brown", "Environment", "did nothing"), + ], + [ + ( + "Environment", + "Mia Davis", + "Turn #0: Mia Davis said: \"Hey William, I know it's cold and I'm shivering too. But we only have this one blanket, and I need it to keep warm. Why don't we take turns using it, so we both can get some warmth? It's just for a few hours, and then the sun will be up soon.\"\n", + ), + ( + "Environment", + "William Brown", + "Turn #0: Mia Davis said: \"Hey William, I know it's cold and I'm shivering too. But we only have this one blanket, and I need it to keep warm. Why don't we take turns using it, so we both can get some warmth? It's just for a few hours, and then the sun will be up soon.\"\n", + ), + ("Mia Davis", "Environment", "did nothing"), + ( + "William Brown", + "Environment", + "said: \"I think it's a good idea to take turns using the blanket. It's the fairest way to make sure we both stay warm.\"", + ), + ], + [ + ( + "Environment", + "Mia Davis", + "Turn #1: William Brown said: \"I think it's a good idea to take turns using the blanket. It's the fairest way to make sure we both stay warm.\"\n", + ), + ( + "Environment", + "William Brown", + "Turn #1: William Brown said: \"I think it's a good idea to take turns using the blanket. It's the fairest way to make sure we both stay warm.\"\n", + ), + ( + "Mia Davis", + "Environment", + "said: \"That sounds like a good idea, Mia. Let's take turns using the blanket so we both can get some warmth. We'll both survive the night, and then we can enjoy the beauty of the wilderness in the morning.\"", + ), + ("William Brown", "Environment", "did nothing"), + ], + [ + ( + "Environment", + "Mia Davis", + "Turn #2: Mia Davis said: \"That sounds like a good idea, Mia. Let's take turns using the blanket so we both can get some warmth. We'll both survive the night, and then we can enjoy the beauty of the wilderness in the morning.\"\n", + ), + ( + "Environment", + "William Brown", + "Turn #2: Mia Davis said: \"That sounds like a good idea, Mia. Let's take turns using the blanket so we both can get some warmth. We'll both survive the night, and then we can enjoy the beauty of the wilderness in the morning.\"\n", + ), + ("Mia Davis", "Environment", "did nothing"), + ( + "William Brown", + "Environment", + 'said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"', + ), + ], + [ + ( + "Environment", + "Mia Davis", + 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n', + ), + ( + "Environment", + "William Brown", + 'Turn #3: William Brown said: "I think we should take turns using the blanket, but since I\'m shivering more, I think I should get to use it first. How about we take turns for the next couple of hours until the sun comes up?"\n', + ), + ( + "Mia Davis", + "Environment", + "said: \"I think it's fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let's start with you using it for the next couple of hours, and then I'll take over.\"", + ), + ("William Brown", "Environment", "did nothing"), + ], + [ + ( + "Environment", + "Mia Davis", + "Turn #4: Mia Davis said: \"I think it's fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let's start with you using it for the next couple of hours, and then I'll take over.\"\n", + ), + ( + "Environment", + "William Brown", + "Turn #4: Mia Davis said: \"I think it's fair to take turns using the blanket, William. That way, we both get some warmth and can survive the night. Let's start with you using it for the next couple of hours, and then I'll take over.\"\n", + ), + ("Mia Davis", "Environment", "did nothing"), + ("William Brown", "Environment", "did nothing"), + ], + [ + ("Environment", "Mia Davis", "Turn #5: \n"), + ("Environment", "William Brown", "Turn #5: \n"), + ], + ], + reasoning="Environment comments: terminated: The conversation stales for too long; \nAgent 1 comments:\nbelievability: Mia Davis interacts naturally and realistically with William. She does not confuse her identity or repeat others' words/actions without reason. She is not overly polite considering the context. Mia's actions align with her character traits. She is decisive and direct in her decision-making, which is evident in her suggestion to share the blanket.\nrelationship: Mia and William are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. Mia's suggestion to share the blanket and her agreement to let William use it first shows her consideration for William's comfort, which could enhance their friendship.\nknowledge: Mia does not gain any new or important information through this interaction.\nsecret: Mia's secret is that she was part of a rebellious punk rock band in her youth. This secret is not revealed in this interaction.\nsocial_rules: Mia does not violate any moral rules or laws in her interactions with William.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: Mia's goal is to share the only blanket available. She successfully convinces William to share the blanket and even agrees to let him use it first, showing progress towards her goal.\nAgent 2 comments:\nbelievability: William Brown interacts naturally and realistically with Mia. He does not confuse his identity or repeat others' words/actions without reason. He is not overly polite considering the context. William's actions align with his character traits. He is methodical and organized, which is evident in his agreement to share the blanket and his suggestion to take turns using it.\nrelationship: William and Mia are friends who are camping together. Their relationship remains friendly and cooperative after the interaction. William's agreement to share the blanket and his suggestion to take turns using it shows his consideration for Mia's comfort, which could enhance their friendship.\nknowledge: William does not gain any new or important information through this interaction.\nsecret: William's secret is that he sabotaged a competitor's dish to win a cooking contest. This secret is not revealed in this interaction.\nsocial_rules: William does not violate any moral rules or laws in his interactions with Mia.\nfinancial_and_material_benefits: There are no financial or material benefits gained or lost in this interaction.\ngoal: William's goal is to keep the blanket for himself. He partially achieves this goal by agreeing to share the blanket and suggesting to take turns using it, which allows him to use the blanket first.\n", + rewards=[ + ( + 3.142857142857143, + { + "believability": 10.0, + "relationship": 4.0, + "knowledge": 0.0, + "secret": 0.0, + "social_rules": 0.0, + "financial_and_material_benefits": 0.0, + "goal": 8.0, + "overall_score": 3.142857142857143, + }, + ), + ( + 2.7142857142857144, + { + "believability": 10.0, + "relationship": 4.0, + "knowledge": 0.0, + "secret": 0.0, + "social_rules": 0.0, + "financial_and_material_benefits": 0.0, + "goal": 5.0, + "overall_score": 2.7142857142857144, + }, + ), + ], + rewards_prompt='Prompt after formatting:\n\n Given the string that can not be parsed by json parser, reformat it to a string that can be parsed by json parser.\n Original string: \n\n Turn #9: You decide to speak.\n\n "I understand your concerns, Noah, but I believe that supporting children in conflict zones is a cause worth investing in. While we may not be able to solve the problem on our own, every little bit helps. I plan to donate, and I hope you will consider doing the same."\n\n You wait for Noah Davis\'s response.\n\n Turn #10: Noah Davis said: "I understand your perspective, Finnegan. However, I still have my own financial commitments to consider. Is there a way we can support\n\n Format instructions: The output should be formatted as a JSON instance that conforms to the JSON schema below.\n\nAs an example, for the schema {"properties": {"foo": {"title": "Foo", "description": "a list of strings", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}}\nthe object {"foo": ["bar", "baz"]} is a well-formatted instance of the schema. The object {"properties": {"foo": ["bar", "baz"]}} is not well-formatted.\n\nHere is the output schema:\n```\n{"description": "An interface for messages.\\nThere is only one required method: to_natural_language", "properties": {"action_type": {"title": "Action Type", "description": "whether to speak at this turn or choose to not do anything", "enum": ["none", "speak", "non-verbal communication", "action", "leave"], "type": "string"}, "argument": {"title": "Argument", "description": "the utterance if choose to speak, the expression or gesture if choose non-verbal communication, or the physical action if choose action", "type": "string"}}, "required": ["action_type", "argument"]}\n```\n\n Please only generate the JSON:\n \x1b[0m', + ) episodes_to_jsonl([episode_log], "./data/test_episode_log.jsonl") rebuild_episode_log = jsonl_to_episodes("./data/test_episode_log.jsonl")[0] @@ -52,38 +196,98 @@ def test_episode_log_serialization() -> None: def test_relationship_profile_serialization() -> None: - relationship_profile = RelationshipProfile(pk='01H6HH3KG4M9E1J5H25WHQG6NN', agent_1_id='01H5TNE5PT06B3QPXJ65HHACV7', agent_2_id='01H5TNE5P6KZKR2AEY6SZB83H0', relationship=4, background_story="Donovan and Oliver met at a local cafe where they both enjoy spending their leisure time. They have shared a few conversations talking about their interests and work. Donovan appreciates Oliver's meticulousness and analytical thinking, while Oliver admires Donovan's skills in coding. They have not developed a close friendship but are familiar with each other's names and backgrounds.") + relationship_profile = RelationshipProfile( + pk="01H6HH3KG4M9E1J5H25WHQG6NN", + agent_1_id="01H5TNE5PT06B3QPXJ65HHACV7", + agent_2_id="01H5TNE5P6KZKR2AEY6SZB83H0", + relationship=4, + background_story="Donovan and Oliver met at a local cafe where they both enjoy spending their leisure time. They have shared a few conversations talking about their interests and work. Donovan appreciates Oliver's meticulousness and analytical thinking, while Oliver admires Donovan's skills in coding. They have not developed a close friendship but are familiar with each other's names and backgrounds.", + ) - relationshipprofiles_to_jsonl([relationship_profile], "./data/test_relationship_profile.jsonl") - rebuild_relationship_profile = jsonl_to_relationshipprofiles("./data/test_relationship_profile.jsonl")[0] + relationshipprofiles_to_jsonl( + [relationship_profile], "./data/test_relationship_profile.jsonl" + ) + rebuild_relationship_profile = jsonl_to_relationshipprofiles( + "./data/test_relationship_profile.jsonl" + )[0] assert relationship_profile.dict() == rebuild_relationship_profile.dict() - relationshipprofiles_to_csv([relationship_profile], "./data/test_relationship_profile.csv") + relationshipprofiles_to_csv( + [relationship_profile], "./data/test_relationship_profile.csv" + ) def test_environment_profile_serialization() -> None: - environment_profile = EnvironmentProfile(pk='01H7VFHN1PK2FXY7TPWQK343BQ', codename='borrow_money', source='hand-craft', scenario='Conversation between two friends at a tea party', agent_goals=['Borrow money (Extra information: you need $3000 to support life.)', 'Maintain financial stability while maintaining friendship (Extra information: you only have $2000 available right now. Hint: you can not lend all $2000 since you still need to maintain your financial stability.)'], relationship=3, age_constraint='[(18, 70), (18, 70)]', occupation_constraint='nan', agent_constraint=None) + environment_profile = EnvironmentProfile( + pk="01H7VFHN1PK2FXY7TPWQK343BQ", + codename="borrow_money", + source="hand-craft", + scenario="Conversation between two friends at a tea party", + agent_goals=[ + "Borrow money (Extra information: you need $3000 to support life.)", + "Maintain financial stability while maintaining friendship (Extra information: you only have $2000 available right now. Hint: you can not lend all $2000 since you still need to maintain your financial stability.)", + ], + relationship=3, + age_constraint="[(18, 70), (18, 70)]", + occupation_constraint="nan", + agent_constraint=None, + ) - environmentprofiles_to_jsonl([environment_profile], "./data/test_environment_profile.jsonl") - rebuild_environment_profile = jsonl_to_environmentprofiles("./data/test_environment_profile.jsonl")[0] + environmentprofiles_to_jsonl( + [environment_profile], "./data/test_environment_profile.jsonl" + ) + rebuild_environment_profile = jsonl_to_environmentprofiles( + "./data/test_environment_profile.jsonl" + )[0] assert environment_profile.dict() == rebuild_environment_profile.dict() - environmentprofiles_to_csv([environment_profile], "./data/test_environment_profile.csv") + environmentprofiles_to_csv( + [environment_profile], "./data/test_environment_profile.csv" + ) + def test_envagentcombostorage_serialization() -> None: - envagentcombo_storage = EnvAgentComboStorage(pk='01H7ZDKVZJPQT6G109BKAZTHCF', env_id='01H7VFHN94S6Z5T6ZNC23238NT', agent_ids=['01H5TNE5PRCAF1CK5ERS5MVZ22', '01H5TNE5Q1J7Z7Q12WA1W90MR9']) + envagentcombo_storage = EnvAgentComboStorage( + pk="01H7ZDKVZJPQT6G109BKAZTHCF", + env_id="01H7VFHN94S6Z5T6ZNC23238NT", + agent_ids=["01H5TNE5PRCAF1CK5ERS5MVZ22", "01H5TNE5Q1J7Z7Q12WA1W90MR9"], + ) - envagnetcombostorage_to_jsonl([envagentcombo_storage], "./data/test_envagentcombo_storage.jsonl") - rebuild_envagentcombo_storage = jsonl_to_envagnetcombostorage("./data/test_envagentcombo_storage.jsonl")[0] + envagnetcombostorage_to_jsonl( + [envagentcombo_storage], "./data/test_envagentcombo_storage.jsonl" + ) + rebuild_envagentcombo_storage = jsonl_to_envagnetcombostorage( + "./data/test_envagentcombo_storage.jsonl" + )[0] assert envagentcombo_storage.dict() == rebuild_envagentcombo_storage.dict() - envagnetcombostorage_to_csv([envagentcombo_storage], "./data/test_envagentcombo_storage.csv") + envagnetcombostorage_to_csv( + [envagentcombo_storage], "./data/test_envagentcombo_storage.csv" + ) + def test_agentprofile_serialization() -> None: - agent_profile = AgentProfile(pk='01H5TNE5PBXGRD41HXQC1ZXHVN', first_name='Ethan', last_name='Johnson', age=34, occupation='Chef', gender='Man', gender_pronoun='He/him', public_info='Ethan Johnson is famous for cooking Italian food.', big_five='Openness to Experience - High; Conscientiousness - Low; Extraversion - High; Agreeableness - Low; Neuroticism - Low', moral_values=['Fairness/Reciprocity'], schwartz_personal_values=['Power'], personality_and_values='Ethan Johnson, a creative yet somewhat reserved individual, values power and fairness. He likes to analyse situations before deciding.', decision_making_style='Analytical', secret='He is a closeted romance novel author.', model_id='', mbti='ENTP') + agent_profile = AgentProfile( + pk="01H5TNE5PBXGRD41HXQC1ZXHVN", + first_name="Ethan", + last_name="Johnson", + age=34, + occupation="Chef", + gender="Man", + gender_pronoun="He/him", + public_info="Ethan Johnson is famous for cooking Italian food.", + big_five="Openness to Experience - High; Conscientiousness - Low; Extraversion - High; Agreeableness - Low; Neuroticism - Low", + moral_values=["Fairness/Reciprocity"], + schwartz_personal_values=["Power"], + personality_and_values="Ethan Johnson, a creative yet somewhat reserved individual, values power and fairness. He likes to analyse situations before deciding.", + decision_making_style="Analytical", + secret="He is a closeted romance novel author.", + model_id="", + mbti="ENTP", + ) agentprofiles_to_jsonl([agent_profile], "./data/test_agent_profile.jsonl") rebuild_agent_profile = jsonl_to_agentprofiles("./data/test_agent_profile.jsonl")[0] assert agent_profile.dict() == rebuild_agent_profile.dict() - agentprofiles_to_csv([agent_profile], "./data/test_agent_profile.csv") \ No newline at end of file + agentprofiles_to_csv([agent_profile], "./data/test_agent_profile.csv") From eb5361bf0dca15fed1c09e01edce07748feae8af Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Wed, 17 Apr 2024 06:19:18 -0400 Subject: [PATCH 09/18] support testing of serialization --- tests/database/test_serialization.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/tests/database/test_serialization.py b/tests/database/test_serialization.py index be29b889a..e91fc2554 100644 --- a/tests/database/test_serialization.py +++ b/tests/database/test_serialization.py @@ -21,19 +21,6 @@ jsonl_to_agentprofiles, ) -PK = "test_pk" - - -def test_env_profile_serialization() -> None: - env_profile = EnvironmentProfile( - pk=PK, - scenario="The conversation between two friends in a cafe", - agent_goals=[ - "trying to figure out the gift preference of the other agent, but not let them know you are buying gift for them", - "to have a good time", - ], - ) - def test_episode_log_serialization() -> None: episode_log = EpisodeLog( From 12de667c4b69ca618962bf5e050e6d8f396b2b12 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Wed, 17 Apr 2024 06:29:50 -0400 Subject: [PATCH 10/18] change the data path --- tests/database/test_serialization.py | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/database/test_serialization.py b/tests/database/test_serialization.py index e91fc2554..d65725dab 100644 --- a/tests/database/test_serialization.py +++ b/tests/database/test_serialization.py @@ -175,11 +175,11 @@ def test_episode_log_serialization() -> None: rewards_prompt='Prompt after formatting:\n\n Given the string that can not be parsed by json parser, reformat it to a string that can be parsed by json parser.\n Original string: \n\n Turn #9: You decide to speak.\n\n "I understand your concerns, Noah, but I believe that supporting children in conflict zones is a cause worth investing in. While we may not be able to solve the problem on our own, every little bit helps. I plan to donate, and I hope you will consider doing the same."\n\n You wait for Noah Davis\'s response.\n\n Turn #10: Noah Davis said: "I understand your perspective, Finnegan. However, I still have my own financial commitments to consider. Is there a way we can support\n\n Format instructions: The output should be formatted as a JSON instance that conforms to the JSON schema below.\n\nAs an example, for the schema {"properties": {"foo": {"title": "Foo", "description": "a list of strings", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}}\nthe object {"foo": ["bar", "baz"]} is a well-formatted instance of the schema. The object {"properties": {"foo": ["bar", "baz"]}} is not well-formatted.\n\nHere is the output schema:\n```\n{"description": "An interface for messages.\\nThere is only one required method: to_natural_language", "properties": {"action_type": {"title": "Action Type", "description": "whether to speak at this turn or choose to not do anything", "enum": ["none", "speak", "non-verbal communication", "action", "leave"], "type": "string"}, "argument": {"title": "Argument", "description": "the utterance if choose to speak, the expression or gesture if choose non-verbal communication, or the physical action if choose action", "type": "string"}}, "required": ["action_type", "argument"]}\n```\n\n Please only generate the JSON:\n \x1b[0m', ) - episodes_to_jsonl([episode_log], "./data/test_episode_log.jsonl") - rebuild_episode_log = jsonl_to_episodes("./data/test_episode_log.jsonl")[0] + episodes_to_jsonl([episode_log], "./test_episode_log.jsonl") + rebuild_episode_log = jsonl_to_episodes("./test_episode_log.jsonl")[0] assert episode_log.dict() == rebuild_episode_log.dict() - episodes_to_csv([episode_log], "./data/test_episode_log.csv") + episodes_to_csv([episode_log], "./test_episode_log.csv") def test_relationship_profile_serialization() -> None: @@ -192,15 +192,15 @@ def test_relationship_profile_serialization() -> None: ) relationshipprofiles_to_jsonl( - [relationship_profile], "./data/test_relationship_profile.jsonl" + [relationship_profile], "./test_relationship_profile.jsonl" ) rebuild_relationship_profile = jsonl_to_relationshipprofiles( - "./data/test_relationship_profile.jsonl" + "./test_relationship_profile.jsonl" )[0] assert relationship_profile.dict() == rebuild_relationship_profile.dict() relationshipprofiles_to_csv( - [relationship_profile], "./data/test_relationship_profile.csv" + [relationship_profile], "./test_relationship_profile.csv" ) @@ -221,15 +221,15 @@ def test_environment_profile_serialization() -> None: ) environmentprofiles_to_jsonl( - [environment_profile], "./data/test_environment_profile.jsonl" + [environment_profile], "./test_environment_profile.jsonl" ) rebuild_environment_profile = jsonl_to_environmentprofiles( - "./data/test_environment_profile.jsonl" + "./test_environment_profile.jsonl" )[0] assert environment_profile.dict() == rebuild_environment_profile.dict() environmentprofiles_to_csv( - [environment_profile], "./data/test_environment_profile.csv" + [environment_profile], "./test_environment_profile.csv" ) @@ -241,15 +241,15 @@ def test_envagentcombostorage_serialization() -> None: ) envagnetcombostorage_to_jsonl( - [envagentcombo_storage], "./data/test_envagentcombo_storage.jsonl" + [envagentcombo_storage], "./test_envagentcombo_storage.jsonl" ) rebuild_envagentcombo_storage = jsonl_to_envagnetcombostorage( - "./data/test_envagentcombo_storage.jsonl" + "./test_envagentcombo_storage.jsonl" )[0] assert envagentcombo_storage.dict() == rebuild_envagentcombo_storage.dict() envagnetcombostorage_to_csv( - [envagentcombo_storage], "./data/test_envagentcombo_storage.csv" + [envagentcombo_storage], "./test_envagentcombo_storage.csv" ) @@ -273,8 +273,8 @@ def test_agentprofile_serialization() -> None: mbti="ENTP", ) - agentprofiles_to_jsonl([agent_profile], "./data/test_agent_profile.jsonl") - rebuild_agent_profile = jsonl_to_agentprofiles("./data/test_agent_profile.jsonl")[0] + agentprofiles_to_jsonl([agent_profile], "./test_agent_profile.jsonl") + rebuild_agent_profile = jsonl_to_agentprofiles("./test_agent_profile.jsonl")[0] assert agent_profile.dict() == rebuild_agent_profile.dict() - agentprofiles_to_csv([agent_profile], "./data/test_agent_profile.csv") + agentprofiles_to_csv([agent_profile], "./test_agent_profile.csv") From c5addf6d17ef17ff2c636b8aaf8f100eb44b5800 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Wed, 17 Apr 2024 06:31:10 -0400 Subject: [PATCH 11/18] fix ruff --- tests/database/test_serialization.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/database/test_serialization.py b/tests/database/test_serialization.py index d65725dab..a5655e95a 100644 --- a/tests/database/test_serialization.py +++ b/tests/database/test_serialization.py @@ -228,9 +228,7 @@ def test_environment_profile_serialization() -> None: )[0] assert environment_profile.dict() == rebuild_environment_profile.dict() - environmentprofiles_to_csv( - [environment_profile], "./test_environment_profile.csv" - ) + environmentprofiles_to_csv([environment_profile], "./test_environment_profile.csv") def test_envagentcombostorage_serialization() -> None: From 08ad8842178c1934374ee027ea6532468a5983b8 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Fri, 14 Jun 2024 05:22:11 -0400 Subject: [PATCH 12/18] support codecov --- .github/.codecov.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/.codecov.yml diff --git a/.github/.codecov.yml b/.github/.codecov.yml new file mode 100644 index 000000000..7a297361d --- /dev/null +++ b/.github/.codecov.yml @@ -0,0 +1,16 @@ +codecov: + notify: + wait_for_ci: true + +coverage: + status: + patch: + default: + threshold: 100% # allow patch coverage to be lower than project coverage by any amount + project: + default: + threshold: 5% # allow project coverage to drop at most 5% + +comment: false +github_checks: + annotations: false From 398a64e9bb456cff3e14002d4ef0ba1b40eb3473 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Mon, 17 Jun 2024 18:36:50 -0400 Subject: [PATCH 13/18] support codecov --- .github/workflows/tests.yml | 7 ++++++- pyproject.toml | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c7ac3e9d2..00c53e185 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -33,4 +33,9 @@ jobs: REDIS_OM_URL: ${{ secrets.REDIS_OM_URL }} TOGETHER_API_KEY: ${{ secrets.TOGETHER_API_KEY }} run: | - poetry run pytest + poetry run pytest --cov=. --cov-report=xml + + - name: Upload coverage report to Codecov + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 102a4161c..184e4c8ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,6 +47,7 @@ ruff = "*" [tool.poetry.group.test.dependencies] pytest = "*" +pytest-cov = "*" pytest-asyncio = "*" mypy = "^1.8.0" From 9eccda587a5588d9f9cce48bf346a396b52b34cd Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Mon, 17 Jun 2024 18:38:55 -0400 Subject: [PATCH 14/18] support codecov --- .github/workflows/tests.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 00c53e185..f478a5ab1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,8 +34,7 @@ jobs: TOGETHER_API_KEY: ${{ secrets.TOGETHER_API_KEY }} run: | poetry run pytest --cov=. --cov-report=xml - - name: Upload coverage report to Codecov - uses: codecov/codecov-action@v4.0.1 - with: - token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file From ab1914bb293c05e7063352a9b86a83d1aa602657 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Tue, 18 Jun 2024 00:22:11 -0400 Subject: [PATCH 15/18] fix pre-commit --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f478a5ab1..c66cfb4a4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -37,4 +37,4 @@ jobs: - name: Upload coverage report to Codecov uses: codecov/codecov-action@v4.0.1 with: - token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file + token: ${{ secrets.CODECOV_TOKEN }} From b9a75241a7e99c2908b808451bf909024cf9c870 Mon Sep 17 00:00:00 2001 From: Haofei Yu <1125027232@qq.com> Date: Tue, 18 Jun 2024 00:27:04 -0400 Subject: [PATCH 16/18] update poetry lock --- poetry.lock | 915 ++++++++++++++++++++++++++++------------------------ 1 file changed, 487 insertions(+), 428 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3fb7d9cc2..ad630c21e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "absl-py" @@ -148,13 +148,13 @@ vertex = ["google-auth (>=2,<3)"] [[package]] name = "anyio" -version = "4.3.0" +version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, - {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, ] [package.dependencies] @@ -247,17 +247,17 @@ test-tox-coverage = ["coverage (>=5.5)"] [[package]] name = "boto3" -version = "1.34.113" +version = "1.34.128" description = "The AWS SDK for Python" optional = true python-versions = ">=3.8" files = [ - {file = "boto3-1.34.113-py3-none-any.whl", hash = "sha256:7e59f0a848be477a4c98a90e7a18a0e284adfb643f7879d2b303c5f493661b7a"}, - {file = "boto3-1.34.113.tar.gz", hash = "sha256:009cd143509f2ff4c37582c3f45d50f28c95eed68e8a5c36641206bdb597a9ea"}, + {file = "boto3-1.34.128-py3-none-any.whl", hash = "sha256:a048ff980a81cd652724a73bc496c519b336fabe19cc8bfc6c53b2ff6eb22c7b"}, + {file = "boto3-1.34.128.tar.gz", hash = "sha256:43a6e99f53a8d34b3b4dbe424dbcc6b894350dc41a85b0af7c7bc24a7ec2cead"}, ] [package.dependencies] -botocore = ">=1.34.113,<1.35.0" +botocore = ">=1.34.128,<1.35.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -266,25 +266,22 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.34.113" +version = "1.34.128" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" files = [ - {file = "botocore-1.34.113-py3-none-any.whl", hash = "sha256:8ca87776450ef41dd25c327eb6e504294230a5756940d68bcfdedc4a7cdeca97"}, - {file = "botocore-1.34.113.tar.gz", hash = "sha256:449912ba3c4ded64f21d09d428146dd9c05337b2a112e15511bf2c4888faae79"}, + {file = "botocore-1.34.128-py3-none-any.whl", hash = "sha256:db67fda136c372ab3fa432580c819c89ba18d28a6152a4d2a7ea40d44082892e"}, + {file = "botocore-1.34.128.tar.gz", hash = "sha256:8d8e03f7c8c080ecafda72036eb3b482d649f8417c90b5dca33b7c2c47adb0c9"}, ] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" -urllib3 = [ - {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, - {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, -] +urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""} [package.extras] -crt = ["awscrt (==0.20.9)"] +crt = ["awscrt (==0.20.11)"] [[package]] name = "cachetools" @@ -299,13 +296,13 @@ files = [ [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.6.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, ] [[package]] @@ -509,13 +506,13 @@ files = [ [[package]] name = "cohere" -version = "5.5.3" +version = "5.5.8" description = "" optional = true python-versions = "<4.0,>=3.8" files = [ - {file = "cohere-5.5.3-py3-none-any.whl", hash = "sha256:99d20129713a6dae052368b4839773a214592a76bee345b94a4846d00f702da3"}, - {file = "cohere-5.5.3.tar.gz", hash = "sha256:8c7ebe2f5bf83fee8e55a24a0acdd4b0e94de274fd0ef32b285978289a03e930"}, + {file = "cohere-5.5.8-py3-none-any.whl", hash = "sha256:e1ed84b90eadd13c6a68ee28e378a0bb955f8945eadc6eb7ee126b3399cafd54"}, + {file = "cohere-5.5.8.tar.gz", hash = "sha256:84ce7666ff8fbdf4f41fb5f6ca452ab2639a514bc88967a2854a9b1b820d6ea0"}, ] [package.dependencies] @@ -523,9 +520,10 @@ boto3 = ">=1.34.0,<2.0.0" fastavro = ">=1.9.4,<2.0.0" httpx = ">=0.21.2" httpx-sse = ">=0.4.0,<0.5.0" +parameterized = ">=0.9.0,<0.10.0" pydantic = ">=1.9.2" requests = ">=2.0.0,<3.0.0" -tokenizers = ">=0.19,<0.20" +tokenizers = ">=0.15,<1" types-requests = ">=2.0.0,<3.0.0" typing_extensions = ">=4.0.0" @@ -557,45 +555,112 @@ traitlets = ">=4" [package.extras] test = ["pytest"] +[[package]] +name = "coverage" +version = "7.5.3" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "coverage-7.5.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a6519d917abb15e12380406d721e37613e2a67d166f9fb7e5a8ce0375744cd45"}, + {file = "coverage-7.5.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:aea7da970f1feccf48be7335f8b2ca64baf9b589d79e05b9397a06696ce1a1ec"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:923b7b1c717bd0f0f92d862d1ff51d9b2b55dbbd133e05680204465f454bb286"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62bda40da1e68898186f274f832ef3e759ce929da9a9fd9fcf265956de269dbc"}, + {file = "coverage-7.5.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8b7339180d00de83e930358223c617cc343dd08e1aa5ec7b06c3a121aec4e1d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:25a5caf742c6195e08002d3b6c2dd6947e50efc5fc2c2205f61ecb47592d2d83"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:05ac5f60faa0c704c0f7e6a5cbfd6f02101ed05e0aee4d2822637a9e672c998d"}, + {file = "coverage-7.5.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:239a4e75e09c2b12ea478d28815acf83334d32e722e7433471fbf641c606344c"}, + {file = "coverage-7.5.3-cp310-cp310-win32.whl", hash = "sha256:a5812840d1d00eafae6585aba38021f90a705a25b8216ec7f66aebe5b619fb84"}, + {file = "coverage-7.5.3-cp310-cp310-win_amd64.whl", hash = "sha256:33ca90a0eb29225f195e30684ba4a6db05dbef03c2ccd50b9077714c48153cac"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f81bc26d609bf0fbc622c7122ba6307993c83c795d2d6f6f6fd8c000a770d974"}, + {file = "coverage-7.5.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7cec2af81f9e7569280822be68bd57e51b86d42e59ea30d10ebdbb22d2cb7232"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55f689f846661e3f26efa535071775d0483388a1ccfab899df72924805e9e7cd"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50084d3516aa263791198913a17354bd1dc627d3c1639209640b9cac3fef5807"}, + {file = "coverage-7.5.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:341dd8f61c26337c37988345ca5c8ccabeff33093a26953a1ac72e7d0103c4fb"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ab0b028165eea880af12f66086694768f2c3139b2c31ad5e032c8edbafca6ffc"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5bc5a8c87714b0c67cfeb4c7caa82b2d71e8864d1a46aa990b5588fa953673b8"}, + {file = "coverage-7.5.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38a3b98dae8a7c9057bd91fbf3415c05e700a5114c5f1b5b0ea5f8f429ba6614"}, + {file = "coverage-7.5.3-cp311-cp311-win32.whl", hash = "sha256:fcf7d1d6f5da887ca04302db8e0e0cf56ce9a5e05f202720e49b3e8157ddb9a9"}, + {file = "coverage-7.5.3-cp311-cp311-win_amd64.whl", hash = "sha256:8c836309931839cca658a78a888dab9676b5c988d0dd34ca247f5f3e679f4e7a"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:296a7d9bbc598e8744c00f7a6cecf1da9b30ae9ad51c566291ff1314e6cbbed8"}, + {file = "coverage-7.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34d6d21d8795a97b14d503dcaf74226ae51eb1f2bd41015d3ef332a24d0a17b3"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e317953bb4c074c06c798a11dbdd2cf9979dbcaa8ccc0fa4701d80042d4ebf1"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:705f3d7c2b098c40f5b81790a5fedb274113373d4d1a69e65f8b68b0cc26f6db"}, + {file = "coverage-7.5.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1196e13c45e327d6cd0b6e471530a1882f1017eb83c6229fc613cd1a11b53cd"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:015eddc5ccd5364dcb902eaecf9515636806fa1e0d5bef5769d06d0f31b54523"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fd27d8b49e574e50caa65196d908f80e4dff64d7e592d0c59788b45aad7e8b35"}, + {file = "coverage-7.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:33fc65740267222fc02975c061eb7167185fef4cc8f2770267ee8bf7d6a42f84"}, + {file = "coverage-7.5.3-cp312-cp312-win32.whl", hash = "sha256:7b2a19e13dfb5c8e145c7a6ea959485ee8e2204699903c88c7d25283584bfc08"}, + {file = "coverage-7.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:0bbddc54bbacfc09b3edaec644d4ac90c08ee8ed4844b0f86227dcda2d428fcb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f78300789a708ac1f17e134593f577407d52d0417305435b134805c4fb135adb"}, + {file = "coverage-7.5.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b368e1aee1b9b75757942d44d7598dcd22a9dbb126affcbba82d15917f0cc155"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f836c174c3a7f639bded48ec913f348c4761cbf49de4a20a956d3431a7c9cb24"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:244f509f126dc71369393ce5fea17c0592c40ee44e607b6d855e9c4ac57aac98"}, + {file = "coverage-7.5.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4c2872b3c91f9baa836147ca33650dc5c172e9273c808c3c3199c75490e709d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dd4b3355b01273a56b20c219e74e7549e14370b31a4ffe42706a8cda91f19f6d"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f542287b1489c7a860d43a7d8883e27ca62ab84ca53c965d11dac1d3a1fab7ce"}, + {file = "coverage-7.5.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:75e3f4e86804023e991096b29e147e635f5e2568f77883a1e6eed74512659ab0"}, + {file = "coverage-7.5.3-cp38-cp38-win32.whl", hash = "sha256:c59d2ad092dc0551d9f79d9d44d005c945ba95832a6798f98f9216ede3d5f485"}, + {file = "coverage-7.5.3-cp38-cp38-win_amd64.whl", hash = "sha256:fa21a04112c59ad54f69d80e376f7f9d0f5f9123ab87ecd18fbb9ec3a2beed56"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f5102a92855d518b0996eb197772f5ac2a527c0ec617124ad5242a3af5e25f85"}, + {file = "coverage-7.5.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d1da0a2e3b37b745a2b2a678a4c796462cf753aebf94edcc87dcc6b8641eae31"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8383a6c8cefba1b7cecc0149415046b6fc38836295bc4c84e820872eb5478b3d"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aad68c3f2566dfae84bf46295a79e79d904e1c21ccfc66de88cd446f8686341"}, + {file = "coverage-7.5.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e079c9ec772fedbade9d7ebc36202a1d9ef7291bc9b3a024ca395c4d52853d7"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bde997cac85fcac227b27d4fb2c7608a2c5f6558469b0eb704c5726ae49e1c52"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:990fb20b32990b2ce2c5f974c3e738c9358b2735bc05075d50a6f36721b8f303"}, + {file = "coverage-7.5.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3d5a67f0da401e105753d474369ab034c7bae51a4c31c77d94030d59e41df5bd"}, + {file = "coverage-7.5.3-cp39-cp39-win32.whl", hash = "sha256:e08c470c2eb01977d221fd87495b44867a56d4d594f43739a8028f8646a51e0d"}, + {file = "coverage-7.5.3-cp39-cp39-win_amd64.whl", hash = "sha256:1d2a830ade66d3563bb61d1e3c77c8def97b30ed91e166c67d0632c018f380f0"}, + {file = "coverage-7.5.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:3538d8fb1ee9bdd2e2692b3b18c22bb1c19ffbefd06880f5ac496e42d7bb3884"}, + {file = "coverage-7.5.3.tar.gz", hash = "sha256:04aefca5190d1dc7a53a4c1a5a7f8568811306d7a8ee231c42fb69215571944f"}, +] + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + [[package]] name = "cryptography" -version = "42.0.7" +version = "42.0.8" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477"}, - {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55"}, - {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da"}, - {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7"}, - {file = "cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b"}, - {file = "cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678"}, - {file = "cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda"}, - {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1"}, - {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886"}, - {file = "cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda"}, - {file = "cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd"}, - {file = "cryptography-42.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9"}, - {file = "cryptography-42.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68"}, - {file = "cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, + {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, + {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, + {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, + {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, + {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, + {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, + {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, + {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, + {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, + {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, + {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, + {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, + {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, ] [package.dependencies] @@ -613,13 +678,13 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "dataclasses-json" -version = "0.6.6" +version = "0.6.7" description = "Easily serialize dataclasses to and from JSON." optional = false python-versions = "<4.0,>=3.7" files = [ - {file = "dataclasses_json-0.6.6-py3-none-any.whl", hash = "sha256:e54c5c87497741ad454070ba0ed411523d46beb5da102e221efb873801b0ba85"}, - {file = "dataclasses_json-0.6.6.tar.gz", hash = "sha256:0c09827d26fffda27f1be2fed7a7a01a29c5ddcd2eb6393ad5ebf9d77e9deae8"}, + {file = "dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a"}, + {file = "dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0"}, ] [package.dependencies] @@ -628,37 +693,37 @@ typing-inspect = ">=0.4.0,<1" [[package]] name = "datasets" -version = "2.19.1" +version = "2.20.0" description = "HuggingFace community-driven open-source library of datasets" optional = true python-versions = ">=3.8.0" files = [ - {file = "datasets-2.19.1-py3-none-any.whl", hash = "sha256:f7a78d15896f45004ccac1c298f3c7121f92f91f6f2bfbd4e4f210f827e6e411"}, - {file = "datasets-2.19.1.tar.gz", hash = "sha256:0df9ef6c5e9138cdb996a07385220109ff203c204245578b69cca905eb151d3a"}, + {file = "datasets-2.20.0-py3-none-any.whl", hash = "sha256:76ac02e3bdfff824492e20678f0b6b1b6d080515957fe834b00c2ba8d6b18e5e"}, + {file = "datasets-2.20.0.tar.gz", hash = "sha256:3c4dbcd27e0f642b9d41d20ff2efa721a5e04b32b2ca4009e0fc9139e324553f"}, ] [package.dependencies] aiohttp = "*" dill = ">=0.3.0,<0.3.9" filelock = "*" -fsspec = {version = ">=2023.1.0,<=2024.3.1", extras = ["http"]} +fsspec = {version = ">=2023.1.0,<=2024.5.0", extras = ["http"]} huggingface-hub = ">=0.21.2" multiprocess = "*" numpy = ">=1.17" packaging = "*" pandas = "*" -pyarrow = ">=12.0.0" +pyarrow = ">=15.0.0" pyarrow-hotfix = "*" pyyaml = ">=5.1" -requests = ">=2.19.0" -tqdm = ">=4.62.1" +requests = ">=2.32.2" +tqdm = ">=4.66.3" xxhash = "*" [package.extras] apache-beam = ["apache-beam (>=2.26.0)"] audio = ["librosa", "soundfile (>=0.12.1)"] benchmarks = ["tensorflow (==2.12.0)", "torch (==2.0.1)", "transformers (==4.30.1)"] -dev = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +dev = ["Pillow (>=9.4.0)", "absl-py", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "ruff (>=0.3.0)", "s3fs", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] docs = ["s3fs", "tensorflow (>=2.6.0)", "torch", "transformers"] jax = ["jax (>=0.3.14)", "jaxlib (>=0.3.14)"] metrics-tests = ["Werkzeug (>=1.0.1)", "accelerate", "bert-score (>=0.3.6)", "jiwer", "langdetect", "mauve-text", "nltk", "requests-file (>=1.5.1)", "rouge-score", "sacrebleu", "sacremoses", "scikit-learn", "scipy", "sentencepiece", "seqeval", "six (>=1.15.0,<1.16.0)", "spacy (>=3.0.0)", "texttable (>=1.6.3)", "tldextract", "tldextract (>=3.1.0)", "toml (>=0.10.1)", "typer (<0.5.0)"] @@ -666,9 +731,9 @@ quality = ["ruff (>=0.3.0)"] s3 = ["s3fs"] tensorflow = ["tensorflow (>=2.6.0)"] tensorflow-gpu = ["tensorflow (>=2.6.0)"] -tests = ["Pillow (>=6.2.1)", "absl-py", "apache-beam (>=2.26.0)", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] +tests = ["Pillow (>=9.4.0)", "absl-py", "elasticsearch (<8.0.0)", "faiss-cpu (>=1.6.4)", "jax (>=0.3.14)", "jaxlib (>=0.3.14)", "joblib (<1.3.0)", "joblibspark", "librosa", "lz4", "polars[timezone] (>=0.20.0)", "protobuf (<4.0.0)", "py7zr", "pyspark (>=3.4)", "pytest", "pytest-datadir", "pytest-xdist", "rarfile (>=4.0)", "s3fs (>=2021.11.1)", "soundfile (>=0.12.1)", "sqlalchemy", "tensorflow (>=2.6.0)", "tiktoken", "torch (>=2.0.0)", "transformers", "typing-extensions (>=4.6.1)", "zstandard"] torch = ["torch"] -vision = ["Pillow (>=6.2.1)"] +vision = ["Pillow (>=9.4.0)"] [[package]] name = "debugpy" @@ -855,13 +920,13 @@ zstandard = ["zstandard"] [[package]] name = "fastjsonschema" -version = "2.19.1" +version = "2.20.0" description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, - {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, + {file = "fastjsonschema-2.20.0-py3-none-any.whl", hash = "sha256:5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a"}, + {file = "fastjsonschema-2.20.0.tar.gz", hash = "sha256:3d48fc5300ee96f5d116f10fe6f28d938e6008f59a6a025c2649475b87f76a23"}, ] [package.extras] @@ -869,18 +934,18 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.14.0" +version = "3.15.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, - {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, + {file = "filelock-3.15.1-py3-none-any.whl", hash = "sha256:71b3102950e91dfc1bb4209b64be4dc8854f40e5f534428d8684f953ac847fac"}, + {file = "filelock-3.15.1.tar.gz", hash = "sha256:58a2549afdf9e02e10720eaa4d4470f56386d7a6f72edd7d0596337af8ed7ad8"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] @@ -971,13 +1036,13 @@ files = [ [[package]] name = "fsspec" -version = "2024.3.1" +version = "2024.5.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.3.1-py3-none-any.whl", hash = "sha256:918d18d41bf73f0e2b261824baeb1b124bcf771767e3a26425cd7dec3332f512"}, - {file = "fsspec-2024.3.1.tar.gz", hash = "sha256:f39780e282d7d117ffb42bb96992f8a90795e4d0fb0f661a70ca39fe9c43ded9"}, + {file = "fsspec-2024.5.0-py3-none-any.whl", hash = "sha256:e0fdbc446d67e182f49a70b82cf7889028a63588fde6b222521f10937b2b670c"}, + {file = "fsspec-2024.5.0.tar.gz", hash = "sha256:1d021b0b0f933e3b3029ed808eb400c08ba101ca2de4b3483fbc9ca23fcee94a"}, ] [package.dependencies] @@ -988,7 +1053,7 @@ abfs = ["adlfs"] adl = ["adlfs"] arrow = ["pyarrow (>=1)"] dask = ["dask", "distributed"] -devel = ["pytest", "pytest-cov"] +dev = ["pre-commit", "ruff"] dropbox = ["dropbox", "dropboxdrivefs", "requests"] full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] fuse = ["fusepy"] @@ -1005,6 +1070,9 @@ s3 = ["s3fs"] sftp = ["paramiko"] smb = ["smbprotocol"] ssh = ["paramiko"] +test = ["aiohttp (!=4.0.0a0,!=4.0.0a1)", "numpy", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "requests"] +test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask-expr", "dask[dataframe,test]", "moto[server] (>4,<5)", "pytest-timeout", "xarray"] +test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard"] tqdm = ["tqdm"] [[package]] @@ -1058,11 +1126,11 @@ files = [ google-auth = ">=2.14.1,<3.0.dev0" googleapis-common-protos = ">=1.56.2,<2.0.dev0" grpcio = [ - {version = ">=1.33.2,<2.0dev", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0dev", optional = true, markers = "extra == \"grpc\""}, {version = ">=1.49.1,<2.0dev", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, ] grpcio-status = [ - {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "extra == \"grpc\""}, {version = ">=1.49.1,<2.0.dev0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, ] proto-plus = ">=1.22.3,<2.0.0dev" @@ -1076,13 +1144,13 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.dev0)"] [[package]] name = "google-api-python-client" -version = "2.130.0" +version = "2.133.0" description = "Google API Client Library for Python" optional = true python-versions = ">=3.7" files = [ - {file = "google-api-python-client-2.130.0.tar.gz", hash = "sha256:2bba3122b82a649c677b8a694b8e2bbf2a5fbf3420265caf3343bb88e2e9f0ae"}, - {file = "google_api_python_client-2.130.0-py2.py3-none-any.whl", hash = "sha256:7d45a28d738628715944a9c9d73e8696e7e03ac50b7de87f5e3035cefa94ed3a"}, + {file = "google-api-python-client-2.133.0.tar.gz", hash = "sha256:293092905b66a046d3187a99ac454e12b00cc2c70444f26eb2f1f9c1a82720b4"}, + {file = "google_api_python_client-2.133.0-py2.py3-none-any.whl", hash = "sha256:396fe676ea0dfed066654dcf9f8dea77a1342f9d9bb23bb88e45b7b81e773926"}, ] [package.dependencies] @@ -1094,13 +1162,13 @@ uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.29.0" +version = "2.30.0" description = "Google Authentication Library" optional = true python-versions = ">=3.7" files = [ - {file = "google-auth-2.29.0.tar.gz", hash = "sha256:672dff332d073227550ffc7457868ac4218d6c500b155fe6cc17d2b13602c360"}, - {file = "google_auth-2.29.0-py2.py3-none-any.whl", hash = "sha256:d452ad095688cd52bae0ad6fafe027f6a6d6f560e810fec20914e17a09526415"}, + {file = "google-auth-2.30.0.tar.gz", hash = "sha256:ab630a1320f6720909ad76a7dbdb6841cdf5c66b328d690027e4867bdfb16688"}, + {file = "google_auth-2.30.0-py2.py3-none-any.whl", hash = "sha256:8df7da660f62757388b8a7f249df13549b3373f24388cb5d2f1dd91cc18180b5"}, ] [package.dependencies] @@ -1155,17 +1223,17 @@ dev = ["Pillow", "absl-py", "black", "ipython", "nose2", "pandas", "pytype", "py [[package]] name = "googleapis-common-protos" -version = "1.63.0" +version = "1.63.1" description = "Common protobufs used in Google APIs" optional = true python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.63.0.tar.gz", hash = "sha256:17ad01b11d5f1d0171c06d3ba5c04c54474e883b66b949722b4938ee2694ef4e"}, - {file = "googleapis_common_protos-1.63.0-py2.py3-none-any.whl", hash = "sha256:ae45f75702f7c08b541f750854a678bd8f534a1a6bace6afe975f1d0a82d6632"}, + {file = "googleapis-common-protos-1.63.1.tar.gz", hash = "sha256:c6442f7a0a6b2a80369457d79e6672bb7dcbaab88e0848302497e3ec80780a6a"}, + {file = "googleapis_common_protos-1.63.1-py2.py3-none-any.whl", hash = "sha256:0e1c2cdfcbc354b76e4a211a35ea35d6926a835cba1377073c4861db904a1877"}, ] [package.dependencies] -protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0.dev0" +protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" [package.extras] grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] @@ -1262,61 +1330,61 @@ typing-extensions = ">=4.7,<5" [[package]] name = "grpcio" -version = "1.64.0" +version = "1.64.1" description = "HTTP/2-based RPC framework" optional = true python-versions = ">=3.8" files = [ - {file = "grpcio-1.64.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:3b09c3d9de95461214a11d82cc0e6a46a6f4e1f91834b50782f932895215e5db"}, - {file = "grpcio-1.64.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:7e013428ab472892830287dd082b7d129f4d8afef49227a28223a77337555eaa"}, - {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:02cc9cc3f816d30f7993d0d408043b4a7d6a02346d251694d8ab1f78cc723e7e"}, - {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f5de082d936e0208ce8db9095821361dfa97af8767a6607ae71425ac8ace15c"}, - {file = "grpcio-1.64.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7b7bf346391dffa182fba42506adf3a84f4a718a05e445b37824136047686a1"}, - {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b2cbdfba18408389a1371f8c2af1659119e1831e5ed24c240cae9e27b4abc38d"}, - {file = "grpcio-1.64.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca4f15427d2df592e0c8f3d38847e25135e4092d7f70f02452c0e90d6a02d6d"}, - {file = "grpcio-1.64.0-cp310-cp310-win32.whl", hash = "sha256:7c1f5b2298244472bcda49b599be04579f26425af0fd80d3f2eb5fd8bc84d106"}, - {file = "grpcio-1.64.0-cp310-cp310-win_amd64.whl", hash = "sha256:73f84f9e5985a532e47880b3924867de16fa1aa513fff9b26106220c253c70c5"}, - {file = "grpcio-1.64.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:2a18090371d138a57714ee9bffd6c9c9cb2e02ce42c681aac093ae1e7189ed21"}, - {file = "grpcio-1.64.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:59c68df3a934a586c3473d15956d23a618b8f05b5e7a3a904d40300e9c69cbf0"}, - {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:b52e1ec7185512103dd47d41cf34ea78e7a7361ba460187ddd2416b480e0938c"}, - {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d598b5d5e2c9115d7fb7e2cb5508d14286af506a75950762aa1372d60e41851"}, - {file = "grpcio-1.64.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01615bbcae6875eee8091e6b9414072f4e4b00d8b7e141f89635bdae7cf784e5"}, - {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0b2dfe6dcace264807d9123d483d4c43274e3f8c39f90ff51de538245d7a4145"}, - {file = "grpcio-1.64.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7f17572dc9acd5e6dfd3014d10c0b533e9f79cd9517fc10b0225746f4c24b58e"}, - {file = "grpcio-1.64.0-cp311-cp311-win32.whl", hash = "sha256:6ec5ed15b4ffe56e2c6bc76af45e6b591c9be0224b3fb090adfb205c9012367d"}, - {file = "grpcio-1.64.0-cp311-cp311-win_amd64.whl", hash = "sha256:597191370951b477b7a1441e1aaa5cacebeb46a3b0bd240ec3bb2f28298c7553"}, - {file = "grpcio-1.64.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:1ce4cd5a61d4532651079e7aae0fedf9a80e613eed895d5b9743e66b52d15812"}, - {file = "grpcio-1.64.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:650a8150a9b288f40d5b7c1d5400cc11724eae50bd1f501a66e1ea949173649b"}, - {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:8de0399b983f8676a7ccfdd45e5b2caec74a7e3cc576c6b1eecf3b3680deda5e"}, - {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:46b8b43ba6a2a8f3103f103f97996cad507bcfd72359af6516363c48793d5a7b"}, - {file = "grpcio-1.64.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a54362f03d4dcfae63be455d0a7d4c1403673498b92c6bfe22157d935b57c7a9"}, - {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1f8ea18b928e539046bb5f9c124d717fbf00cc4b2d960ae0b8468562846f5aa1"}, - {file = "grpcio-1.64.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c56c91bd2923ddb6e7ed28ebb66d15633b03e0df22206f22dfcdde08047e0a48"}, - {file = "grpcio-1.64.0-cp312-cp312-win32.whl", hash = "sha256:874c741c8a66f0834f653a69e7e64b4e67fcd4a8d40296919b93bab2ccc780ba"}, - {file = "grpcio-1.64.0-cp312-cp312-win_amd64.whl", hash = "sha256:0da1d921f8e4bcee307aeef6c7095eb26e617c471f8cb1c454fd389c5c296d1e"}, - {file = "grpcio-1.64.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:c46fb6bfca17bfc49f011eb53416e61472fa96caa0979b4329176bdd38cbbf2a"}, - {file = "grpcio-1.64.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3d2004e85cf5213995d09408501f82c8534700d2babeb81dfdba2a3bff0bb396"}, - {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:6d5541eb460d73a07418524fb64dcfe0adfbcd32e2dac0f8f90ce5b9dd6c046c"}, - {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f279ad72dd7d64412e10f2443f9f34872a938c67387863c4cd2fb837f53e7d2"}, - {file = "grpcio-1.64.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85fda90b81da25993aa47fae66cae747b921f8f6777550895fb62375b776a231"}, - {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a053584079b793a54bece4a7d1d1b5c0645bdbee729215cd433703dc2532f72b"}, - {file = "grpcio-1.64.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:579dd9fb11bc73f0de061cab5f8b2def21480fd99eb3743ed041ad6a1913ee2f"}, - {file = "grpcio-1.64.0-cp38-cp38-win32.whl", hash = "sha256:23b6887bb21d77649d022fa1859e05853fdc2e60682fd86c3db652a555a282e0"}, - {file = "grpcio-1.64.0-cp38-cp38-win_amd64.whl", hash = "sha256:753cb58683ba0c545306f4e17dabf468d29cb6f6b11832e1e432160bb3f8403c"}, - {file = "grpcio-1.64.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:2186d76a7e383e1466e0ea2b0febc343ffeae13928c63c6ec6826533c2d69590"}, - {file = "grpcio-1.64.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0f30596cdcbed3c98024fb4f1d91745146385b3f9fd10c9f2270cbfe2ed7ed91"}, - {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:d9171f025a196f5bcfec7e8e7ffb7c3535f7d60aecd3503f9e250296c7cfc150"}, - {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf4c8daed18ae2be2f1fc7d613a76ee2a2e28fdf2412d5c128be23144d28283d"}, - {file = "grpcio-1.64.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3550493ac1d23198d46dc9c9b24b411cef613798dc31160c7138568ec26bc9b4"}, - {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3161a8f8bb38077a6470508c1a7301cd54301c53b8a34bb83e3c9764874ecabd"}, - {file = "grpcio-1.64.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2e8fabe2cc57a369638ab1ad8e6043721014fdf9a13baa7c0e35995d3a4a7618"}, - {file = "grpcio-1.64.0-cp39-cp39-win32.whl", hash = "sha256:31890b24d47b62cc27da49a462efe3d02f3c120edb0e6c46dcc0025506acf004"}, - {file = "grpcio-1.64.0-cp39-cp39-win_amd64.whl", hash = "sha256:5a56797dea8c02e7d3a85dfea879f286175cf4d14fbd9ab3ef2477277b927baa"}, - {file = "grpcio-1.64.0.tar.gz", hash = "sha256:257baf07f53a571c215eebe9679c3058a313fd1d1f7c4eede5a8660108c52d9c"}, + {file = "grpcio-1.64.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:55697ecec192bc3f2f3cc13a295ab670f51de29884ca9ae6cd6247df55df2502"}, + {file = "grpcio-1.64.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:3b64ae304c175671efdaa7ec9ae2cc36996b681eb63ca39c464958396697daff"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:bac71b4b28bc9af61efcdc7630b166440bbfbaa80940c9a697271b5e1dabbc61"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c024ffc22d6dc59000faf8ad781696d81e8e38f4078cb0f2630b4a3cf231a90"}, + {file = "grpcio-1.64.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7cd5c1325f6808b8ae31657d281aadb2a51ac11ab081ae335f4f7fc44c1721d"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0a2813093ddb27418a4c99f9b1c223fab0b053157176a64cc9db0f4557b69bd9"}, + {file = "grpcio-1.64.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2981c7365a9353f9b5c864595c510c983251b1ab403e05b1ccc70a3d9541a73b"}, + {file = "grpcio-1.64.1-cp310-cp310-win32.whl", hash = "sha256:1262402af5a511c245c3ae918167eca57342c72320dffae5d9b51840c4b2f86d"}, + {file = "grpcio-1.64.1-cp310-cp310-win_amd64.whl", hash = "sha256:19264fc964576ddb065368cae953f8d0514ecc6cb3da8903766d9fb9d4554c33"}, + {file = "grpcio-1.64.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:58b1041e7c870bb30ee41d3090cbd6f0851f30ae4eb68228955d973d3efa2e61"}, + {file = "grpcio-1.64.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bbc5b1d78a7822b0a84c6f8917faa986c1a744e65d762ef6d8be9d75677af2ca"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:5841dd1f284bd1b3d8a6eca3a7f062b06f1eec09b184397e1d1d43447e89a7ae"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8caee47e970b92b3dd948371230fcceb80d3f2277b3bf7fbd7c0564e7d39068e"}, + {file = "grpcio-1.64.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73819689c169417a4f978e562d24f2def2be75739c4bed1992435d007819da1b"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6503b64c8b2dfad299749cad1b595c650c91e5b2c8a1b775380fcf8d2cbba1e9"}, + {file = "grpcio-1.64.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1de403fc1305fd96cfa75e83be3dee8538f2413a6b1685b8452301c7ba33c294"}, + {file = "grpcio-1.64.1-cp311-cp311-win32.whl", hash = "sha256:d4d29cc612e1332237877dfa7fe687157973aab1d63bd0f84cf06692f04c0367"}, + {file = "grpcio-1.64.1-cp311-cp311-win_amd64.whl", hash = "sha256:5e56462b05a6f860b72f0fa50dca06d5b26543a4e88d0396259a07dc30f4e5aa"}, + {file = "grpcio-1.64.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:4657d24c8063e6095f850b68f2d1ba3b39f2b287a38242dcabc166453e950c59"}, + {file = "grpcio-1.64.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:62b4e6eb7bf901719fce0ca83e3ed474ae5022bb3827b0a501e056458c51c0a1"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:ee73a2f5ca4ba44fa33b4d7d2c71e2c8a9e9f78d53f6507ad68e7d2ad5f64a22"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:198908f9b22e2672a998870355e226a725aeab327ac4e6ff3a1399792ece4762"}, + {file = "grpcio-1.64.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39b9d0acaa8d835a6566c640f48b50054f422d03e77e49716d4c4e8e279665a1"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:5e42634a989c3aa6049f132266faf6b949ec2a6f7d302dbb5c15395b77d757eb"}, + {file = "grpcio-1.64.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b1a82e0b9b3022799c336e1fc0f6210adc019ae84efb7321d668129d28ee1efb"}, + {file = "grpcio-1.64.1-cp312-cp312-win32.whl", hash = "sha256:55260032b95c49bee69a423c2f5365baa9369d2f7d233e933564d8a47b893027"}, + {file = "grpcio-1.64.1-cp312-cp312-win_amd64.whl", hash = "sha256:c1a786ac592b47573a5bb7e35665c08064a5d77ab88a076eec11f8ae86b3e3f6"}, + {file = "grpcio-1.64.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a011ac6c03cfe162ff2b727bcb530567826cec85eb8d4ad2bfb4bd023287a52d"}, + {file = "grpcio-1.64.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:4d6dab6124225496010bd22690f2d9bd35c7cbb267b3f14e7a3eb05c911325d4"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:a5e771d0252e871ce194d0fdcafd13971f1aae0ddacc5f25615030d5df55c3a2"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2c3c1b90ab93fed424e454e93c0ed0b9d552bdf1b0929712b094f5ecfe7a23ad"}, + {file = "grpcio-1.64.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20405cb8b13fd779135df23fabadc53b86522d0f1cba8cca0e87968587f50650"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0cc79c982ccb2feec8aad0e8fb0d168bcbca85bc77b080d0d3c5f2f15c24ea8f"}, + {file = "grpcio-1.64.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a3a035c37ce7565b8f4f35ff683a4db34d24e53dc487e47438e434eb3f701b2a"}, + {file = "grpcio-1.64.1-cp38-cp38-win32.whl", hash = "sha256:1257b76748612aca0f89beec7fa0615727fd6f2a1ad580a9638816a4b2eb18fd"}, + {file = "grpcio-1.64.1-cp38-cp38-win_amd64.whl", hash = "sha256:0a12ddb1678ebc6a84ec6b0487feac020ee2b1659cbe69b80f06dbffdb249122"}, + {file = "grpcio-1.64.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:75dbbf415026d2862192fe1b28d71f209e2fd87079d98470db90bebe57b33179"}, + {file = "grpcio-1.64.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e3d9f8d1221baa0ced7ec7322a981e28deb23749c76eeeb3d33e18b72935ab62"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5f8b75f64d5d324c565b263c67dbe4f0af595635bbdd93bb1a88189fc62ed2e5"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c84ad903d0d94311a2b7eea608da163dace97c5fe9412ea311e72c3684925602"}, + {file = "grpcio-1.64.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:940e3ec884520155f68a3b712d045e077d61c520a195d1a5932c531f11883489"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f10193c69fc9d3d726e83bbf0f3d316f1847c3071c8c93d8090cf5f326b14309"}, + {file = "grpcio-1.64.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ac15b6c2c80a4d1338b04d42a02d376a53395ddf0ec9ab157cbaf44191f3ffdd"}, + {file = "grpcio-1.64.1-cp39-cp39-win32.whl", hash = "sha256:03b43d0ccf99c557ec671c7dede64f023c7da9bb632ac65dbc57f166e4970040"}, + {file = "grpcio-1.64.1-cp39-cp39-win_amd64.whl", hash = "sha256:ed6091fa0adcc7e4ff944090cf203a52da35c37a130efa564ded02b7aff63bcd"}, + {file = "grpcio-1.64.1.tar.gz", hash = "sha256:8d51dd1c59d5fa0f34266b80a3805ec29a1f26425c2a54736133f6d87fc4968a"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.64.0)"] +protobuf = ["grpcio-tools (>=1.64.1)"] [[package]] name = "grpcio-status" @@ -1348,7 +1416,6 @@ files = [ [package.dependencies] cloudpickle = ">=1.2.0" farama-notifications = ">=0.0.1" -importlib-metadata = {version = ">=4.8.0", markers = "python_version < \"3.10\""} numpy = ">=1.21.0" typing-extensions = ">=4.3.0" @@ -1566,13 +1633,13 @@ files = [ [[package]] name = "huggingface-hub" -version = "0.23.1" +version = "0.23.4" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.23.1-py3-none-any.whl", hash = "sha256:720a5bffd2b1b449deb793da8b0df7a9390a7e238534d5a08c9fbcdecb1dd3cb"}, - {file = "huggingface_hub-0.23.1.tar.gz", hash = "sha256:4f62dbf6ae94f400c6d3419485e52bce510591432a5248a65d0cb72e4d479eb4"}, + {file = "huggingface_hub-0.23.4-py3-none-any.whl", hash = "sha256:3a0b957aa87150addf0cc7bd71b4d954b78e749850e1e7fb29ebbd2db64ca037"}, + {file = "huggingface_hub-0.23.4.tar.gz", hash = "sha256:35d99016433900e44ae7efe1c209164a5a81dbbcd53a52f99c281dcd7ce22431"}, ] [package.dependencies] @@ -1702,13 +1769,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.18.1" +version = "8.25.0" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, - {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, + {file = "ipython-8.25.0-py3-none-any.whl", hash = "sha256:53eee7ad44df903a06655871cbab66d156a051fd86f3ec6750470ac9604ac1ab"}, + {file = "ipython-8.25.0.tar.gz", hash = "sha256:c6ed726a140b6e725b911528f80439c534fac915246af3efc39440a6b0f9d716"}, ] [package.dependencies] @@ -1717,25 +1784,26 @@ decorator = "*" exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} +pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" -traitlets = ">=5" -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} +traitlets = ">=5.13.0" +typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] -all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] kernel = ["ipykernel"] +matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] +test = ["pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] [[package]] name = "jedi" @@ -1775,72 +1843,72 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.4.0" +version = "0.4.2" description = "Fast iterable JSON parser." optional = true python-versions = ">=3.8" files = [ - {file = "jiter-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4aa6226d82a4a4505078c0bd5947bad65399635fc5cd4b226512e41753624edf"}, - {file = "jiter-0.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:947111ac906740a948e7b63799481acd3d5ef666ccb178d146e25718640b7408"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69572ffb4e84ae289a7422b9af4ea123cae2ce0772228859b37d4b26b4bc92ea"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ba6046cbb5d1baa5a781b846f7e5438596a332f249a857d63f86ef5d1d9563b0"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4f346e54602782e66d07df0d1c7389384fd93680052ed6170da2c6dc758409e"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49110ce693f07e97d61089d894cea05a0b9894d5ccc6ac6fc583028726c8c8af"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e358df6fd129f3a4e087539f086355ad0107e5da16dbc8bc857d94222eaeed5"}, - {file = "jiter-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb852ca39a48f3c049def56f0d1771b32e948e4f429a782d14ef4cc64cfd26e"}, - {file = "jiter-0.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:44dc045decb2545bffe2da04ea4c36d9438d3f3d49fc47ed423ea75c352b712e"}, - {file = "jiter-0.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:413adb15372ac63db04373240f40925788e4282c997eeafc2040530049a0a599"}, - {file = "jiter-0.4.0-cp310-none-win32.whl", hash = "sha256:0b48ea71673a97b897e4b94bbc871e62495a5a85f836c9f90712a4c70aa3ef7e"}, - {file = "jiter-0.4.0-cp310-none-win_amd64.whl", hash = "sha256:6a1c84b44afafaf0ba6223679cf17af664b889da14da31d8af3595fd977d96fa"}, - {file = "jiter-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b2cc498345fa37ca23fbc20271a553aa46e6eb00924600f49b7dc4b2aa8952ee"}, - {file = "jiter-0.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:69f7221ac09ab421abf04f89942026868297c568133998fb181bcf435760cbf3"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef7d01c52f3e5a56ae73af36bd13797dd1a56711eb522748e5e84d15425b3f10"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:39be97d5ce0c4d0dae28c23c03a0af0501a725589427e99763f99c42e18aa402"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eac2ed1ec1e577b92b7ea2d4e6de8aec0c1164defd8af8affdc8ec0f0ec2904a"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6258837d184c92c9cb91c983c310ad7269d41afb49d34f00ca9246e073943a03"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:123c2a77b066bf17a4d021e238e8351058cfa56b90ac04f2522d120dc64ea055"}, - {file = "jiter-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2df939f792c7a40e55f36700417db551b9f6b84d348990fa0f2c608adeb1f11b"}, - {file = "jiter-0.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cb1b09b16d40cf9ba1d11ba11e5b96ad29286a6a1c4ad5e6a2aef5e352a89f5d"}, - {file = "jiter-0.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0efb4208889ebdbf933bf08dbcbc16e64ffd34c8e2b28044ee142789a9dc3a67"}, - {file = "jiter-0.4.0-cp311-none-win32.whl", hash = "sha256:20545ac1b68e7e5b066a1e8347840c9cebdd02ace65faae2e655fc02ec5c915c"}, - {file = "jiter-0.4.0-cp311-none-win_amd64.whl", hash = "sha256:6b300f9887c8e4431cd03a974ea3e4f9958885636003c3864220a9b2d2f8462b"}, - {file = "jiter-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:923432a0563bbae404ff25bb010e348514a69bfab979f2f8119b23b625dbf6d9"}, - {file = "jiter-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab8bb0ec8b97cec4422dc8b37b525442d969244488c805b834609ab0ccd788e2"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b857adb127b9c533907226791eafa79c5038c3eb5a477984994bf7c4715ba518"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2609cc0d1d8d470e921ff9a604afeb4c701bbe13e00bd9834d5aa6e7ea732a9b"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d39e99f8b7df46a119b6f84321f6ba01f16fa46abfa765d44c05c486d8e66829"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:56de8b518ebfe76a70f856741f6de248ce396c50a87acef827b6e8388e3a502d"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488b7e777be47f67ce1a1f8f8eb907f9bbd81af5c03784a9bab09d025c250233"}, - {file = "jiter-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ea35e0ecbb5dadd457855eb980dcc548c14cf5341bcd22a43814cb56f2bcc79"}, - {file = "jiter-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e1a9e9ee69c80b63951c93226b68d0e955953f64fe758bad2afe7ef7f9016af9"}, - {file = "jiter-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:78e2f3cc2a32a21d43ccc5afcf66f5d17e827ccc4e6d21c0b353bdad2c7dcc9c"}, - {file = "jiter-0.4.0-cp312-none-win32.whl", hash = "sha256:eeaa7a2b47a99f4ebbb4142bb58b95617e09f24c87570f6a57d2770687c9ddbe"}, - {file = "jiter-0.4.0-cp312-none-win_amd64.whl", hash = "sha256:8d4a78b385b93ff59a67215d26000fcb4789a388fca3730d1b60fab17fc81e3c"}, - {file = "jiter-0.4.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ebf20a3fac1089ce26963bf04140da0f803d55332ec69d59c5a87cf1a87d29c4"}, - {file = "jiter-0.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d62244ffc6a168187452277adeefb7b2c30170689c6bf543a51e98e8c17ddab7"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40b2cde77446a41cec595739fd168be87edff2428eaf7c3438231224dd0ab7a5"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e51fc0a22021ec8905b9b00a2f7d25756f2ff7a653e35a790a2067ae126b51f6"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a56e6f980b89d7cfe5c43811dcf52d6f37b319428a4540511235dafda9ea7808"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fec16adab8d3d3d6d74e3711a1f380836ebeab2a20e3f88cfe2ec5094d8b84"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19e3de515801c954e8f1dc1f575282a4a86df9e782d4993ea1ed2be9a8dedaa0"}, - {file = "jiter-0.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17e0ad8abf0bb04d81810eaeaab35d2c99b5da11fcd1058e0a389607ff6503b0"}, - {file = "jiter-0.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8dc0132b728f3b3e90ff0d1874504cd49c78f3553bf3745168a7fc0b4cf674e1"}, - {file = "jiter-0.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81a883104aa96e494d3d28eaf7070780d03ecee8ccfdfaf7e4899710340c47f1"}, - {file = "jiter-0.4.0-cp38-none-win32.whl", hash = "sha256:a044c53ab1aaa4af624ac9574181b5bad8e260aea7e03104738156511433deba"}, - {file = "jiter-0.4.0-cp38-none-win_amd64.whl", hash = "sha256:d920035c869053e3d9a0b3ff94384d16a8ef5fde3dea55f97bd29916f6e27554"}, - {file = "jiter-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:091e978f4e586a2f1c69bf940d45f4e6a23455877172a0ab7d6de04a3b119299"}, - {file = "jiter-0.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:79134b2d601309bcbe3304a262d7d228ad61d53c80883231c637773000a6d683"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c471473e0b05058b5d729ff04271b6d45a575ac8bd9948563268c734b380ac7e"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb84b8930da8b32b0b1fdff9817e2c4b47e8981b5647ad11c4975403416e4112"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7f2805e28941751ebfe0948596a64cde4cfb9b84bea5282affd020063e659c96"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:42ef59f9e513bf081a8b5c5578933ea9c3a63e559e6e3501a3e72edcd456ff5e"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ae12e3906f9e565120ab569de261b738e3a1ec50c40e30c67499e4f893e9a8c"}, - {file = "jiter-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:264dc1324f45a793bc89af4f653225229eb17bca9ec7107dce6c8fb4fe68d20f"}, - {file = "jiter-0.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9a1c172ec47d846e25881dfbd52438ddb690da4ea04d185e477abd3db6c32f8a"}, - {file = "jiter-0.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ccde31d0bc114aedad0dbd71b7f63ba0f0eecd7ec9ae1926a0ca01c1eb2854e7"}, - {file = "jiter-0.4.0-cp39-none-win32.whl", hash = "sha256:13139b05792fbc13a0f9a5b4c89823ea0874141decae1b8f693f12bb1d28e061"}, - {file = "jiter-0.4.0-cp39-none-win_amd64.whl", hash = "sha256:3a729b2631c6d5551a41069697415fee9659c3eadc9ab87369376ba51930cd00"}, - {file = "jiter-0.4.0.tar.gz", hash = "sha256:68203e02e0419bc3eca717c580c2d8f615aeee1150e2a1fb68d6600a7e52a37c"}, + {file = "jiter-0.4.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c2b003ff58d14f5e182b875acd5177b2367245c19a03be9a2230535d296f7550"}, + {file = "jiter-0.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b48c77c25f094707731cd5bad6b776046846b60a27ee20efc8fadfb10a89415f"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f50ad6b172bde4d45f4d4ea10c49282a337b8bb735afc99763dfa55ea84a743"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95f6001e86f525fbbc9706db2078dc22be078b0950de55b92d37041930f5f940"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16646ef23b62b007de80460d303ebb2d81e355dac9389c787cec87cdd7ffef2f"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b4e847c13b0bf1255c711a92330e7a8cb8b5cdd1e37d7db309627bcdd3367ff"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c536589be60e4c5f2b20fadc4db7e9f55d4c9df3551f29ddf1c4a18dcc9dd54"}, + {file = "jiter-0.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3b2763996167830889a854b4ded30bb90897f9b76be78069c50c3ec4540950e"}, + {file = "jiter-0.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:675e8ab98c99495091af6b6e9bf2b6353bcf81f25ab6ce27d36127e315b4505d"}, + {file = "jiter-0.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e48e43d9d999aaf55f53406b8846ff8cbe3e47ee4b9dc37e5a10a65ce760809f"}, + {file = "jiter-0.4.2-cp310-none-win32.whl", hash = "sha256:881b6e67c50bc36acb3570eda693763c8cd77d590940e06fa6d325d0da52ec1b"}, + {file = "jiter-0.4.2-cp310-none-win_amd64.whl", hash = "sha256:bb8f7b43259efc6add0d721ade2953e064b24e2026d26d979bc09ec080844cef"}, + {file = "jiter-0.4.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:24ad336ac47f274fa83f6fbedcabff9d3387c80f67c66b992688e6a8ba2c47e9"}, + {file = "jiter-0.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc392a220095730afe365ce1516f2f88bb085a2fd29ea191be9c6e3c71713d9a"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1fdc408de36c81460896de0176f2f7b9f3574dcd35693a0b2c00f4ca34c98e4"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c10ad76722ee6a8c820b0db06a793c08b7d679e5201b9563015bd1e06c959a09"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dbb46d1e9c82bba87f0cbda38413e49448a7df35b1e55917124bff9f38974a23"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:194e28ef4b5f3b61408cb2ee6b6dcbcdb0c9063d01b92b01345b7605692849f5"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0a447533eccd62748a727e058efa10a8d7cf1de8ffe1a4d705ecb41dad9090"}, + {file = "jiter-0.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5f7704d7260bbb88cca3453951af739589132b26e896a3144fa2dae2263716d7"}, + {file = "jiter-0.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:01427458bc9550f2eda09d425755330e7d0eb09adce099577433bebf05d28d59"}, + {file = "jiter-0.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:159b8416879c0053b17c352f70b67b749ef5b2924c6154318ecf71918aab0905"}, + {file = "jiter-0.4.2-cp311-none-win32.whl", hash = "sha256:f2445234acfb79048ce1a0d5d0e181abb9afd9e4a29d8d9988fe26cc5773a81a"}, + {file = "jiter-0.4.2-cp311-none-win_amd64.whl", hash = "sha256:e15a65f233b6b0e5ac10ddf3b97ceb18aa9ffba096259961641d78b4ee321bd5"}, + {file = "jiter-0.4.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d61d59521aea9745447ce50f74d39a16ef74ec9d6477d9350d77e75a3d774ad2"}, + {file = "jiter-0.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eef607dc0acc251923427808dbd017f1998ae3c1a0430a261527aa5cbb3a942"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af6bf39954646e374fc47429c656372ac731a6a26b644158a5a84bcdbed33a47"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8f509d23606e476852ee46a2b65b5c4ad3905f17424d9cc19c1dffa1c94ba3c6"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59672774daa44ee140aada0c781c82bee4d9ac5e522966186cfb6b3c217d8a51"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24a0458efac5afeca254cf557b8a654e17013075a69905c78f88d557f129d871"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8860766d1c293e75c1bb4e25b74fa987e3adf199cac3f5f9e6e49c2bebf092f"}, + {file = "jiter-0.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a109f3281b72bbf4921fe43db1005c004a38559ca0b6c4985add81777dfe0a44"}, + {file = "jiter-0.4.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:faa7e667454b77ad2f0ef87db39f4944de759617aadf210ea2b73f26bb24755f"}, + {file = "jiter-0.4.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3512f8b00cafb6780b427cb6282800d2bf8277161d9c917830661bd4ed1d3528"}, + {file = "jiter-0.4.2-cp312-none-win32.whl", hash = "sha256:853b35d508ee5b66d06630473c1c0b7bb5e29bf4785c9d2202437116c94f7e21"}, + {file = "jiter-0.4.2-cp312-none-win_amd64.whl", hash = "sha256:4a3a8197784278eb8b24cb02c45e1cad67c2ce5b5b758adfb19b87f74bbdff9c"}, + {file = "jiter-0.4.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ca2a4d750aed3154b89f2efb148609fc985fad8db739460797aaf9b478acedda"}, + {file = "jiter-0.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0e6c304b3cc6896256727e1fb8991c7179a345eca8224e201795e9cacf4683b0"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cc34ac708ae1750d077e490321761ec4b9a055b994cbdd1d6fbd37099e4aa7b"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8c93383875ab8d2e4f760aaff335b4a12ff32d4f9cf49c4498d657734f611466"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce197ee044add576afca0955b42142dd0312639adb6ebadbdbe4277f2855614f"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a427716813ff65480ca5b5117cfa099f49b49cd38051f8609bd0d5493013ca0"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:479990218353356234669e70fac53e5eb6f739a10db25316171aede2c97d9364"}, + {file = "jiter-0.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d35a91ec5ac74cf33234c431505299fa91c0a197c2dbafd47400aca7c69489d4"}, + {file = "jiter-0.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b27189847193708c94ad10ca0d891309342ae882725d2187cf5d2db02bde8d1b"}, + {file = "jiter-0.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:76c255308cd1093fb411a03756b7bb220e48d4a98c30cbc79ed448bf3978e27d"}, + {file = "jiter-0.4.2-cp38-none-win32.whl", hash = "sha256:bb77438060bad49cc251941e6701b31138365c8a0ddaf10cdded2fcc6dd30701"}, + {file = "jiter-0.4.2-cp38-none-win_amd64.whl", hash = "sha256:ce858af19f7ce0d4b51c9f6c0c9d08f1e9dcef1986c5875efd0674a7054292ca"}, + {file = "jiter-0.4.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:6128838a2f357b3921b2a3242d5dc002ae4255ecc8f9f05c20d56d7d2d79c5ad"}, + {file = "jiter-0.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f2420cebb9ba856cb57dcab1d2d8def949b464b0db09c22a4e4dbd52fff7b200"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5d13d8128e853b320e00bb18bd4bb8b136cc0936091dc87633648fc688eb705"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eba5d6e54f149c508ba88677f97d3dc7dd75e9980d234bbac8027ac6db0763a3"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fad5d64af0bc0545237419bf4150d8de56f0bd217434bdd1a59730327252bef"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d179e7bca89cf5719bd761dd37a341ff0f98199ecaa9c14af09792e47e977cc"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36353caee9f103d8ee7bda077f6400505b0f370e27eabcab33a33d21de12a2a6"}, + {file = "jiter-0.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dd146c25bce576ca5db64fc7eccb8862af00f1f0e30108796953f12a53660e4c"}, + {file = "jiter-0.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:14b7c08cadbcd703041c66dc30e24e17de2f340281cac0e69374223ecf153aa4"}, + {file = "jiter-0.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a90f1a8b3d29aea198f8ea2b01148276ced8056e5103f32525266b3d880e65c9"}, + {file = "jiter-0.4.2-cp39-none-win32.whl", hash = "sha256:25b174997c780337b61ae57b1723455eecae9a17a9659044fd3c3b369190063f"}, + {file = "jiter-0.4.2-cp39-none-win_amd64.whl", hash = "sha256:bef62cea18521c5b99368147040c7e560c55098a35c93456f110678a2d34189a"}, + {file = "jiter-0.4.2.tar.gz", hash = "sha256:29b9d44f23f0c05f46d482f4ebf03213ee290d77999525d0975a17f875bf1eea"}, ] [[package]] @@ -1870,13 +1938,13 @@ jsonpointer = ">=1.9" [[package]] name = "jsonpointer" -version = "2.4" +version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" files = [ - {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, - {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, + {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, + {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, ] [[package]] @@ -1926,7 +1994,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" @@ -1999,19 +2066,19 @@ text-helpers = ["chardet (>=5.1.0,<6.0.0)"] [[package]] name = "langchain-community" -version = "0.0.18" +version = "0.0.20" description = "Community contributed LangChain integrations." optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain_community-0.0.18-py3-none-any.whl", hash = "sha256:b87e20c1fa3f37e9608d7ccc08b4d8ed86f875b8c1e735d0464ae986e41c5a71"}, - {file = "langchain_community-0.0.18.tar.gz", hash = "sha256:f044f331b418f16148b76929f27cc2107fce2d190ea3fae0cdaf155ceda9892f"}, + {file = "langchain_community-0.0.20-py3-none-any.whl", hash = "sha256:bd112b5813702919c50f89b1afa2b63adf1da89999df4842b327ee11220f8c39"}, + {file = "langchain_community-0.0.20.tar.gz", hash = "sha256:c56c48bc77d24e1fc399a9ee9a637d96e3b2ff952e3a080b5a41820d9d00fb3c"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain-core = ">=0.1.19,<0.2" +langchain-core = ">=0.1.21,<0.2" langsmith = ">=0.0.83,<0.1" numpy = ">=1,<2" PyYAML = ">=5.3" @@ -2021,23 +2088,23 @@ tenacity = ">=8.1.0,<9.0.0" [package.extras] cli = ["typer (>=0.9.0,<0.10.0)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "azure-ai-documentintelligence (>=1.0.0b1,<2.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "elasticsearch (>=8.12.0,<9.0.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "gradientai (>=1.4.0,<2.0.0)", "hdbcli (>=2.19.21,<3.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "httpx (>=0.24.1,<0.25.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "nvidia-riva-client (>=2.14.0,<3.0.0)", "oci (>=2.119.1,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "oracle-ads (>=2.9.1,<3.0.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "rdflib (==7.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "tree-sitter (>=0.20.2,<0.21.0)", "tree-sitter-languages (>=1.8.0,<2.0.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)", "zhipuai (>=1.0.7,<2.0.0)"] [[package]] name = "langchain-core" -version = "0.1.19" +version = "0.1.23" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain_core-0.1.19-py3-none-any.whl", hash = "sha256:46b5fd54181df5aa6d3041d61beb2b91e5437b6742274e7924a97734ed62cf43"}, - {file = "langchain_core-0.1.19.tar.gz", hash = "sha256:30539190a63dff53e995f10aefb943b4f7e01aba4bf28fd1e13016b040c0e9da"}, + {file = "langchain_core-0.1.23-py3-none-any.whl", hash = "sha256:d42fac013c39a8b0bcd7e337a4cb6c17c16046c60d768f89df582ad73ec3c5cb"}, + {file = "langchain_core-0.1.23.tar.gz", hash = "sha256:34359cc8b6f8c3d45098c54a6a9b35c9f538ef58329cd943a2249d6d7b4e5806"}, ] [package.dependencies] anyio = ">=3,<5" jsonpatch = ">=1.33,<2.0" -langsmith = ">=0.0.83,<0.1" +langsmith = ">=0.0.87,<0.0.88" packaging = ">=23.2,<24.0" pydantic = ">=1,<3" PyYAML = ">=5.3" @@ -2066,13 +2133,13 @@ tiktoken = ">=0.5.2,<0.6.0" [[package]] name = "langsmith" -version = "0.0.92" +version = "0.0.87" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langsmith-0.0.92-py3-none-any.whl", hash = "sha256:ddcf65e3b5ca11893ae8ef9816ce2a11a089d051be491886e43a2c4556b88fd0"}, - {file = "langsmith-0.0.92.tar.gz", hash = "sha256:61a3a502222bdd221b7f592b6fc14756d74c4fc088aa6bd8834b92adfe9ee583"}, + {file = "langsmith-0.0.87-py3-none-any.whl", hash = "sha256:8903d3811b9fc89eb18f5961c8e6935fbd2d0f119884fbf30dc70b8f8f4121fc"}, + {file = "langsmith-0.0.87.tar.gz", hash = "sha256:36c4cc47e5b54be57d038036a30fb19ce6e4c73048cd7a464b8f25b459694d34"}, ] [package.dependencies] @@ -2081,13 +2148,13 @@ requests = ">=2,<3" [[package]] name = "litellm" -version = "1.38.8" +version = "1.23.16" description = "Library to easily interface with LLM API providers" optional = false -python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" +python-versions = ">=3.8, !=2.7.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*, !=3.7.*" files = [ - {file = "litellm-1.38.8-py3-none-any.whl", hash = "sha256:8155eb346dda0d766a401bcfb7b89c0e174a1c324d048b801e0cacd3579b1019"}, - {file = "litellm-1.38.8.tar.gz", hash = "sha256:7ea342b6dd4d409e9bf7642cc0fabe9f0e6fe61613505d36e7dbf9e4128baf72"}, + {file = "litellm-1.23.16-py3-none-any.whl", hash = "sha256:c1d7183edc74dad7d140cb7c9ac0c23e550d4126549eb302c75b46380724a3ad"}, + {file = "litellm-1.23.16.tar.gz", hash = "sha256:7d477c8560743cc762f1e61fc2c209ffa9d733879da198daeb5d0effbb62a1c1"}, ] [package.dependencies] @@ -2095,15 +2162,15 @@ aiohttp = "*" click = "*" importlib-metadata = ">=6.8.0" jinja2 = ">=3.1.2,<4.0.0" -openai = ">=1.27.0" +openai = ">=1.0.0" python-dotenv = ">=0.2.0" requests = ">=2.31.0,<3.0.0" tiktoken = ">=0.4.0" tokenizers = "*" [package.extras] -extra-proxy = ["azure-identity (>=1.15.0,<2.0.0)", "azure-keyvault-secrets (>=4.8.0,<5.0.0)", "google-cloud-kms (>=2.21.3,<3.0.0)", "prisma (==0.11.0)", "resend (>=0.8.0,<0.9.0)"] -proxy = ["PyJWT (>=2.8.0,<3.0.0)", "apscheduler (>=3.10.4,<4.0.0)", "backoff", "cryptography (>=42.0.5,<43.0.0)", "fastapi (>=0.111.0,<0.112.0)", "fastapi-sso (>=0.10.0,<0.11.0)", "gunicorn (>=22.0.0,<23.0.0)", "orjson (>=3.9.7,<4.0.0)", "python-multipart (>=0.0.9,<0.0.10)", "pyyaml (>=6.0.1,<7.0.0)", "rq", "uvicorn (>=0.22.0,<0.23.0)"] +extra-proxy = ["streamlit (>=1.29.0,<2.0.0)"] +proxy = ["PyJWT (>=2.8.0,<3.0.0)", "apscheduler (>=3.10.4,<4.0.0)", "backoff", "fastapi (>=0.104.1,<0.105.0)", "fastapi-sso (>=0.10.0,<0.11.0)", "gunicorn (>=21.2.0,<22.0.0)", "orjson (>=3.9.7,<4.0.0)", "python-multipart (>=0.0.6,<0.0.7)", "pyyaml (>=6.0.1,<7.0.0)", "rq", "uvicorn (>=0.22.0,<0.23.0)"] [[package]] name = "lxml" @@ -2308,13 +2375,13 @@ files = [ [[package]] name = "marshmallow" -version = "3.21.2" +version = "3.21.3" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false python-versions = ">=3.8" files = [ - {file = "marshmallow-3.21.2-py3-none-any.whl", hash = "sha256:70b54a6282f4704d12c0a41599682c5c5450e843b9ec406308653b47c59648a1"}, - {file = "marshmallow-3.21.2.tar.gz", hash = "sha256:82408deadd8b33d56338d2182d455db632c6313aa2af61916672146bb32edc56"}, + {file = "marshmallow-3.21.3-py3-none-any.whl", hash = "sha256:86ce7fb914aa865001a4b2092c4c2872d13bc347f3d42673272cabfdbad386f1"}, + {file = "marshmallow-3.21.3.tar.gz", hash = "sha256:4f57c5e050a54d66361e826f94fba213eb10b67b2fdb02c3e0343ce207ba1662"}, ] [package.dependencies] @@ -2370,13 +2437,13 @@ tbb = "==2021.*" [[package]] name = "more-itertools" -version = "9.1.0" +version = "10.3.0" description = "More routines for operating on iterables, beyond itertools" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"}, - {file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"}, + {file = "more-itertools-10.3.0.tar.gz", hash = "sha256:e5d93ef411224fbcef366a6e8ddc4c5781bc6359d43412a65dd5964e46111463"}, + {file = "more_itertools-10.3.0-py3-none-any.whl", hash = "sha256:ea6a02e24a9161e51faad17a8782b92a0df82c12c1c8886fec7f0c3fa1a1b320"}, ] [[package]] @@ -2621,13 +2688,13 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nbmake" -version = "1.5.3" +version = "1.5.4" description = "Pytest plugin for testing notebooks" optional = false -python-versions = ">=3.8.0,<4.0.0" +python-versions = "<4.0.0,>=3.8.0" files = [ - {file = "nbmake-1.5.3-py3-none-any.whl", hash = "sha256:6cfa2b926d335e9c6dce7e8543d01b2398b0a56c03131c5c0bce2b1722116212"}, - {file = "nbmake-1.5.3.tar.gz", hash = "sha256:0b76b829e8b128eb1895539bacf515a1ee85e5b7b492cdfe76e3a12f804e069e"}, + {file = "nbmake-1.5.4-py3-none-any.whl", hash = "sha256:8e440a61a7d4ab303064aa86b8d2c088177c89960e2b4a0f91a768dc9f68382b"}, + {file = "nbmake-1.5.4.tar.gz", hash = "sha256:56417fe80d50069671122955532df6e26369a23f68b9c6e2191ae9cfef19abb2"}, ] [package.dependencies] @@ -2650,36 +2717,33 @@ files = [ [[package]] name = "networkx" -version = "3.2.1" +version = "3.3" description = "Python package for creating and manipulating graphs and networks" optional = true -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"}, - {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"}, + {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"}, + {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"}, ] [package.extras] -default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"] -developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] -doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"] +default = ["matplotlib (>=3.6)", "numpy (>=1.23)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"] +developer = ["changelist (==0.5)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] +doc = ["myst-nb (>=1.0)", "numpydoc (>=1.7)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=2.0)", "pygraphviz (>=1.12)", "sympy (>=1.10)"] test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "numpy" version = "1.26.4" @@ -2869,13 +2933,13 @@ files = [ [[package]] name = "openai" -version = "1.30.3" +version = "1.34.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.30.3-py3-none-any.whl", hash = "sha256:f88119c8a848998be533c71ab8aa832446fa72b7ddbc70917c3f5886dc132051"}, - {file = "openai-1.30.3.tar.gz", hash = "sha256:8e1bcdca2b96fe3636ab522fa153d88efde1b702d12ec32f1c73e9553ff93f45"}, + {file = "openai-1.34.0-py3-none-any.whl", hash = "sha256:018623c2f795424044675c6230fa3bfbf98d9e0aab45d8fd116f2efb2cfb6b7e"}, + {file = "openai-1.34.0.tar.gz", hash = "sha256:95c8e2da4acd6958e626186957d656597613587195abd0fb2527566a93e76770"}, ] [package.dependencies] @@ -2976,19 +3040,36 @@ xml = ["lxml (>=4.9.2)"] [[package]] name = "pandas-stubs" -version = "2.2.2.240514" +version = "2.2.2.240603" description = "Type annotations for pandas" optional = false python-versions = ">=3.9" files = [ - {file = "pandas_stubs-2.2.2.240514-py3-none-any.whl", hash = "sha256:5d6f64d45a98bc94152a0f76fa648e598cd2b9ba72302fd34602479f0c391a53"}, - {file = "pandas_stubs-2.2.2.240514.tar.gz", hash = "sha256:85b20da44a62c80eb8389bcf4cbfe31cce1cafa8cca4bf1fc75ec45892e72ce8"}, + {file = "pandas_stubs-2.2.2.240603-py3-none-any.whl", hash = "sha256:e08ce7f602a4da2bff5a67475ba881c39f2a4d4f7fccc1cba57c6f35a379c6c0"}, + {file = "pandas_stubs-2.2.2.240603.tar.gz", hash = "sha256:2dcc86e8fa6ea41535a4561c1f08b3942ba5267b464eff2e99caeee66f9e4cd1"}, ] [package.dependencies] -numpy = {version = ">=1.26.0", markers = "python_version < \"3.13\""} +numpy = [ + {version = ">=1.23.5", markers = "python_version >= \"3.9\" and python_version < \"3.12\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\" and python_version < \"3.13\""}, +] types-pytz = ">=2022.1.1" +[[package]] +name = "parameterized" +version = "0.9.0" +description = "Parameterized testing with any Python test framework" +optional = true +python-versions = ">=3.7" +files = [ + {file = "parameterized-0.9.0-py2.py3-none-any.whl", hash = "sha256:4e0758e3d41bea3bbd05ec14fc2c24736723f243b28d702081aef438c9372b1b"}, + {file = "parameterized-0.9.0.tar.gz", hash = "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1"}, +] + +[package.extras] +dev = ["jinja2"] + [[package]] name = "parso" version = "0.8.4" @@ -3094,13 +3175,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prompt-toolkit" -version = "3.0.43" +version = "3.0.47" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, - {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, + {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, + {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, ] [package.dependencies] @@ -3373,13 +3454,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "8.2.1" +version = "8.2.2" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.1-py3-none-any.whl", hash = "sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1"}, - {file = "pytest-8.2.1.tar.gz", hash = "sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd"}, + {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, + {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, ] [package.dependencies] @@ -3411,6 +3492,24 @@ pytest = ">=7.0.0,<9" docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] +[[package]] +name = "pytest-cov" +version = "5.0.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -3646,17 +3745,17 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "redis" -version = "4.6.0" +version = "5.0.6" description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.7" files = [ - {file = "redis-4.6.0-py3-none-any.whl", hash = "sha256:e2b03db868160ee4591de3cb90d40ebb50a90dd302138775937f6a42b7ed183c"}, - {file = "redis-4.6.0.tar.gz", hash = "sha256:585dc516b9eb042a619ef0a39c3d7d55fe81bdb4df09a52c9cdde0d07bf1aa7d"}, + {file = "redis-5.0.6-py3-none-any.whl", hash = "sha256:c0d6d990850c627bbf7be01c5c4cbaadf67b48593e913bb71c9819c30df37eee"}, + {file = "redis-5.0.6.tar.gz", hash = "sha256:38473cd7c6389ad3e44a91f4c3eaf6bcb8a9f746007f29bf4fb20824ff0b2197"}, ] [package.dependencies] -async-timeout = {version = ">=4.0.2", markers = "python_full_version <= \"3.11.2\""} +async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""} [package.extras] hiredis = ["hiredis (>=1.0.0)"] @@ -3664,22 +3763,23 @@ ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==20.0.1)", "requests (>=2.26.0)" [[package]] name = "redis-om" -version = "0.2.1" +version = "0.2.2" description = "Object mappings, and more, for Redis." optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "redis_om-0.2.1-py3-none-any.whl", hash = "sha256:31313a3027a014608b3a4d44ecd1d3000c7d0fe3a25060db19b42225e636cd53"}, - {file = "redis_om-0.2.1.tar.gz", hash = "sha256:150c9cb5238d6003f35e9b6394aab30a0df35b00e955eb7dc508f4345e0a0ccc"}, + {file = "redis_om-0.2.2-py3-none-any.whl", hash = "sha256:f395db665f1829e8beef9b23cb74ec397107c73216162900ff4c8563b0bee6a9"}, + {file = "redis_om-0.2.2.tar.gz", hash = "sha256:335eeafcec35f8db15c4ee384b22c115b3040bca93a8a218bbdd965b4c65cb5b"}, ] [package.dependencies] click = ">=8.0.1,<9.0.0" hiredis = ">=2.2.3,<3.0.0" -more-itertools = ">=8.14,<10.0" -pydantic = ">=1.10.2,<2.1.0" +more-itertools = ">=8.14,<11.0" +pydantic = ">=1.10.2,<2.5.0" python-ulid = ">=1.0.3,<2.0.0" -redis = ">=3.5.3,<5.0.0" +redis = ">=3.5.3,<6.0.0" +setuptools = {version = ">=69.2.0,<70.0.0", markers = "python_version >= \"3.12\""} types-redis = ">=3.5.9,<5.0.0" typing-extensions = ">=4.4.0,<5.0.0" @@ -3788,13 +3888,13 @@ files = [ [[package]] name = "requests" -version = "2.32.2" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, - {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -3949,28 +4049,28 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.4.5" +version = "0.4.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8f58e615dec58b1a6b291769b559e12fdffb53cc4187160a2fc83250eaf54e96"}, - {file = "ruff-0.4.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:84dd157474e16e3a82745d2afa1016c17d27cb5d52b12e3d45d418bcc6d49264"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f483ad9d50b00e7fd577f6d0305aa18494c6af139bce7319c68a17180087f4"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63fde3bf6f3ad4e990357af1d30e8ba2730860a954ea9282c95fc0846f5f64af"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78e3ba4620dee27f76bbcad97067766026c918ba0f2d035c2fc25cbdd04d9c97"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:441dab55c568e38d02bbda68a926a3d0b54f5510095c9de7f95e47a39e0168aa"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1169e47e9c4136c997f08f9857ae889d614c5035d87d38fda9b44b4338909cdf"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:755ac9ac2598a941512fc36a9070a13c88d72ff874a9781493eb237ab02d75df"}, - {file = "ruff-0.4.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4b02a65985be2b34b170025a8b92449088ce61e33e69956ce4d316c0fe7cce0"}, - {file = "ruff-0.4.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:75a426506a183d9201e7e5664de3f6b414ad3850d7625764106f7b6d0486f0a1"}, - {file = "ruff-0.4.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:6e1b139b45e2911419044237d90b60e472f57285950e1492c757dfc88259bb06"}, - {file = "ruff-0.4.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a6f29a8221d2e3d85ff0c7b4371c0e37b39c87732c969b4d90f3dad2e721c5b1"}, - {file = "ruff-0.4.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d6ef817124d72b54cc923f3444828ba24fa45c3164bc9e8f1813db2f3d3a8a11"}, - {file = "ruff-0.4.5-py3-none-win32.whl", hash = "sha256:aed8166c18b1a169a5d3ec28a49b43340949e400665555b51ee06f22813ef062"}, - {file = "ruff-0.4.5-py3-none-win_amd64.whl", hash = "sha256:b0b03c619d2b4350b4a27e34fd2ac64d0dabe1afbf43de57d0f9d8a05ecffa45"}, - {file = "ruff-0.4.5-py3-none-win_arm64.whl", hash = "sha256:9d15de3425f53161b3f5a5658d4522e4eee5ea002bf2ac7aa380743dd9ad5fba"}, - {file = "ruff-0.4.5.tar.gz", hash = "sha256:286eabd47e7d4d521d199cab84deca135557e6d1e0f0d01c29e757c3cb151b54"}, + {file = "ruff-0.4.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b262ed08d036ebe162123170b35703aaf9daffecb698cd367a8d585157732991"}, + {file = "ruff-0.4.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:98ec2775fd2d856dc405635e5ee4ff177920f2141b8e2d9eb5bd6efd50e80317"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4555056049d46d8a381f746680db1c46e67ac3b00d714606304077682832998e"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e91175fbe48f8a2174c9aad70438fe9cb0a5732c4159b2a10a3565fea2d94cde"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e8e7b95673f22e0efd3571fb5b0cf71a5eaaa3cc8a776584f3b2cc878e46bff"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2d45ddc6d82e1190ea737341326ecbc9a61447ba331b0a8962869fcada758505"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78de3fdb95c4af084087628132336772b1c5044f6e710739d440fc0bccf4d321"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06b60f91bfa5514bb689b500a25ba48e897d18fea14dce14b48a0c40d1635893"}, + {file = "ruff-0.4.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88bffe9c6a454bf8529f9ab9091c99490578a593cc9f9822b7fc065ee0712a06"}, + {file = "ruff-0.4.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:673bddb893f21ab47a8334c8e0ea7fd6598ecc8e698da75bcd12a7b9d0a3206e"}, + {file = "ruff-0.4.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8c1aff58c31948cc66d0b22951aa19edb5af0a3af40c936340cd32a8b1ab7438"}, + {file = "ruff-0.4.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:784d3ec9bd6493c3b720a0b76f741e6c2d7d44f6b2be87f5eef1ae8cc1d54c84"}, + {file = "ruff-0.4.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:732dd550bfa5d85af8c3c6cbc47ba5b67c6aed8a89e2f011b908fc88f87649db"}, + {file = "ruff-0.4.9-py3-none-win32.whl", hash = "sha256:8064590fd1a50dcf4909c268b0e7c2498253273309ad3d97e4a752bb9df4f521"}, + {file = "ruff-0.4.9-py3-none-win_amd64.whl", hash = "sha256:e0a22c4157e53d006530c902107c7f550b9233e9706313ab57b892d7197d8e52"}, + {file = "ruff-0.4.9-py3-none-win_arm64.whl", hash = "sha256:5d5460f789ccf4efd43f265a58538a2c24dbce15dbf560676e430375f20a8198"}, + {file = "ruff-0.4.9.tar.gz", hash = "sha256:f1cb0828ac9533ba0135d148d214e284711ede33640465e706772645483427e3"}, ] [[package]] @@ -4156,18 +4256,19 @@ test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "po [[package]] name = "setuptools" -version = "70.0.0" +version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.0.0-py3-none-any.whl", hash = "sha256:54faa7f2e8d2d11bcd2c07bed282eef1046b5c080d1c32add737d7b5817b1ad4"}, - {file = "setuptools-70.0.0.tar.gz", hash = "sha256:f211a66637b8fa059bb28183da127d4e86396c991a942b028c6650d4319c3fd0"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -4250,7 +4351,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\""} typing-extensions = ">=4.6.0" [package.extras] @@ -4321,24 +4422,23 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "sympy" -version = "1.12" +version = "1.12.1" description = "Computer algebra system (CAS) in Python" optional = true python-versions = ">=3.8" files = [ - {file = "sympy-1.12-py3-none-any.whl", hash = "sha256:c3588cd4295d0c0f603d0f2ae780587e64e2efeedb3521e46b9bb1d08d184fa5"}, - {file = "sympy-1.12.tar.gz", hash = "sha256:ebf595c8dac3e0fdc4152c51878b498396ec7f30e7a914d6071e674d49420fb8"}, + {file = "sympy-1.12.1-py3-none-any.whl", hash = "sha256:9b2cbc7f1a640289430e13d2a56f02f867a1da0190f2f99d8968c2f74da0e515"}, + {file = "sympy-1.12.1.tar.gz", hash = "sha256:2877b03f998cd8c08f07cd0de5b767119cd3ef40d09f41c30d722f6686b0fb88"}, ] [package.dependencies] -mpmath = ">=0.19" +mpmath = ">=1.1.0,<1.4.0" [[package]] name = "tabulate" @@ -4369,13 +4469,13 @@ files = [ [[package]] name = "tenacity" -version = "8.3.0" +version = "8.4.1" description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" files = [ - {file = "tenacity-8.3.0-py3-none-any.whl", hash = "sha256:3649f6443dbc0d9b01b9d8020a9c4ec7a1ff5f6f3c6c8a036ef371f573fe9185"}, - {file = "tenacity-8.3.0.tar.gz", hash = "sha256:953d4e6ad24357bceffbc9707bc74349aca9d245f68eb65419cf0c249a1949a2"}, + {file = "tenacity-8.4.1-py3-none-any.whl", hash = "sha256:28522e692eda3e1b8f5e99c51464efcc0b9fc86933da92415168bc1c4e2308fa"}, + {file = "tenacity-8.4.1.tar.gz", hash = "sha256:54b1412b878ddf7e1f1577cd49527bad8cdef32421bd599beac0c6c3f10582fd"}, ] [package.extras] @@ -4582,31 +4682,31 @@ files = [ [[package]] name = "torch" -version = "2.3.0" +version = "2.3.1" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = true python-versions = ">=3.8.0" files = [ - {file = "torch-2.3.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:d8ea5a465dbfd8501f33c937d1f693176c9aef9d1c1b0ca1d44ed7b0a18c52ac"}, - {file = "torch-2.3.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:09c81c5859a5b819956c6925a405ef1cdda393c9d8a01ce3851453f699d3358c"}, - {file = "torch-2.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:1bf023aa20902586f614f7682fedfa463e773e26c58820b74158a72470259459"}, - {file = "torch-2.3.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:758ef938de87a2653bba74b91f703458c15569f1562bf4b6c63c62d9c5a0c1f5"}, - {file = "torch-2.3.0-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:493d54ee2f9df100b5ce1d18c96dbb8d14908721f76351e908c9d2622773a788"}, - {file = "torch-2.3.0-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:bce43af735c3da16cc14c7de2be7ad038e2fbf75654c2e274e575c6c05772ace"}, - {file = "torch-2.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:729804e97b7cf19ae9ab4181f91f5e612af07956f35c8b2c8e9d9f3596a8e877"}, - {file = "torch-2.3.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:d24e328226d8e2af7cf80fcb1d2f1d108e0de32777fab4aaa2b37b9765d8be73"}, - {file = "torch-2.3.0-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:b0de2bdc0486ea7b14fc47ff805172df44e421a7318b7c4d92ef589a75d27410"}, - {file = "torch-2.3.0-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a306c87a3eead1ed47457822c01dfbd459fe2920f2d38cbdf90de18f23f72542"}, - {file = "torch-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:f9b98bf1a3c8af2d4c41f0bf1433920900896c446d1ddc128290ff146d1eb4bd"}, - {file = "torch-2.3.0-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:dca986214267b34065a79000cee54232e62b41dff1ec2cab9abc3fc8b3dee0ad"}, - {file = "torch-2.3.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:20572f426965dd8a04e92a473d7e445fa579e09943cc0354f3e6fef6130ce061"}, - {file = "torch-2.3.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e65ba85ae292909cde0dde6369826d51165a3fc8823dc1854cd9432d7f79b932"}, - {file = "torch-2.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:5515503a193781fd1b3f5c474e89c9dfa2faaa782b2795cc4a7ab7e67de923f6"}, - {file = "torch-2.3.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:6ae9f64b09516baa4ef890af0672dc981c20b1f0d829ce115d4420a247e88fba"}, - {file = "torch-2.3.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:cd0dc498b961ab19cb3f8dbf0c6c50e244f2f37dbfa05754ab44ea057c944ef9"}, - {file = "torch-2.3.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:e05f836559251e4096f3786ee99f4a8cbe67bc7fbedba8ad5e799681e47c5e80"}, - {file = "torch-2.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:4fb27b35dbb32303c2927da86e27b54a92209ddfb7234afb1949ea2b3effffea"}, - {file = "torch-2.3.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:760f8bedff506ce9e6e103498f9b1e9e15809e008368594c3a66bf74a8a51380"}, + {file = "torch-2.3.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:605a25b23944be5ab7c3467e843580e1d888b8066e5aaf17ff7bf9cc30001cc3"}, + {file = "torch-2.3.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f2357eb0965583a0954d6f9ad005bba0091f956aef879822274b1bcdb11bd308"}, + {file = "torch-2.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:32b05fe0d1ada7f69c9f86c14ff69b0ef1957a5a54199bacba63d22d8fab720b"}, + {file = "torch-2.3.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:7c09a94362778428484bcf995f6004b04952106aee0ef45ff0b4bab484f5498d"}, + {file = "torch-2.3.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:b2ec81b61bb094ea4a9dee1cd3f7b76a44555375719ad29f05c0ca8ef596ad39"}, + {file = "torch-2.3.1-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:490cc3d917d1fe0bd027057dfe9941dc1d6d8e3cae76140f5dd9a7e5bc7130ab"}, + {file = "torch-2.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:5802530783bd465fe66c2df99123c9a54be06da118fbd785a25ab0a88123758a"}, + {file = "torch-2.3.1-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:a7dd4ed388ad1f3d502bf09453d5fe596c7b121de7e0cfaca1e2017782e9bbac"}, + {file = "torch-2.3.1-cp312-cp312-manylinux1_x86_64.whl", hash = "sha256:a486c0b1976a118805fc7c9641d02df7afbb0c21e6b555d3bb985c9f9601b61a"}, + {file = "torch-2.3.1-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:224259821fe3e4c6f7edf1528e4fe4ac779c77addaa74215eb0b63a5c474d66c"}, + {file = "torch-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:e5fdccbf6f1334b2203a61a0e03821d5845f1421defe311dabeae2fc8fbeac2d"}, + {file = "torch-2.3.1-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:3c333dc2ebc189561514eda06e81df22bf8fb64e2384746b2cb9f04f96d1d4c8"}, + {file = "torch-2.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:07e9ba746832b8d069cacb45f312cadd8ad02b81ea527ec9766c0e7404bb3feb"}, + {file = "torch-2.3.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:462d1c07dbf6bb5d9d2f3316fee73a24f3d12cd8dacf681ad46ef6418f7f6626"}, + {file = "torch-2.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff60bf7ce3de1d43ad3f6969983f321a31f0a45df3690921720bcad6a8596cc4"}, + {file = "torch-2.3.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:bee0bd33dc58aa8fc8a7527876e9b9a0e812ad08122054a5bff2ce5abf005b10"}, + {file = "torch-2.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:aaa872abde9a3d4f91580f6396d54888620f4a0b92e3976a6034759df4b961ad"}, + {file = "torch-2.3.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:3d7a7f7ef21a7520510553dc3938b0c57c116a7daee20736a9e25cbc0e832bdc"}, + {file = "torch-2.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:4777f6cefa0c2b5fa87223c213e7b6f417cf254a45e5829be4ccd1b2a4ee1011"}, + {file = "torch-2.3.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:2bb5af780c55be68fe100feb0528d2edebace1d55cb2e351de735809ba7391eb"}, ] [package.dependencies] @@ -4627,7 +4727,7 @@ nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \" nvidia-nccl-cu12 = {version = "2.20.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} sympy = "*" -triton = {version = "2.3.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""} +triton = {version = "2.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.12\""} typing-extensions = ">=4.8.0" [package.extras] @@ -4636,22 +4736,22 @@ optree = ["optree (>=0.9.1)"] [[package]] name = "tornado" -version = "6.4" +version = "6.4.1" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." optional = false -python-versions = ">= 3.8" +python-versions = ">=3.8" files = [ - {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, - {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, - {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, - {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, - {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, - {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, - {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, + {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, + {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, + {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, + {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, + {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, + {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, ] [[package]] @@ -4691,13 +4791,13 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "transformers" -version = "4.41.1" +version = "4.41.2" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = true python-versions = ">=3.8.0" files = [ - {file = "transformers-4.41.1-py3-none-any.whl", hash = "sha256:f0680e0b1a01067eccd11f62f0522409422c7d6f91d532fe0f50b136a406129d"}, - {file = "transformers-4.41.1.tar.gz", hash = "sha256:fa859e4c66f0896633a3bf534e0d9a29a9a88478a49f94c5d8270537dc61cc42"}, + {file = "transformers-4.41.2-py3-none-any.whl", hash = "sha256:05555d20e43f808de1ef211ab64803cdb513170cef70d29a888b589caebefc67"}, + {file = "transformers-4.41.2.tar.gz", hash = "sha256:80a4db216533d573e9cc7388646c31ed9480918feb7c55eb211249cb23567f87"}, ] [package.dependencies] @@ -4757,17 +4857,17 @@ vision = ["Pillow (>=10.0.1,<=15.0)"] [[package]] name = "triton" -version = "2.3.0" +version = "2.3.1" description = "A language and compiler for custom Deep Learning operations" optional = true python-versions = "*" files = [ - {file = "triton-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ce4b8ff70c48e47274c66f269cce8861cf1dc347ceeb7a67414ca151b1822d8"}, - {file = "triton-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c3d9607f85103afdb279938fc1dd2a66e4f5999a58eb48a346bd42738f986dd"}, - {file = "triton-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:218d742e67480d9581bafb73ed598416cc8a56f6316152e5562ee65e33de01c0"}, - {file = "triton-2.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:381ec6b3dac06922d3e4099cfc943ef032893b25415de295e82b1a82b0359d2c"}, - {file = "triton-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038e06a09c06a164fef9c48de3af1e13a63dc1ba3c792871e61a8e79720ea440"}, - {file = "triton-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8f636e0341ac348899a47a057c3daea99ea7db31528a225a3ba4ded28ccc65"}, + {file = "triton-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c84595cbe5e546b1b290d2a58b1494df5a2ef066dd890655e5b8a8a92205c33"}, + {file = "triton-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d64ae33bcb3a7a18081e3a746e8cf87ca8623ca13d2c362413ce7a486f893e"}, + {file = "triton-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf80e8761a9e3498aa92e7bf83a085b31959c61f5e8ac14eedd018df6fccd10"}, + {file = "triton-2.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b13bf35a2b659af7159bf78e92798dc62d877aa991de723937329e2d382f1991"}, + {file = "triton-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63381e35ded3304704ea867ffde3b7cfc42c16a55b3062d41e017ef510433d66"}, + {file = "triton-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d968264523c7a07911c8fb51b4e0d1b920204dae71491b1fe7b01b62a31e124"}, ] [package.dependencies] @@ -4856,27 +4956,13 @@ types-pyOpenSSL = "*" [[package]] name = "types-requests" -version = "2.31.0.6" -description = "Typing stubs for requests" -optional = true -python-versions = ">=3.7" -files = [ - {file = "types-requests-2.31.0.6.tar.gz", hash = "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0"}, - {file = "types_requests-2.31.0.6-py3-none-any.whl", hash = "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9"}, -] - -[package.dependencies] -types-urllib3 = "*" - -[[package]] -name = "types-requests" -version = "2.32.0.20240523" +version = "2.32.0.20240602" description = "Typing stubs for requests" optional = true python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240523.tar.gz", hash = "sha256:26b8a6de32d9f561192b9942b41c0ab2d8010df5677ca8aa146289d11d505f57"}, - {file = "types_requests-2.32.0.20240523-py3-none-any.whl", hash = "sha256:f19ed0e2daa74302069bbbbf9e82902854ffa780bc790742a810a9aaa52f65ec"}, + {file = "types-requests-2.32.0.20240602.tar.gz", hash = "sha256:3f98d7bbd0dd94ebd10ff43a7fbe20c3b8528acace6d8efafef0b6a184793f06"}, + {file = "types_requests-2.32.0.20240602-py3-none-any.whl", hash = "sha256:ed3946063ea9fbc6b5fc0c44fa279188bae42d582cb63760be6cb4b9d06c3de8"}, ] [package.dependencies] @@ -4904,26 +4990,15 @@ files = [ {file = "types_tqdm-4.66.0.20240417-py3-none-any.whl", hash = "sha256:248aef1f9986b7b8c2c12b3cb4399fc17dba0a29e7e3f3f9cd704babb879383d"}, ] -[[package]] -name = "types-urllib3" -version = "1.26.25.14" -description = "Typing stubs for urllib3" -optional = true -python-versions = "*" -files = [ - {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, - {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, -] - [[package]] name = "typing-extensions" -version = "4.12.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.12.0-py3-none-any.whl", hash = "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"}, - {file = "typing_extensions-4.12.0.tar.gz", hash = "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -4965,29 +5040,13 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" -description = "HTTP library with thread-safe connection pooling, file post, and more." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, -] - -[package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -5260,18 +5319,18 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.19.0" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.19.0-py3-none-any.whl", hash = "sha256:96dc6ad62f1441bcaccef23b274ec471518daf4fbbc580341204936a5a3dddec"}, - {file = "zipp-3.19.0.tar.gz", hash = "sha256:952df858fb3164426c976d9338d3961e8e8b3758e2e059e0f754b8c4262625ee"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [extras] anthropic = ["anthropic"] @@ -5283,5 +5342,5 @@ groq = ["groq"] [metadata] lock-version = "2.0" -python-versions = ">=3.9, <=3.12" -content-hash = "8ce0edb923a09683941fc9f9869e3322b21de89259e2615d28ba1f62dfbb9277" +python-versions = ">=3.10, <3.13" +content-hash = "04aefbd0c33a1e7d271c26da7b2dc02eedeeb868b6f7a37246d6eb97f5e8ced1" From 42b9d1bf96d4c77e862ccff0715f13053d290bd0 Mon Sep 17 00:00:00 2001 From: Hao Date: Tue, 18 Jun 2024 15:48:52 -0400 Subject: [PATCH 17/18] add codecov badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3058fe27b..a115d1d8a 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ [![pypi](https://img.shields.io/pypi/v/sotopia.svg)](https://pypi.python.org/pypi/sotopia) [![versions](https://img.shields.io/pypi/pyversions/sotopia.svg)](https://github.com/sotopia/sotopia) [![CI](https://img.shields.io/github/actions/workflow/status/sotopia-lab/sotopia/tests.yml?branch=main&logo=github&label=CI)](https://github.com/sotopia-lab/sotopia/actions?query=branch%3Amain) +[![codecov](https://codecov.io/github/sotopia-lab/sotopia/graph/badge.svg?token=00LRQFX0QR)](https://codecov.io/github/sotopia-lab/sotopia) [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14hJOfzpA37PRUzdlFgiqVzUGIhhngqnz?usp=sharing) [![Project Page](https://img.shields.io/badge/Project-Page-green.svg)](https://www.sotopia.world/projects/sotopia) From f94455c2d67acb0e7124250e9375fe2b1478ad51 Mon Sep 17 00:00:00 2001 From: Hao Date: Tue, 18 Jun 2024 15:51:44 -0400 Subject: [PATCH 18/18] add codecov comment --- .github/.codecov.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/.codecov.yml b/.github/.codecov.yml index 7a297361d..28bbfa668 100644 --- a/.github/.codecov.yml +++ b/.github/.codecov.yml @@ -11,6 +11,13 @@ coverage: default: threshold: 5% # allow project coverage to drop at most 5% -comment: false +comment: # this is a top-level key + layout: " diff, flags, files" + behavior: default + require_changes: false # if true: only post the comment if coverage changes + require_base: false # [true :: must have a base report to post] + require_head: true # [true :: must have a head report to post] + hide_project_coverage: false # [true :: only show coverage on the git diff] + github_checks: annotations: false