forecasting-tools 0.2.88__tar.gz → 0.2.89__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.
Files changed (180) hide show
  1. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/PKG-INFO +6 -6
  2. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/numeric_report.py +22 -4
  3. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/questions.py +8 -4
  4. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/pyproject.toml +7 -7
  5. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/LICENSE +0 -0
  6. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/README.md +0 -0
  7. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/__init__.py +0 -0
  8. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/__init__.py +0 -0
  9. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/__init__.py +0 -0
  10. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/congress_member_agent.py +0 -0
  11. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/congress_orchestrator.py +0 -0
  12. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/data_models.py +0 -0
  13. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/member_profiles.py +0 -0
  14. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/ai_congress_v2/tools.py +0 -0
  15. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/base_rates/base_rate_researcher.py +0 -0
  16. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/base_rates/deduplicator.py +0 -0
  17. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/base_rates/estimator.py +0 -0
  18. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/base_rates/niche_list_researcher.py +0 -0
  19. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/configured_llms.py +0 -0
  20. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/general_researcher.py +0 -0
  21. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/question_generator.py +0 -0
  22. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/question_responder.py +0 -0
  23. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/question_router.py +0 -0
  24. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/deprecated/research_coordinator.py +0 -0
  25. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/minor_tools.py +0 -0
  26. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/other/data_analyzer.py +0 -0
  27. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/other/hosted_file.py +0 -0
  28. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/generated_question.py +0 -0
  29. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/harmful_question_identifier.py +0 -0
  30. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/q3_q4_quarterly_questions.json +0 -0
  31. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/question_decomposer.py +0 -0
  32. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/question_operationalizer.py +0 -0
  33. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/simple_question.py +0 -0
  34. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/question_generators/topic_generator.py +0 -0
  35. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/research/computer_use.py +0 -0
  36. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/research/find_a_dataset.py +0 -0
  37. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/research/key_factors_researcher.py +0 -0
  38. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/research/smart_searcher.py +0 -0
  39. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/__init__.py +0 -0
  40. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/agent_runner.py +0 -0
  41. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/data_models.py +0 -0
  42. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/effect_engine.py +0 -0
  43. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/industrial_basin.json +0 -0
  44. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/milbrook.json +0 -0
  45. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_business.json +0 -0
  46. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_dnd.json +0 -0
  47. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/simple_election.json +0 -0
  48. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/willowbrook.json +0 -0
  49. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/example_situations/z_broken_mafia.json +0 -0
  50. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/__init__.py +0 -0
  51. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/data_models.py +0 -0
  52. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/forecast_resolver.py +0 -0
  53. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_policy_agent.py +0 -0
  54. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_runner.py +0 -0
  55. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/intervention_testing/intervention_storage.py +0 -0
  56. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/simulator.py +0 -0
  57. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/agents_and_tools/situation_simulator/situation_generator.py +0 -0
  58. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/__init__.py +0 -0
  59. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/agent_wrappers.py +0 -0
  60. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/ai_utils/__init__.py +0 -0
  61. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/ai_utils/openai_utils.py +0 -0
  62. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/ai_utils/response_types.py +0 -0
  63. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/README.md +0 -0
  64. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/claude35sonnet.py +0 -0
  65. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/deepseek_r1.py +0 -0
  66. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/gpt4o.py +0 -0
  67. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/gpt4ovision.py +0 -0
  68. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/gpto1.py +0 -0
  69. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/gpto1preview.py +0 -0
  70. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/metaculus4o.py +0 -0
  71. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/deprecated_model_classes/perplexity.py +0 -0
  72. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/exa_searcher.py +0 -0
  73. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/general_llm.py +0 -0
  74. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/__init__.py +0 -0
  75. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/ai_model.py +0 -0
  76. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/combined_llm_archetype.py +0 -0
  77. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/incurs_cost.py +0 -0
  78. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/named_model.py +0 -0
  79. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/outputs_text.py +0 -0
  80. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/priced_per_request.py +0 -0
  81. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/request_limited_model.py +0 -0
  82. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/retryable_model.py +0 -0
  83. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/time_limited_model.py +0 -0
  84. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/token_limited_model.py +0 -0
  85. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/tokens_are_calculatable.py +0 -0
  86. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_interfaces/tokens_incur_cost.py +0 -0
  87. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/model_tracker.py +0 -0
  88. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/resource_managers/__init__.py +0 -0
  89. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/resource_managers/hard_limit_manager.py +0 -0
  90. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/resource_managers/monetary_cost_manager.py +0 -0
  91. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/ai_models/resource_managers/refreshing_bucket_rate_limiter.py +0 -0
  92. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/bot_evaluator.py +0 -0
  93. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/bot_optimizer.py +0 -0
  94. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/control_prompt.py +0 -0
  95. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/customizable_bot.py +0 -0
  96. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/prompt_data_models.py +0 -0
  97. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/prompt_optimizer.py +0 -0
  98. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/auto_optimizers/question_plus_research.py +0 -0
  99. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/cp_benchmarking/benchmark_displayer.py +0 -0
  100. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/cp_benchmarking/benchmark_for_bot.py +0 -0
  101. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/cp_benchmarking/benchmarker.py +0 -0
  102. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/__init__.py +0 -0
  103. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/binary_report.py +0 -0
  104. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/coherence_link.py +0 -0
  105. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/conditional_models.py +0 -0
  106. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/conditional_report.py +0 -0
  107. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/data_organizer.py +0 -0
  108. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/forecast_report.py +0 -0
  109. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/markdown_tree.py +0 -0
  110. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/multiple_choice_report.py +0 -0
  111. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/timestamped_predictions.py +0 -0
  112. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/data_models/user_response.py +0 -0
  113. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/__init__.py +0 -0
  114. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/bot_lists.py +0 -0
  115. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/__init__.py +0 -0
  116. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q1_veritas_bot.py +0 -0
  117. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q1t_w_convert_to_binary.py +0 -0
  118. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q1t_w_personas_and_exa.py +0 -0
  119. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q2t_w_decomposition.py +0 -0
  120. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q3t_w_asknews.py +0 -0
  121. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q3t_w_exa.py +0 -0
  122. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q3t_w_q4vbinary.py +0 -0
  123. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q4_veritas_bot.py +0 -0
  124. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q4v_w_exa.py +0 -0
  125. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q4v_w_exa_and_dseekr1.py +0 -0
  126. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/experiments/q4v_w_exa_and_o1_preview.py +0 -0
  127. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/forecast_bot.py +0 -0
  128. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/main_bot.py +0 -0
  129. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/__init__.py +0 -0
  130. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/gpt_4_1_optimized_bot.py +0 -0
  131. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/q1_template_bot.py +0 -0
  132. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/q2_template_bot.py +0 -0
  133. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/q3_template_bot.py +0 -0
  134. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/q4_template_bot.py +0 -0
  135. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/research_only_bot_2025_fall.py +0 -0
  136. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/template_bot_2025_fall.py +0 -0
  137. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/template_bot_2026_spring.py +0 -0
  138. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/official_bots/uniform_probability_bot.py +0 -0
  139. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/forecast_bots/template_bot.py +0 -0
  140. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/Home.py +0 -0
  141. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/base_rate_page.py +0 -0
  142. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/benchmark_page.py +0 -0
  143. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/chat_page.py +0 -0
  144. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/congress_v2_page.py +0 -0
  145. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/csv_agent.py +0 -0
  146. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/estimator_page.py +0 -0
  147. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/forecaster_page.py +0 -0
  148. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/intervention_leaderboard_page.py +0 -0
  149. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/key_factors_page.py +0 -0
  150. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/niche_list_researcher_page.py +0 -0
  151. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/app_pages/simulator_page.py +0 -0
  152. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/base_rate_page_examples.json +0 -0
  153. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/congress_page_example.json +0 -0
  154. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/congress_v2_page_example.json +0 -0
  155. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/estimator_page_examples.json +0 -0
  156. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/forecast_page_examples.json +0 -0
  157. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/key_factors_page_examples.json +0 -0
  158. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/niche_list_page_examples.json +0 -0
  159. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/example_outputs/question_generator_page_examples.json +0 -0
  160. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/helpers/app_page.py +0 -0
  161. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/helpers/custom_auth.py +0 -0
  162. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/helpers/report_displayer.py +0 -0
  163. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/front_end/helpers/tool_page.py +0 -0
  164. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/__init__.py +0 -0
  165. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/asknews_cache.py +0 -0
  166. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/asknews_searcher.py +0 -0
  167. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/forecast_database_manager.py +0 -0
  168. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/metaculus_api.py +0 -0
  169. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/metaculus_client.py +0 -0
  170. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/prediction_extractor.py +0 -0
  171. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/structure_output.py +0 -0
  172. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/helpers/works_cited_creator.py +0 -0
  173. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/__init__.py +0 -0
  174. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/async_batching.py +0 -0
  175. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/coda_utils.py +0 -0
  176. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/custom_logger.py +0 -0
  177. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/file_manipulation.py +0 -0
  178. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/jsonable.py +0 -0
  179. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/forecasting_tools/util/misc.py +0 -0
  180. {forecasting_tools-0.2.88 → forecasting_tools-0.2.89}/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.2.88
3
+ Version: 0.2.89
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
@@ -26,19 +26,19 @@ Requires-Dist: asknews (>=0.9.1,<0.14.0)
26
26
  Requires-Dist: asyncio (>=3.0.0,<5.0.0)
27
27
  Requires-Dist: exceptiongroup (>=1.2.2,<2.0.0)
28
28
  Requires-Dist: faker (>=37.0.0,<41.0.0)
29
- Requires-Dist: hyperbrowser (>=0.53.0,<0.84.0)
30
- Requires-Dist: litellm (>=1.59.1,<1.82.3,!=1.76.*,!=1.77.*)
29
+ Requires-Dist: hyperbrowser (>=0.53.0,<1.0.0)
30
+ Requires-Dist: litellm (>=1.59.1,<2.0.0,!=1.76.*,!=1.77.*,!=1.82.7,!=1.82.8)
31
31
  Requires-Dist: nest-asyncio (>=1.5.8,<2.0.0)
32
32
  Requires-Dist: numpy (>=1.26.0,<3.0.0)
33
33
  Requires-Dist: openai (>=1.51.0,<3.0.0)
34
- Requires-Dist: openai-agents[litellm] (>=0.2.0,<0.10.0)
34
+ Requires-Dist: openai-agents[litellm] (>=0.2.0,<0.14.0)
35
35
  Requires-Dist: pandas (>=2.2.3,<4.0.0)
36
36
  Requires-Dist: pendulum (>=3.1.0,<4.0.0)
37
- Requires-Dist: pillow (>=9.0.0,<12.0.0)
37
+ Requires-Dist: pillow (>=9.0.0,<13.0.0)
38
38
  Requires-Dist: plotly (>=5.24.1,<7.0.0)
39
39
  Requires-Dist: pydantic (>=2.9.2,<3.0.0)
40
40
  Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
41
- Requires-Dist: regex (>=2024.11.6,<2026.0.0)
41
+ Requires-Dist: regex (>=2024.11.6,<2027.0.0)
42
42
  Requires-Dist: requests (>=2.32.3,<3.0.0)
43
43
  Requires-Dist: scikit-learn (>=1.5.2,<2.0.0)
44
44
  Requires-Dist: streamlit (>=1.20.0,<2.0.0)
@@ -84,8 +84,11 @@ class DatePercentile(BaseModel):
84
84
 
85
85
  class NumericDistribution(BaseModel):
86
86
  declared_percentiles: list[Percentile]
87
- open_upper_bound: bool
88
- open_lower_bound: bool
87
+ open_upper_bound: bool # If False, cdf[-1] must be 1.0 (no mass above upper bound)
88
+ open_lower_bound: bool # If False, cdf[0] must be 0.0 (no mass strictly below lower
89
+ # bound). Note: cdf[0] = P(outcome < lower_bound), so a closed lower bound does not
90
+ # prevent assigning probability to the outcome equalling lower_bound exactly —
91
+ # that mass goes in the first inbound bucket: cdf[1] - cdf[0].
89
92
  upper_bound: float
90
93
  lower_bound: float
91
94
  zero_point: float | None
@@ -344,12 +347,22 @@ class NumericDistribution(BaseModel):
344
347
  between upper and lower bound (taking into account probability assigned above and below the bounds)
345
348
  that is compatible with Metaculus questions.
346
349
 
347
- cdf stands for 'continuous distribution function'
350
+ cdf stands for 'cumulative distribution function'
348
351
 
349
352
  At Metaculus CDFs are often represented with 201 points. Each point has:
350
- - percentile ("X% of values are below this point". This is the y axis of the cdf graph)
353
+ - percentile (the y axis of the cdf graph — see boundary notes below)
351
354
  - 'value' or 'nominal location' (The real world number that answers the question)
352
355
  - cdf location (a number between 0 and 1 representing where the point is on the cdf x axis, where 0 is range min, and 1 is range max)
356
+
357
+ Important boundary semantics (note the asymmetry):
358
+ - cdf[0].percentile = P(outcome < lower_bound) — strictly less than (not equal to)
359
+ - cdf[-1].percentile = P(outcome <= upper_bound) — less than or equal to
360
+ For questions with a closed lower bound, cdf[0].percentile must be 0.0 because
361
+ outcomes strictly below the lower bound are impossible. This does NOT mean zero
362
+ probability at the lower bound itself — probability of the outcome equalling
363
+ lower_bound belongs in the first inbound bucket: cdf[1].percentile - cdf[0].percentile.
364
+ For example, to express an 80% chance the outcome is exactly lower_bound, set
365
+ cdf[1].percentile = 0.8 (and cdf[0].percentile = 0.0).
353
366
  """
354
367
 
355
368
  cdf_size = self.cdf_size or NumericDefaults.DEFAULT_CDF_SIZE
@@ -527,6 +540,11 @@ class NumericDistribution(BaseModel):
527
540
  - caps the maximum growth to 0.2
528
541
 
529
542
  Note, thresholds change with different `inbound_outcome_count`s
543
+
544
+ Boundary convention: cdf[0] is P(outcome < lower_bound) — strictly less than.
545
+ For closed lower bounds this is forced to 0.0 after standardization; probability
546
+ of landing exactly on lower_bound belongs in the first inbound bucket (cdf[1]).
547
+ cdf[-1] is P(outcome <= upper_bound) — less than or equal to (standard convention).
530
548
  """
531
549
 
532
550
  lower_open = self.open_lower_bound
@@ -474,8 +474,10 @@ class DateQuestion(MetaculusQuestion, BoundedQuestionMixin):
474
474
  question_type: Literal["date"] = "date"
475
475
  upper_bound: datetime
476
476
  lower_bound: datetime
477
- open_upper_bound: bool
478
- open_lower_bound: bool
477
+ open_upper_bound: bool # If False, cdf[-1] must be 1.0 (no mass above upper bound)
478
+ open_lower_bound: bool # If False, cdf[0] must be 0.0. Note: cdf[0] = P(outcome <
479
+ # lower_bound) strictly, so probability of landing exactly on lower_bound belongs
480
+ # in the first inbound bucket (cdf[1]), not in cdf[0].
479
481
  zero_point: float | None = None
480
482
  cdf_size: int = 201
481
483
 
@@ -530,8 +532,10 @@ class NumericQuestion(MetaculusQuestion, BoundedQuestionMixin):
530
532
  question_type: Literal["numeric"] = "numeric"
531
533
  upper_bound: float
532
534
  lower_bound: float
533
- open_upper_bound: bool
534
- open_lower_bound: bool
535
+ open_upper_bound: bool # If False, cdf[-1] must be 1.0 (no mass above upper bound)
536
+ open_lower_bound: bool # If False, cdf[0] must be 0.0. Note: cdf[0] = P(outcome <
537
+ # lower_bound) strictly, so probability of landing exactly on lower_bound belongs
538
+ # in the first inbound bucket (cdf[1]), not in cdf[0].
535
539
  zero_point: float | None = None
536
540
  cdf_size: int = (
537
541
  201 # Normal numeric questions have 201 points, but discrete questions have fewer
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "forecasting-tools"
3
- version = "0.2.88"
3
+ version = "0.2.89"
4
4
  description = "AI forecasting and research tools to help humans reason about and forecast the future"
5
5
  authors = ["Benjamin Wilson <ben@metaculus.com>"]
6
6
  license = "MIT"
@@ -33,12 +33,12 @@ nest-asyncio = "^1.5.8"
33
33
  requests = "^2.32.3"
34
34
  pydantic = "^2.9.2"
35
35
  python-dotenv = "^1.0.0"
36
- regex = ">=2024.11.6,<2026.0.0"
36
+ regex = ">=2024.11.6,<2027.0.0"
37
37
  tenacity = ">=8.0.0,<10.0.0"
38
- pillow = ">=9.0.0,<12.0.0"
38
+ pillow = ">=9.0.0,<13.0.0"
39
39
  typeguard = "^4.3.0"
40
40
  scikit-learn = "^1.5.2"
41
- litellm = ">=1.59.1,<1.82.3,!=1.76.*,!=1.77.* || >=1.83.1"
41
+ litellm = ">=1.59.1,<2.0.0,!=1.76.*,!=1.77.*,!=1.82.7,!=1.82.8"
42
42
  numpy = ">=1.26.0,<3.0.0"
43
43
  exceptiongroup = "^1.2.2"
44
44
  faker = ">=37.0.0,<41.0.0"
@@ -47,15 +47,15 @@ pandas = ">=2.2.3,<4.0.0"
47
47
  streamlit = "^1.20.0"
48
48
  asknews = ">=0.9.1,<0.14.0"
49
49
  unidecode = "^1.4.0"
50
- hyperbrowser = ">=0.53.0,<0.84.0"
50
+ hyperbrowser = ">=0.53.0,<1.0.0"
51
51
  pendulum = "^3.1.0"
52
- openai-agents = {extras = ["litellm"], version = ">=0.2.0,<0.10.0"}
52
+ openai-agents = {extras = ["litellm"], version = ">=0.2.0,<0.14.0"}
53
53
 
54
54
  [tool.poetry.group.dev.dependencies]
55
55
  time-machine = ">=2.19.0,<4.0.0"
56
56
  pre-commit = "^4.0.1"
57
57
  matplotlib = "^3.9.2"
58
- ipykernel = "^6.29.5"
58
+ ipykernel = ">=6.29.5,<8.0.0"
59
59
  notebook = "^7.2.2"
60
60
  pytest = ">=8.3.2,<10.0.0"
61
61
  pytest-xdist = "^3.3.1"