pycityagent 2.0.0a28__tar.gz → 2.0.0a30__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/PKG-INFO +1 -1
  2. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/simulation/storage/pg.py +39 -19
  3. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pyproject.toml +1 -1
  4. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/README.md +0 -0
  5. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/__init__.py +0 -0
  6. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/agent.py +0 -0
  7. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/economy/__init__.py +0 -0
  8. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/economy/econ_client.py +0 -0
  9. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/__init__.py +0 -0
  10. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/interact/__init__.py +0 -0
  11. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/interact/interact.py +0 -0
  12. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/message/__init__.py +0 -0
  13. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sence/__init__.py +0 -0
  14. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sence/static.py +0 -0
  15. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sidecar/__init__.py +0 -0
  16. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sidecar/sidecarv2.py +0 -0
  17. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/__init__.py +0 -0
  18. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/aoi_service.py +0 -0
  19. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/client.py +0 -0
  20. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/clock_service.py +0 -0
  21. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/economy_services.py +0 -0
  22. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/lane_service.py +0 -0
  23. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/light_service.py +0 -0
  24. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/person_service.py +0 -0
  25. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/road_service.py +0 -0
  26. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/sim_env.py +0 -0
  27. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/sim/social_service.py +0 -0
  28. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/simulator.py +0 -0
  29. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/__init__.py +0 -0
  30. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/base64.py +0 -0
  31. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/const.py +0 -0
  32. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/geojson.py +0 -0
  33. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/grpc.py +0 -0
  34. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/map_utils.py +0 -0
  35. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/port.py +0 -0
  36. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/environment/utils/protobuf.py +0 -0
  37. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/llm/__init__.py +0 -0
  38. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/llm/embeddings.py +0 -0
  39. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/llm/llm.py +0 -0
  40. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/llm/llmconfig.py +0 -0
  41. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/llm/utils.py +0 -0
  42. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/__init__.py +0 -0
  43. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/const.py +0 -0
  44. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/faiss_query.py +0 -0
  45. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/memory.py +0 -0
  46. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/memory_base.py +0 -0
  47. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/profile.py +0 -0
  48. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/self_define.py +0 -0
  49. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/state.py +0 -0
  50. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/memory/utils.py +0 -0
  51. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/message/__init__.py +0 -0
  52. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/message/messager.py +0 -0
  53. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/metrics/__init__.py +0 -0
  54. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/metrics/mlflow_client.py +0 -0
  55. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/metrics/utils/const.py +0 -0
  56. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/simulation/__init__.py +0 -0
  57. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/simulation/agentgroup.py +0 -0
  58. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/simulation/simulation.py +0 -0
  59. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/survey/__init__.py +0 -0
  60. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/survey/manager.py +0 -0
  61. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/survey/models.py +0 -0
  62. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/__init__.py +0 -0
  63. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/avro_schema.py +0 -0
  64. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/decorators.py +0 -0
  65. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/parsers/__init__.py +0 -0
  66. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/parsers/code_block_parser.py +0 -0
  67. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/parsers/json_parser.py +0 -0
  68. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/parsers/parser_base.py +0 -0
  69. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/pg_query.py +0 -0
  70. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/utils/survey_util.py +0 -0
  71. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/workflow/__init__.py +0 -0
  72. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/workflow/block.py +0 -0
  73. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/workflow/prompt.py +0 -0
  74. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/workflow/tool.py +0 -0
  75. {pycityagent-2.0.0a28 → pycityagent-2.0.0a30}/pycityagent/workflow/trigger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycityagent
3
- Version: 2.0.0a28
3
+ Version: 2.0.0a30
4
4
  Summary: LLM-based城市环境agent构建库
5
5
  License: MIT
6
6
  Author: Yuwei Yan
@@ -13,7 +13,10 @@ from ...utils.pg_query import PGSQL_DICT
13
13
 
14
14
  def create_pg_tables(exp_id: str, dsn: str):
15
15
  for table_type, exec_strs in PGSQL_DICT.items():
16
- table_name = f"socialcity_{exp_id.replace('-', '_')}_{table_type}"
16
+ if not table_type == "experiment":
17
+ table_name = f"socialcity_{exp_id.replace('-', '_')}_{table_type}"
18
+ else:
19
+ table_name = f"socialcity_{table_type}"
17
20
  # # debug str
18
21
  # for _str in [f"DROP TABLE IF EXISTS {table_name}"] + [
19
22
  # _exec_str.format(table_name=table_name) for _exec_str in exec_strs
@@ -21,9 +24,10 @@ def create_pg_tables(exp_id: str, dsn: str):
21
24
  # print(_str)
22
25
  with psycopg.connect(dsn) as conn:
23
26
  with conn.cursor() as cur:
24
- # delete table
25
- cur.execute(f"DROP TABLE IF EXISTS {table_name}") # type:ignore
26
- conn.commit()
27
+ if not table_type == "experiment":
28
+ # delete table
29
+ cur.execute(f"DROP TABLE IF EXISTS {table_name}") # type:ignore
30
+ conn.commit()
27
31
  # create table
28
32
  for _exec_str in exec_strs:
29
33
  cur.execute(_exec_str.format(table_name=table_name))
@@ -110,7 +114,7 @@ class PgWriter:
110
114
  async def async_update_exp_info(self, exp_info: dict[str, Any]):
111
115
  # timestamp不做类型转换
112
116
  TO_UPDATE_EXP_INFO_KEYS_AND_TYPES = [
113
- ("id", str),
117
+ ("id", None),
114
118
  ("name", str),
115
119
  ("num_day", int),
116
120
  ("status", int),
@@ -121,19 +125,35 @@ class PgWriter:
121
125
  ("created_at", None),
122
126
  ("updated_at", None),
123
127
  ]
124
- table_name = f"socialcity_{self.exp_id.replace('-', '_')}_experiment"
128
+ table_name = f"socialcity_experiment"
125
129
  async with await psycopg.AsyncConnection.connect(self._dsn) as aconn:
126
- async with aconn.cursor(row_factory=dict_row) as cur:
127
- # UPDATE
128
- columns = ", ".join(
129
- f"{key} = %s" for key, _ in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES
130
- )
131
- update_sql = psycopg.sql.SQL(
132
- f"UPDATE {{}} SET {columns} WHERE id = %s" # type:ignore
133
- ).format(psycopg.sql.Identifier(table_name))
134
- params = [
135
- _type(exp_info[key]) if _type is not None else exp_info[key]
136
- for key, _type in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES
137
- ] + [self.exp_id]
138
- await cur.execute(update_sql, params)
130
+ async with aconn.cursor(row_factory=dict_row) as cur:
131
+ await cur.execute("SELECT * FROM {table_name} WHERE id=%s".format(table_name = table_name),(self.exp_id,))# type:ignore
132
+ record_exists = await cur.fetchall()
133
+ print("record_exists",record_exists)
134
+ if record_exists:
135
+ # UPDATE
136
+ columns = ", ".join(
137
+ f"{key} = %s" for key, _ in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES
138
+ )
139
+ update_sql = psycopg.sql.SQL(
140
+ f"UPDATE {{}} SET {columns} WHERE id='{self.exp_id}'" # type:ignore
141
+ ).format(psycopg.sql.Identifier(table_name))
142
+ params = [
143
+ _type(exp_info[key]) if _type is not None else exp_info[key]
144
+ for key, _type in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES
145
+ ]# + [self.exp_id]
146
+ await cur.execute(update_sql, params)
147
+ else:
148
+ # INSERT
149
+ keys = ", ".join(key for key, _ in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES)
150
+ placeholders = ", ".join(["%s"] * len(TO_UPDATE_EXP_INFO_KEYS_AND_TYPES))
151
+ insert_sql = psycopg.sql.SQL(
152
+ f"INSERT INTO {{}} ({keys}) VALUES ({placeholders})" # type:ignore
153
+ ).format(psycopg.sql.Identifier(table_name))
154
+ params = [
155
+ _type(exp_info[key]) if _type is not None else exp_info[key]
156
+ for key, _type in TO_UPDATE_EXP_INFO_KEYS_AND_TYPES
157
+ ]
158
+ await cur.execute(insert_sql, params)
139
159
  await aconn.commit()
@@ -3,7 +3,7 @@ in-project = true
3
3
 
4
4
  [tool.poetry]
5
5
  name = "pycityagent"
6
- version = "2.0.0a28"
6
+ version = "2.0.0a30"
7
7
  description = "LLM-based城市环境agent构建库"
8
8
  authors = ["Yuwei Yan <pinkgranite86@gmail.com>","Junbo Yan <yanjb20thu@gmali.com>"]
9
9
  license = "MIT"
File without changes