forecasting-tools 0.3.2__tar.gz → 0.3.4__tar.gz
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.
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/PKG-INFO +6 -12
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/README.md +5 -11
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/__init__.py +3 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/metaculus_client.py +41 -3
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/pyproject.toml +1 -1
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/LICENSE +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/congress_member_agent.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/congress_orchestrator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/data_models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/member_profiles.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/ai_congress_v2/tools.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/base_rates/base_rate_researcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/base_rates/deduplicator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/base_rates/estimator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/base_rates/niche_list_researcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/configured_llms.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/general_researcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/question_generator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/question_responder.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/question_router.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/deprecated/research_coordinator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/minor_tools.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/other/data_analyzer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/other/hosted_file.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/generated_question.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/harmful_question_identifier.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/q3_q4_quarterly_questions.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/question_decomposer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/question_operationalizer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/simple_question.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/question_generators/topic_generator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/research/computer_use.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/research/find_a_dataset.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/research/key_factors_researcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/research/smart_searcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/agent_runner.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/data_models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/effect_engine.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/industrial_basin.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/milbrook.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_business.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_dnd.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_election.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/willowbrook.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/z_broken_mafia.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/data_models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/forecast_resolver.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_policy_agent.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_runner.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_storage.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/simulator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/situation_simulator/situation_generator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/README.md +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/benchmark.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/canonicalize.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/catalog.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/cli.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/config.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/content_store.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/cost.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/coverage.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/base.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/cloakbrowser_fetcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/firecrawl_fetcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/hyperbrowser_fetcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/pdf_fetcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/playwright_fetcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/fetchers/tiered.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/ingest/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/ingest/trace_extraction.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/ingest/url_extraction.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/layout.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/manifest.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/pipeline.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/quality.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/reindex.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/reports.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/storage/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/storage/blob_store.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/storage/local_store.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/storage/s3_store.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/source_archive/viewer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/agent_wrappers.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/ai_utils/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/ai_utils/openai_utils.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/ai_utils/response_types.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/README.md +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/claude35sonnet.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/deepseek_r1.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/gpt4o.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/gpt4ovision.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/gpto1.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/gpto1preview.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/metaculus4o.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/deprecated_model_classes/perplexity.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/exa_searcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/general_llm.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/ai_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/combined_llm_archetype.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/incurs_cost.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/named_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/outputs_text.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/priced_per_request.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/request_limited_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/retryable_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/time_limited_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/token_limited_model.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/tokens_are_calculatable.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_interfaces/tokens_incur_cost.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_tracker.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/resource_managers/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/resource_managers/hard_limit_manager.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/resource_managers/monetary_cost_manager.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/resource_managers/refreshing_bucket_rate_limiter.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/bot_evaluator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/bot_optimizer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/control_prompt.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/customizable_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/prompt_data_models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/prompt_optimizer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/auto_optimizers/question_plus_research.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/.gitignore +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/_training_data.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/benchmark.ipynb +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/calibration_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/constant_shift_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/decision_tree_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/k_means_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/logistic_recalibration_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/calibration_adjustment/step_adjuster.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/cp_benchmarking/benchmark_displayer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/cp_benchmarking/benchmark_for_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/cp_benchmarking/benchmarker.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/binary_report.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/coherence_link.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/conditional_models.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/conditional_report.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/data_organizer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/forecast_report.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/markdown_tree.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/multiple_choice_report.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/numeric_report.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/questions.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/timestamped_predictions.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/user_response.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/bot_lists.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q1_veritas_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q1t_w_convert_to_binary.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q1t_w_personas_and_exa.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q2t_w_decomposition.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q3t_w_asknews.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q3t_w_exa.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q3t_w_q4vbinary.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q4_veritas_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q4v_w_exa.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q4v_w_exa_and_dseekr1.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/experiments/q4v_w_exa_and_o1_preview.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/forecast_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/main_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/gpt_4_1_optimized_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/no_research_one_shot_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/q1_template_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/q2_template_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/q3_template_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/q4_template_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/research_only_bot_2025_fall.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/template_bot_2025_fall.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/template_bot_2026_fall.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/template_bot_2026_spring.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/template_bot_2026_summer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/official_bots/uniform_probability_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/forecast_bots/template_bot.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/Home.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/base_rate_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/benchmark_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/chat_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/congress_v2_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/csv_agent.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/estimator_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/forecaster_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/intervention_leaderboard_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/key_factors_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/niche_list_researcher_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/app_pages/simulator_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/base_rate_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/congress_page_example.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/congress_v2_page_example.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/estimator_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/forecast_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/key_factors_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/niche_list_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/example_outputs/question_generator_page_examples.json +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/helpers/app_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/helpers/custom_auth.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/helpers/report_displayer.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/front_end/helpers/tool_page.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/asknews_cache.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/asknews_searcher.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/forecast_database_manager.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/metaculus_api.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/prediction_extractor.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/structure_output.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/works_cited_creator.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/__init__.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/async_batching.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/coda_utils.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/custom_logger.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/file_manipulation.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/jsonable.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/misc.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/optional_imports.py +0 -0
- {forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/util/stats.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: forecasting-tools
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: AI forecasting and research tools to help humans reason about and forecast the future
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
@@ -207,7 +207,7 @@ Note: You'll need to have your environment variables set up (see the section bel
|
|
|
207
207
|
|
|
208
208
|
## Customizing the Bot
|
|
209
209
|
### General Customization
|
|
210
|
-
Generally all you have to do to make your own bot is inherit from the TemplateBot and override any combination of the 3 forecasting methods and the 1 research method. This saves you the headache of interacting with the Metaculus API, implementing aggregation of predictions,
|
|
210
|
+
Generally all you have to do to make your own bot is inherit from the TemplateBot and override any combination of the 3 forecasting methods and the 1 research method. This saves you the headache of interacting with the Metaculus API, implementing aggregation of predictions, etc. Below is an example. It may also be helpful to look at the `TemplateBot` code (`forecasting_tools/forecast_bots/template_bot.py`) for a more complete example.
|
|
211
211
|
|
|
212
212
|
|
|
213
213
|
```python
|
|
@@ -380,11 +380,6 @@ file_path = "temp/questions.json"
|
|
|
380
380
|
DataOrganizer.save_questions_to_file_path(questions, file_path) # Overwrites the file if it already exists
|
|
381
381
|
questions = DataOrganizer.load_questions_from_file_path(file_path)
|
|
382
382
|
|
|
383
|
-
benchmark_questions = metaculus_client.get_benchmark_questions(
|
|
384
|
-
num_of_questions_to_return=20
|
|
385
|
-
)
|
|
386
|
-
print(f"Num benchmark questions: {len(benchmark_questions)}")
|
|
387
|
-
|
|
388
383
|
metaculus_client.post_binary_question_prediction(
|
|
389
384
|
question_id=578, # Note that the question ID is not always the same as the post ID
|
|
390
385
|
prediction_in_decimal=0.012, # Must be between 0.001 and 0.999
|
|
@@ -402,7 +397,6 @@ print("Posted comment")
|
|
|
402
397
|
Question found with url: https://www.metaculus.com/questions/578
|
|
403
398
|
Num tournament questions: 11
|
|
404
399
|
Num filtered questions: 50
|
|
405
|
-
Num benchmark questions: 20
|
|
406
400
|
Posted prediction
|
|
407
401
|
Posted comment
|
|
408
402
|
|
|
@@ -413,7 +407,7 @@ Several of the methods above accept a `group_question_mode` parameter that contr
|
|
|
413
407
|
- `"exclude"` — drop group questions from the result.
|
|
414
408
|
- `"unpack_subquestions"` — turn each subquestion into a separate normal question.
|
|
415
409
|
|
|
416
|
-
For backwards compatibility, the default is `"exclude"` for `get_question_by_post_id`, `get_question_by_url`, `ApiFilter` (used by `get_questions_matching_filter`)
|
|
410
|
+
For backwards compatibility, the default is `"exclude"` for `get_question_by_post_id`, `get_question_by_url`, and `ApiFilter` (used by `get_questions_matching_filter`). The exception is `get_all_open_questions_from_tournament`, which defaults to `"unpack_subquestions"` so all subquestions are forecasted as normal questions.
|
|
417
411
|
|
|
418
412
|
```python
|
|
419
413
|
from forecasting_tools import MetaculusClient, ApiFilter
|
|
@@ -572,8 +566,8 @@ Some features need heavier dependencies that a bot does not, so they are opt-in.
|
|
|
572
566
|
|
|
573
567
|
| Extra | You need it for |
|
|
574
568
|
| --- | --- |
|
|
575
|
-
| `agents` | Anything built on the agent SDK: `QuestionDecomposer`, `QuestionOperationalizer`, `TopicGenerator`, `DataAnalyzer`, `
|
|
576
|
-
| `front-end` | The Streamlit app in `forecasting_tools/front_end/`
|
|
569
|
+
| `agents` | Anything built on the agent SDK: `QuestionDecomposer`, `QuestionOperationalizer`, `TopicGenerator`, `DataAnalyzer`, `BotOptimizer`, `CustomizableBot`, `ComputerUse` (browser-driving agent), and the AI Congress tools |
|
|
570
|
+
| `front-end` | The Streamlit app in `forecasting_tools/front_end/` |
|
|
577
571
|
| `stats` | `forecasting_tools.util.stats` and the calibration adjusters in `forecasting_tools/calibration_adjustment/` |
|
|
578
572
|
| `all` | Everything above |
|
|
579
573
|
|
|
@@ -624,7 +618,7 @@ If you choose not to run Docker, you can use poetry to set up a local virtual en
|
|
|
624
618
|
|
|
625
619
|
|
|
626
620
|
## Installing dependencies
|
|
627
|
-
Local development uses the optional extras (the tests cover the front end
|
|
621
|
+
Local development uses the optional extras (the tests cover the front end and the agent tools), so install with:
|
|
628
622
|
|
|
629
623
|
```bash
|
|
630
624
|
poetry install --all-extras
|
|
@@ -145,7 +145,7 @@ Note: You'll need to have your environment variables set up (see the section bel
|
|
|
145
145
|
|
|
146
146
|
## Customizing the Bot
|
|
147
147
|
### General Customization
|
|
148
|
-
Generally all you have to do to make your own bot is inherit from the TemplateBot and override any combination of the 3 forecasting methods and the 1 research method. This saves you the headache of interacting with the Metaculus API, implementing aggregation of predictions,
|
|
148
|
+
Generally all you have to do to make your own bot is inherit from the TemplateBot and override any combination of the 3 forecasting methods and the 1 research method. This saves you the headache of interacting with the Metaculus API, implementing aggregation of predictions, etc. Below is an example. It may also be helpful to look at the `TemplateBot` code (`forecasting_tools/forecast_bots/template_bot.py`) for a more complete example.
|
|
149
149
|
|
|
150
150
|
|
|
151
151
|
```python
|
|
@@ -318,11 +318,6 @@ file_path = "temp/questions.json"
|
|
|
318
318
|
DataOrganizer.save_questions_to_file_path(questions, file_path) # Overwrites the file if it already exists
|
|
319
319
|
questions = DataOrganizer.load_questions_from_file_path(file_path)
|
|
320
320
|
|
|
321
|
-
benchmark_questions = metaculus_client.get_benchmark_questions(
|
|
322
|
-
num_of_questions_to_return=20
|
|
323
|
-
)
|
|
324
|
-
print(f"Num benchmark questions: {len(benchmark_questions)}")
|
|
325
|
-
|
|
326
321
|
metaculus_client.post_binary_question_prediction(
|
|
327
322
|
question_id=578, # Note that the question ID is not always the same as the post ID
|
|
328
323
|
prediction_in_decimal=0.012, # Must be between 0.001 and 0.999
|
|
@@ -340,7 +335,6 @@ print("Posted comment")
|
|
|
340
335
|
Question found with url: https://www.metaculus.com/questions/578
|
|
341
336
|
Num tournament questions: 11
|
|
342
337
|
Num filtered questions: 50
|
|
343
|
-
Num benchmark questions: 20
|
|
344
338
|
Posted prediction
|
|
345
339
|
Posted comment
|
|
346
340
|
|
|
@@ -351,7 +345,7 @@ Several of the methods above accept a `group_question_mode` parameter that contr
|
|
|
351
345
|
- `"exclude"` — drop group questions from the result.
|
|
352
346
|
- `"unpack_subquestions"` — turn each subquestion into a separate normal question.
|
|
353
347
|
|
|
354
|
-
For backwards compatibility, the default is `"exclude"` for `get_question_by_post_id`, `get_question_by_url`, `ApiFilter` (used by `get_questions_matching_filter`)
|
|
348
|
+
For backwards compatibility, the default is `"exclude"` for `get_question_by_post_id`, `get_question_by_url`, and `ApiFilter` (used by `get_questions_matching_filter`). The exception is `get_all_open_questions_from_tournament`, which defaults to `"unpack_subquestions"` so all subquestions are forecasted as normal questions.
|
|
355
349
|
|
|
356
350
|
```python
|
|
357
351
|
from forecasting_tools import MetaculusClient, ApiFilter
|
|
@@ -510,8 +504,8 @@ Some features need heavier dependencies that a bot does not, so they are opt-in.
|
|
|
510
504
|
|
|
511
505
|
| Extra | You need it for |
|
|
512
506
|
| --- | --- |
|
|
513
|
-
| `agents` | Anything built on the agent SDK: `QuestionDecomposer`, `QuestionOperationalizer`, `TopicGenerator`, `DataAnalyzer`, `
|
|
514
|
-
| `front-end` | The Streamlit app in `forecasting_tools/front_end/`
|
|
507
|
+
| `agents` | Anything built on the agent SDK: `QuestionDecomposer`, `QuestionOperationalizer`, `TopicGenerator`, `DataAnalyzer`, `BotOptimizer`, `CustomizableBot`, `ComputerUse` (browser-driving agent), and the AI Congress tools |
|
|
508
|
+
| `front-end` | The Streamlit app in `forecasting_tools/front_end/` |
|
|
515
509
|
| `stats` | `forecasting_tools.util.stats` and the calibration adjusters in `forecasting_tools/calibration_adjustment/` |
|
|
516
510
|
| `all` | Everything above |
|
|
517
511
|
|
|
@@ -562,7 +556,7 @@ If you choose not to run Docker, you can use poetry to set up a local virtual en
|
|
|
562
556
|
|
|
563
557
|
|
|
564
558
|
## Installing dependencies
|
|
565
|
-
Local development uses the optional extras (the tests cover the front end
|
|
559
|
+
Local development uses the optional extras (the tests cover the front end and the agent tools), so install with:
|
|
566
560
|
|
|
567
561
|
```bash
|
|
568
562
|
poetry install --all-extras
|
|
@@ -172,6 +172,9 @@ from forecasting_tools.helpers.asknews_searcher import (
|
|
|
172
172
|
from forecasting_tools.helpers.metaculus_api import MetaculusApi as MetaculusApi
|
|
173
173
|
from forecasting_tools.helpers.metaculus_api import MetaculusClient as MetaculusClient
|
|
174
174
|
from forecasting_tools.helpers.metaculus_client import ApiFilter as ApiFilter
|
|
175
|
+
from forecasting_tools.helpers.metaculus_client import (
|
|
176
|
+
AuthorMismatchError as AuthorMismatchError,
|
|
177
|
+
)
|
|
175
178
|
from forecasting_tools.helpers.prediction_extractor import (
|
|
176
179
|
PredictionExtractor as PredictionExtractor,
|
|
177
180
|
)
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/helpers/metaculus_client.py
RENAMED
|
@@ -101,6 +101,10 @@ class ApiFilter(BaseModel):
|
|
|
101
101
|
return add_timezone_to_dates_in_base_model(self)
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
class AuthorMismatchError(ValueError):
|
|
105
|
+
pass
|
|
106
|
+
|
|
107
|
+
|
|
104
108
|
class MetaculusClient:
|
|
105
109
|
"""
|
|
106
110
|
Documentation for the API can be found at https://www.metaculus.com/api/
|
|
@@ -1212,8 +1216,15 @@ class MetaculusClient:
|
|
|
1212
1216
|
logger.info(f"Unresolved question ID {question_id}")
|
|
1213
1217
|
|
|
1214
1218
|
@retry_with_exponential_backoff()
|
|
1215
|
-
def create_question(
|
|
1216
|
-
|
|
1219
|
+
def create_question(
|
|
1220
|
+
self, question: MetaculusQuestion, acting_user: str | int | None = None
|
|
1221
|
+
) -> MetaculusQuestion:
|
|
1222
|
+
"""
|
|
1223
|
+
Setting acting_user (a username or user id) creates the post with that user
|
|
1224
|
+
as author. The API token must own that bot, be allowed to act as metac bots,
|
|
1225
|
+
or belong to a superuser.
|
|
1226
|
+
"""
|
|
1227
|
+
question_data = self._get_post_create_data(question, acting_user)
|
|
1217
1228
|
self._sleep_between_requests()
|
|
1218
1229
|
response = requests.post(
|
|
1219
1230
|
f"{self.base_url}/posts/create/",
|
|
@@ -1241,6 +1252,9 @@ class MetaculusClient:
|
|
|
1241
1252
|
single_created_question.id_of_post
|
|
1242
1253
|
)
|
|
1243
1254
|
|
|
1255
|
+
if acting_user is not None:
|
|
1256
|
+
self._raise_if_author_is_not_acting_user(full_created_question, acting_user)
|
|
1257
|
+
|
|
1244
1258
|
return full_created_question
|
|
1245
1259
|
|
|
1246
1260
|
@retry_with_exponential_backoff()
|
|
@@ -1286,12 +1300,35 @@ class MetaculusClient:
|
|
|
1286
1300
|
logger.info(f"Approved question {question.page_url}")
|
|
1287
1301
|
|
|
1288
1302
|
@staticmethod
|
|
1289
|
-
def
|
|
1303
|
+
def _raise_if_author_is_not_acting_user(
|
|
1304
|
+
question: MetaculusQuestion, acting_user: str | int
|
|
1305
|
+
) -> None:
|
|
1306
|
+
if str(acting_user).isdigit():
|
|
1307
|
+
actual_author = question.api_json.get("author_id")
|
|
1308
|
+
expected_author = int(acting_user)
|
|
1309
|
+
else:
|
|
1310
|
+
actual_author = question.api_json.get("author_username")
|
|
1311
|
+
expected_author = acting_user
|
|
1312
|
+
if actual_author != expected_author:
|
|
1313
|
+
raise AuthorMismatchError(
|
|
1314
|
+
f"Post {question.id_of_post} was created with author "
|
|
1315
|
+
f"{actual_author!r} instead of {expected_author!r} and has not been "
|
|
1316
|
+
"approved. The server likely ignored the acting_user field."
|
|
1317
|
+
)
|
|
1318
|
+
|
|
1319
|
+
@staticmethod
|
|
1320
|
+
def _get_post_create_data(
|
|
1321
|
+
question: MetaculusQuestion, acting_user: str | int | None = None
|
|
1322
|
+
) -> dict:
|
|
1290
1323
|
if question.published_time is None:
|
|
1291
1324
|
publish_time = question.open_time
|
|
1292
1325
|
else:
|
|
1293
1326
|
publish_time = question.published_time
|
|
1294
1327
|
|
|
1328
|
+
acting_user_fields = (
|
|
1329
|
+
{"acting_user": acting_user} if acting_user is not None else {}
|
|
1330
|
+
)
|
|
1331
|
+
|
|
1295
1332
|
return {
|
|
1296
1333
|
"title": question.question_text,
|
|
1297
1334
|
"short_title": question.custom_metadata.get("short_name", None)
|
|
@@ -1355,4 +1392,5 @@ class MetaculusClient:
|
|
|
1355
1392
|
"fine_print": question.fine_print or "",
|
|
1356
1393
|
"group_rank": None, # only group questions
|
|
1357
1394
|
},
|
|
1395
|
+
**acting_user_fields,
|
|
1358
1396
|
}
|
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/agents_and_tools/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/agent_wrappers.py
RENAMED
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/ai_utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/exa_searcher.py
RENAMED
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/general_llm.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/ai_models/model_tracker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/cp_benchmarking/benchmarker.py
RENAMED
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/__init__.py
RENAMED
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/binary_report.py
RENAMED
|
File without changes
|
{forecasting_tools-0.3.2 → forecasting_tools-0.3.4}/forecasting_tools/data_models/coherence_link.py
RENAMED
|
File without changes
|