From 4c1489096dcfdbf3aaa8ad28eae9298de9579f9e Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 12 Aug 2015 15:29:12 -0400 Subject: [PATCH] De-lint. Note that splitting up the field handling into separate methods is arbitrary, to work around pylint's arbirary 'too-many-branches' opinion. --- gcloud/bigquery/job.py | 39 ++++++++++++++++--------------- gcloud/bigquery/table.py | 1 + gcloud/bigquery/test_job.py | 46 ++++++++++++++++++++++--------------- 3 files changed, 49 insertions(+), 37 deletions(-) diff --git a/gcloud/bigquery/job.py b/gcloud/bigquery/job.py index 3a19f46162354..1b1dc1cc2dce6 100644 --- a/gcloud/bigquery/job.py +++ b/gcloud/bigquery/job.py @@ -570,24 +570,7 @@ def _require_client(self, client): client = self._client return client - def _build_resource(self): - """Generate a resource for ``begin``.""" - resource = { - 'jobReference': { - 'projectId': self.project, - 'jobId': self.name, - }, - 'configuration': { - 'sourceUris': self.source_uris, - 'destinationTable': { - 'projectId': self.destination.project, - 'datasetId': self.destination.dataset_name, - 'tableId': self.destination.name, - }, - 'load': {}, - }, - } - configuration = resource['configuration']['load'] + def _populate_config_resource(self, configuration): if self.allow_jagged_rows is not None: configuration['allowJaggedRows'] = self.allow_jagged_rows @@ -612,6 +595,26 @@ def _build_resource(self): if self.write_disposition is not None: configuration['writeDisposition'] = self.write_disposition + def _build_resource(self): + """Generate a resource for ``begin``.""" + resource = { + 'jobReference': { + 'projectId': self.project, + 'jobId': self.name, + }, + 'configuration': { + 'sourceUris': self.source_uris, + 'destinationTable': { + 'projectId': self.destination.project, + 'datasetId': self.destination.dataset_name, + 'tableId': self.destination.name, + }, + 'load': {}, + }, + } + configuration = resource['configuration']['load'] + self._populate_config_resource(configuration) + if len(self.schema) > 0: configuration['schema'] = { 'fields': _build_schema_resource(self.schema)} diff --git a/gcloud/bigquery/table.py b/gcloud/bigquery/table.py index 7a0aa42f980a6..838e2c8b128e4 100644 --- a/gcloud/bigquery/table.py +++ b/gcloud/bigquery/table.py @@ -692,6 +692,7 @@ def insert_data(self, return errors + def _parse_schema_resource(info): """Parse a resource fragment into a schema field. diff --git a/gcloud/bigquery/test_job.py b/gcloud/bigquery/test_job.py index 69fdcb00320b1..befa788024b05 100644 --- a/gcloud/bigquery/test_job.py +++ b/gcloud/bigquery/test_job.py @@ -109,10 +109,7 @@ def _verifyReadonlyResourceProperties(self, job, resource): else: self.assertEqual(job.user_email, None) - def _verifyResourceProperties(self, job, resource): - self._verifyReadonlyResourceProperties(job, resource) - - config = resource.get('configuration', {}).get('load') + def _verifyBooleanConfigProperties(self, job, config): if 'allowJaggedRows' in config: self.assertEqual(job.allow_jagged_rows, config['allowJaggedRows']) @@ -123,6 +120,13 @@ def _verifyResourceProperties(self, job, resource): config['allowQuotedNewlines']) else: self.assertTrue(job.allow_quoted_newlines is None) + if 'ignoreUnknownValues' in config: + self.assertEqual(job.ignore_unknown_values, + config['ignoreUnknownValues']) + else: + self.assertTrue(job.ignore_unknown_values is None) + + def _verifyEnumConfigProperties(self, job, config): if 'createDisposition' in config: self.assertEqual(job.create_disposition, config['createDisposition']) @@ -133,16 +137,30 @@ def _verifyResourceProperties(self, job, resource): config['encoding']) else: self.assertTrue(job.encoding is None) + if 'sourceFormat' in config: + self.assertEqual(job.source_format, + config['sourceFormat']) + else: + self.assertTrue(job.source_format is None) + if 'writeDisposition' in config: + self.assertEqual(job.write_disposition, + config['writeDisposition']) + else: + self.assertTrue(job.write_disposition is None) + + def _verifyResourceProperties(self, job, resource): + self._verifyReadonlyResourceProperties(job, resource) + + config = resource.get('configuration', {}).get('load') + + self._verifyBooleanConfigProperties(job, config) + self._verifyEnumConfigProperties(job, config) + if 'fieldDelimiter' in config: self.assertEqual(job.field_delimiter, config['fieldDelimiter']) else: self.assertTrue(job.field_delimiter is None) - if 'ignoreUnknownValues' in config: - self.assertEqual(job.ignore_unknown_values, - config['ignoreUnknownValues']) - else: - self.assertTrue(job.ignore_unknown_values is None) if 'maxBadRecords' in config: self.assertEqual(job.max_bad_records, config['maxBadRecords']) @@ -158,16 +176,6 @@ def _verifyResourceProperties(self, job, resource): config['skipLeadingRows']) else: self.assertTrue(job.skip_leading_rows is None) - if 'sourceFormat' in config: - self.assertEqual(job.source_format, - config['sourceFormat']) - else: - self.assertTrue(job.source_format is None) - if 'writeDisposition' in config: - self.assertEqual(job.write_disposition, - config['writeDisposition']) - else: - self.assertTrue(job.write_disposition is None) def test_ctor(self): client = _Client(self.PROJECT)