Esempio n. 1
0
def players_advanced_season_totals(season_end_year,
                                   include_combined_values=False,
                                   output_type=None,
                                   output_file_path=None,
                                   output_write_option=None,
                                   json_options=None):
    try:
        http_service = HTTPService(parser=ParserService())
        values = http_service.players_advanced_season_totals(
            season_end_year, include_combined_values=include_combined_values)
    except requests.exceptions.HTTPError as http_error:
        if http_error.response.status_code == requests.codes.not_found:
            raise InvalidSeason(season_end_year=season_end_year)
        else:
            raise http_error
    options = OutputOptions.of(file_options=FileOptions.of(
        path=output_file_path, mode=output_write_option),
                               output_type=output_type,
                               json_options=json_options,
                               csv_options={
                                   "column_names":
                                   PLAYER_ADVANCED_SEASON_TOTALS_COLUMN_NAMES
                               })
    output_service = OutputService(
        json_writer=JSONWriter(value_formatter=BasketballReferenceJSONEncoder),
        csv_writer=CSVWriter(value_formatter=format_value))
    return output_service.output(data=values, options=options)
Esempio n. 2
0
def player_box_scores(day,
                      month,
                      year,
                      output_type=None,
                      output_file_path=None,
                      output_write_option=None,
                      json_options=None):
    try:
        http_service = HTTPService(parser=ParserService())
        values = http_service.player_box_scores(day=day,
                                                month=month,
                                                year=year)
    except requests.exceptions.HTTPError as http_error:
        if http_error.response.status_code == requests.codes.not_found:
            raise InvalidDate(day=day, month=month, year=year)
        else:
            raise http_error

    options = OutputOptions.of(
        file_options=FileOptions.of(path=output_file_path,
                                    mode=output_write_option),
        output_type=output_type,
        json_options=json_options,
        csv_options={"column_names": BOX_SCORE_COLUMN_NAMES})
    output_service = OutputService(
        json_writer=JSONWriter(value_formatter=BasketballReferenceJSONEncoder),
        csv_writer=CSVWriter(value_formatter=format_value))
    return output_service.output(data=values, options=options)
Esempio n. 3
0
def regular_season_player_box_scores(player_identifier,
                                     season_end_year,
                                     output_type=None,
                                     output_file_path=None,
                                     output_write_option=None,
                                     json_options=None):
    try:
        http_service = HTTPService(parser=ParserService())
        values = http_service.regular_season_player_box_scores(
            player_identifier=player_identifier,
            season_end_year=season_end_year,
        )
    except requests.exceptions.HTTPError as http_error:
        if http_error.response.status_code == requests.codes.internal_server_error \
                or http_error.response.status_code == requests.codes.not_found:
            raise InvalidPlayerAndSeason(player_identifier=player_identifier,
                                         season_end_year=season_end_year)
        else:
            raise http_error
    options = OutputOptions.of(
        file_options=FileOptions.of(path=output_file_path,
                                    mode=output_write_option),
        output_type=output_type,
        json_options=json_options,
        csv_options={"column_names": PLAYER_SEASON_BOX_SCORE_COLUMN_NAMES})
    output_service = OutputService(
        json_writer=JSONWriter(value_formatter=BasketballReferenceJSONEncoder),
        csv_writer=CSVWriter(value_formatter=format_value))
    return output_service.output(data=values, options=options)
 def test_output_json_when_output_write_option_is_none_and_no_custom_options(
         self):
     options = OutputOptions(
         output_type=OutputType.JSON,
         file_options=FileOptions(path=self.output_file_path, mode=None),
         formatting_options={},
     )
     self.output_service.output(data=self.values, options=options)
     self.json_writer.write.assert_called_once_with(data=self.values,
                                                    options=options)
    def test_output_csv_when_output_write_option_is_append_and_no_custom_options(
            self):
        options = OutputOptions(output_type=OutputType.CSV,
                                file_options=FileOptions(
                                    path=self.output_file_path,
                                    mode=OutputWriteOption.APPEND),
                                formatting_options={})

        self.output_service.output(data=self.values, options=options)
        self.csv_writer.write.assert_called_once_with(data=self.values,
                                                      options=options)
 def test_return_values_when_output_type_is_none(self):
     self.assertEqual(
         self.values,
         self.output_service.output(
             data=self.values,
             options=OutputOptions(
                 file_options=FileOptions.of(),
                 formatting_options={},
                 output_type=None,
             ),
         ),
     )
 def test_raise_error_when_outputting_csv_but_unable_to_write_to_file(self):
     options = OutputOptions(output_type="jaebaebae",
                             file_options=FileOptions(
                                 path=self.output_file_path,
                                 mode=OutputWriteOption.APPEND),
                             formatting_options={})
     self.assertRaisesRegex(
         ValueError,
         "Unknown output type: jaebaebae",
         self.output_service.output,
         data=self.values,
         options=options,
     )
    def test_output_json_when_output_write_option_is_append_and_custom_options(
            self):
        options = OutputOptions(output_type=OutputType.JSON,
                                file_options=FileOptions(
                                    path=self.output_file_path,
                                    mode=OutputWriteOption.APPEND),
                                formatting_options={
                                    "jae": "baebae",
                                    "bae": "jadley",
                                })

        self.output_service.output(data=self.values, options=options)
        self.json_writer.write.assert_called_once_with(data=self.values,
                                                       options=options)
Esempio n. 9
0
 def test_header_is_written(self, mock_csv_dict_writer):
     with mock.patch("builtins.open", mock.mock_open()):
         mock_csv_dict_writer.return_value = self.csv_dict_writer
         self.writer.write(
             data=self.DATA,
             options=OutputOptions(
                 file_options=FileOptions(
                     path="some file path",
                     mode=OutputWriteOption.WRITE,
                 ),
                 formatting_options={"column_names": self.COLUMN_NAMES},
                 output_type=OutputType.CSV,
             ),
         )
         self.csv_dict_writer.writeheader.assert_called_once_with()
Esempio n. 10
0
 def test_file_and_columns_are_used_by_writer(self, mock_csv_dict_writer):
     with mock.patch("builtins.open", mock.mock_open()) as mock_file:
         mock_csv_dict_writer.return_value = self.csv_dict_writer
         self.writer.write(
             data=self.DATA,
             options=OutputOptions(
                 file_options=FileOptions(
                     path="some file path",
                     mode=OutputWriteOption.WRITE,
                 ),
                 formatting_options={"column_names": self.COLUMN_NAMES},
                 output_type=OutputType.CSV,
             ),
         )
         mock_csv_dict_writer.assert_called_with(
             mock_file(), fieldnames=self.COLUMN_NAMES)
Esempio n. 11
0
def search(term,
           output_type=None,
           output_file_path=None,
           output_write_option=None,
           json_options=None):
    http_service = HTTPService(parser=ParserService())
    values = http_service.search(term=term)
    options = OutputOptions.of(
        file_options=FileOptions.of(path=output_file_path,
                                    mode=output_write_option),
        output_type=output_type,
        json_options=json_options,
        csv_options={"column_names": SEARCH_RESULTS_COLUMN_NAMES})
    output_service = OutputService(
        json_writer=JSONWriter(value_formatter=BasketballReferenceJSONEncoder),
        csv_writer=SearchCSVWriter(value_formatter=format_value))
    return output_service.output(data=values, options=options)
Esempio n. 12
0
 def test_opens_correct_file(self, mock_csv_dict_writer):
     with mock.patch("builtins.open", mock.mock_open()) as mock_file:
         mock_csv_dict_writer.return_value = self.csv_dict_writer
         self.writer.write(
             data=self.DATA,
             options=OutputOptions(
                 file_options=FileOptions(
                     path="some file path",
                     mode=OutputWriteOption.WRITE,
                 ),
                 formatting_options={"column_names": self.COLUMN_NAMES},
                 output_type=OutputType.CSV,
             ),
         )
         mock_file.assert_called_with("some file path",
                                      OutputWriteOption.WRITE.value,
                                      newline="",
                                      encoding="utf8")
Esempio n. 13
0
def standings(season_end_year,
              output_type=None,
              output_file_path=None,
              output_write_option=None,
              json_options=None):
    try:
        http_service = HTTPService(parser=ParserService())
        values = http_service.standings(season_end_year=season_end_year)
    except requests.exceptions.HTTPError as http_error:
        if http_error.response.status_code == requests.codes.not_found:
            raise InvalidSeason(season_end_year=season_end_year)
        else:
            raise http_error
    options = OutputOptions.of(
        file_options=FileOptions.of(path=output_file_path,
                                    mode=output_write_option),
        output_type=output_type,
        json_options=json_options,
        csv_options={"column_names": STANDINGS_COLUMNS_NAMES})
    output_service = OutputService(
        json_writer=JSONWriter(value_formatter=BasketballReferenceJSONEncoder),
        csv_writer=CSVWriter(value_formatter=format_value))
    return output_service.output(data=values, options=options)
Esempio n. 14
0
 def test_should_write_to_file_is_true_when_file_path_is_not_none_but_mode_is_none(
         self):
     self.assertTrue(
         FileOptions.of(path="some file path",
                        mode=None).should_write_to_file)
Esempio n. 15
0
 def test_two_options_with_same_properties_are_equivalent(self):
     self.assertEqual(FileOptions.of(), FileOptions.of())
Esempio n. 16
0
 def test_two_options_with_same_properties_except_file_path_are_not_equivalent(
         self):
     self.assertNotEqual(FileOptions.of(path="some file path"),
                         FileOptions.of())
Esempio n. 17
0
 def test_two_options_with_same_properties_except_mode_are_not_equivalent(
         self):
     self.assertNotEqual(FileOptions.of(mode="some mode"), FileOptions.of())
Esempio n. 18
0
 def test_should_write_to_file_is_false_when_type_is_none(self):
     self.assertFalse(FileOptions.of().should_write_to_file)
Esempio n. 19
0
 def test_should_write_to_file_is_false_when_nothing_is_defined(self):
     self.assertFalse(FileOptions.of().should_write_to_file)
Esempio n. 20
0
 def test_should_write_to_file_is_true_when_output_type_is_not_none_and_file_path_is_not_none_and_mode_is_not_none(
         self):
     self.assertTrue(
         FileOptions.of(path="some file path",
                        mode="some mode").should_write_to_file)