@@ -241,6 +241,8 @@ def test_binary_resolved_question(self) -> None:
241241 assert question .typed_resolution == expected_resolution
242242 assert isinstance (question , BinaryQuestion )
243243 assert question .binary_resolution == expected_resolution
244+ assert question .id_of_post is not None
245+ assert_basic_question_attributes_not_none (question , question .id_of_post )
244246
245247 def test_numeric_resolved_question (self ) -> None :
246248 question = MetaculusApi .get_question_by_post_id (
@@ -255,6 +257,7 @@ def test_numeric_resolved_question(self) -> None:
255257 assert question .typed_resolution == expected_resolution
256258 assert isinstance (question , NumericQuestion )
257259 assert question .numeric_resolution == expected_resolution
260+ assert_basic_question_attributes_not_none (question , question .id_of_post )
258261
259262 def test_multiple_choice_resolved_question (self ) -> None :
260263 question = MetaculusApi .get_question_by_post_id (
@@ -268,6 +271,8 @@ def test_multiple_choice_resolved_question(self) -> None:
268271 assert question .typed_resolution == expected_resolution
269272 assert isinstance (question , MultipleChoiceQuestion )
270273 assert question .mc_resolution == expected_resolution
274+ assert question .id_of_post is not None
275+ assert_basic_question_attributes_not_none (question , question .id_of_post )
271276
272277 def test_date_resolved_question (self ) -> None :
273278 question = MetaculusApi .get_question_by_post_id (
@@ -281,6 +286,8 @@ def test_date_resolved_question(self) -> None:
281286 assert question .typed_resolution == expected_resolution
282287 assert isinstance (question , DateQuestion )
283288 assert question .date_resolution == expected_resolution
289+ assert question .id_of_post is not None
290+ assert_basic_question_attributes_not_none (question , question .id_of_post )
284291
285292 def test_annulled_resolution (self ) -> None :
286293 question = MetaculusApi .get_question_by_post_id (
@@ -294,6 +301,8 @@ def test_annulled_resolution(self) -> None:
294301 assert question .typed_resolution == expected_resolution
295302 assert isinstance (question , MultipleChoiceQuestion )
296303 assert question .mc_resolution == expected_resolution
304+ assert question .id_of_post is not None
305+ assert_basic_question_attributes_not_none (question , question .id_of_post )
297306
298307 def test_forecast_extreme_multiple_choice (self ) -> None :
299308 url = "https://www.metaculus.com/questions/38601/year-openai-deepmind-or-anthropic-reach-valuation-of-1-trillion/"
@@ -463,7 +472,7 @@ async def test_group_question_field_in_filter(self) -> None:
463472 assert_basic_question_attributes_not_none (question , question .id_of_post )
464473
465474 def test_get_questions_from_tournament (self ) -> None :
466- questions = MetaculusClient . dev ().get_all_open_questions_from_tournament (
475+ questions = MetaculusClient ().get_all_open_questions_from_tournament (
467476 ForecastingTestManager .TOURN_WITH_OPENNESS_AND_TYPE_VARIATIONS
468477 )
469478 question_types = DataOrganizer .get_all_question_types ()
@@ -477,7 +486,7 @@ def test_get_questions_from_tournament(self) -> None:
477486 assert_basic_attributes_at_percentage (questions , 0.8 )
478487
479488 def test_get_conditional_questions_from_tournament (self ) -> None :
480- questions = MetaculusClient . dev ().get_all_open_questions_from_tournament (
489+ questions = MetaculusClient ().get_all_open_questions_from_tournament (
481490 "taiwan" # https://www.metaculus.com/tournament/taiwan/
482491 )
483492 conditional_questions = [
@@ -506,6 +515,7 @@ async def test_get_previous_forecast(self) -> None:
506515 assert questions
507516 assert all (question .previous_forecasts for question in questions )
508517
518+ @pytest .mark .skip (reason = "Benchmark questions are not being used currently" )
509519 def test_get_benchmark_questions (self ) -> None :
510520 num_questions_to_get = 30
511521 questions = MetaculusApi .get_benchmark_questions (num_questions_to_get )
@@ -573,7 +583,7 @@ class TestNumericForecasts:
573583 def test_forecast_log_scale (self ) -> None :
574584 url = "https://dev.metaculus.com/questions/6609/non-tesla-vehicles-w-tesla-software-by-2030/"
575585 # Question resolves 2030 so is decent test question
576- question = MetaculusClient . dev ().get_question_by_url (url )
586+ question = MetaculusClient ().get_question_by_url (url )
577587 assert isinstance (question , NumericQuestion )
578588 percentiles = [
579589 Percentile (percentile = 0.412 , value = 1 ),
@@ -588,7 +598,7 @@ def test_forecast_log_scale(self) -> None:
588598 )
589599 def test_forecast_log_scale_repeated_values (self ) -> None :
590600 url = "https://dev.metaculus.com/questions/25402/" # Resolves Jan 1 2026
591- question = MetaculusClient . dev ().get_question_by_url (url )
601+ question = MetaculusClient ().get_question_by_url (url )
592602 assert isinstance (question , NumericQuestion )
593603 percentiles = [
594604 Percentile (percentile = 0.1 , value = 1.0 ), # Repeated value
@@ -613,7 +623,7 @@ def test_forecast_log_scale_repeated_values(self) -> None:
613623 def test_log_scale_all_repeated_values (self ) -> None :
614624 # TODO: The distribution centers around 11.5 not 11, but still has very high probability for 11
615625 url = "https://dev.metaculus.com/questions/6609/non-tesla-vehicles-w-tesla-software-by-2030/"
616- question = MetaculusClient . dev ().get_question_by_url (url )
626+ question = MetaculusClient ().get_question_by_url (url )
617627 assert isinstance (question , NumericQuestion )
618628 percentiles = [
619629 Percentile (value = 11 , percentile = 0.1 ),
@@ -628,7 +638,7 @@ def test_log_scale_all_repeated_values(self) -> None:
628638 def test_log_scale_another_edge_case (self ) -> None :
629639 # This test was able to replicate a floating point epsilon error at one point.
630640 url = "https://dev.metaculus.com/questions/7546"
631- question = MetaculusClient . dev ().get_question_by_url (url )
641+ question = MetaculusClient ().get_question_by_url (url )
632642 assert isinstance (question , NumericQuestion )
633643 percentiles = [
634644 Percentile (value = 22000 , percentile = 0.1 ),
@@ -645,7 +655,7 @@ def test_log_scale_another_edge_case(self) -> None:
645655 )
646656 def test_forecast_log_scaled_out_of_bounds (self ) -> None :
647657 url = "https://dev.metaculus.com/questions/8936/us-workforce-as-it-specialists-in-2050/"
648- question = MetaculusClient . dev ().get_question_by_url (url )
658+ question = MetaculusClient ().get_question_by_url (url )
649659 assert isinstance (question , NumericQuestion )
650660 percentiles = [
651661 Percentile (percentile = 0.18 , value = - 10 ),
@@ -660,7 +670,7 @@ def test_forecast_log_scaled_out_of_bounds(self) -> None:
660670
661671 def test_forecast_discrete (self ) -> None :
662672 url = "https://dev.metaculus.com/c/diffusion-community/38880/how-many-us-labor-strikes-due-to-ai-in-2029/"
663- question = MetaculusClient . dev ().get_question_by_url (url )
673+ question = MetaculusClient ().get_question_by_url (url )
664674 assert isinstance (question , DiscreteQuestion )
665675 percentiles = [
666676 Percentile (percentile = 0.25 , value = 2 ),
@@ -675,7 +685,7 @@ def test_forecast_discrete(self) -> None:
675685 def test_forecast_discrete_high_density (self ) -> None :
676686 # TODO: The standardization does not work right here
677687 url = "https://dev.metaculus.com/c/diffusion-community/38880/how-many-us-labor-strikes-due-to-ai-in-2029/"
678- question = MetaculusClient . dev ().get_question_by_url (url )
688+ question = MetaculusClient ().get_question_by_url (url )
679689 assert isinstance (question , DiscreteQuestion )
680690 percentiles = [
681691 Percentile (percentile = 0.01 , value = 2.8999999 ),
@@ -699,7 +709,7 @@ def test_discrete_forecast_repeated_value(self) -> None:
699709 Percentile (value = 4 , percentile = 0.8 ),
700710 Percentile (value = 4 , percentile = 0.9 ),
701711 ]
702- question = MetaculusClient . dev ().get_question_by_url (url )
712+ question = MetaculusClient ().get_question_by_url (url )
703713 assert isinstance (question , DiscreteQuestion )
704714 self ._check_cdf_processes_and_posts_correctly (
705715 percentiles , question , standardize_cdf = False
@@ -710,7 +720,7 @@ def test_discrete_forecast_repeated_value(self) -> None:
710720
711721 def test_forecast_regular_numeric (self ) -> None :
712722 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
713- question = MetaculusClient . dev ().get_question_by_url (url )
723+ question = MetaculusClient ().get_question_by_url (url )
714724 assert isinstance (question , NumericQuestion )
715725 percentiles = [
716726 Percentile (percentile = 0.049 , value = - 50 ),
@@ -726,7 +736,7 @@ def test_forecast_regular_numeric(self) -> None:
726736
727737 def test_numeric_forecast_all_repeated_values (self ) -> None :
728738 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
729- question = MetaculusClient . dev ().get_question_by_url (url )
739+ question = MetaculusClient ().get_question_by_url (url )
730740 assert isinstance (question , NumericQuestion )
731741 valid_percentiles = [
732742 Percentile (value = 11 , percentile = 0.1 ),
@@ -740,7 +750,7 @@ def test_numeric_forecast_all_repeated_values(self) -> None:
740750
741751 def test_numeric_fully_out_of_bounds (self ) -> None :
742752 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
743- question = MetaculusClient . dev ().get_question_by_url (url )
753+ question = MetaculusClient ().get_question_by_url (url )
744754 assert isinstance (question , NumericQuestion )
745755 percentiles = [
746756 Percentile (percentile = 0.049 , value = 5000 ),
@@ -762,7 +772,7 @@ def test_numeric_fully_out_of_bounds(self) -> None:
762772
763773 def test_numeric_in_but_far_exceeding_bounds (self ) -> None :
764774 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
765- question = MetaculusClient . dev ().get_question_by_url (url )
775+ question = MetaculusClient ().get_question_by_url (url )
766776 assert isinstance (question , NumericQuestion )
767777 percentiles = [
768778 Percentile (percentile = 0.25 , value = 100 ),
@@ -775,7 +785,7 @@ def test_numeric_in_but_far_exceeding_bounds(self) -> None:
775785
776786 def test_numeric_exceeding_bounds (self ) -> None :
777787 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
778- question = MetaculusClient . dev ().get_question_by_url (url )
788+ question = MetaculusClient ().get_question_by_url (url )
779789 assert isinstance (question , NumericQuestion )
780790 percentiles = [
781791 Percentile (percentile = 0.25 , value = 100 ),
@@ -792,7 +802,7 @@ def test_numeric_exceeding_bounds(self) -> None:
792802
793803 def test_numeric_high_density_forecast_in_middle (self ) -> None :
794804 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
795- question = MetaculusClient . dev ().get_question_by_url (url )
805+ question = MetaculusClient ().get_question_by_url (url )
796806 assert isinstance (question , NumericQuestion )
797807 percentiles = [
798808 Percentile (percentile = 0.1 , value = 249.999 ),
@@ -808,7 +818,7 @@ def test_numeric_high_density_forecast_in_middle(self) -> None:
808818
809819 def test_numeric_high_density_forecast_on_edge (self ) -> None :
810820 url = "https://dev.metaculus.com/questions/7093/australian-greenhouse-gas-emissions-in-2050/"
811- question = MetaculusClient . dev ().get_question_by_url (url )
821+ question = MetaculusClient ().get_question_by_url (url )
812822 assert isinstance (question , NumericQuestion )
813823 percentiles = [
814824 Percentile (percentile = 0.01 , value = - 50.0001 ),
@@ -826,7 +836,7 @@ async def test_conditional_question(self) -> None:
826836 api_filter = ApiFilter (
827837 allowed_types = ["conditional" ], allowed_subquestion_types = ["binary" ]
828838 )
829- questions = await MetaculusClient . dev ().get_questions_matching_filter (
839+ questions = await MetaculusClient ().get_questions_matching_filter (
830840 api_filter = api_filter ,
831841 num_questions = 20 ,
832842 )
@@ -856,12 +866,12 @@ def _check_cdf_processes_and_posts_correctly(
856866 percentiles , question , standardize_cdf = standardize_cdf
857867 )
858868 assert question .id_of_question is not None
859- MetaculusClient . dev ().post_numeric_question_prediction (
869+ MetaculusClient ().post_numeric_question_prediction (
860870 question .id_of_question ,
861871 [p .percentile for p in numeric_distribution .get_cdf ()],
862872 )
863873 assert question .id_of_post is not None
864- MetaculusClient . dev ().post_question_comment (
874+ MetaculusClient ().post_question_comment (
865875 question .id_of_post ,
866876 f"Testing prediction edge cases. Declared percentiles: { percentiles } " ,
867877 )
0 commit comments