arize-phoenix 4.23.0__py3-none-any.whl → 4.24.0__py3-none-any.whl

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.

Potentially problematic release.


This version of arize-phoenix might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arize-phoenix
3
- Version: 4.23.0
3
+ Version: 4.24.0
4
4
  Summary: AI Observability and Evaluation
5
5
  Project-URL: Documentation, https://docs.arize.com/phoenix/
6
6
  Project-URL: Issues, https://github.com/Arize-ai/phoenix/issues
@@ -80,7 +80,7 @@ Requires-Dist: jupyter; extra == 'dev'
80
80
  Requires-Dist: langchain>=0.0.334; extra == 'dev'
81
81
  Requires-Dist: litellm>=1.0.3; extra == 'dev'
82
82
  Requires-Dist: llama-index>=0.10.3; extra == 'dev'
83
- Requires-Dist: mypy==1.11.0; extra == 'dev'
83
+ Requires-Dist: mypy==1.11.1; extra == 'dev'
84
84
  Requires-Dist: nbqa; extra == 'dev'
85
85
  Requires-Dist: pandas-stubs==2.0.3.230814; (python_version < '3.9') and extra == 'dev'
86
86
  Requires-Dist: pandas-stubs==2.2.2.240603; (python_version >= '3.9') and extra == 'dev'
@@ -5,7 +5,7 @@ phoenix/exceptions.py,sha256=n2L2KKuecrdflB9MsCdAYCiSEvGJptIsfRkXMoJle7A,169
5
5
  phoenix/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
6
6
  phoenix/services.py,sha256=aTxhcOA1pZHB6U-B3TEcp6fqDF5oT0xCUvEUNMZVTUQ,5175
7
7
  phoenix/settings.py,sha256=cO-qgis_S27nHirTobYI9hHPfZH18R--WMmxNdsVUwc,273
8
- phoenix/version.py,sha256=TTTHw1vEKS6ovQizZmeh57pUpbxus30U324Wg3Hwd6s,23
8
+ phoenix/version.py,sha256=l7f0EI2kXBLXXp82SILFQvXoX83QSluu_cmoTReAP9g,23
9
9
  phoenix/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  phoenix/core/embedding_dimension.py,sha256=zKGbcvwOXgLf-yrJBpQyKtd-LEOPRKHnUToyAU8Owis,87
11
11
  phoenix/core/model.py,sha256=km_a--PBHOuA337ClRw9xqhOHhrUT6Rl9pz_zV0JYkQ,4843
@@ -18,7 +18,7 @@ phoenix/db/bulk_inserter.py,sha256=qgg8pt5k4VnHKOE0-KoReXVAfXRhLt-sMZihI-b4X9I,1
18
18
  phoenix/db/engines.py,sha256=R3btYTSOSd6BwRA59EmhhojL0HCQ7NnzFIXQrPYS0iU,4812
19
19
  phoenix/db/helpers.py,sha256=2zSc4n5IJfu-CaOFoBfqTB35M1nTFcAc8tqLsNtF2Jw,3488
20
20
  phoenix/db/migrate.py,sha256=MuhtNWnR24riROvarvKfbRb4_D5xuQi6P760vBUKl1E,2270
21
- phoenix/db/models.py,sha256=C_s1TAgMRi2eExc48NwInErsfSzVhNZtj4ow23jUKSc,23352
21
+ phoenix/db/models.py,sha256=96XA9m3vV-HpQDggHqGWPNvAOEMANediIbvvqAUaY7U,23686
22
22
  phoenix/db/insertion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  phoenix/db/insertion/constants.py,sha256=8wifm7X-1XvroZ__R2Gc96NsgLhTDn0zXl4lehlXtcA,70
24
24
  phoenix/db/insertion/dataset.py,sha256=_vxy5e6W5jEuvO2fMKbbNCn9JvHkwI4LRKk_10eKFVg,7171
@@ -33,13 +33,13 @@ phoenix/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
33
33
  phoenix/db/migrations/env.py,sha256=QbzB5zrRs6XQQmrYeUpuzeilcMlM-MsbaAgHHYcIHTI,3626
34
34
  phoenix/db/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
35
35
  phoenix/db/migrations/future_versions/README.md,sha256=3QtDx40SAD-IITjbdlKR2N_CBxT5y37C1OQs05EDt7o,184
36
- phoenix/db/migrations/future_versions/cd164e83824f_users_and_tokens.py,sha256=L3UlrrT9_mgIakkjRl4MfSHd5dNmZi0D0jizi5V4dTI,8795
36
+ phoenix/db/migrations/future_versions/cd164e83824f_users_and_tokens.py,sha256=6iSewwJCLbGWG1qojJHDiwM-6GIddgsLlGosVdSo6s8,8794
37
37
  phoenix/db/migrations/versions/.gitignore,sha256=chLdMrfkICZvLY7lCEcuqF32sVp61Jml4PodFryEU94,33
38
38
  phoenix/db/migrations/versions/10460e46d750_datasets.py,sha256=eZAyz720DmpOd7RnuxDN2dVNXVuMrdlCA7eAOxyMtfs,8695
39
39
  phoenix/db/migrations/versions/3be8647b87d8_add_token_columns_to_spans_table.py,sha256=x6oKFwn7Zmite4G0trDQPpMCn0I7jejuBcN3-ivEuDg,3938
40
40
  phoenix/db/migrations/versions/cf03bd6bae1d_init.py,sha256=09cpofqje8zi4eQFfUn-i21x7VcsUYOfLKKUlrtKrGc,8662
41
41
  phoenix/experiments/__init__.py,sha256=6JGwgUd7xCbGpuHqYZlsmErmYvVgv7N_j43bn3dUqsk,123
42
- phoenix/experiments/functions.py,sha256=WnyBaO6UEesQ1P77GXy-brQSSY9NF1EpAULbtbr4mHo,32228
42
+ phoenix/experiments/functions.py,sha256=B60_JT0jmLFQbkweZc2Px1q1vzE3Q_w2EI5jRgT19Rk,32589
43
43
  phoenix/experiments/tracing.py,sha256=wVpt8Ie9WNPoi1djJdcrkwCokHdTO0bicXViLg3O-1Y,2831
44
44
  phoenix/experiments/types.py,sha256=HegeRSLyx2lESlzAc2PXYQJVHBFbCLwqQQmPcDMdUnM,23433
45
45
  phoenix/experiments/utils.py,sha256=wLu5Kvt1b4a8rGPRWq5G8RQ9XSiV8fCIVm51zWBI3-g,758
@@ -80,7 +80,7 @@ phoenix/server/types.py,sha256=UCCkwEzUAbRdu-hZpG7A2hdPM09onBezaXNtWX4A7og,3431
80
80
  phoenix/server/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  phoenix/server/api/context.py,sha256=2-kJpoix-OISxyAhoI5FFEnQMt9ad-3HQ3VOFCjdbxU,2799
82
82
  phoenix/server/api/interceptor.py,sha256=ykDnoC_apUd-llVli3m1CW18kNSIgjz2qZ6m5JmPDu8,1294
83
- phoenix/server/api/queries.py,sha256=c5beyU1JUYZTFySg4KJv0x8rbGk2x_fnY-jUHruYv-U,21341
83
+ phoenix/server/api/queries.py,sha256=cO47wUByLDTjrt4N28kVkQbxbJXusZ8TTCkXiIcEuaU,23804
84
84
  phoenix/server/api/schema.py,sha256=BcxdqO5CSGqpKd-AAJHMjFlzaK9oJA8GJuxmMfcdjn4,434
85
85
  phoenix/server/api/utils.py,sha256=Kl47G-1A7QKTDrc75BU2QK6HupsG6MWuXxy351FOfKQ,858
86
86
  phoenix/server/api/dataloaders/__init__.py,sha256=TrOGnU_SD_vEIxOE_dm8HrD5C2ScLFQ4xQ7f8r-E76s,3064
@@ -163,6 +163,7 @@ phoenix/server/api/routers/v1/utils.py,sha256=xvl2v-BKUkqmFVMmgmmWGFKuRBTrUdoiAe
163
163
  phoenix/server/api/types/Annotation.py,sha256=7Ym7iuVcbwHlw2yIRylz4nATAF_Cm-Z17qcjiooj1cc,751
164
164
  phoenix/server/api/types/AnnotationSummary.py,sha256=8B2LIROqcrPOi8hvYygsblKvSEBfSrysnKOV7F36hgA,1518
165
165
  phoenix/server/api/types/AnnotatorKind.py,sha256=rPgGdbN1Gvc109sGQ_ZH-gfJbp93V9wlarzTEJNtUwI,236
166
+ phoenix/server/api/types/ApiKey.py,sha256=8RnWRlAQ8RIT4wGXh-UDy5SsR130KbbuN5BTpgLaKWk,519
166
167
  phoenix/server/api/types/Cluster.py,sha256=ac4YfT1OH3xLVmex7EUmB6b9IpULnhLTt554LR0jglE,5689
167
168
  phoenix/server/api/types/CreateDatasetPayload.py,sha256=R-6zCmuD0f76RU9Giu78xwTHlASQs6Aq8yzvX1Kxc3g,140
168
169
  phoenix/server/api/types/DataQualityMetric.py,sha256=zRKsNvHBu-NdcsunuLhqFpZhi6ks-HMqA1PJD27jTak,590
@@ -207,11 +208,14 @@ phoenix/server/api/types/Segments.py,sha256=m2yoegrxA1Tn7ZAy1rMjjD1isc752MaAXMof
207
208
  phoenix/server/api/types/SortDir.py,sha256=OUpXhlCzCxPoXSDkJJygEs9Rw9pMymfaZUG5zPTrw4Y,152
208
209
  phoenix/server/api/types/Span.py,sha256=NzO1khZQS9LRoY23RciUaxLUR9WJF5pcV-pv8cnQPJA,15053
209
210
  phoenix/server/api/types/SpanAnnotation.py,sha256=6b5G-b_OoRvDL2ayWk7MkbqarLK-F-pQMx21CpUuNGY,1168
211
+ phoenix/server/api/types/SystemApiKey.py,sha256=2ym8EgsTBIvxx1l9xZ-2YMovz58ZwYb_MaHBTJ9NH2E,166
210
212
  phoenix/server/api/types/TimeSeries.py,sha256=wjzuxHFqCey0O7Ys25qiXyuqXK8an-osyNWUE8A_8G4,5227
211
213
  phoenix/server/api/types/Trace.py,sha256=-nh3A-S_BlQK1VSSOTWqM85l-WwJsRHifxeDi0sFWZE,3246
212
214
  phoenix/server/api/types/TraceAnnotation.py,sha256=OW6A2zr1gomOuG0XQe55dk15XXX2DSM0DzatRbHWH5A,1256
213
215
  phoenix/server/api/types/UMAPPoints.py,sha256=5sOuruzM8saXa8C2XiyUfk2XPrkVGmhqKpclMYRw1dk,1656
214
- phoenix/server/api/types/User.py,sha256=bq2bW7h-7zWoJduzAw9-uAH1-fxTN1Y3-cbW4kKIPhc,249
216
+ phoenix/server/api/types/User.py,sha256=j04JLq51GBqjcAuZfErUn05bB3nSpy-DlNL2jm4AaHA,300
217
+ phoenix/server/api/types/UserApiKey.py,sha256=ZHfCHHxPUE5CSKiQuCqzlY7GkSZ5OzvcORoBMRPA3gg,227
218
+ phoenix/server/api/types/UserRole.py,sha256=VydiFaNIjcuYtvrkBykhWc2nXvHWWhAUsZ9D1Tyqdng,140
215
219
  phoenix/server/api/types/ValidationResult.py,sha256=pHwdYk4J7SJ5xhlWWHg_6qWkfk4rjOx-bSkGHvkDE3Q,142
216
220
  phoenix/server/api/types/VectorDriftMetricEnum.py,sha256=etiJM5ZjQuD-oE7sY-FbdIKY050jk3IU49IMwmfJbEc,188
217
221
  phoenix/server/api/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -228,10 +232,10 @@ phoenix/server/static/apple-touch-icon-76x76.png,sha256=CT_xT12I0u2i0WU8JzBZBuOQ
228
232
  phoenix/server/static/apple-touch-icon.png,sha256=fOfpjqGpWYbJ0eAurKsyoZP1EAs6ZVooBJ_SGk2ZkDs,3801
229
233
  phoenix/server/static/favicon.ico,sha256=bY0vvCKRftemZfPShwZtE93DiiQdaYaozkPGwNFr6H8,34494
230
234
  phoenix/server/static/modernizr.js,sha256=mvK-XtkNqjOral-QvzoqsyOMECXIMu5BQwSVN_wcU9c,2564
231
- phoenix/server/static/.vite/manifest.json,sha256=E4foEp6f2D90C8OLyqi729mCx3uwE_Ylkzv0cJqxOy0,1929
232
- phoenix/server/static/assets/components-DBYPF96c.js,sha256=C5UB6W8UwlM5rP2BpvS1JXhXBXtSa3B39kYsF_u5ahE,187160
233
- phoenix/server/static/assets/index-DNxu4viw.js,sha256=g-zFucEZZvso7zPns7fKmWq1-eYMktUep4tWW4sSzn0,7466
234
- phoenix/server/static/assets/pages-BhOnrUmC.js,sha256=riUthPfmrbayRnoDakz47MmNrnUTVaaygrZXdkL-Q00,456974
235
+ phoenix/server/static/.vite/manifest.json,sha256=Sc2AOYCyZmm4BdNQ7itmmI9AFoBxJzfMoZC8YoWh1gA,1929
236
+ phoenix/server/static/assets/components-DzA9gIHT.js,sha256=miEpsrzpn_BM4W1HFe2dvNJJILaO8sq677NhjhiL8w4,187160
237
+ phoenix/server/static/assets/index-BuTlV4Gk.js,sha256=JsAPpelKgf1a9JtrnyKLgJn4w3vUzYLCk5bsCXnCnkM,7466
238
+ phoenix/server/static/assets/pages-DzkUGFGV.js,sha256=qX2Q1wyfONVCfbx7uPd2W33MIZ4B561SIl0TO2LDK1Y,457253
235
239
  phoenix/server/static/assets/vendor-CIqy43_9.js,sha256=YclKUblIZ8JB6hhl36BtG_7FEsrNYbgnsW0d0w6zIxk,1355423
236
240
  phoenix/server/static/assets/vendor-DxkFTwjz.css,sha256=nZrkr0u6NNElFGvpWHk9GTHeGoibCXCli1bE7mXZGZg,1816
237
241
  phoenix/server/static/assets/vendor-arizeai-B1YgcWL8.js,sha256=b-Q3bHiEkWo29daqYevZItyECmgFu0LMjYgpbDK3mSc,304008
@@ -282,8 +286,8 @@ phoenix/utilities/logging.py,sha256=lDXd6EGaamBNcQxL4vP1au9-i_SXe0OraUDiJOcszSw,
282
286
  phoenix/utilities/project.py,sha256=8IJuMM4yUMoooPi37sictGj8Etu9rGmq6RFtc9848cQ,436
283
287
  phoenix/utilities/re.py,sha256=PDve_OLjRTM8yQQJHC8-n3HdIONi7aNils3ZKRZ5uBM,2045
284
288
  phoenix/utilities/span_store.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
285
- arize_phoenix-4.23.0.dist-info/METADATA,sha256=gHdCepPUbWpwWYNgkM1Tek-oR8i-JGP9x84pyTPsTCc,11902
286
- arize_phoenix-4.23.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
287
- arize_phoenix-4.23.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
288
- arize_phoenix-4.23.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
289
- arize_phoenix-4.23.0.dist-info/RECORD,,
289
+ arize_phoenix-4.24.0.dist-info/METADATA,sha256=EPfELiqfJFn2mwDGfD5En4FTu66BEa_cmlyblNqkvBI,11902
290
+ arize_phoenix-4.24.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
291
+ arize_phoenix-4.24.0.dist-info/licenses/IP_NOTICE,sha256=JBqyyCYYxGDfzQ0TtsQgjts41IJoa-hiwDrBjCb9gHM,469
292
+ arize_phoenix-4.24.0.dist-info/licenses/LICENSE,sha256=HFkW9REuMOkvKRACuwLPT0hRydHb3zNg-fdFt94td18,3794
293
+ arize_phoenix-4.24.0.dist-info/RECORD,,
@@ -150,7 +150,7 @@ async def insert_roles_and_users(connection: AsyncConnection) -> None:
150
150
  user to the `users` table.
151
151
  """
152
152
  await connection.execute(
153
- insert(UserRole).values([{"role": "SYSTEM"}, {"role": "ADMIN"}, {"role": "GENERAL"}])
153
+ insert(UserRole).values([{"role": "SYSTEM"}, {"role": "ADMIN"}, {"role": "MEMBER"}])
154
154
  )
155
155
  system_user_role_id = sa.select(UserRole.id).where(UserRole.role == "SYSTEM").scalar_subquery()
156
156
  admin_user_role_id = sa.select(UserRole.id).where(UserRole.role == "ADMIN").scalar_subquery()
phoenix/db/models.py CHANGED
@@ -626,6 +626,7 @@ if ENABLE_AUTH:
626
626
  __tablename__ = "user_roles"
627
627
  id: Mapped[int] = mapped_column(primary_key=True)
628
628
  role: Mapped[str] = mapped_column(unique=True)
629
+ users: Mapped[List["User"]] = relationship("User", back_populates="role")
629
630
 
630
631
  class User(Base):
631
632
  __tablename__ = "users"
@@ -634,6 +635,7 @@ if ENABLE_AUTH:
634
635
  ForeignKey("user_roles.id"),
635
636
  index=True,
636
637
  )
638
+ role: Mapped["UserRole"] = relationship("UserRole", back_populates="users")
637
639
  username: Mapped[Optional[str]] = mapped_column(nullable=True, unique=True, index=True)
638
640
  email: Mapped[str] = mapped_column(nullable=False, unique=True, index=True)
639
641
  auth_method: Mapped[str] = mapped_column(
@@ -646,6 +648,7 @@ if ENABLE_AUTH:
646
648
  UtcTimeStamp, server_default=func.now(), onupdate=func.now()
647
649
  )
648
650
  deleted_at: Mapped[Optional[datetime]] = mapped_column(UtcTimeStamp)
651
+ api_keys: Mapped[List["APIKey"]] = relationship("APIKey", back_populates="user")
649
652
 
650
653
  class APIKey(Base):
651
654
  __tablename__ = "api_keys"
@@ -654,6 +657,7 @@ if ENABLE_AUTH:
654
657
  ForeignKey("users.id"),
655
658
  index=True,
656
659
  )
660
+ user: Mapped["User"] = relationship("User", back_populates="api_keys")
657
661
  name: Mapped[str]
658
662
  description: Mapped[Optional[str]]
659
663
  created_at: Mapped[datetime] = mapped_column(UtcTimeStamp, server_default=func.now())
@@ -108,6 +108,7 @@ def run_experiment(
108
108
  rate_limit_errors: Optional[RateLimitErrors] = None,
109
109
  dry_run: Union[bool, int] = False,
110
110
  print_summary: bool = True,
111
+ concurrency: int = 3,
111
112
  ) -> RanExperiment:
112
113
  """
113
114
  Runs an experiment using a given set of dataset of examples.
@@ -158,6 +159,9 @@ def run_experiment(
158
159
  examples of the given size. Defaults to False.
159
160
  print_summary (bool): Whether to print a summary of the experiment and evaluation results.
160
161
  Defaults to True.
162
+ concurrency (int): Specifies the concurrency for task execution. In order to enable
163
+ concurrent task execution, the task callable must be a coroutine function.
164
+ Defaults to 3.
161
165
 
162
166
  Returns:
163
167
  RanExperiment: The results of the experiment and evaluation. Additional evaluations can be
@@ -389,6 +393,7 @@ def run_experiment(
389
393
  exit_on_error=False,
390
394
  fallback_return_value=None,
391
395
  tqdm_bar_format=get_tqdm_progress_bar_formatter("running tasks"),
396
+ concurrency=concurrency,
392
397
  )
393
398
 
394
399
  test_cases = [
@@ -414,6 +419,7 @@ def run_experiment(
414
419
  dry_run=dry_run,
415
420
  print_summary=print_summary,
416
421
  rate_limit_errors=rate_limit_errors,
422
+ concurrency=concurrency,
417
423
  )
418
424
  if print_summary:
419
425
  print(ran_experiment)
@@ -427,6 +433,7 @@ def evaluate_experiment(
427
433
  dry_run: Union[bool, int] = False,
428
434
  print_summary: bool = True,
429
435
  rate_limit_errors: Optional[RateLimitErrors] = None,
436
+ concurrency: int = 3,
430
437
  ) -> RanExperiment:
431
438
  if not dry_run and _is_dry_run(experiment):
432
439
  dry_run = True
@@ -628,6 +635,7 @@ def evaluate_experiment(
628
635
  exit_on_error=False,
629
636
  fallback_return_value=None,
630
637
  tqdm_bar_format=get_tqdm_progress_bar_formatter("running experiment evaluations"),
638
+ concurrency=concurrency,
631
639
  )
632
640
  eval_runs, _execution_details = executor.run(evaluation_input)
633
641
  eval_summary = EvaluationSummary.from_eval_runs(
@@ -66,8 +66,11 @@ from phoenix.server.api.types.pagination import (
66
66
  from phoenix.server.api.types.Project import Project
67
67
  from phoenix.server.api.types.SortDir import SortDir
68
68
  from phoenix.server.api.types.Span import Span, to_gql_span
69
+ from phoenix.server.api.types.SystemApiKey import SystemApiKey
69
70
  from phoenix.server.api.types.Trace import Trace
70
71
  from phoenix.server.api.types.User import User
72
+ from phoenix.server.api.types.UserApiKey import UserApiKey
73
+ from phoenix.server.api.types.UserRole import UserRole
71
74
 
72
75
 
73
76
  @strawberry.type
@@ -87,7 +90,12 @@ class Query:
87
90
  last=last,
88
91
  before=before if isinstance(before, CursorString) else None,
89
92
  )
90
- stmt = select(models.User).order_by(models.User.email)
93
+ stmt = (
94
+ select(models.User)
95
+ .where(models.UserRole.role != "SYSTEM")
96
+ .order_by(models.User.email)
97
+ .options(joinedload(models.User.role))
98
+ )
91
99
  async with info.context.db() as session:
92
100
  users = await session.stream_scalars(stmt)
93
101
  data = [
@@ -96,11 +104,77 @@ class Query:
96
104
  email=user.email,
97
105
  username=user.username,
98
106
  created_at=user.created_at,
107
+ role=UserRole(
108
+ id_attr=user.role.id,
109
+ role=user.role.role,
110
+ ),
99
111
  )
100
112
  async for user in users
101
113
  ]
102
114
  return connection_from_list(data=data, args=args)
103
115
 
116
+ @strawberry.field
117
+ async def user_roles(
118
+ self,
119
+ info: Info[Context, None],
120
+ ) -> List[UserRole]:
121
+ async with info.context.db() as session:
122
+ roles = await session.scalars(
123
+ select(models.UserRole).where(models.UserRole.role != "SYSTEM")
124
+ )
125
+ return [
126
+ UserRole(
127
+ id_attr=role.id,
128
+ role=role.role,
129
+ )
130
+ for role in roles
131
+ ]
132
+
133
+ @strawberry.field
134
+ async def user_api_keys(self, info: Info[Context, None]) -> List[UserApiKey]:
135
+ # TODO(auth): add access control
136
+ stmt = (
137
+ select(models.APIKey)
138
+ .join(models.User)
139
+ .join(models.UserRole)
140
+ .where(models.UserRole.role != "SYSTEM")
141
+ )
142
+ async with info.context.db() as session:
143
+ api_keys = await session.scalars(stmt)
144
+ return [
145
+ UserApiKey(
146
+ id_attr=api_key.id,
147
+ user_id=api_key.user_id,
148
+ name=api_key.name,
149
+ description=api_key.description,
150
+ created_at=api_key.created_at,
151
+ expires_at=api_key.expires_at,
152
+ )
153
+ for api_key in api_keys
154
+ ]
155
+
156
+ @strawberry.field
157
+ async def system_api_keys(self, info: Info[Context, None]) -> List[SystemApiKey]:
158
+ # TODO(auth): add access control
159
+ stmt = (
160
+ select(models.APIKey)
161
+ .join(models.User)
162
+ .join(models.UserRole)
163
+ .where(models.UserRole.role == "SYSTEM")
164
+ )
165
+ async with info.context.db() as session:
166
+ api_keys = await session.scalars(stmt)
167
+ return [
168
+ SystemApiKey(
169
+ id_attr=api_key.id,
170
+ name=api_key.name,
171
+ description=api_key.description,
172
+ created_at=api_key.created_at,
173
+ expires_at=api_key.expires_at,
174
+ )
175
+ for api_key in api_keys
176
+ ]
177
+
104
178
  @strawberry.field
105
179
  async def projects(
106
180
  self,
@@ -0,0 +1,16 @@
1
+ from datetime import datetime
2
+ from typing import Optional
3
+
4
+ import strawberry
5
+
6
+
7
+ @strawberry.interface
8
+ class ApiKey:
9
+ name: str = strawberry.field(description="Name of the API key.")
10
+ description: Optional[str] = strawberry.field(description="Description of the API key.")
11
+ created_at: datetime = strawberry.field(
12
+ description="The date and time the API key was created."
13
+ )
14
+ expires_at: Optional[datetime] = strawberry.field(
15
+ description="The date and time the API key will expire."
16
+ )
@@ -0,0 +1,9 @@
1
+ import strawberry
2
+ from strawberry.relay import Node, NodeID
3
+
4
+ from .ApiKey import ApiKey
5
+
6
+
7
+ @strawberry.type
8
+ class SystemApiKey(ApiKey, Node):
9
+ id_attr: NodeID[int]
@@ -4,6 +4,8 @@ from typing import Optional
4
4
  import strawberry
5
5
  from strawberry.relay import Node, NodeID
6
6
 
7
+ from .UserRole import UserRole
8
+
7
9
 
8
10
  @strawberry.type
9
11
  class User(Node):
@@ -11,3 +13,4 @@ class User(Node):
11
13
  email: str
12
14
  username: Optional[str]
13
15
  created_at: datetime
16
+ role: UserRole
@@ -0,0 +1,11 @@
1
+ import strawberry
2
+ from strawberry import Private
3
+ from strawberry.relay.types import Node, NodeID
4
+
5
+ from .ApiKey import ApiKey
6
+
7
+
8
+ @strawberry.type
9
+ class UserApiKey(ApiKey, Node):
10
+ id_attr: NodeID[int]
11
+ user_id: Private[int]
@@ -0,0 +1,8 @@
1
+ import strawberry
2
+ from strawberry.relay import Node, NodeID
3
+
4
+
5
+ @strawberry.type
6
+ class UserRole(Node):
7
+ id_attr: NodeID[int]
8
+ role: str
@@ -1,21 +1,21 @@
1
1
  {
2
- "_components-DBYPF96c.js": {
3
- "file": "assets/components-DBYPF96c.js",
2
+ "_components-DzA9gIHT.js": {
3
+ "file": "assets/components-DzA9gIHT.js",
4
4
  "name": "components",
5
5
  "imports": [
6
6
  "_vendor-CIqy43_9.js",
7
7
  "_vendor-arizeai-B1YgcWL8.js",
8
- "_pages-BhOnrUmC.js",
8
+ "_pages-DzkUGFGV.js",
9
9
  "_vendor-three-DwGkEfCM.js",
10
10
  "_vendor-codemirror-_bcwCA1C.js"
11
11
  ]
12
12
  },
13
- "_pages-BhOnrUmC.js": {
14
- "file": "assets/pages-BhOnrUmC.js",
13
+ "_pages-DzkUGFGV.js": {
14
+ "file": "assets/pages-DzkUGFGV.js",
15
15
  "name": "pages",
16
16
  "imports": [
17
17
  "_vendor-CIqy43_9.js",
18
- "_components-DBYPF96c.js",
18
+ "_components-DzA9gIHT.js",
19
19
  "_vendor-arizeai-B1YgcWL8.js",
20
20
  "_vendor-recharts-C3pM_Wlg.js",
21
21
  "_vendor-codemirror-_bcwCA1C.js"
@@ -61,15 +61,15 @@
61
61
  "name": "vendor-three"
62
62
  },
63
63
  "index.tsx": {
64
- "file": "assets/index-DNxu4viw.js",
64
+ "file": "assets/index-BuTlV4Gk.js",
65
65
  "name": "index",
66
66
  "src": "index.tsx",
67
67
  "isEntry": true,
68
68
  "imports": [
69
69
  "_vendor-CIqy43_9.js",
70
70
  "_vendor-arizeai-B1YgcWL8.js",
71
- "_pages-BhOnrUmC.js",
72
- "_components-DBYPF96c.js",
71
+ "_pages-DzkUGFGV.js",
72
+ "_components-DzA9gIHT.js",
73
73
  "_vendor-three-DwGkEfCM.js",
74
74
  "_vendor-recharts-C3pM_Wlg.js",
75
75
  "_vendor-codemirror-_bcwCA1C.js"
@@ -1,4 +1,4 @@
1
- import{c as je,p as Dt,d as qe,r as p,j as n,R as W,n as Fn,a as we,C as De,b as U,s as Et,e as Ft,f as ie,g as Se,h as Ke,i as Te,k as Le,l as Vt,m as _t,o as ae,q as Pt,t as Nt,u as Rt,v as s,w as m,x as Fe,$ as P,L as Vn,y as Ot,z as Kt,A as At,B as zt,D as cn,F as Ve,E as se,G as $t,H as Gt,I as _n,S as Bt,J as Qt,Q as dn,K as Ht,M as Ut,N as Zt,P as Ae,O as Pn,T as jt,U as qt,V as Wt,W as Jt,X as Xt,Y as Yt,Z as ea,_ as na,a0 as ta,a1 as We,a2 as Q,a3 as Nn,a4 as aa,a5 as ra,a6 as ia,a7 as la,a8 as oa}from"./vendor-CIqy43_9.js";import{u as sa,_ as q,a as _e,b as $,c as N,T as R,F as Rn,d as Z,I,e as w,f as G,A as ca,g as On,h as C,i as D,j as z,k as da,l as ua,P as ma,R as H,m as Pe,n as pa,o as ga,L as Je,p as J,q as X,r as Ne,s as ha,t as Kn,E as An,v as fa,w as La,x as ya,y as va,z as ba,B as Ca}from"./vendor-arizeai-B1YgcWL8.js";import{u as ka}from"./pages-BhOnrUmC.js";import{V as xa}from"./vendor-three-DwGkEfCM.js";import{j as zn,E as $n,l as Gn,a as Bn,R as Xe,n as Ye,p as wa}from"./vendor-codemirror-_bcwCA1C.js";const Sa=e=>{const t=a=>({markdownDisplayMode:"text",setMarkdownDisplayMode:r=>{a({markdownDisplayMode:r})},traceStreamingEnabled:!0,setTraceStreamingEnabled:r=>{a({traceStreamingEnabled:r})},showSpanAside:!0,setShowSpanAside:r=>{a({showSpanAside:r})},showMetricsInTraceTree:!0,setShowMetricsInTraceTree:r=>{a({showMetricsInTraceTree:r})},...e});return je()(Dt(qe(t),{name:"arize-phoenix-preferences"}))},Qn=p.createContext(null);function Rl({children:e,...t}){const a=p.useRef();return a.current||(a.current=Sa(t)),n(Qn.Provider,{value:a.current,children:e})}function be(e,t){const a=W.useContext(Qn);if(!a)throw new Error("Missing PreferencesContext.Provider in the tree");return Fn(a,e,t)}var A=(e=>(e.primary="primary",e.reference="reference",e.corpus="corpus",e))(A||{});function V(e){throw new Error("Unreachable")}function en(e){return typeof e=="number"||e===null}function Ma(e){return typeof e=="string"||e===null}function Ol(e){return Array.isArray(e)?e.every(t=>typeof t=="string"):!1}function Ta(e){return typeof e=="object"&&e!==null}const nn=p.createContext(null);function Re(){const e=W.useContext(nn);if(e===null)throw new Error("useInferences must be used within a InferencesProvider");return e}function Kl(e){return n(nn.Provider,{value:{primaryInferences:e.primaryInferences,referenceInferences:e.referenceInferences,corpusInferences:e.corpusInferences,getInferencesNameByRole:t=>{var a,r;switch(t){case A.primary:return e.primaryInferences.name;case A.reference:return((a=e.referenceInferences)==null?void 0:a.name)??"reference";case A.corpus:return((r=e.corpusInferences)==null?void 0:r.name)??"corpus";default:V()}}},children:e.children})}const Hn=function(){var e={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},r={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},i={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},l=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],o=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:l,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:l,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[e,t,a,r,i],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:o,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[e,a,t,r,i],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:o},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
1
+ import{c as je,p as Dt,d as qe,r as p,j as n,R as W,n as Fn,a as we,C as De,b as U,s as Et,e as Ft,f as ie,g as Se,h as Ke,i as Te,k as Le,l as Vt,m as _t,o as ae,q as Pt,t as Nt,u as Rt,v as s,w as m,x as Fe,$ as P,L as Vn,y as Ot,z as Kt,A as At,B as zt,D as cn,F as Ve,E as se,G as $t,H as Gt,I as _n,S as Bt,J as Qt,Q as dn,K as Ht,M as Ut,N as Zt,P as Ae,O as Pn,T as jt,U as qt,V as Wt,W as Jt,X as Xt,Y as Yt,Z as ea,_ as na,a0 as ta,a1 as We,a2 as Q,a3 as Nn,a4 as aa,a5 as ra,a6 as ia,a7 as la,a8 as oa}from"./vendor-CIqy43_9.js";import{u as sa,_ as q,a as _e,b as $,c as N,T as R,F as Rn,d as Z,I,e as w,f as G,A as ca,g as On,h as C,i as D,j as z,k as da,l as ua,P as ma,R as H,m as Pe,n as pa,o as ga,L as Je,p as J,q as X,r as Ne,s as ha,t as Kn,E as An,v as fa,w as La,x as ya,y as va,z as ba,B as Ca}from"./vendor-arizeai-B1YgcWL8.js";import{u as ka}from"./pages-DzkUGFGV.js";import{V as xa}from"./vendor-three-DwGkEfCM.js";import{j as zn,E as $n,l as Gn,a as Bn,R as Xe,n as Ye,p as wa}from"./vendor-codemirror-_bcwCA1C.js";const Sa=e=>{const t=a=>({markdownDisplayMode:"text",setMarkdownDisplayMode:r=>{a({markdownDisplayMode:r})},traceStreamingEnabled:!0,setTraceStreamingEnabled:r=>{a({traceStreamingEnabled:r})},showSpanAside:!0,setShowSpanAside:r=>{a({showSpanAside:r})},showMetricsInTraceTree:!0,setShowMetricsInTraceTree:r=>{a({showMetricsInTraceTree:r})},...e});return je()(Dt(qe(t),{name:"arize-phoenix-preferences"}))},Qn=p.createContext(null);function Rl({children:e,...t}){const a=p.useRef();return a.current||(a.current=Sa(t)),n(Qn.Provider,{value:a.current,children:e})}function be(e,t){const a=W.useContext(Qn);if(!a)throw new Error("Missing PreferencesContext.Provider in the tree");return Fn(a,e,t)}var A=(e=>(e.primary="primary",e.reference="reference",e.corpus="corpus",e))(A||{});function V(e){throw new Error("Unreachable")}function en(e){return typeof e=="number"||e===null}function Ma(e){return typeof e=="string"||e===null}function Ol(e){return Array.isArray(e)?e.every(t=>typeof t=="string"):!1}function Ta(e){return typeof e=="object"&&e!==null}const nn=p.createContext(null);function Re(){const e=W.useContext(nn);if(e===null)throw new Error("useInferences must be used within a InferencesProvider");return e}function Kl(e){return n(nn.Provider,{value:{primaryInferences:e.primaryInferences,referenceInferences:e.referenceInferences,corpusInferences:e.corpusInferences,getInferencesNameByRole:t=>{var a,r;switch(t){case A.primary:return e.primaryInferences.name;case A.reference:return((a=e.referenceInferences)==null?void 0:a.name)??"reference";case A.corpus:return((r=e.corpusInferences)==null?void 0:r.name)??"corpus";default:V()}}},children:e.children})}const Hn=function(){var e={defaultValue:null,kind:"LocalArgument",name:"clusters"},t={defaultValue:null,kind:"LocalArgument",name:"dataQualityMetricColumnName"},a={defaultValue:null,kind:"LocalArgument",name:"fetchDataQualityMetric"},r={defaultValue:null,kind:"LocalArgument",name:"fetchPerformanceMetric"},i={defaultValue:null,kind:"LocalArgument",name:"performanceMetric"},l=[{alias:null,args:null,kind:"ScalarField",name:"primaryValue",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"referenceValue",storageKey:null}],o=[{alias:null,args:[{kind:"Variable",name:"clusters",variableName:"clusters"}],concreteType:"Cluster",kind:"LinkedField",name:"clusters",plural:!0,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"eventIds",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"driftRatio",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"primaryToCorpusRatio",storageKey:null},{condition:"fetchDataQualityMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"columnName",variableName:"dataQualityMetricColumnName"},{kind:"Literal",name:"metric",value:"mean"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"dataQualityMetric",plural:!1,selections:l,storageKey:null}]},{condition:"fetchPerformanceMetric",kind:"Condition",passingValue:!0,selections:[{alias:null,args:[{fields:[{kind:"Variable",name:"metric",variableName:"performanceMetric"}],kind:"ObjectValue",name:"metric"}],concreteType:"DatasetValues",kind:"LinkedField",name:"performanceMetric",plural:!1,selections:l,storageKey:null}]}],storageKey:null}];return{fragment:{argumentDefinitions:[e,t,a,r,i],kind:"Fragment",metadata:null,name:"pointCloudStore_clusterMetricsQuery",selections:o,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[e,a,t,r,i],kind:"Operation",name:"pointCloudStore_clusterMetricsQuery",selections:o},params:{cacheID:"86666967012812887ac0a0149d2d2535",id:null,metadata:{},name:"pointCloudStore_clusterMetricsQuery",operationKind:"query",text:`query pointCloudStore_clusterMetricsQuery(
2
2
  $clusters: [ClusterInput!]!
3
3
  $fetchDataQualityMetric: Boolean!
4
4
  $dataQualityMetricColumnName: String
@@ -1,4 +1,4 @@
1
- import{r as d,j as e,d2 as F,v as s,F as P,R as v,w as E,aO as S,d3 as L,d4 as R,d5 as a,d6 as w,d7 as z,b as A,d8 as j}from"./vendor-CIqy43_9.js";import{S as C,j as k,Z as $,U as _,t as O,a4 as I}from"./vendor-arizeai-B1YgcWL8.js";import{L as T,E as D,h as N,M as G,a as m,D as M,d as U,b as B,e as q,P as J,c as K,T as W,p as H,f as u,g as V,i as Y,j as g,k as Z,l as h,m as b,n as Q,o as X,q as ee,r as re,s as ae,A as te,S as oe,F as ne}from"./pages-BhOnrUmC.js";import{b3 as se,d as ie,R as le,b4 as ce,b5 as de}from"./components-DBYPF96c.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-recharts-C3pM_Wlg.js";import"./vendor-codemirror-_bcwCA1C.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))c(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&c(i)}).observe(document,{childList:!0,subtree:!0});function l(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function c(t){if(t.ep)return;t.ep=!0;const o=l(t);fetch(t.href,o)}})();const x="arize-phoenix-feature-flags",p={__CLEAR__:!0};function pe(){const r=localStorage.getItem(x);if(!r)return p;try{const n=JSON.parse(r);return Object.assign({},p,n)}catch{return p}}const f=d.createContext(null);function me(){const r=v.useContext(f);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ue(r){const[n,l]=d.useState(pe()),c=t=>{localStorage.setItem(x,JSON.stringify(t)),l(t)};return e(f.Provider,{value:{featureFlags:n,setFeatureFlags:c},children:e(ge,{children:r.children})})}function ge(r){const{children:n}=r,{featureFlags:l,setFeatureFlags:c}=me(),[t,o]=d.useState(!1);return F("ctrl+shift+f",()=>o(!0)),s(P,{children:[n,e(_,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(k,{height:"size-1000",padding:"size-100",children:Object.keys(l).map(i=>e($,{isSelected:l[i],onChange:y=>c({...l,[i]:y}),children:i},i))})})})]})}function he(){return e(S,{styles:r=>E`
1
+ import{r as d,j as e,d2 as F,v as s,F as P,R as v,w as E,aO as S,d3 as L,d4 as R,d5 as a,d6 as w,d7 as z,b as A,d8 as j}from"./vendor-CIqy43_9.js";import{S as C,j as k,Z as $,U as _,t as O,a4 as I}from"./vendor-arizeai-B1YgcWL8.js";import{L as T,E as D,h as N,M as G,a as m,D as M,d as U,b as B,e as q,P as J,c as K,T as W,p as H,f as u,g as V,i as Y,j as g,k as Z,l as h,m as b,n as Q,o as X,q as ee,r as re,s as ae,A as te,S as oe,F as ne}from"./pages-DzkUGFGV.js";import{b3 as se,d as ie,R as le,b4 as ce,b5 as de}from"./components-DzA9gIHT.js";import"./vendor-three-DwGkEfCM.js";import"./vendor-recharts-C3pM_Wlg.js";import"./vendor-codemirror-_bcwCA1C.js";(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))c(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&c(i)}).observe(document,{childList:!0,subtree:!0});function l(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function c(t){if(t.ep)return;t.ep=!0;const o=l(t);fetch(t.href,o)}})();const x="arize-phoenix-feature-flags",p={__CLEAR__:!0};function pe(){const r=localStorage.getItem(x);if(!r)return p;try{const n=JSON.parse(r);return Object.assign({},p,n)}catch{return p}}const f=d.createContext(null);function me(){const r=v.useContext(f);if(r===null)throw new Error("useFeatureFlags must be used within a FeatureFlagsProvider");return r}function ue(r){const[n,l]=d.useState(pe()),c=t=>{localStorage.setItem(x,JSON.stringify(t)),l(t)};return e(f.Provider,{value:{featureFlags:n,setFeatureFlags:c},children:e(ge,{children:r.children})})}function ge(r){const{children:n}=r,{featureFlags:l,setFeatureFlags:c}=me(),[t,o]=d.useState(!1);return F("ctrl+shift+f",()=>o(!0)),s(P,{children:[n,e(_,{type:"modal",isDismissable:!0,onDismiss:()=>o(!1),children:t&&e(C,{title:"Feature Flags",children:e(k,{height:"size-1000",padding:"size-100",children:Object.keys(l).map(i=>e($,{isSelected:l[i],onChange:y=>c({...l,[i]:y}),children:i},i))})})})]})}function he(){return e(S,{styles:r=>E`
2
2
  body {
3
3
  background-color: var(--ac-global-color-grey-75);
4
4
  color: var(--ac-global-text-color-900);
@@ -1,4 +1,4 @@
1
- import{r as c,j as e,b as E,a9 as Zn,v as s,w as F,aa as Ke,ab as Oe,$ as U,ac as Yn,y as pe,z as ye,D as W,F as H,B as On,R as De,o as rl,ad as nn,ae as oe,af as an,ag as ur,E as La,ah as jn,a7 as ae,a1 as vn,a2 as J,ai as me,aj as cn,ak as mr,al as pa,am as ya,an as fa,ao as An,ap as Se,aq as sl,n as ol,a as gr,ar as pr,as as yr,at as fr,au as hr,av as kr,c as br,d as Sr,aw as vr}from"./vendor-CIqy43_9.js";import{R as Ce,u as Ie,a as Pe,T as _a,P as dl,b as cl,M as ja,c as qa,d as qn,D as Fr,e as Kr,f as Q,g as ul,h as fe,i as ta,j as Fn,k as ml,l as Kn,m as xn,n as gl,o as Me,p as Ae,C as ie,q as ia,r as je,s as Ea,t as Tn,E as pl,v as xr,w as Tr,L as ce,x as Dr,y as Cr,F as Ir,z as Lr,A as ln,B as ve,S as _r,G as Er,H as yl,I as Rr,J as Ar,K as Ba,N as wr,O as Pr,Q as Mr,U as Nr,V as $r,W as Vr,X as fl,Y as Dn,Z as zr,_ as Qr,$ as Or,a0 as jr,a1 as qr,a2 as tn,a3 as Ra,a4 as hl,a5 as fn,a6 as Da,a7 as pn,a8 as Le,a9 as Br,aa as Hr,ab as be,ac as kl,ad as ra,ae as xe,af as Aa,ag as sn,ah as X,ai as Cn,aj as Gr,ak as wa,al as Ee,am as Re,an as aa,ao as Pa,ap as bl,aq as Ur,ar as Wr,as as he,at as we,au as Bn,av as Jr,aw as Hn,ax as sa,ay as Sl,az as vl,aA as Xr,aB as Gn,aC as In,aD as Ne,aE as Ln,aF as on,aG as Zr,aH as Ha,aI as Fl,aJ as Yr,aK as es,aL as ns,aM as wn,aN as as,aO as ls,aP as ts,aQ as is,aR as rs,aS as ss,aT as os,aU as ds,aV as hn,aW as Xe,aX as Ca,aY as Ze,aZ as cs,a_ as oa,a$ as us,b0 as Ma,b1 as ms,b2 as ea}from"./components-DBYPF96c.js";import{C as Kl,D as ke,G as j,H as Ye,J as ue,K as gs,l as Na,M as Un,P as dn,I as w,e as A,N as qe,a as xl,c as le,p as _n,q as En,t as te,h as x,n as Tl,O as $e,j as T,i as k,L as $n,Q as Dl,f as V,S as B,s as ne,U as Z,V as Cl,W as Il,X as ps,Y as ys,Z as $a,_ as kn,v as Wn,T as Fe,d as de,z as da,r as bn,$ as z,a0 as Ll,E as ca,b as Vn,a1 as Va,a2 as fs,y as ua,u as hs,a3 as ks}from"./vendor-arizeai-B1YgcWL8.js";import{R as Be,C as Jn,X as He,Y as Te,a as Ge,T as Ue,B as Sn,A as zn,b as _l,c as za,L as El,d as bs,P as Ss,e as vs,f as Fs}from"./vendor-recharts-C3pM_Wlg.js";import{p as Qa,R as ma,n as ga,j as Ks,E as xs,k as Ts,b as Ds}from"./vendor-codemirror-_bcwCA1C.js";const Rl=c.createContext(null);function Cs(){const n=c.useContext(Rl);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function Eu(n){return e(Rl.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const Al=function(){var n=[{alias:null,args:null,concreteType:"Functionality",kind:"LinkedField",name:"functionality",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"modelInferences",storageKey:null}],storageKey:null},{alias:null,args:null,concreteType:"ProjectConnection",kind:"LinkedField",name:"projects",plural:!1,selections:[{alias:null,args:null,concreteType:"ProjectEdge",kind:"LinkedField",name:"edges",plural:!0,selections:[{alias:"project",args:null,concreteType:"Project",kind:"LinkedField",name:"node",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"endTime",storageKey:null}],storageKey:null}],storageKey:null}],storageKey:null}];return{fragment:{argumentDefinitions:[],kind:"Fragment",metadata:null,name:"homeLoaderQuery",selections:n,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[],kind:"Operation",name:"homeLoaderQuery",selections:n},params:{cacheID:"6926e4e720b443f7b7252b60271944e6",id:null,metadata:{},name:"homeLoaderQuery",operationKind:"query",text:`query homeLoaderQuery {
1
+ import{r as c,j as e,b as E,a9 as Zn,v as s,w as F,aa as Ke,ab as Oe,$ as U,ac as Yn,y as pe,z as ye,D as W,F as H,B as On,R as De,o as rl,ad as nn,ae as oe,af as an,ag as ur,E as La,ah as jn,a7 as ae,a1 as vn,a2 as J,ai as me,aj as cn,ak as mr,al as pa,am as ya,an as fa,ao as An,ap as Se,aq as sl,n as ol,a as gr,ar as pr,as as yr,at as fr,au as hr,av as kr,c as br,d as Sr,aw as vr}from"./vendor-CIqy43_9.js";import{R as Ce,u as Ie,a as Pe,T as _a,P as dl,b as cl,M as ja,c as qa,d as qn,D as Fr,e as Kr,f as Q,g as ul,h as fe,i as ta,j as Fn,k as ml,l as Kn,m as xn,n as gl,o as Me,p as Ae,C as ie,q as ia,r as je,s as Ea,t as Tn,E as pl,v as xr,w as Tr,L as ce,x as Dr,y as Cr,F as Ir,z as Lr,A as ln,B as ve,S as _r,G as Er,H as yl,I as Rr,J as Ar,K as Ba,N as wr,O as Pr,Q as Mr,U as Nr,V as $r,W as Vr,X as fl,Y as Dn,Z as zr,_ as Qr,$ as Or,a0 as jr,a1 as qr,a2 as tn,a3 as Ra,a4 as hl,a5 as fn,a6 as Da,a7 as pn,a8 as Le,a9 as Br,aa as Hr,ab as be,ac as kl,ad as ra,ae as xe,af as Aa,ag as sn,ah as X,ai as Cn,aj as Gr,ak as wa,al as Ee,am as Re,an as aa,ao as Pa,ap as bl,aq as Ur,ar as Wr,as as he,at as we,au as Bn,av as Jr,aw as Hn,ax as sa,ay as Sl,az as vl,aA as Xr,aB as Gn,aC as In,aD as Ne,aE as Ln,aF as on,aG as Zr,aH as Ha,aI as Fl,aJ as Yr,aK as es,aL as ns,aM as wn,aN as as,aO as ls,aP as ts,aQ as is,aR as rs,aS as ss,aT as os,aU as ds,aV as hn,aW as Xe,aX as Ca,aY as Ze,aZ as cs,a_ as oa,a$ as us,b0 as Ma,b1 as ms,b2 as ea}from"./components-DzA9gIHT.js";import{C as Kl,D as ke,G as j,H as Ye,J as ue,K as gs,l as Na,M as Un,P as dn,I as w,e as A,N as qe,a as xl,c as le,p as _n,q as En,t as te,h as x,n as Tl,O as $e,j as T,i as k,L as $n,Q as Dl,f as V,S as B,s as ne,U as Z,V as Cl,W as Il,X as ps,Y as ys,Z as $a,_ as kn,v as Wn,T as Fe,d as de,z as da,r as bn,$ as z,a0 as Ll,E as ca,b as Vn,a1 as Va,a2 as fs,y as ua,u as hs,a3 as ks}from"./vendor-arizeai-B1YgcWL8.js";import{R as Be,C as Jn,X as He,Y as Te,a as Ge,T as Ue,B as Sn,A as zn,b as _l,c as za,L as El,d as bs,P as Ss,e as vs,f as Fs}from"./vendor-recharts-C3pM_Wlg.js";import{p as Qa,R as ma,n as ga,j as Ks,E as xs,k as Ts,b as Ds}from"./vendor-codemirror-_bcwCA1C.js";const Rl=c.createContext(null);function Cs(){const n=c.useContext(Rl);if(n===null)throw new Error("useFunctionality must be used within a FunctionalityProvider");return n}function Eu(n){return e(Rl.Provider,{value:{authenticationEnabled:window.Config.authenticationEnabled},children:n.children})}const Al=function(){var n=[{alias:null,args:null,concreteType:"Functionality",kind:"LinkedField",name:"functionality",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"modelInferences",storageKey:null}],storageKey:null},{alias:null,args:null,concreteType:"ProjectConnection",kind:"LinkedField",name:"projects",plural:!1,selections:[{alias:null,args:null,concreteType:"ProjectEdge",kind:"LinkedField",name:"edges",plural:!0,selections:[{alias:"project",args:null,concreteType:"Project",kind:"LinkedField",name:"node",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"id",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"endTime",storageKey:null}],storageKey:null}],storageKey:null}],storageKey:null}];return{fragment:{argumentDefinitions:[],kind:"Fragment",metadata:null,name:"homeLoaderQuery",selections:n,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[],kind:"Operation",name:"homeLoaderQuery",selections:n},params:{cacheID:"6926e4e720b443f7b7252b60271944e6",id:null,metadata:{},name:"homeLoaderQuery",operationKind:"query",text:`query homeLoaderQuery {
2
2
  functionality {
3
3
  modelInferences
4
4
  }
@@ -3197,18 +3197,21 @@ fragment ExperimentMultiSelector__experiments on Dataset {
3197
3197
  }
3198
3198
  }
3199
3199
  }
3200
- `}}}();dr.hash="fa02088830fd16688f0f2fba9a0009eb";async function am(n){const{datasetId:a}=n.params;return await E.fetchQuery(Ce,dr,{id:a}).toPromise()}const cr=function(){var n=[{alias:null,args:null,concreteType:"UserConnection",kind:"LinkedField",name:"users",plural:!1,selections:[{alias:null,args:null,concreteType:"UserEdge",kind:"LinkedField",name:"edges",plural:!0,selections:[{alias:"user",args:null,concreteType:"User",kind:"LinkedField",name:"node",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"email",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"username",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"createdAt",storageKey:null}],storageKey:null}],storageKey:null}],storageKey:null}];return{fragment:{argumentDefinitions:[],kind:"Fragment",metadata:null,name:"UsersTableQuery",selections:n,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[],kind:"Operation",name:"UsersTableQuery",selections:n},params:{cacheID:"0d0f6d7ad268e8b6864dadfaaf7fdb6f",id:null,metadata:{},name:"UsersTableQuery",operationKind:"query",text:`query UsersTableQuery {
3200
+ `}}}();dr.hash="fa02088830fd16688f0f2fba9a0009eb";async function am(n){const{datasetId:a}=n.params;return await E.fetchQuery(Ce,dr,{id:a}).toPromise()}const cr=function(){var n=[{alias:null,args:null,concreteType:"UserConnection",kind:"LinkedField",name:"users",plural:!1,selections:[{alias:null,args:null,concreteType:"UserEdge",kind:"LinkedField",name:"edges",plural:!0,selections:[{alias:"user",args:null,concreteType:"User",kind:"LinkedField",name:"node",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"email",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"username",storageKey:null},{alias:null,args:null,kind:"ScalarField",name:"createdAt",storageKey:null},{alias:null,args:null,concreteType:"UserRole",kind:"LinkedField",name:"role",plural:!1,selections:[{alias:null,args:null,kind:"ScalarField",name:"role",storageKey:null}],storageKey:null}],storageKey:null}],storageKey:null}],storageKey:null}];return{fragment:{argumentDefinitions:[],kind:"Fragment",metadata:null,name:"UsersTableQuery",selections:n,type:"Query",abstractKey:null},kind:"Request",operation:{argumentDefinitions:[],kind:"Operation",name:"UsersTableQuery",selections:n},params:{cacheID:"5cefb7e1fadaa4daf3273449329b9a8f",id:null,metadata:{},name:"UsersTableQuery",operationKind:"query",text:`query UsersTableQuery {
3201
3201
  users {
3202
3202
  edges {
3203
3203
  user: node {
3204
3204
  email
3205
3205
  username
3206
3206
  createdAt
3207
+ role {
3208
+ role
3209
+ }
3207
3210
  }
3208
3211
  }
3209
3212
  }
3210
3213
  }
3211
- `}}}();cr.hash="e3433be9d599897d186757122a0dc5a8";function Ku(){const n=E.useLazyLoadQuery(cr,{}),a=c.useMemo(()=>n.users.edges.map(({user:r})=>({email:r.email,username:r.username,createdAt:r.createdAt})),[n]),l=pe({columns:[{header:"email",accessorKey:"email"},{header:"username",accessorKey:"username"},{header:"created at",accessorKey:"createdAt",cell:on}],data:a,getCoreRowModel:ye()}),t=l.getRowModel().rows,i=l.getRowModel().rows.length===0;return s("table",{css:Tn,children:[e("thead",{children:l.getHeaderGroups().map(r=>e("tr",{children:r.headers.map(o=>e("th",{colSpan:o.colSpan,children:o.isPlaceholder?null:s("div",{className:o.column.getCanSort()?"cursor-pointer":"",onClick:o.column.getToggleSortingHandler(),style:{left:o.getStart(),width:o.getSize()},children:[W(o.column.columnDef.header,o.getContext()),o.column.getIsSorted()?e(w,{className:"sort-icon",svg:o.column.getIsSorted()==="asc"?e(A.ArrowUpFilled,{}):e(A.ArrowDownFilled,{})}):null]})},o.id))},r.id))}),i?e(Cn,{}):e("tbody",{children:t.map(r=>e("tr",{children:r.getVisibleCells().map(o=>e("td",{children:W(o.column.columnDef.cell,o.getContext())},o.id))},r.id))})]})}const xu=F`
3214
+ `}}}();cr.hash="87a865d148c113262b821aeeb24b30c3";function Ku(){const n=E.useLazyLoadQuery(cr,{}),a=c.useMemo(()=>n.users.edges.map(({user:r})=>({email:r.email,username:r.username,createdAt:r.createdAt,role:r.role.role})),[n]),l=pe({columns:[{header:"email",accessorKey:"email"},{header:"username",accessorKey:"username"},{header:"role",accessorKey:"role"},{header:"created at",accessorKey:"createdAt",cell:on}],data:a,getCoreRowModel:ye()}),t=l.getRowModel().rows,i=l.getRowModel().rows.length===0;return s("table",{css:Tn,children:[e("thead",{children:l.getHeaderGroups().map(r=>e("tr",{children:r.headers.map(o=>e("th",{colSpan:o.colSpan,children:o.isPlaceholder?null:s("div",{className:o.column.getCanSort()?"cursor-pointer":"",onClick:o.column.getToggleSortingHandler(),style:{left:o.getStart(),width:o.getSize()},children:[W(o.column.columnDef.header,o.getContext()),o.column.getIsSorted()?e(w,{className:"sort-icon",svg:o.column.getIsSorted()==="asc"?e(A.ArrowUpFilled,{}):e(A.ArrowDownFilled,{})}):null]})},o.id))},r.id))}),i?e(Cn,{}):e("tbody",{children:t.map(r=>e("tr",{children:r.getVisibleCells().map(o=>e("td",{children:W(o.column.columnDef.cell,o.getContext())},o.id))},r.id))})]})}const xu=F`
3212
3215
  padding: var(--ac-global-dimension-size-400);
3213
3216
  max-width: 800px;
3214
3217
  min-width: 500px;
phoenix/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "4.23.0"
1
+ __version__ = "4.24.0"