orchestrator-core 4.6.0rc2__py3-none-any.whl → 4.6.0rc4__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.
- orchestrator/__init__.py +2 -2
- orchestrator/agentic_app.py +2 -2
- orchestrator/api/api_v1/endpoints/agent.py +2 -3
- orchestrator/app.py +1 -1
- orchestrator/cli/main.py +1 -1
- orchestrator/db/models.py +1 -1
- orchestrator/llm_settings.py +18 -1
- orchestrator/search/agent/agent.py +3 -3
- orchestrator/search/core/embedding.py +2 -2
- {orchestrator_core-4.6.0rc2.dist-info → orchestrator_core-4.6.0rc4.dist-info}/METADATA +13 -8
- {orchestrator_core-4.6.0rc2.dist-info → orchestrator_core-4.6.0rc4.dist-info}/RECORD +13 -13
- {orchestrator_core-4.6.0rc2.dist-info → orchestrator_core-4.6.0rc4.dist-info}/WHEEL +0 -0
- {orchestrator_core-4.6.0rc2.dist-info → orchestrator_core-4.6.0rc4.dist-info}/licenses/LICENSE +0 -0
orchestrator/__init__.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright 2019-2025 SURF, GÉANT.
|
|
1
|
+
# Copyright 2019-2025 SURF, GÉANT, ESnet.
|
|
2
2
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
3
|
# you may not use this file except in compliance with the License.
|
|
4
4
|
# You may obtain a copy of the License at
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
"""This is the orchestrator workflow engine."""
|
|
15
15
|
|
|
16
|
-
__version__ = "4.6.
|
|
16
|
+
__version__ = "4.6.0rc4"
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
from structlog import get_logger
|
orchestrator/agentic_app.py
CHANGED
|
@@ -26,7 +26,7 @@ from orchestrator.cli.main import app as cli_app
|
|
|
26
26
|
from orchestrator.llm_settings import LLMSettings, llm_settings
|
|
27
27
|
|
|
28
28
|
if TYPE_CHECKING:
|
|
29
|
-
from pydantic_ai.models.openai import
|
|
29
|
+
from pydantic_ai.models.openai import OpenAIChatModel
|
|
30
30
|
|
|
31
31
|
logger = get_logger(__name__)
|
|
32
32
|
|
|
@@ -36,7 +36,7 @@ class LLMOrchestratorCore(OrchestratorCore):
|
|
|
36
36
|
self,
|
|
37
37
|
*args: Any,
|
|
38
38
|
llm_settings: LLMSettings = llm_settings,
|
|
39
|
-
agent_model: "
|
|
39
|
+
agent_model: "OpenAIChatModel | str | None" = None,
|
|
40
40
|
**kwargs: Any,
|
|
41
41
|
) -> None:
|
|
42
42
|
"""Initialize the `LLMOrchestratorCore` class.
|
|
@@ -20,7 +20,6 @@ from pydantic_ai.agent import Agent
|
|
|
20
20
|
from starlette.responses import Response
|
|
21
21
|
from structlog import get_logger
|
|
22
22
|
|
|
23
|
-
from orchestrator.llm_settings import llm_settings
|
|
24
23
|
from orchestrator.search.agent import build_agent_instance
|
|
25
24
|
from orchestrator.search.agent.state import SearchState
|
|
26
25
|
|
|
@@ -29,12 +28,12 @@ logger = get_logger(__name__)
|
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
@cache
|
|
32
|
-
def get_agent() -> Agent[StateDeps[SearchState], str]:
|
|
31
|
+
def get_agent(request: Request) -> Agent[StateDeps[SearchState], str]:
|
|
33
32
|
"""Dependency to provide the agent instance.
|
|
34
33
|
|
|
35
34
|
The agent is built once and cached for the lifetime of the application.
|
|
36
35
|
"""
|
|
37
|
-
return build_agent_instance(
|
|
36
|
+
return build_agent_instance(request.app.agent_model)
|
|
38
37
|
|
|
39
38
|
|
|
40
39
|
@router.post("/")
|
orchestrator/app.py
CHANGED
|
@@ -5,7 +5,7 @@ This module contains the main `OrchestratorCore` class for the `FastAPI` backend
|
|
|
5
5
|
provides the ability to run the CLI.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
# Copyright 2019-
|
|
8
|
+
# Copyright 2019-2025 SURF, ESnet, GÉANT.
|
|
9
9
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
10
|
# you may not use this file except in compliance with the License.
|
|
11
11
|
# You may obtain a copy of the License at
|
orchestrator/cli/main.py
CHANGED
orchestrator/db/models.py
CHANGED
|
@@ -711,7 +711,7 @@ class SearchQueryTable(BaseModel):
|
|
|
711
711
|
parameters = mapped_column(pg.JSONB, nullable=False)
|
|
712
712
|
|
|
713
713
|
# Query embedding for semantic search (pgvector)
|
|
714
|
-
query_embedding = mapped_column(Vector(
|
|
714
|
+
query_embedding = mapped_column(Vector(llm_settings.EMBEDDING_DIMENSION), nullable=True)
|
|
715
715
|
|
|
716
716
|
executed_at = mapped_column(UtcTimestamp, server_default=text("current_timestamp()"), nullable=False)
|
|
717
717
|
|
orchestrator/llm_settings.py
CHANGED
|
@@ -10,14 +10,31 @@
|
|
|
10
10
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
11
11
|
# See the License for the specific language governing permissions and
|
|
12
12
|
# limitations under the License.
|
|
13
|
+
from typing import Annotated
|
|
14
|
+
|
|
13
15
|
from pydantic import Field, field_validator
|
|
14
16
|
from pydantic_settings import BaseSettings
|
|
15
17
|
from structlog import get_logger
|
|
16
18
|
|
|
17
19
|
logger = get_logger(__name__)
|
|
18
20
|
|
|
21
|
+
EMBEDDING_DIMENSION_MIN = 100
|
|
22
|
+
EMBEDDING_DIMENSION_MAX = 2000
|
|
23
|
+
EMBEDDING_DIMENSION_DEFAULT = 1536
|
|
24
|
+
|
|
25
|
+
EMBEDDING_DIMENSION_FIELD = Annotated[
|
|
26
|
+
int,
|
|
27
|
+
Field(
|
|
28
|
+
ge=EMBEDDING_DIMENSION_MIN,
|
|
29
|
+
le=EMBEDDING_DIMENSION_MAX,
|
|
30
|
+
default=EMBEDDING_DIMENSION_DEFAULT,
|
|
31
|
+
description="Embedding dimension: when embeddings are generated at a higher resolution than this setting, the least significant numbers will be truncated",
|
|
32
|
+
),
|
|
33
|
+
]
|
|
34
|
+
|
|
19
35
|
|
|
20
36
|
class LLMSettings(BaseSettings):
|
|
37
|
+
|
|
21
38
|
# Feature flags for LLM functionality
|
|
22
39
|
SEARCH_ENABLED: bool = False # Enable search/indexing with embeddings
|
|
23
40
|
AGENT_ENABLED: bool = False # Enable agentic functionality
|
|
@@ -27,7 +44,7 @@ class LLMSettings(BaseSettings):
|
|
|
27
44
|
AGENT_MODEL_VERSION: str = "2025-01-01-preview"
|
|
28
45
|
OPENAI_API_KEY: str = "" # Change per provider (Azure, etc).
|
|
29
46
|
# Embedding settings
|
|
30
|
-
EMBEDDING_DIMENSION:
|
|
47
|
+
EMBEDDING_DIMENSION: EMBEDDING_DIMENSION_FIELD = 1536
|
|
31
48
|
EMBEDDING_MODEL: str = "openai/text-embedding-3-small" # See litellm docs for supported models.
|
|
32
49
|
EMBEDDING_SAFE_MARGIN_PERCENT: float = Field(
|
|
33
50
|
0.1, description="Safety margin as a percentage (e.g., 0.1 for 10%) for token budgeting.", ge=0, le=1
|
|
@@ -16,7 +16,7 @@ from typing import Any
|
|
|
16
16
|
import structlog
|
|
17
17
|
from pydantic_ai.ag_ui import StateDeps
|
|
18
18
|
from pydantic_ai.agent import Agent
|
|
19
|
-
from pydantic_ai.models.openai import
|
|
19
|
+
from pydantic_ai.models.openai import OpenAIChatModel
|
|
20
20
|
from pydantic_ai.settings import ModelSettings
|
|
21
21
|
from pydantic_ai.toolsets import FunctionToolset
|
|
22
22
|
|
|
@@ -28,12 +28,12 @@ logger = structlog.get_logger(__name__)
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def build_agent_instance(
|
|
31
|
-
model: str |
|
|
31
|
+
model: str | OpenAIChatModel, agent_tools: list[FunctionToolset[Any]] | None = None
|
|
32
32
|
) -> Agent[StateDeps[SearchState], str]:
|
|
33
33
|
"""Build and configure the search agent instance.
|
|
34
34
|
|
|
35
35
|
Args:
|
|
36
|
-
model: The LLM model to use (string or
|
|
36
|
+
model: The LLM model to use (string or OpenAIChatModel instance)
|
|
37
37
|
agent_tools: Optional list of additional toolsets to include
|
|
38
38
|
|
|
39
39
|
Returns:
|
|
@@ -42,7 +42,7 @@ class EmbeddingIndexer:
|
|
|
42
42
|
max_retries=llm_settings.LLM_MAX_RETRIES,
|
|
43
43
|
)
|
|
44
44
|
data = sorted(resp.data, key=lambda e: e["index"])
|
|
45
|
-
return [row["embedding"] for row in data]
|
|
45
|
+
return [row["embedding"][: llm_settings.EMBEDDING_DIMENSION] for row in data]
|
|
46
46
|
except (llm_exc.APIError, llm_exc.APIConnectionError, llm_exc.RateLimitError, llm_exc.Timeout) as e:
|
|
47
47
|
logger.error("Embedding request failed", error=str(e))
|
|
48
48
|
return [[] for _ in texts]
|
|
@@ -67,7 +67,7 @@ class QueryEmbedder:
|
|
|
67
67
|
timeout=5.0,
|
|
68
68
|
max_retries=0, # No retries, prioritize speed.
|
|
69
69
|
)
|
|
70
|
-
return resp.data[0]["embedding"]
|
|
70
|
+
return resp.data[0]["embedding"][: llm_settings.EMBEDDING_DIMENSION]
|
|
71
71
|
except Exception as e:
|
|
72
72
|
logger.error("Async embedding generation failed", error=str(e))
|
|
73
73
|
return []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: orchestrator-core
|
|
3
|
-
Version: 4.6.
|
|
3
|
+
Version: 4.6.0rc4
|
|
4
4
|
Summary: This is the orchestrator workflow engine.
|
|
5
5
|
Author-email: SURF <automation-beheer@surf.nl>
|
|
6
6
|
Requires-Python: >=3.11,<3.14
|
|
@@ -119,21 +119,26 @@ Configure the database URI in your local environment:
|
|
|
119
119
|
export DATABASE_URI=postgresql://nwa:nwa@localhost:5432/orchestrator-core
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
### Step 3 - Create main.py
|
|
122
|
+
### Step 3 - Create main.py and wsgi.py
|
|
123
123
|
|
|
124
|
-
Create a `main.py` file.
|
|
124
|
+
Create a `main.py` file for running the CLI.
|
|
125
125
|
|
|
126
126
|
```python
|
|
127
|
-
from orchestrator import OrchestratorCore
|
|
128
127
|
from orchestrator.cli.main import app as core_cli
|
|
129
|
-
from orchestrator.settings import AppSettings
|
|
130
|
-
|
|
131
|
-
app = OrchestratorCore(base_settings=AppSettings())
|
|
132
128
|
|
|
133
129
|
if __name__ == "__main__":
|
|
134
130
|
core_cli()
|
|
135
131
|
```
|
|
136
132
|
|
|
133
|
+
Create a `wsgi.py` file for running the web server.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from orchestrator import OrchestratorCore
|
|
137
|
+
from orchestrator.settings import AppSettings
|
|
138
|
+
|
|
139
|
+
app = OrchestratorCore(base_settings=AppSettings())
|
|
140
|
+
```
|
|
141
|
+
|
|
137
142
|
### Step 4 - Run the database migrations
|
|
138
143
|
|
|
139
144
|
Initialize the migration environment and database tables.
|
|
@@ -147,7 +152,7 @@ python main.py db upgrade heads
|
|
|
147
152
|
|
|
148
153
|
```shell
|
|
149
154
|
export OAUTH2_ACTIVE=False
|
|
150
|
-
uvicorn --reload --host 127.0.0.1 --port 8080
|
|
155
|
+
uvicorn --reload --host 127.0.0.1 --port 8080 wsgi:app
|
|
151
156
|
```
|
|
152
157
|
|
|
153
158
|
Visit the [ReDoc](http://127.0.0.1:8080/api/redoc) or [OpenAPI](http://127.0.0.1:8080/api/docs) page to view and interact with the API.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
orchestrator/__init__.py,sha256=
|
|
2
|
-
orchestrator/agentic_app.py,sha256=
|
|
3
|
-
orchestrator/app.py,sha256=
|
|
1
|
+
orchestrator/__init__.py,sha256=UOKWT3zzsUrEwR0Is2JkjlbzYsNWom-lqeMh8ZU6-ec,1457
|
|
2
|
+
orchestrator/agentic_app.py,sha256=ouiyyZiS4uS6Lox2DtbGGRnb2njJBMSHpSAGe-T5rX0,3028
|
|
3
|
+
orchestrator/app.py,sha256=w8ubXaaogwjmwLM0TXqZaLkAhmaOTWzVlwiYbi5mHeE,13203
|
|
4
4
|
orchestrator/exception_handlers.py,sha256=UsW3dw8q0QQlNLcV359bIotah8DYjMsj2Ts1LfX4ClY,1268
|
|
5
|
-
orchestrator/llm_settings.py,sha256=
|
|
5
|
+
orchestrator/llm_settings.py,sha256=giqxZmwO8sXyNF5Zc7-O9JYd7PLN065pKQYpJYOpXcE,2816
|
|
6
6
|
orchestrator/log_config.py,sha256=1cPl_OXT4tEUyNxG8cwIWXrmadUm1E81vq0mdtrV-v4,1912
|
|
7
7
|
orchestrator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
orchestrator/security.py,sha256=iXFxGxab54aav7oHEKLAVkTgrQMJGHy6IYLojEnD7gI,2422
|
|
@@ -18,7 +18,7 @@ orchestrator/api/models.py,sha256=z9BDBx7uI4KBHWbD_LVrLsqNQ0_w-Mg9Qiy7PR_rZhk,59
|
|
|
18
18
|
orchestrator/api/api_v1/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
19
19
|
orchestrator/api/api_v1/api.py,sha256=1qQRsIxKXLW3kcmSV5u3_v1TZk5RcNWb4ZOyLguhTKY,3488
|
|
20
20
|
orchestrator/api/api_v1/endpoints/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
21
|
-
orchestrator/api/api_v1/endpoints/agent.py,sha256=
|
|
21
|
+
orchestrator/api/api_v1/endpoints/agent.py,sha256=9_s3nchTr9ua_1Sxs0kJl2mH_20o-DlUaaQPmY4vRMk,1732
|
|
22
22
|
orchestrator/api/api_v1/endpoints/health.py,sha256=iaxs1XX1_250_gKNsspuULCV2GEMBjbtjsmfQTOvMAI,1284
|
|
23
23
|
orchestrator/api/api_v1/endpoints/processes.py,sha256=OVbt6FgFnJ4aHaYGIg0cPoim8mxDpdzJ4TGAyfB_kPw,16269
|
|
24
24
|
orchestrator/api/api_v1/endpoints/product_blocks.py,sha256=kZ6ywIOsS_S2qGq7RvZ4KzjvaS1LmwbGWR37AKRvWOw,2146
|
|
@@ -35,7 +35,7 @@ orchestrator/api/api_v1/endpoints/ws.py,sha256=1l7E0ag_sZ6UMfQPHlmew7ENwxjm6fflB
|
|
|
35
35
|
orchestrator/cli/__init__.py,sha256=GyHNfEFCGKQwRiN6rQmvSRH2iYX7npjMZn97n8XzmLU,571
|
|
36
36
|
orchestrator/cli/database.py,sha256=iO8SPvswNK1aXpk-QcIrwTqLrV7n_WQ5ftoG_VOkXxg,19870
|
|
37
37
|
orchestrator/cli/generate.py,sha256=UPvdCtaG6Zy_Vb4t2B2Nsd0k8PMFToFj7YlNd3mgbqw,7601
|
|
38
|
-
orchestrator/cli/main.py,sha256=
|
|
38
|
+
orchestrator/cli/main.py,sha256=rpVp7f9N5LDDQXqTYPkI412ADNBwelf5gK4sS8f3e9Y,1673
|
|
39
39
|
orchestrator/cli/migrate_domain_models.py,sha256=WRXy_1OnziQwpsCFZXvjB30nDJtjj0ikVXy8YNLque4,20928
|
|
40
40
|
orchestrator/cli/migrate_tasks.py,sha256=bju8XColjSZD0v3rS4kl-24dLr8En_H4-6enBmqd494,7255
|
|
41
41
|
orchestrator/cli/migrate_workflows.py,sha256=nxUpx0vgEIc_8aJrjAyrw3E9Dt8JmaamTts8oiQ4vHY,8923
|
|
@@ -115,7 +115,7 @@ orchestrator/db/database.py,sha256=MU_w_e95ho2dVb2JDnt_KFYholx___XDkiQXbc8wCkI,1
|
|
|
115
115
|
orchestrator/db/helpers.py,sha256=L8kEdnSSNGnUpZhdeGx2arCodakWN8vSpKdfjoLuHdY,831
|
|
116
116
|
orchestrator/db/listeners.py,sha256=UBPYcH0FE3a7aZQu_D0O_JMXpXIRYXC0gjSAvlv5GZo,1142
|
|
117
117
|
orchestrator/db/loaders.py,sha256=ez6JzQ3IKVkC_oLAkVlIIiI8Do7hXbdcPKCvUSLxRog,7962
|
|
118
|
-
orchestrator/db/models.py,sha256=
|
|
118
|
+
orchestrator/db/models.py,sha256=vgYRMBiMzwDvePZBBkMrvflljfYHsAGNo6u6jUtC0QY,31328
|
|
119
119
|
orchestrator/db/filters/__init__.py,sha256=RUj6P0XxEBhYj0SN5wH5-Vf_Wt_ilZR_n9DSar5m9oM,371
|
|
120
120
|
orchestrator/db/filters/filters.py,sha256=55RtpQwM2rhrk4A6CCSeSXoo-BT9GnQoNTryA8CtLEg,5020
|
|
121
121
|
orchestrator/db/filters/process.py,sha256=xvGhyfo_MZ1xhLvFC6yULjcT4mJk0fKc1glJIYgsWLE,4018
|
|
@@ -280,13 +280,13 @@ orchestrator/search/__init__.py,sha256=2uhTQexKx-cdBP1retV3CYSNCs02s8WL3fhGvupRG
|
|
|
280
280
|
orchestrator/search/export.py,sha256=_0ncVpTqN6AoQfW3WX0fWnDQX3hBz6ZGC31Beu4PVwQ,6678
|
|
281
281
|
orchestrator/search/llm_migration.py,sha256=tJAfAoykMFIROQrKBKpAbDaGYDLKcmevKWjYrsBmuAY,6703
|
|
282
282
|
orchestrator/search/agent/__init__.py,sha256=_O4DN0MSTUtr4olhyE0-2hsb7x3f_KURMCYjg8jV4QA,756
|
|
283
|
-
orchestrator/search/agent/agent.py,sha256=
|
|
283
|
+
orchestrator/search/agent/agent.py,sha256=iWa4_achqh5zRIfcJvjmY3hmDuFVGpV_PxjgttLdokU,2075
|
|
284
284
|
orchestrator/search/agent/json_patch.py,sha256=_Z5ULhLyeuOuy-Gr_DJR4eA-wo9F78qySKUt5F_SQvQ,1892
|
|
285
285
|
orchestrator/search/agent/prompts.py,sha256=6EPubiSLFyICIeinfVUF6miU1nS2QTAhqgzm-l5O3PI,5810
|
|
286
286
|
orchestrator/search/agent/state.py,sha256=WhvZu7N0NhD1DD5mfZSUAzYN4mu8dDyvQ4Tz9I-hLtg,1364
|
|
287
287
|
orchestrator/search/agent/tools.py,sha256=m4Krtb-Qmep-JkbJ9-RC7QqKa0CuQJM6-Z6_PN-b8HU,14706
|
|
288
288
|
orchestrator/search/core/__init__.py,sha256=q5G0z3nKjIHKFs1PkEG3nvTUy3Wp4kCyBtCbqUITj3A,579
|
|
289
|
-
orchestrator/search/core/embedding.py,sha256=
|
|
289
|
+
orchestrator/search/core/embedding.py,sha256=n16H5fZRlfn91wI8PfZPa1R39HwQd8T1nwlDOzcOUBU,2823
|
|
290
290
|
orchestrator/search/core/exceptions.py,sha256=S_ZMEhrqsQBVqJ559FQ5J6tZU6BYLiU65AGWgSvgv_k,1159
|
|
291
291
|
orchestrator/search/core/types.py,sha256=0U_m4ZmPwvL77hIx9yk7UyvkE8HoiRvEnGdY4mDLzCo,8853
|
|
292
292
|
orchestrator/search/core/validators.py,sha256=zktY5A3RTBmfdARJoxoz9rnnyTZj7L30Kbmh9UTQz2o,1204
|
|
@@ -373,7 +373,7 @@ orchestrator/workflows/tasks/resume_workflows.py,sha256=T3iobSJjVgiupe0rClD34kUZ
|
|
|
373
373
|
orchestrator/workflows/tasks/validate_product_type.py,sha256=lo2TX_MZOfcOmYFjLyD82FrJ5AAN3HOsE6BhDVFuy9Q,3210
|
|
374
374
|
orchestrator/workflows/tasks/validate_products.py,sha256=GZJBoFF-WMphS7ghMs2-gqvV2iL1F0POhk0uSNt93n0,8510
|
|
375
375
|
orchestrator/workflows/translations/en-GB.json,sha256=ST53HxkphFLTMjFHonykDBOZ7-P_KxksktZU3GbxLt0,846
|
|
376
|
-
orchestrator_core-4.6.
|
|
377
|
-
orchestrator_core-4.6.
|
|
378
|
-
orchestrator_core-4.6.
|
|
379
|
-
orchestrator_core-4.6.
|
|
376
|
+
orchestrator_core-4.6.0rc4.dist-info/licenses/LICENSE,sha256=b-aA5OZQuuBATmLKo_mln8CQrDPPhg3ghLzjPjLn4Tg,11409
|
|
377
|
+
orchestrator_core-4.6.0rc4.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
378
|
+
orchestrator_core-4.6.0rc4.dist-info/METADATA,sha256=EQ76ov19b_1Is6f51qVMk0pQwvNhjQYMPMumtPaquWY,6353
|
|
379
|
+
orchestrator_core-4.6.0rc4.dist-info/RECORD,,
|
|
File without changes
|
{orchestrator_core-4.6.0rc2.dist-info → orchestrator_core-4.6.0rc4.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|