levelapp 0.1.0__py3-none-any.whl → 0.1.2__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 levelapp might be problematic. Click here for more details.

@@ -2,9 +2,9 @@ levelapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  levelapp/aspects/__init__.py,sha256=_OaPcjTWBizqcUdDVj5aYue7lG9ytjQGLhPvReriKnU,326
3
3
  levelapp/aspects/loader.py,sha256=xWpcWtS25zbVhZ0UnIJEcQA9klajKk10TLK4j1IStH0,9543
4
4
  levelapp/aspects/logger.py,sha256=MJ9HphyHYkTE5-ajA_WuMUTM0qQzd0WIP243vF-pj3M,1698
5
- levelapp/aspects/monitor.py,sha256=lXGgxxeKZNkL5XbC_0ybES75gaRA9SuspHLHAEDbMR8,21981
5
+ levelapp/aspects/monitor.py,sha256=KREhG_KH4f7okyheexaeKykwhzzQsFl1USC-k9YPXfQ,22065
6
6
  levelapp/aspects/sanitizer.py,sha256=zUqgb76tXJ8UUYtHp0Rz7q9PZjAHpSpHPPFfGTjjQNg,5229
7
- levelapp/clients/__init__.py,sha256=bbSFkYIODxEFatET4CFsKGC4m7Ng_tUkTGNcVBMa9h0,4169
7
+ levelapp/clients/__init__.py,sha256=of3Zdkag634COXH_ca4hxXkERT8X44QS0IgfWu2yWqY,4084
8
8
  levelapp/clients/anthropic.py,sha256=Bxp-HffcIPLwM9BLcTR7n-D8ZXYVWCmbr2oH33fKV04,4030
9
9
  levelapp/clients/ionos.py,sha256=GFkLSeu8epFZV44GbNO3h1fRCKcfxscHMTFY0kPfh3o,4267
10
10
  levelapp/clients/mistral.py,sha256=e1NRvP9qN7O2zWAzBbgdQmmUDHQfCRLtVKDJCrh0DNA,3777
@@ -13,34 +13,38 @@ levelapp/comparator/__init__.py,sha256=ynmc0mrx-JbcCqLH-z4hOVezqGocDbDQGqgbhWy2x
13
13
  levelapp/comparator/comparator.py,sha256=yk0FWREnWKhIbXlsYpieqPJPqrlWXzyBMjVSznGqKY8,8183
14
14
  levelapp/comparator/extractor.py,sha256=vJ9iEoWAtXo2r9r7X72uUQPKW3UZE9Kx3uIjCufEp9k,3910
15
15
  levelapp/comparator/schemas.py,sha256=lUAQzEyStidt2ePQgV2zq-An5MLBrVSw6t8fB0FQKJs,1803
16
- levelapp/comparator/scorer.py,sha256=x5tU28SQekCNXmtK6wxr9ht7MZkqI78eYmZA6srkp4o,9167
16
+ levelapp/comparator/scorer.py,sha256=LBRy8H11rXulSa-k40BcycPcMAHgdUm13qS7ibWHq6I,9032
17
17
  levelapp/comparator/utils.py,sha256=Eu48nDrNzFr0lwAJJS0aNhKsAWQ72syTEWYMNYfg764,4331
18
18
  levelapp/config/__init__.py,sha256=9oaajE5zW-OVWOszUzMAG6nHDSbLQWa3KT6bVoSvzRA,137
19
- levelapp/config/endpoint.py,sha256=ll34rZ0KRmUwI81EWJ3HX9i6pziq2YrQb84kv4ErymI,7649
20
- levelapp/config/prompts.py,sha256=crjOk01weLz5_IdF6dDZWPfSmiKNL8SgnbThyf4Jz2o,1345
19
+ levelapp/config/endpoint.py,sha256=B-uIEKF-0_Y6Vo8MZ8eoCZocRkghijrdpwT3zq0FDLk,7647
20
+ levelapp/config/endpoint_.py,sha256=-abrIYKbFPLxTqNst-zbCI4MpMCmCMe9VZ6O8OwNRiE,1629
21
+ levelapp/config/prompts.py,sha256=NXOKRp5l1VQ9LO0pUojVH6TDJhWyZImsAvZEz2QiD9k,2206
21
22
  levelapp/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
23
  levelapp/core/base.py,sha256=oh4OkKgwGxmw_jgjX6wrBoK0KPc1JvCMZfbZP_mGmIg,12453
23
- levelapp/core/session.py,sha256=0pE8iUNyA6__RYGJlfaqSr0MtOT0vYIwr496KvC1VlA,7885
24
+ levelapp/core/schemas.py,sha256=E47d93MMOj4eRYZIqUyLBiE5Ye7WgwkOJPOWQ6swRmo,465
25
+ levelapp/core/session.py,sha256=6utDbLdg6DjwHL5dP-4wGe4_f7gFgEukuNNeOnbCbtA,9035
24
26
  levelapp/evaluator/__init__.py,sha256=K-P75Q1FXXLCNqH1wyhT9sf4y2R9a1qR5449AXEsY1k,109
25
- levelapp/evaluator/evaluator.py,sha256=JlqszyfOvA8JbgHmQNhMSBkminF95_AjXe14jg_OO7s,9908
26
- levelapp/metrics/__init__.py,sha256=1y4gDLOu2Jz4QVIgPH-v9YMgaWOFr263tYLUTiFJ-fc,1965
27
+ levelapp/evaluator/evaluator.py,sha256=JCRgQps9GKlJBDYw9xzVrC2_aGy0GhGAJ0ZkSC_IWWA,10806
28
+ levelapp/metrics/__init__.py,sha256=x8iTaeDezJyQ9-NFe8GGvzwIBhyAJHWSRfBE3JRX-PE,1878
27
29
  levelapp/metrics/embedding.py,sha256=wvlT8Q5DjDT6GrAIFtc5aFbA_80hDLUXMP4RbSpSwHE,115
28
30
  levelapp/metrics/exact.py,sha256=Kb13nD2OVLrl3iYHaXrxDfrxDuhW0SMVvLAEXPaJtlY,6235
29
31
  levelapp/metrics/fuzzy.py,sha256=Rg8ashzMxtQwKO-z_LLzdj2PDIRqL4CBw6PGRf9IBrI,2598
30
32
  levelapp/metrics/token.py,sha256=yQi9hxT_fXTGjLiCCemDxQ4Uk2zD-wQYtSnDlI2AuuY,3521
31
33
  levelapp/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
34
  levelapp/repository/__init__.py,sha256=hNmFRZ7kKJN1mMlOHeW9xf0j9Q7gqTXYJ3hMCzk9to4,79
33
- levelapp/repository/firestore.py,sha256=6HuBCgcBBg-E8QHr06SVDXKY0QBhsWPOhmO7Ps3BWMs,10060
35
+ levelapp/repository/firestore.py,sha256=K9JgxsNCelAKtzTDv19c1dHRlitMeRzo7H3caTlKuF8,10369
34
36
  levelapp/simulator/__init__.py,sha256=8Dz8g7rbpBZX3WoknVmMVoWm_VT72ZL9BABOF1xFpqs,83
35
- levelapp/simulator/schemas.py,sha256=YD6yu3UDXNoApX3R9VpCnpe3sWF7Gs8TNNUgsnqTSXg,4026
36
- levelapp/simulator/simulator.py,sha256=GhoJYcl9GS9vfK58uLwPiI5_cFExFb_Xw_EjElesmvY,17120
37
- levelapp/simulator/utils.py,sha256=qx0JdV1ZDQdTRVKa9xfq278ASrE44GBXSnJZJuhICqo,7365
38
- levelapp/workflow/__init__.py,sha256=X73ulbq3Vk_Vsug1eU2m7LsBCmbR7ehQlwUVCh4Rbb0,142
39
- levelapp/workflow/base.py,sha256=4LFrJyGnuSUJSZ1oOVI_uF1cwEpbYeFFZXHPSh3aEGo,4289
40
- levelapp/workflow/factory.py,sha256=gW5wLv_kJfzrSTQeSLFoUunk87rw0NzW4wmJLIfcwX8,2228
41
- levelapp/workflow/registration.py,sha256=33tPCyzP-XeI1vefjA3PmVdBl7x4wtsVGg05Bh_j7os,363
42
- levelapp/workflow/schemas.py,sha256=Q4TmjqTz_tKzMPXD_fJ2hc7K3IVsn_U56BzHG94WwIA,4090
43
- levelapp-0.1.0.dist-info/METADATA,sha256=6XNgxGHG8oNc-yjg82ZAaGi_UVvrnOalIpUmS5viaW8,10242
44
- levelapp-0.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
45
- levelapp-0.1.0.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- levelapp-0.1.0.dist-info/RECORD,,
37
+ levelapp/simulator/schemas.py,sha256=YGprtuRZ4m33WBD35xj1Ib5EbMTdDCOp-wCykf-Iz-4,3700
38
+ levelapp/simulator/simulator.py,sha256=ytgjUE9G8z2oW6rEzSdVkyncPiJcZCLWyvLR0cI5rk8,19895
39
+ levelapp/simulator/utils.py,sha256=d1O4Q4Yl1lAAJWLJDiwNjwt0hD9bGlCan4a2G21E7yw,5930
40
+ levelapp/workflow/__init__.py,sha256=27b2obG7ObhR43yd2uH-R0koRB7-DG8Emnvrq8EjsTA,193
41
+ levelapp/workflow/base.py,sha256=1A_xKSBOmVjfMbRBcNhDK6G17SEjqRIm-XjMw45IPC4,5596
42
+ levelapp/workflow/config.py,sha256=MlHt1PsXD09aukB93fvKTew0D8WD4_jdnO93Nn6b2U0,2923
43
+ levelapp/workflow/context.py,sha256=gjAZXHEdlsXqWY6DbXOfKXNbxQbahRPSnNzyWDqryPU,2559
44
+ levelapp/workflow/factory.py,sha256=z1ttJmI59sU9HgOvPo3ixUJ_oPv838XgehfuOorlTt8,1634
45
+ levelapp/workflow/registration.py,sha256=VHUHjLHXad5kjcKukaEOIf7hBZ09bT3HAzVmIT08aLo,359
46
+ levelapp/workflow/runtime.py,sha256=cFyXNWXSuURKbrMDHdkTcjeItM9wHP-5DPljntwYL5g,686
47
+ levelapp-0.1.2.dist-info/METADATA,sha256=d0ZoS0BTpHpq65Q1KLeqlN12XQiCAyJ-zPP17T22D6o,12446
48
+ levelapp-0.1.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
49
+ levelapp-0.1.2.dist-info/licenses/LICENSE,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ levelapp-0.1.2.dist-info/RECORD,,
@@ -1,121 +0,0 @@
1
- from enum import Enum
2
- from pydantic import BaseModel
3
- from dataclasses import dataclass
4
- from typing import List, Dict, Any
5
-
6
- from levelapp.config.endpoint import EndpointConfig
7
- from levelapp.core.base import BaseRepository, BaseEvaluator
8
- from levelapp.aspects import DataLoader
9
-
10
-
11
- class ExtendedEnum(Enum):
12
- @classmethod
13
- def list(cls):
14
- return [e.value for e in cls]
15
-
16
-
17
- class WorkflowType(ExtendedEnum):
18
- SIMULATOR = "SIMULATOR"
19
- COMPARATOR = "COMPARATOR"
20
- ASSESSOR = "ASSESSOR"
21
-
22
-
23
- class RepositoryType(ExtendedEnum):
24
- FIRESTORE = "FIRESTORE"
25
- FILESYSTEM = "FILESYSTEM"
26
-
27
-
28
- class EvaluatorType(ExtendedEnum):
29
- JUDGE = "JUDGE"
30
- REFERENCE = "REFERENCE"
31
- RAG = "RAG"
32
-
33
-
34
- class WorkflowConfig:
35
- """Configuration for a workflow, loaded from JSON/YAML via DataLoader."""
36
-
37
- # Class-level constant
38
- _fields_list: List[str] = [
39
- "project_name",
40
- "evaluation_params",
41
- "workflow",
42
- "repository",
43
- "evaluators",
44
- "reference_data",
45
- ]
46
-
47
- def __init__(
48
- self,
49
- workflow: WorkflowType,
50
- repository: RepositoryType,
51
- evaluators: List[EvaluatorType],
52
- endpoint_config: EndpointConfig,
53
- inputs: Dict[str, Any],
54
- ):
55
- self.workflow = workflow
56
- self.repository = repository
57
- self.evaluators = evaluators
58
- self.endpoint_config = endpoint_config
59
- self.inputs = inputs
60
-
61
- @classmethod
62
- def load(cls, path: str | None = None) -> "WorkflowConfig":
63
- """Load and validate workflow configuration from a file."""
64
- loader = DataLoader()
65
- config_dict = loader.load_raw_data(path=path)
66
- model_config: BaseModel = loader.create_dynamic_model(data=config_dict, model_name="WorkflowConfiguration")
67
-
68
- cls._check_fields(model_config)
69
- cls._check_values(model_config)
70
-
71
- workflow = WorkflowType(model_config.workflow)
72
- repository = RepositoryType(model_config.repository)
73
-
74
- if isinstance(model_config.evaluators, str):
75
- print(f"evaluators: {model_config.evaluators}")
76
- evaluators = [EvaluatorType(model_config.evaluators)]
77
- else:
78
- evaluators = [EvaluatorType(e) for e in model_config.evaluators]
79
-
80
- evaluation_params = model_config.evaluation_params.model_dump()
81
- reference_data_path = getattr(model_config.reference_data, "path", None)
82
- endpoint_config = EndpointConfig.model_validate(model_config.endpoint_configuration.model_dump())
83
-
84
- return cls(
85
- workflow=workflow,
86
- repository=repository,
87
- evaluators=evaluators,
88
- endpoint_config=endpoint_config,
89
- inputs={'reference_data_path': reference_data_path, 'evaluation_params': evaluation_params},
90
- )
91
-
92
- @classmethod
93
- def _check_fields(cls, config: BaseModel) -> None:
94
- for field_name in cls._fields_list:
95
- if field_name not in config.model_fields:
96
- raise ValueError(f"[WorkflowConfig] Field '{field_name}' missing in configuration")
97
-
98
- @staticmethod
99
- def _check_values(config: BaseModel) -> None:
100
- if config.workflow not in WorkflowType.list():
101
- raise ValueError(f"[WorkflowConfig] Unsupported workflow type '{config.workflow}'")
102
- if config.repository not in RepositoryType.list():
103
- raise ValueError(f"[WorkflowConfig] Unsupported repository type '{config.repository}'")
104
-
105
- evals = config.evaluators
106
- if isinstance(evals, str):
107
- evals = [evals]
108
-
109
- for e in evals:
110
- if e not in EvaluatorType.list():
111
- raise ValueError(f"[WorkflowConfig] Unsupported evaluator type '{config.evaluators}'")
112
-
113
-
114
- @dataclass(frozen=True)
115
- class WorkflowContext:
116
- """Immutable data holder for workflow execution context."""
117
- config: WorkflowConfig
118
- repository: BaseRepository
119
- evaluators: Dict[str, BaseEvaluator]
120
- endpoint_config: EndpointConfig
121
- inputs: Dict[str, Any]