_______________________________________________________ test_medical_record_optimization[miprov2zeroshot] _______________________________________________________

lm = <dspy.clients.lm.LM object at 0x114f018b0>
medical_examples = [<dspydantic.types.Example object at 0x114e58b30>, <dspydantic.types.Example object at 0x114e58920>, <dspydantic.types...ct at 0x114f02b10>, <dspydantic.types.Example object at 0x1195be930>, <dspydantic.types.Example object at 0x1195beae0>]
optimizer = 'miprov2zeroshot'

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    @pytest.mark.parametrize("optimizer", ["miprov2zeroshot"])
    def test_medical_record_optimization(lm, medical_examples, optimizer) -> None:
        """Test that optimization produces actual field descriptions for medical records.
    
        Uses a GLiNER2-inspired medical record extraction task with 5 examples.
        Validates that:
        - Descriptions are actual descriptions, not meta-instructions
        - Optimization completes without error
        - Scores are non-negative
        """
        opt = PydanticOptimizer(
            model=MedicalRecord,
            examples=medical_examples,
            optimizer=optimizer,
            num_threads=1,
            verbose=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:332: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x119624290>
student = field_optimizers['patient_name'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimiz...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
_____________________________________________ test_reservation_descriptions_not_meta_instructions[miprov2zeroshot] ______________________________________________

lm = <dspy.clients.lm.LM object at 0x1194a4c20>
reservation_examples = [<dspydantic.types.Example object at 0x11873d7f0>, <dspydantic.types.Example object at 0x11873d760>, <dspydantic.types...ct at 0x119624110>, <dspydantic.types.Example object at 0x119627860>, <dspydantic.types.Example object at 0x119627950>]
optimizer = 'miprov2zeroshot'

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    @pytest.mark.parametrize("optimizer", ["miprov2zeroshot"])
    def test_reservation_descriptions_not_meta_instructions(
        lm, reservation_examples, optimizer
    ) -> None:
        """Test that optimization produces actual field descriptions for reservation model."""
        opt = PydanticOptimizer(
            model=Reservation,
            examples=reservation_examples,
            optimizer=optimizer,
            num_threads=1,
            verbose=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:362: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x119626f90>
student = field_optimizers['restaurant'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimized...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
_____________________________________________ test_transaction_descriptions_not_meta_instructions[miprov2zeroshot] ______________________________________________

lm = <dspy.clients.lm.LM object at 0x1197a6a80>
transaction_examples = [<dspydantic.types.Example object at 0x1197a5b20>, <dspydantic.types.Example object at 0x1197a5c10>, <dspydantic.types...ct at 0x1197a6ea0>, <dspydantic.types.Example object at 0x1197a5070>, <dspydantic.types.Example object at 0x1197a4f80>]
optimizer = 'miprov2zeroshot'

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    @pytest.mark.parametrize("optimizer", ["miprov2zeroshot"])
    def test_transaction_descriptions_not_meta_instructions(
        lm, transaction_examples, optimizer
    ) -> None:
        """Test that optimization produces actual field descriptions for transaction model."""
        opt = PydanticOptimizer(
            model=Transaction,
            examples=transaction_examples,
            optimizer=optimizer,
            num_threads=1,
            verbose=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:387: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x1197a41d0>
student = field_optimizers['broker'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimized_fie...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
________________________________________________________ test_skip_field_description_preserves_originals ________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11a199970>
reservation_examples = [<dspydantic.types.Example object at 0x11a19a150>, <dspydantic.types.Example object at 0x11a19a8d0>, <dspydantic.types...ct at 0x11a19a810>, <dspydantic.types.Example object at 0x11a19a900>, <dspydantic.types.Example object at 0x11a19a930>]

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    def test_skip_field_description_preserves_originals(
        lm, reservation_examples
    ) -> None:
        """Test that skip_field_description_optimization preserves original descriptions."""
        opt = PydanticOptimizer(
            model=Reservation,
            examples=reservation_examples,
            optimizer="miprov2zeroshot",
            num_threads=1,
            verbose=True,
            skip_field_description_optimization=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:412: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x11acd00e0>, student = 

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
________________________________________________________ test_sequential_optimization_shows_improvement _________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11a19a600>
medical_examples = [<dspydantic.types.Example object at 0x11acd2330>, <dspydantic.types.Example object at 0x11acd1ac0>, <dspydantic.types...ct at 0x11acd19d0>, <dspydantic.types.Example object at 0x11acd0a40>, <dspydantic.types.Example object at 0x11acd11c0>]

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    def test_sequential_optimization_shows_improvement(
        lm, medical_examples
    ) -> None:
        """Test that sequential optimization with verbose output shows clear progress.
    
        This test validates the user-facing output is clear and informative.
        """
        opt = PydanticOptimizer(
            model=MedicalRecord,
            examples=medical_examples,
            optimizer="miprov2zeroshot",
            num_threads=1,
            verbose=True,
            sequential=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:444: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1727: in optimize
    return self._optimize_sequential(
src/dspydantic/optimizer.py:1325: in _optimize_sequential
    self._optimize_fields_parallel(
src/dspydantic/optimizer.py:1015: in _optimize_fields_parallel
    field_path, new_desc, _ = future.result()
                              ^^^^^^^^^^^^^^^
../../../../.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/lib/python3.12/concurrent/futures/_base.py:449: in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
../../../../.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
    raise self._exception
../../../../.local/share/uv/python/cpython-3.12.8-macos-aarch64-none/lib/python3.12/concurrent/futures/thread.py:59: in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/dspydantic/optimizer.py:987: in optimize_field_task
    new_desc, new_score = self._optimize_single_field(
src/dspydantic/optimizer.py:1078: in _optimize_single_field
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x119e32870>
student = field_optimizers['patient_name'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimiz...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
_________________________________________________________________ test_early_stopping_patience __________________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11a19ae70>
medical_examples = [<dspydantic.types.Example object at 0x11a19bf80>, <dspydantic.types.Example object at 0x11a19aea0>, <dspydantic.types...ct at 0x11a19ba10>, <dspydantic.types.Example object at 0x11a19b9e0>, <dspydantic.types.Example object at 0x11a19aa20>]

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    def test_early_stopping_patience(lm, medical_examples) -> None:
        """Test that early_stopping_patience stops after N consecutive non-improvements."""
        opt = PydanticOptimizer(
            model=MedicalRecord,
            examples=medical_examples,
            optimizer="miprov2zeroshot",
            num_threads=1,
            verbose=True,
            sequential=True,
            parallel_fields=False,
            early_stopping_patience=2,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:474: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1727: in optimize
    return self._optimize_sequential(
src/dspydantic/optimizer.py:1392: in _optimize_sequential
    new_desc, new_score = self._optimize_single_field(
src/dspydantic/optimizer.py:1078: in _optimize_single_field
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x11acd3620>
student = field_optimizers['patient_name'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimiz...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
__________________________________________________________________ test_auto_generate_prompts ___________________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11acd3bf0>
medical_examples = [<dspydantic.types.Example object at 0x11acd3ce0>, <dspydantic.types.Example object at 0x11acd3d70>, <dspydantic.types...ct at 0x11acd3e00>, <dspydantic.types.Example object at 0x11acd3e60>, <dspydantic.types.Example object at 0x11acd3ef0>]

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    def test_auto_generate_prompts(lm, medical_examples) -> None:
        """Test that auto_generate_prompts creates and optimizes system/instruction prompts."""
        opt = PydanticOptimizer(
            model=MedicalRecord,
            examples=medical_examples,
            optimizer="miprov2zeroshot",
            num_threads=1,
            verbose=True,
            auto_generate_prompts=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
        # Verify prompts were auto-generated
        assert opt.system_prompt is not None
        assert "MedicalRecord" in opt.system_prompt
        assert opt.instruction_prompt is not None
        assert "patient_name" in opt.instruction_prompt
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:503: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x11aca0dd0>
student = field_optimizers['patient_name'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimiz...desc': 'The improved instruction prompt', '__dspy_field_type': 'output', 'prefix': 'Optimized Instruction Prompt:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
_________________________________________________________ test_optimizer_compatibility[miprov2zeroshot] _________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11aca3c80>
reservation_examples = [<dspydantic.types.Example object at 0x11aca3050>, <dspydantic.types.Example object at 0x11aca2ae0>, <dspydantic.types...ct at 0x11aca2c30>, <dspydantic.types.Example object at 0x11aca2cf0>, <dspydantic.types.Example object at 0x11aca19d0>]
optimizer = 'miprov2zeroshot'

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    @pytest.mark.parametrize("optimizer", ["miprov2zeroshot", "bootstrapfewshot"])
    def test_optimizer_compatibility(lm, reservation_examples, optimizer) -> None:
        """Test that field description optimization works across different optimizer types."""
        opt = PydanticOptimizer(
            model=Reservation,
            examples=reservation_examples,
            optimizer=optimizer,
            num_threads=1,
            verbose=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:528: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1790: in optimize
    optimized_program = optimizer.compile(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspy.teleprompt.mipro_optimizer_v2.MIPROv2 object at 0x11aca2ea0>
student = field_optimizers['restaurant'].predict = Predict(StringSignature(field_description, field_type -> reasoning, optimized...description — a short descriptive phrase', '__dspy_field_type': 'output', 'prefix': 'Optimized Field Description:'})
))

    def compile(
        self,
        student: Any,
        *,
        trainset: list,
        teacher: Any = None,
        valset: list | None = None,
        num_trials: int | None = None,
        max_bootstrapped_demos: int | None = None,
        max_labeled_demos: int | None = None,
        seed: int | None = None,
        minibatch: bool = True,
        minibatch_size: int = 35,
        minibatch_full_eval_steps: int = 5,
        program_aware_proposer: bool = True,
        data_aware_proposer: bool = True,
        view_data_batch_size: int = 10,
        tip_aware_proposer: bool = True,
        fewshot_aware_proposer: bool = True,
        requires_permission_to_run: bool | None = None, # deprecated
        provide_traceback: bool | None = None,
    ) -> Any:
        if requires_permission_to_run == False:
            logger.warning(
                "'requires_permission_to_run' is deprecated and will be removed in a future version."
            )
        elif requires_permission_to_run == True:
            raise ValueError("User confirmation is removed from MIPROv2. Please remove the 'requires_permission_to_run' argument.")
    
        effective_max_errors = (
            self.max_errors
            if self.max_errors is not None
            else dspy.settings.max_errors
        )
        zeroshot_opt = (self.max_bootstrapped_demos == 0) and (self.max_labeled_demos == 0)
    
        # If auto is None, and num_trials is not provided (but num_candidates is), raise an error that suggests a good num_trials value
        if self.auto is None and (self.num_candidates is not None and num_trials is None):
            raise ValueError(
                f"If auto is None, num_trials must also be provided. Given num_candidates={self.num_candidates}, we'd recommend setting num_trials to ~{self._set_num_trials_from_num_candidates(student, zeroshot_opt, self.num_candidates)}."
            )
    
        # If auto is None, and num_candidates or num_trials is None, raise an error
        if self.auto is None and (self.num_candidates is None or num_trials is None):
            raise ValueError("If auto is None, num_candidates must also be provided.")
    
        # If auto is provided, and either num_candidates or num_trials is not None, raise an error
        if self.auto is not None and (self.num_candidates is not None or num_trials is not None):
>           raise ValueError(
                "If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials."
            )
E           ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to None, or do not specify num_candidates and num_trials.

.venv/lib/python3.12/site-packages/dspy/teleprompt/mipro_optimizer_v2.py:144: ValueError
________________________________________________________ test_optimizer_compatibility[bootstrapfewshot] _________________________________________________________

lm = <dspy.clients.lm.LM object at 0x11a19b440>
reservation_examples = [<dspydantic.types.Example object at 0x11a19aa20>, <dspydantic.types.Example object at 0x11a19a750>, <dspydantic.types...ct at 0x11a19a060>, <dspydantic.types.Example object at 0x11a19bc80>, <dspydantic.types.Example object at 0x11a19bdd0>]
optimizer = 'bootstrapfewshot'

    @pytest.mark.integration
    @pytest.mark.skipif(
        not os.getenv("OPENAI_API_KEY"),
        reason="OPENAI_API_KEY not set",
    )
    @pytest.mark.parametrize("optimizer", ["miprov2zeroshot", "bootstrapfewshot"])
    def test_optimizer_compatibility(lm, reservation_examples, optimizer) -> None:
        """Test that field description optimization works across different optimizer types."""
        opt = PydanticOptimizer(
            model=Reservation,
            examples=reservation_examples,
            optimizer=optimizer,
            num_threads=1,
            verbose=True,
            optimizer_kwargs={"num_candidates": 5},
        )
    
>       result = opt.optimize()
                 ^^^^^^^^^^^^^^

tests/integration/test_miprov2_descriptions.py:528: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
src/dspydantic/optimizer.py:1737: in optimize
    optimizer = self._create_teleprompter(metric)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <dspydantic.optimizer.PydanticOptimizer object at 0x11a19bf80>
metric = <function PydanticOptimizer._create_metric_function.<locals>.metric_function at 0x11acda200>

    def _create_teleprompter(self, metric: Callable[..., float]) -> Teleprompter:
        """Create a Teleprompter instance with the given metric."""
        if self.custom_optimizer is not None:
            return self.custom_optimizer
        if self.optimizer_type == "miprov2zeroshot":
            default_kwargs = {
                "metric": metric,
                "num_threads": self.num_threads,
                "init_temperature": self.init_temperature,
                "auto": "light",
                "max_bootstrapped_demos": 0,
                "max_labeled_demos": 0,
            }
            return MIPROv2(**{**default_kwargs, **self.optimizer_kwargs})
        if self.optimizer_type == "miprov2":
            default_kwargs = {
                "metric": metric,
                "num_threads": self.num_threads,
                "init_temperature": self.init_temperature,
                "auto": "light",
            }
            if len(self.examples) <= 10:
                default_kwargs["max_bootstrapped_demos"] = 2
                default_kwargs["max_labeled_demos"] = 2
            return MIPROv2(**{**default_kwargs, **self.optimizer_kwargs})
        teleprompter_classes = self._get_teleprompter_subclasses()
        if self.optimizer_type not in teleprompter_classes:
            valid_optimizers = sorted(teleprompter_classes.keys())
            raise ValueError(
                f"Unknown optimizer_type: {self.optimizer_type}. Valid options: {valid_optimizers}"
            )
        optimizer_class = teleprompter_classes[self.optimizer_type]
        default_kwargs = {"metric": metric}
        # Fix: pass num_threads to all optimizers that support it (not just MIPROv2)
        try:
            sig = inspect.signature(optimizer_class.__init__)
            if "num_threads" in sig.parameters:
                default_kwargs["num_threads"] = self.num_threads
        except (ValueError, TypeError):
            pass
        if self.optimizer_type == "bootstrapfewshot" and len(self.examples) < 5:
            default_kwargs["max_bootstrapped_demos"] = max(1, min(2, len(self.examples) - 1))
>       return optimizer_class(**{**default_kwargs, **self.optimizer_kwargs})
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: BootstrapFewShot.__init__() got an unexpected keyword argument 'num_candidates'

src/dspydantic/optimizer.py:950: TypeError
======================================================================= warnings summary ========================================================================
.venv/lib/python3.12/site-packages/litellm/types/llms/anthropic.py:531
  /Users/davidberenstein/conductor/workspaces/dspydantic/kingston/.venv/lib/python3.12/site-packages/litellm/types/llms/anthropic.py:531: PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/
    class AnthropicResponseContentBlockToolUse(BaseModel):

.venv/lib/python3.12/site-packages/litellm/types/rag.py:181
  /Users/davidberenstein/conductor/workspaces/dspydantic/kingston/.venv/lib/python3.12/site-packages/litellm/types/rag.py:181: PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.12/migration/
    class RAGIngestRequest(BaseModel):

tests/integration/test_miprov2_descriptions.py::test_transaction_descriptions_not_meta_instructions[miprov2zeroshot]
  /Users/davidberenstein/conductor/workspaces/dspydantic/kingston/.venv/lib/python3.12/site-packages/litellm/_service_logger.py:59: DeprecationWarning: There is no current event loop
    loop = asyncio.get_event_loop()

tests/integration/test_miprov2_descriptions.py::test_transaction_descriptions_not_meta_instructions[miprov2zeroshot]
tests/integration/test_miprov2_descriptions.py::test_auto_generate_prompts
  /Users/davidberenstein/conductor/workspaces/dspydantic/kingston/.venv/lib/python3.12/site-packages/pydantic/main.py:464: UserWarning: Pydantic serializer warnings:
    PydanticSerializationUnexpectedValue(Expected 10 fields but got 6: Expected `Message` - serialized value may not be as expected [field_name='message', input_value=Message(content='[[ ## re...: None}, annotations=[]), input_type=Message])
    PydanticSerializationUnexpectedValue(Expected `StreamingChoices` - serialized value may not be as expected [field_name='choices', input_value=Choices(finish_reason='st...ider_specific_fields={}), input_type=Choices])
    return self.__pydantic_serializer__.to_python(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================================================== short test summary info ====================================================================
FAILED tests/integration/test_miprov2_descriptions.py::test_medical_record_optimization[miprov2zeroshot] - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_reservation_descriptions_not_meta_instructions[miprov2zeroshot] - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_transaction_descriptions_not_meta_instructions[miprov2zeroshot] - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_skip_field_description_preserves_originals - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_sequential_optimization_shows_improvement - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_early_stopping_patience - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_auto_generate_prompts - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_optimizer_compatibility[miprov2zeroshot] - ValueError: If auto is not None, num_candidates and num_trials cannot be set, since they would be overridden by the auto settings. Please either set auto to...
FAILED tests/integration/test_miprov2_descriptions.py::test_optimizer_compatibility[bootstrapfewshot] - TypeError: BootstrapFewShot.__init__() got an unexpected keyword argument 'num_candidates'
================================================================= 9 failed, 5 warnings in 9.41s =================================================================