From 62a82820382a13857cb28ba6a61df7881d8645df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Chr=C3=A1stek?= Date: Fri, 29 Nov 2024 15:13:49 +0100 Subject: [PATCH 1/2] feat(api): Add Pre-Translate Efficiency Report --- crowdin_api/api_resources/reports/enums.py | 1 + crowdin_api/api_resources/reports/resource.py | 70 +++++++++++ .../reports/tests/test_reports_resources.py | 116 ++++++++++++++++++ 3 files changed, 187 insertions(+) diff --git a/crowdin_api/api_resources/reports/enums.py b/crowdin_api/api_resources/reports/enums.py index a3f5ef6..b44db09 100644 --- a/crowdin_api/api_resources/reports/enums.py +++ b/crowdin_api/api_resources/reports/enums.py @@ -14,6 +14,7 @@ class ScopeType(Enum): class ReportName(Enum): + PRE_TRANSLATE_EFFICIENCY = "pre-translate-efficiency" COSTS_ESTIMATION = "costs-estimation" TRANSLATION_COSTS = "translation-costs" TOP_MEMBERS = "top-members" diff --git a/crowdin_api/api_resources/reports/resource.py b/crowdin_api/api_resources/reports/resource.py index 5d5e957..11b390b 100644 --- a/crowdin_api/api_resources/reports/resource.py +++ b/crowdin_api/api_resources/reports/resource.py @@ -160,6 +160,76 @@ def generate_contribution_raw_data_report( }, ) + def generate_pre_translate_efficiency_general_report( + self, + projectId: Optional[int] = None, + unit: Optional[Unit] = None, + format: Optional[Format] = None, + postEditingCategories: Optional[Iterable[str]] = None, + languageId: Optional[str] = None, + dateFrom: Optional[datetime] = None, + dateTo: Optional[datetime] = None, + ): + """ + Generate Report. + + Link to documentation: + https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post + + Link to documentation for enterprise: + https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post + """ + + projectId = projectId or self.get_project_id() + + return self.generate_report( + projectId=projectId, + request_data={ + "name": "pre-translate-efficiency", + "schema": { + "unit": unit, + "format": format, + "postEditingCategories": postEditingCategories, + "languageId": languageId, + "dateFrom": dateFrom, + "dateTo": dateTo, + }, + }, + ) + + def generate_pre_translate_efficiency_by_task_report( + self, + projectId: Optional[int] = None, + unit: Optional[Unit] = None, + format: Optional[Format] = None, + postEditingCategories: Optional[Iterable[str]] = None, + taskId: Optional[int] = None, + ): + """ + Generate Report. + + Link to documentation: + https://developer.crowdin.com/api/v2/#operation/api.projects.reports.post + + Link to documentation for enterprise: + https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.reports.post + """ + + projectId = projectId or self.get_project_id() + + return self.generate_report( + projectId=projectId, + request_data={ + "name": "pre-translate-efficiency", + "schema": { + "unit": unit, + "format": format, + "postEditingCategories": postEditingCategories, + "taskId": taskId, + }, + }, + ) + def generate_costs_estimation_post_editing_general_report( self, base_rates: BaseRates, diff --git a/crowdin_api/api_resources/reports/tests/test_reports_resources.py b/crowdin_api/api_resources/reports/tests/test_reports_resources.py index 6ddd7e1..69c78f7 100644 --- a/crowdin_api/api_resources/reports/tests/test_reports_resources.py +++ b/crowdin_api/api_resources/reports/tests/test_reports_resources.py @@ -633,6 +633,122 @@ def test_generate_contribution_raw_data_report( request_data={"name": "contribution-raw-data", "schema": schema}, ) + @pytest.mark.parametrize( + "in_params, schema", + [ + ( + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": ["0-20", "20-50"], + "languageId": "uk", + "dateFrom": datetime(year=1988, month=1, day=4), + "dateTo": datetime(year=2015, month=10, day=13), + }, + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": ["0-20", "20-50"], + "languageId": "uk", + "dateFrom": datetime(year=1988, month=1, day=4), + "dateTo": datetime(year=2015, month=10, day=13), + }, + ), + ( + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "languageId": "uk", + "dateFrom": datetime(year=1988, month=1, day=4), + "dateTo": datetime(year=2015, month=10, day=13), + }, + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": None, + "languageId": "uk", + "dateFrom": datetime(year=1988, month=1, day=4), + "dateTo": datetime(year=2015, month=10, day=13), + }, + ) + ], + ) + @mock.patch("crowdin_api.api_resources.reports.resource.ReportsResource.generate_report") + def test_generate_pre_translate_efficiency_general_report( + self, m_generate_report, in_params, schema, base_absolut_url + ): + m_generate_report.return_value = "response" + + resource = self.get_resource(base_absolut_url) + assert ( + resource.generate_pre_translate_efficiency_general_report( + projectId=1, + **in_params + ) == "response" + ) + m_generate_report.assert_called_once_with( + projectId=1, + request_data={ + "name": "pre-translate-efficiency", + "schema": schema + } + ) + + @pytest.mark.parametrize( + "in_params, schema", + [ + ( + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": ["0-20", "20-50"], + "taskId": 1 + }, + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": ["0-20", "20-50"], + "taskId": 1 + } + ), + ( + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "taskId": 1 + }, + { + "unit": Unit.WORDS, + "format": Format.XLSX, + "postEditingCategories": None, + "taskId": 1 + } + ) + ] + ) + @mock.patch( + "crowdin_api.api_resources.reports.resource.ReportsResource.generate_report" + ) + def test_generate_pre_translate_efficiency_by_task_report( + self, m_generate_report, in_params, schema, base_absolut_url + ): + m_generate_report.return_value = "response" + + resource = self.get_resource(base_absolut_url) + assert ( + resource.generate_pre_translate_efficiency_by_task_report( + projectId=1, + **in_params + ) == "response" + ) + m_generate_report.assert_called_once_with( + projectId=1, + request_data={ + "name": "pre-translate-efficiency", + "schema": schema + } + ) + @pytest.mark.parametrize( "in_params, schema", [ From 061dd296af452ae0b505be470084548641b22dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Chr=C3=A1stek?= Date: Mon, 6 Jan 2025 14:56:34 +0100 Subject: [PATCH 2/2] Rename report efficiency -> accuracy --- crowdin_api/api_resources/reports/enums.py | 2 +- crowdin_api/api_resources/reports/resource.py | 8 ++++---- .../reports/tests/test_reports_resources.py | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/crowdin_api/api_resources/reports/enums.py b/crowdin_api/api_resources/reports/enums.py index b44db09..8888004 100644 --- a/crowdin_api/api_resources/reports/enums.py +++ b/crowdin_api/api_resources/reports/enums.py @@ -14,7 +14,7 @@ class ScopeType(Enum): class ReportName(Enum): - PRE_TRANSLATE_EFFICIENCY = "pre-translate-efficiency" + PRE_TRANSLATE_ACCURACY = "pre-translate-accuracy" COSTS_ESTIMATION = "costs-estimation" TRANSLATION_COSTS = "translation-costs" TOP_MEMBERS = "top-members" diff --git a/crowdin_api/api_resources/reports/resource.py b/crowdin_api/api_resources/reports/resource.py index 11b390b..f0ba9ea 100644 --- a/crowdin_api/api_resources/reports/resource.py +++ b/crowdin_api/api_resources/reports/resource.py @@ -160,7 +160,7 @@ def generate_contribution_raw_data_report( }, ) - def generate_pre_translate_efficiency_general_report( + def generate_pre_translate_accuracy_general_report( self, projectId: Optional[int] = None, unit: Optional[Unit] = None, @@ -185,7 +185,7 @@ def generate_pre_translate_efficiency_general_report( return self.generate_report( projectId=projectId, request_data={ - "name": "pre-translate-efficiency", + "name": "pre-translate-accuracy", "schema": { "unit": unit, "format": format, @@ -197,7 +197,7 @@ def generate_pre_translate_efficiency_general_report( }, ) - def generate_pre_translate_efficiency_by_task_report( + def generate_pre_translate_accuracy_by_task_report( self, projectId: Optional[int] = None, unit: Optional[Unit] = None, @@ -220,7 +220,7 @@ def generate_pre_translate_efficiency_by_task_report( return self.generate_report( projectId=projectId, request_data={ - "name": "pre-translate-efficiency", + "name": "pre-translate-accuracy", "schema": { "unit": unit, "format": format, diff --git a/crowdin_api/api_resources/reports/tests/test_reports_resources.py b/crowdin_api/api_resources/reports/tests/test_reports_resources.py index 69c78f7..aed71b6 100644 --- a/crowdin_api/api_resources/reports/tests/test_reports_resources.py +++ b/crowdin_api/api_resources/reports/tests/test_reports_resources.py @@ -674,14 +674,14 @@ def test_generate_contribution_raw_data_report( ], ) @mock.patch("crowdin_api.api_resources.reports.resource.ReportsResource.generate_report") - def test_generate_pre_translate_efficiency_general_report( + def test_generate_pre_translate_accuracy_general_report( self, m_generate_report, in_params, schema, base_absolut_url ): m_generate_report.return_value = "response" resource = self.get_resource(base_absolut_url) assert ( - resource.generate_pre_translate_efficiency_general_report( + resource.generate_pre_translate_accuracy_general_report( projectId=1, **in_params ) == "response" @@ -689,7 +689,7 @@ def test_generate_pre_translate_efficiency_general_report( m_generate_report.assert_called_once_with( projectId=1, request_data={ - "name": "pre-translate-efficiency", + "name": "pre-translate-accuracy", "schema": schema } ) @@ -729,14 +729,14 @@ def test_generate_pre_translate_efficiency_general_report( @mock.patch( "crowdin_api.api_resources.reports.resource.ReportsResource.generate_report" ) - def test_generate_pre_translate_efficiency_by_task_report( + def test_generate_pre_translate_accuracy_by_task_report( self, m_generate_report, in_params, schema, base_absolut_url ): m_generate_report.return_value = "response" resource = self.get_resource(base_absolut_url) assert ( - resource.generate_pre_translate_efficiency_by_task_report( + resource.generate_pre_translate_accuracy_by_task_report( projectId=1, **in_params ) == "response" @@ -744,7 +744,7 @@ def test_generate_pre_translate_efficiency_by_task_report( m_generate_report.assert_called_once_with( projectId=1, request_data={ - "name": "pre-translate-efficiency", + "name": "pre-translate-accuracy", "schema": schema } )