From ce63c08a6645d2d19b163b44d768c8ac411dbbd7 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 10 Aug 2025 23:14:47 +0100 Subject: [PATCH 1/4] feat: make atex more robust --- saist/latex/__init__.py | 2 +- saist/latex/tex/report.tex.jinja | 2 ++ saist/util/argparsing.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/saist/latex/__init__.py b/saist/latex/__init__.py index 17746d0..051f833 100644 --- a/saist/latex/__init__.py +++ b/saist/latex/__init__.py @@ -33,7 +33,7 @@ def run(self, args): print("\nšŸ“ Generating PDF report...") rc = subprocess.run( - ["latexmk", "-pdf", f"-outdir={self._DEFAULT_OUTPUT_DIR}", tex_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, + ["latexmk", "-pdf", "-f", "-interaction=nonstopmode", f"-outdir={self._DEFAULT_OUTPUT_DIR}", tex_path], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ).returncode if rc != 0: diff --git a/saist/latex/tex/report.tex.jinja b/saist/latex/tex/report.tex.jinja index 6d763bf..2df1518 100644 --- a/saist/latex/tex/report.tex.jinja +++ b/saist/latex/tex/report.tex.jinja @@ -1,5 +1,7 @@ \input{latex/tex/style.tex} +\extrafloats{1000} + \begin{document} \begin{titlepage} diff --git a/saist/util/argparsing.py b/saist/util/argparsing.py index 6683336..9e9d13a 100644 --- a/saist/util/argparsing.py +++ b/saist/util/argparsing.py @@ -220,7 +220,7 @@ def __call__(self, parser, namespace, values, option_string=None): parser.add_argument( "--project-name", type=str, help = "Project name for pdf output", - envvar="SAIST_PROJECT_NAME", action=EnvDefault, required=False, default="" + envvar="SAIST_PROJECT_NAME", action=EnvDefault, required=False, default=None ) parser.add_argument( From 3be6c177a45596d2710f9c975fd488dacc3eef3d Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 10 Aug 2025 23:27:05 +0100 Subject: [PATCH 2/4] broken-adapter? --- saist/llm/adapters/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/saist/llm/adapters/__init__.py b/saist/llm/adapters/__init__.py index a7209d5..f889827 100644 --- a/saist/llm/adapters/__init__.py +++ b/saist/llm/adapters/__init__.py @@ -19,7 +19,7 @@ def get_model_options(self): async def prompt_structured(self, system_prompt: str, user_prompt: str, response_format: Type[BaseModel], tool_fns: Optional[List[Callable]] = None) -> BaseModel: tools = [Tool(fn) for fn in tool_fns] if tool_fns else [] - agent = Agent(self.model, result_type = response_format, tools=tools, system_prompt=system_prompt) + agent = Agent(self.model, output_type = response_format, tools=tools, system_prompt=system_prompt) response = await agent.run( user_prompt=user_prompt, model_settings=self.get_model_options()) logger.getChild(self.__class__.__name__).debug("prompt_structured response", extra={'response_data': response.data, 'prompt': user_prompt}) return response.data From e22e18b58b66ed298591e3e62d2259b11460f3ea Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 10 Aug 2025 23:36:30 +0100 Subject: [PATCH 3/4] chore: pydantic deprecations --- saist/llm/adapters/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/saist/llm/adapters/__init__.py b/saist/llm/adapters/__init__.py index f889827..456291c 100644 --- a/saist/llm/adapters/__init__.py +++ b/saist/llm/adapters/__init__.py @@ -22,14 +22,14 @@ async def prompt_structured(self, system_prompt: str, user_prompt: str, response agent = Agent(self.model, output_type = response_format, tools=tools, system_prompt=system_prompt) response = await agent.run( user_prompt=user_prompt, model_settings=self.get_model_options()) logger.getChild(self.__class__.__name__).debug("prompt_structured response", extra={'response_data': response.data, 'prompt': user_prompt}) - return response.data + return response.output async def prompt(self, system_prompt: str, user_prompt: str, tool_fns: Optional[List[Callable]] = None) -> str | None: tools = [Tool(fn) for fn in tool_fns] if tool_fns else [] agent = Agent(self.model, system_prompt=system_prompt, tools=tools) response = await agent.run(user_prompt=user_prompt, model_settings=self.get_model_options()) logger.getChild(self.__class__.__name__).debug("prompt response", extra={'response_data': response.data, 'prompt': user_prompt}) - return response.data + return response.output def generate_agent(self, system_prompt: str = None, tool_fns: Optional[List[Callable]] = None): tools = [Tool(fn) for fn in tool_fns] if tool_fns else [] From 3f681bab7b510270ee779ccf6091e02542545e21 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 10 Aug 2025 23:46:15 +0100 Subject: [PATCH 4/4] missed one --- saist/llm/adapters/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/saist/llm/adapters/__init__.py b/saist/llm/adapters/__init__.py index 456291c..b6f32ab 100644 --- a/saist/llm/adapters/__init__.py +++ b/saist/llm/adapters/__init__.py @@ -21,14 +21,14 @@ async def prompt_structured(self, system_prompt: str, user_prompt: str, response tools = [Tool(fn) for fn in tool_fns] if tool_fns else [] agent = Agent(self.model, output_type = response_format, tools=tools, system_prompt=system_prompt) response = await agent.run( user_prompt=user_prompt, model_settings=self.get_model_options()) - logger.getChild(self.__class__.__name__).debug("prompt_structured response", extra={'response_data': response.data, 'prompt': user_prompt}) + logger.getChild(self.__class__.__name__).debug("prompt_structured response", extra={'response_data': response.output, 'prompt': user_prompt}) return response.output async def prompt(self, system_prompt: str, user_prompt: str, tool_fns: Optional[List[Callable]] = None) -> str | None: tools = [Tool(fn) for fn in tool_fns] if tool_fns else [] agent = Agent(self.model, system_prompt=system_prompt, tools=tools) response = await agent.run(user_prompt=user_prompt, model_settings=self.get_model_options()) - logger.getChild(self.__class__.__name__).debug("prompt response", extra={'response_data': response.data, 'prompt': user_prompt}) + logger.getChild(self.__class__.__name__).debug("prompt response", extra={'response_data': response.output, 'prompt': user_prompt}) return response.output def generate_agent(self, system_prompt: str = None, tool_fns: Optional[List[Callable]] = None):