Skip to content

Commit c312e9f

Browse files
dev to release/v0.4.7 (Pipelex#123)
* fix/pipeline_run_id-in-JobMetadata (Pipelex#121) * update chagelog 0.4.7
2 parents edf4fa4 + 7f7b3df commit c312e9f

27 files changed

Lines changed: 41 additions & 114 deletions

.cursor/rules/pytest.mdc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,7 @@ pipe_output: PipeOutput = await pipe_router.run_pipe(
104104
pipe_code="pipe_name",
105105
pipe_run_params=PipeRunParamsFactory.make_run_params(),
106106
working_memory=working_memory,
107-
job_metadata=JobMetadata(
108-
109-
top_job_id=cast(str, request.node.originalname), # type: ignore
110-
),
107+
job_metadata=JobMetadata(),
111108
)
112109
```
113110

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
- Added an API serializer: introducing the `compact_memory`, a new way to encode/decode the working memory as json, for the API.
66
- Added `StorageProviderAbstract`
77
- When creating a Concept with no structure specified and no explicit `refines`, set it to refine `native.Text`
8+
- `JobMetadata`: added `job_name`. Removed `top_job_id` and `wfid`
9+
- `PipeOutput`: added `pipeline_run_id`
810

911
## [v0.4.6] - 2025-06-24
1012

pipelex/cogt/content_generation/content_generator.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ async def make_llm_text( # pyright: ignore[reportIncompatibleMethodOverride]
4444
job_metadata: JobMetadata,
4545
llm_setting_main: LLMSetting,
4646
llm_prompt_for_text: LLMPrompt,
47-
wfid: Optional[str] = None,
4847
) -> str:
4948
log.verbose(f"{self.__class__.__name__} make_llm_text: {llm_prompt_for_text}")
5049
log.verbose(f"llm_setting_main: {llm_setting_main}")
@@ -66,7 +65,6 @@ async def make_object_direct( # pyright: ignore[reportIncompatibleMethodOverrid
6665
object_class: Type[BaseModelTypeVar],
6766
llm_setting_for_object: LLMSetting,
6867
llm_prompt_for_object: LLMPrompt,
69-
wfid: Optional[str] = None,
7068
) -> BaseModelTypeVar:
7169
log.verbose(f"{self.__class__.__name__} make_object_direct: {llm_prompt_for_object}")
7270
llm_assignment_for_object = LLMAssignment(
@@ -92,7 +90,6 @@ async def make_text_then_object( # pyright: ignore[reportIncompatibleMethodOver
9290
llm_setting_for_object: LLMSetting,
9391
llm_prompt_for_text: LLMPrompt,
9492
llm_prompt_factory_for_object: Optional[LLMPromptFactoryAbstract] = None,
95-
wfid: Optional[str] = None,
9693
) -> BaseModelTypeVar:
9794
llm_assignment_for_text = LLMAssignment(
9895
job_metadata=job_metadata,
@@ -137,7 +134,6 @@ async def make_object_list_direct( # pyright: ignore[reportIncompatibleMethodOv
137134
llm_setting_for_object_list: LLMSetting,
138135
llm_prompt_for_object_list: LLMPrompt,
139136
nb_items: Optional[int] = None,
140-
wfid: Optional[str] = None,
141137
) -> List[BaseModelTypeVar]:
142138
llm_assignment_for_object = LLMAssignment(
143139
job_metadata=job_metadata,
@@ -163,7 +159,6 @@ async def make_text_then_object_list( # pyright: ignore[reportIncompatibleMetho
163159
llm_prompt_for_text: LLMPrompt,
164160
llm_prompt_factory_for_object_list: Optional[LLMPromptFactoryAbstract] = None,
165161
nb_items: Optional[int] = None,
166-
wfid: Optional[str] = None,
167162
) -> List[BaseModelTypeVar]:
168163
llm_assignment_for_text = LLMAssignment(
169164
job_metadata=job_metadata,
@@ -208,7 +203,6 @@ async def make_single_image( # pyright: ignore[reportIncompatibleMethodOverride
208203
imgg_prompt: ImggPrompt,
209204
imgg_job_params: Optional[ImggJobParams] = None,
210205
imgg_job_config: Optional[ImggJobConfig] = None,
211-
wfid: Optional[str] = None,
212206
) -> GeneratedImage:
213207
imgg_config = get_config().cogt.imgg_config
214208
imgg_assignment = ImggAssignment(
@@ -233,7 +227,6 @@ async def make_image_list( # pyright: ignore[reportIncompatibleMethodOverride]
233227
nb_images: int,
234228
imgg_job_params: Optional[ImggJobParams] = None,
235229
imgg_job_config: Optional[ImggJobConfig] = None,
236-
wfid: Optional[str] = None,
237230
) -> List[GeneratedImage]:
238231
imgg_config = get_config().cogt.imgg_config
239232
imgg_assignment = ImggAssignment(
@@ -256,7 +249,6 @@ async def make_jinja2_text(
256249
jinja2: Optional[str] = None,
257250
prompting_style: Optional[PromptingStyle] = None,
258251
template_category: Jinja2TemplateCategory = Jinja2TemplateCategory.LLM_PROMPT,
259-
wfid: Optional[str] = None,
260252
) -> str:
261253
jinja2_assignment = Jinja2Assignment(
262254
context=context,
@@ -277,7 +269,6 @@ async def make_ocr_extract_pages(
277269
ocr_handle: OcrHandle,
278270
ocr_job_params: Optional[OcrJobParams] = None,
279271
ocr_job_config: Optional[OcrJobConfig] = None,
280-
wfid: Optional[str] = None,
281272
) -> OcrOutput:
282273
ocr_assignment = OcrAssignment(
283274
job_metadata=job_metadata,

pipelex/cogt/content_generation/content_generator_dry.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ async def make_llm_text( # pyright: ignore[reportIncompatibleMethodOverride]
4040
job_metadata: JobMetadata,
4141
llm_setting_main: LLMSetting,
4242
llm_prompt_for_text: LLMPrompt,
43-
wfid: Optional[str] = None,
4443
) -> str:
4544
func_name = "make_llm_text"
4645
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -56,7 +55,6 @@ async def make_object_direct( # pyright: ignore[reportIncompatibleMethodOverrid
5655
object_class: Type[BaseModelTypeVar],
5756
llm_setting_for_object: LLMSetting,
5857
llm_prompt_for_object: LLMPrompt,
59-
wfid: Optional[str] = None,
6058
) -> BaseModelTypeVar:
6159
func_name = "make_object_direct"
6260
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -78,7 +76,6 @@ async def make_text_then_object( # pyright: ignore[reportIncompatibleMethodOver
7876
llm_setting_for_object: LLMSetting,
7977
llm_prompt_for_text: LLMPrompt,
8078
llm_prompt_factory_for_object: Optional[LLMPromptFactoryAbstract] = None,
81-
wfid: Optional[str] = None,
8279
) -> BaseModelTypeVar:
8380
func_name = "make_text_then_object"
8481
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -98,7 +95,6 @@ async def make_object_list_direct( # pyright: ignore[reportIncompatibleMethodOv
9895
llm_setting_for_object_list: LLMSetting,
9996
llm_prompt_for_object_list: LLMPrompt,
10097
nb_items: Optional[int] = None,
101-
wfid: Optional[str] = None,
10298
) -> List[BaseModelTypeVar]:
10399
func_name = "make_object_list_direct"
104100
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -125,7 +121,6 @@ async def make_text_then_object_list( # pyright: ignore[reportIncompatibleMetho
125121
llm_prompt_for_text: LLMPrompt,
126122
llm_prompt_factory_for_object_list: Optional[LLMPromptFactoryAbstract] = None,
127123
nb_items: Optional[int] = None,
128-
wfid: Optional[str] = None,
129124
) -> List[BaseModelTypeVar]:
130125
func_name = "make_text_then_object_list"
131126
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -146,7 +141,6 @@ async def make_single_image( # pyright: ignore[reportIncompatibleMethodOverride
146141
imgg_prompt: ImggPrompt,
147142
imgg_job_params: Optional[ImggJobParams] = None,
148143
imgg_job_config: Optional[ImggJobConfig] = None,
149-
wfid: Optional[str] = None,
150144
) -> GeneratedImage:
151145
func_name = "make_single_image"
152146
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -169,7 +163,6 @@ async def make_image_list( # pyright: ignore[reportIncompatibleMethodOverride]
169163
nb_images: int,
170164
imgg_job_params: Optional[ImggJobParams] = None,
171165
imgg_job_config: Optional[ImggJobConfig] = None,
172-
wfid: Optional[str] = None,
173166
) -> List[GeneratedImage]:
174167
func_name = "make_image_list"
175168
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -192,7 +185,6 @@ async def make_jinja2_text(
192185
jinja2: Optional[str] = None,
193186
prompting_style: Optional[PromptingStyle] = None,
194187
template_category: Jinja2TemplateCategory = Jinja2TemplateCategory.LLM_PROMPT,
195-
wfid: Optional[str] = None,
196188
) -> str:
197189
func_name = "make_jinja2_text"
198190
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")
@@ -211,7 +203,6 @@ async def make_ocr_extract_pages(
211203
ocr_handle: OcrHandle,
212204
ocr_job_params: Optional[OcrJobParams] = None,
213205
ocr_job_config: Optional[OcrJobConfig] = None,
214-
wfid: Optional[str] = None,
215206
) -> OcrOutput:
216207
func_name = "make_ocr_extract_pages"
217208
log.dev(f"🤡 DRY RUN: {self.__class__.__name__}.{func_name}")

pipelex/cogt/content_generation/content_generator_protocol.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ async def make_llm_text(
4949
job_metadata: JobMetadata,
5050
llm_setting_main: LLMSetting,
5151
llm_prompt_for_text: LLMPrompt,
52-
wfid: Optional[str] = None,
5352
) -> str: ...
5453

5554
async def make_object_direct(
@@ -58,7 +57,6 @@ async def make_object_direct(
5857
object_class: Type[BaseModelTypeVar],
5958
llm_setting_for_object: LLMSetting,
6059
llm_prompt_for_object: LLMPrompt,
61-
wfid: Optional[str] = None,
6260
) -> BaseModelTypeVar: ...
6361

6462
async def make_text_then_object(
@@ -69,7 +67,6 @@ async def make_text_then_object(
6967
llm_setting_for_object: LLMSetting,
7068
llm_prompt_for_text: LLMPrompt,
7169
llm_prompt_factory_for_object: Optional[LLMPromptFactoryAbstract] = None,
72-
wfid: Optional[str] = None,
7370
) -> BaseModelTypeVar: ...
7471

7572
async def make_object_list_direct(
@@ -79,7 +76,6 @@ async def make_object_list_direct(
7976
llm_setting_for_object_list: LLMSetting,
8077
llm_prompt_for_object_list: LLMPrompt,
8178
nb_items: Optional[int] = None,
82-
wfid: Optional[str] = None,
8379
) -> List[BaseModelTypeVar]: ...
8480

8581
async def make_text_then_object_list(
@@ -91,7 +87,6 @@ async def make_text_then_object_list(
9187
llm_prompt_for_text: LLMPrompt,
9288
llm_prompt_factory_for_object_list: Optional[LLMPromptFactoryAbstract] = None,
9389
nb_items: Optional[int] = None,
94-
wfid: Optional[str] = None,
9590
) -> List[BaseModelTypeVar]: ...
9691

9792
async def make_single_image(
@@ -101,7 +96,6 @@ async def make_single_image(
10196
imgg_prompt: ImggPrompt,
10297
imgg_job_params: Optional[ImggJobParams] = None,
10398
imgg_job_config: Optional[ImggJobConfig] = None,
104-
wfid: Optional[str] = None,
10599
) -> GeneratedImage: ...
106100

107101
async def make_image_list(
@@ -112,7 +106,6 @@ async def make_image_list(
112106
nb_images: int,
113107
imgg_job_params: Optional[ImggJobParams] = None,
114108
imgg_job_config: Optional[ImggJobConfig] = None,
115-
wfid: Optional[str] = None,
116109
) -> List[GeneratedImage]: ...
117110

118111
async def make_jinja2_text(
@@ -122,7 +115,6 @@ async def make_jinja2_text(
122115
jinja2: Optional[str] = None,
123116
prompting_style: Optional[PromptingStyle] = None,
124117
template_category: Jinja2TemplateCategory = Jinja2TemplateCategory.LLM_PROMPT,
125-
wfid: Optional[str] = None,
126118
) -> str: ...
127119

128120
async def make_ocr_extract_pages(
@@ -132,5 +124,4 @@ async def make_ocr_extract_pages(
132124
ocr_handle: OcrHandle,
133125
ocr_job_params: OcrJobParams,
134126
ocr_job_config: OcrJobConfig,
135-
wfid: Optional[str] = None,
136127
) -> OcrOutput: ...

pipelex/cogt/imgg/imgg_job_factory.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@ def make_imgg_job_from_prompt(
1818
imgg_job_config: Optional[ImggJobConfig] = None,
1919
job_metadata: Optional[JobMetadata] = None,
2020
) -> ImggJob:
21-
config = get_config()
2221
imgg_config = get_config().cogt.imgg_config
2322
job_metadata = job_metadata or JobMetadata(
24-
top_job_id=f"IMGGJob for {config.project_name}",
2523
job_category=JobCategory.IMGG_JOB,
2624
)
2725
job_params = imgg_job_params or imgg_config.make_default_imgg_job_params()
@@ -44,10 +42,8 @@ def make_imgg_job_from_prompt_contents(
4442
imgg_job_config: Optional[ImggJobConfig] = None,
4543
job_metadata: Optional[JobMetadata] = None,
4644
) -> ImggJob:
47-
config = get_config()
4845
imgg_config = get_config().cogt.imgg_config
4946
job_metadata = job_metadata or JobMetadata(
50-
top_job_id=f"IMGGJob for {config.project_name}",
5147
job_category=JobCategory.IMGG_JOB,
5248
)
5349
imgg_prompt = ImggPrompt(positive_text=positive_text)

pipelex/cogt/llm/llm_job_factory.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ def make_llm_job(
3131
)
3232
else:
3333
job_metadata = JobMetadata(
34-
top_job_id=f"LLMJob for {config.project_name}",
3534
job_category=JobCategory.LLM_JOB,
3635
)
3736
job_params = llm_job_params
@@ -106,7 +105,6 @@ def make_llm_job_from_prompt_contents(
106105
)
107106
else:
108107
job_metadata = JobMetadata(
109-
top_job_id=f"LLMJob for {config.project_name}",
110108
job_category=JobCategory.LLM_JOB,
111109
)
112110
llm_prompt = LLMPrompt(

pipelex/cogt/ocr/ocr_job_factory.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from pipelex.cogt.ocr.ocr_input import OcrInput
44
from pipelex.cogt.ocr.ocr_job import OcrJob
55
from pipelex.cogt.ocr.ocr_job_components import OcrJobConfig, OcrJobParams, OcrJobReport
6-
from pipelex.config import get_config
76
from pipelex.pipeline.job_metadata import JobCategory, JobMetadata
87

98

@@ -16,11 +15,9 @@ def make_ocr_job(
1615
ocr_job_config: Optional[OcrJobConfig] = None,
1716
job_metadata: Optional[JobMetadata] = None,
1817
) -> OcrJob:
19-
config = get_config()
20-
# TODO: manahge the param default sthrough the config
18+
# TODO: manage the param default through the config
2119
# ocr_config = get_config().cogt.ocr_config
2220
job_metadata = job_metadata or JobMetadata(
23-
top_job_id=f"OCRJob for {config.project_name}",
2421
job_category=JobCategory.OCR_JOB,
2522
)
2623
job_params = ocr_job_params or OcrJobParams.make_default_ocr_job_params()

pipelex/core/pipe_output.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@
1414
TextContent,
1515
)
1616
from pipelex.core.working_memory import WorkingMemory
17+
from pipelex.pipeline.pipeline_models import SpecialPipelineId
1718

1819

1920
class PipeOutput(BaseModel):
2021
working_memory: WorkingMemory = Field(default_factory=WorkingMemory)
22+
pipeline_run_id: str = Field(default=SpecialPipelineId.UNTITLED)
2123

2224
@property
2325
def main_stuff(self) -> Stuff:

pipelex/pipe_controllers/pipe_batch.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,4 +163,5 @@ async def _run_controller_pipe(
163163

164164
return PipeOutput(
165165
working_memory=working_memory,
166+
pipeline_run_id=job_metadata.pipeline_run_id,
166167
)

0 commit comments

Comments
 (0)