We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Warning on OpenTelemetry when some attributes are not set
#### Environment details

  - OS type and version: Windows 10 21H2
  - Python version: `3.9.4`
  - pip version: `22.2.2`
  - `google-cloud-bigquery` version: `3.3.5`

#### Steps to reproduce

  1. Set up a query job with opentelemetry enabled
  2. See warning in the console: `Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types`

#### Code example

```python
import logging
from google.cloud import bigquery
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import (
    SimpleSpanProcessor,
    ConsoleSpanExporter,
)

provider = TracerProvider()
simple_processor = SimpleSpanProcessor(ConsoleSpanExporter())
provider.add_span_processor(simple_processor)
trace.set_tracer_provider(provider)

logging.basicConfig(level=10)

# Construct a BigQuery client object.
client = bigquery.Client()

query = "SELECT 1;"

query_job = client.query(query)
```
#### Stack trace
```
DEBUG:google.auth._default:Checking None for explicit credentials as part of auth process...
DEBUG:google.auth._default:Checking Cloud SDK credentials as part of auth process...
DEBUG:google.auth._default:Checking None for explicit credentials as part of auth process...
DEBUG:google.auth._default:Checking Cloud SDK credentials as part of auth process...
WARNING:opentelemetry.attributes:Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types
WARNING:opentelemetry.attributes:Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types
DEBUG:urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443
DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): bigquery.googleapis.com:443
DEBUG:urllib3.connectionpool:https://bigquery.googleapis.com:443 "POST /bigquery/v2/projects/my-project/jobs?prettyPrint=false HTTP/1.1" 200 None
{
    "name": "BigQuery.job.begin",
    "context": {
        "trace_id": "0x192a0e4ec554c63f68525922208fed88",
        "span_id": "0xfa29f0363122c4c4",
        "trace_state": "[]"
    },
    "kind": "SpanKind.INTERNAL",
    "parent_id": null,
    "start_time": "2022-10-12T09:41:57.259114Z",
    "end_time": "2022-10-12T09:41:57.934410Z",
    "status": {
        "status_code": "UNSET"
    },
    "attributes": {
        "db.system": "BigQuery",
        "db.name": "my-project",
        "job_id": "fc1581e3-708b-4b51-9a05-e3ad52c68dec",
        "hasErrors": false,
        "num_child_jobs": 0,
        "path": "/projects/my-project/jobs"
    },
    "events": [],
    "links": [],
    "resource": {
        "attributes": {
            "telemetry.sdk.language": "python",
            "telemetry.sdk.name": "opentelemetry",
            "telemetry.sdk.version": "1.13.0",
            "service.name": "unknown_service"
        },
        "schema_url": ""
    }
}
```
#### Analysis

Warnings appear when `location` and job `state` attributes are not set.



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `google/cloud/bigquery/opentelemetry_tracing.py`
Content:
```
1 # Copyright 2020 Google LLC
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #     http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 
15 import logging
16 from contextlib import contextmanager
17 from google.api_core.exceptions import GoogleAPICallError  # type: ignore
18 
19 logger = logging.getLogger(__name__)
20 try:
21     from opentelemetry import trace  # type: ignore
22     from opentelemetry.instrumentation.utils import http_status_to_status_code  # type: ignore
23     from opentelemetry.trace.status import Status  # type: ignore
24 
25     HAS_OPENTELEMETRY = True
26     _warned_telemetry = True
27 
28 except ImportError:
29     HAS_OPENTELEMETRY = False
30     _warned_telemetry = False
31 
32 _default_attributes = {
33     "db.system": "BigQuery"
34 }  # static, default values assigned to all spans
35 
36 
37 @contextmanager
38 def create_span(name, attributes=None, client=None, job_ref=None):
39     """Creates a ContextManager for a Span to be exported to the configured exporter.
40     If no configuration exists yields None.
41 
42         Args:
43             name (str): Name that will be set for the span being created
44             attributes (Optional[dict]):
45                 Additional attributes that pertain to
46                 the specific API call (i.e. not a default attribute)
47             client (Optional[google.cloud.bigquery.client.Client]):
48                 Pass in a Client object to extract any attributes that may be
49                 relevant to it and add them to the created spans.
50             job_ref (Optional[google.cloud.bigquery.job._AsyncJob])
51                 Pass in a _AsyncJob object to extract any attributes that may be
52                 relevant to it and add them to the created spans.
53 
54         Yields:
55             opentelemetry.trace.Span: Yields the newly created Span.
56 
57         Raises:
58             google.api_core.exceptions.GoogleAPICallError:
59                 Raised if a span could not be yielded or issue with call to
60                 OpenTelemetry.
61     """
62     global _warned_telemetry
63     final_attributes = _get_final_span_attributes(attributes, client, job_ref)
64     if not HAS_OPENTELEMETRY:
65         if not _warned_telemetry:
66             logger.debug(
67                 "This service is instrumented using OpenTelemetry. "
68                 "OpenTelemetry or one of its components could not be imported; "
69                 "please add compatible versions of opentelemetry-api and "
70                 "opentelemetry-instrumentation packages in order to get BigQuery "
71                 "Tracing data."
72             )
73             _warned_telemetry = True
74 
75         yield None
76         return
77     tracer = trace.get_tracer(__name__)
78 
79     # yield new span value
80     with tracer.start_as_current_span(name=name, attributes=final_attributes) as span:
81         try:
82             yield span
83         except GoogleAPICallError as error:
84             if error.code is not None:
85                 span.set_status(Status(http_status_to_status_code(error.code)))
86             raise
87 
88 
89 def _get_final_span_attributes(attributes=None, client=None, job_ref=None):
90     final_attributes = {}
91     final_attributes.update(_default_attributes.copy())
92     if client:
93         client_attributes = _set_client_attributes(client)
94         final_attributes.update(client_attributes)
95     if job_ref:
96         job_attributes = _set_job_attributes(job_ref)
97         final_attributes.update(job_attributes)
98     if attributes:
99         final_attributes.update(attributes)
100     return final_attributes
101 
102 
103 def _set_client_attributes(client):
104     return {"db.name": client.project, "location": client.location}
105 
106 
107 def _set_job_attributes(job_ref):
108     job_attributes = {
109         "db.name": job_ref.project,
110         "job_id": job_ref.job_id,
111         "state": job_ref.state,
112     }
113 
114     job_attributes["hasErrors"] = job_ref.error_result is not None
115 
116     if job_ref.created is not None:
117         job_attributes["timeCreated"] = job_ref.created.isoformat()
118 
119     if job_ref.started is not None:
120         job_attributes["timeStarted"] = job_ref.started.isoformat()
121 
122     if job_ref.ended is not None:
123         job_attributes["timeEnded"] = job_ref.ended.isoformat()
124 
125     if job_ref.location is not None:
126         job_attributes["location"] = job_ref.location
127 
128     if job_ref.parent_job_id is not None:
129         job_attributes["parent_job_id"] = job_ref.parent_job_id
130 
131     if job_ref.num_child_jobs is not None:
132         job_attributes["num_child_jobs"] = job_ref.num_child_jobs
133 
134     return job_attributes
135
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/google/cloud/bigquery/opentelemetry_tracing.py b/google/cloud/bigquery/opentelemetry_tracing.py
--- a/google/cloud/bigquery/opentelemetry_tracing.py
+++ b/google/cloud/bigquery/opentelemetry_tracing.py
@@ -97,6 +97,11 @@
         final_attributes.update(job_attributes)
     if attributes:
         final_attributes.update(attributes)
+
+    filtered = {k: v for k, v in final_attributes.items() if v is not None}
+    final_attributes.clear()
+    final_attributes.update(filtered)
+
     return final_attributes

{"golden_diff": "diff --git a/google/cloud/bigquery/opentelemetry_tracing.py b/google/cloud/bigquery/opentelemetry_tracing.py\n--- a/google/cloud/bigquery/opentelemetry_tracing.py\n+++ b/google/cloud/bigquery/opentelemetry_tracing.py\n@@ -97,6 +97,11 @@\n         final_attributes.update(job_attributes)\n     if attributes:\n         final_attributes.update(attributes)\n+\n+    filtered = {k: v for k, v in final_attributes.items() if v is not None}\n+    final_attributes.clear()\n+    final_attributes.update(filtered)\n+\n     return final_attributes\n", "issue": "Warning on OpenTelemetry when some attributes are not set\n#### Environment details\r\n\r\n  - OS type and version: Windows 10 21H2\r\n  - Python version: `3.9.4`\r\n  - pip version: `22.2.2`\r\n  - `google-cloud-bigquery` version: `3.3.5`\r\n\r\n#### Steps to reproduce\r\n\r\n  1. Set up a query job with opentelemetry enabled\r\n  2. See warning in the console: `Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types`\r\n\r\n#### Code example\r\n\r\n```python\r\nimport logging\r\nfrom google.cloud import bigquery\r\nfrom opentelemetry import trace\r\nfrom opentelemetry.sdk.trace import TracerProvider\r\nfrom opentelemetry.sdk.trace.export import (\r\n    SimpleSpanProcessor,\r\n    ConsoleSpanExporter,\r\n)\r\n\r\nprovider = TracerProvider()\r\nsimple_processor = SimpleSpanProcessor(ConsoleSpanExporter())\r\nprovider.add_span_processor(simple_processor)\r\ntrace.set_tracer_provider(provider)\r\n\r\nlogging.basicConfig(level=10)\r\n\r\n# Construct a BigQuery client object.\r\nclient = bigquery.Client()\r\n\r\nquery = \"SELECT 1;\"\r\n\r\nquery_job = client.query(query)\r\n```\r\n#### Stack trace\r\n```\r\nDEBUG:google.auth._default:Checking None for explicit credentials as part of auth process...\r\nDEBUG:google.auth._default:Checking Cloud SDK credentials as part of auth process...\r\nDEBUG:google.auth._default:Checking None for explicit credentials as part of auth process...\r\nDEBUG:google.auth._default:Checking Cloud SDK credentials as part of auth process...\r\nWARNING:opentelemetry.attributes:Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types\r\nWARNING:opentelemetry.attributes:Invalid type NoneType for attribute value. Expected one of ['bool', 'str', 'bytes', 'int', 'float'] or a sequence of those types\r\nDEBUG:urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)\r\nDEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token\r\nDEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443\r\nDEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 \"POST /token HTTP/1.1\" 200 None\r\nDEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): bigquery.googleapis.com:443\r\nDEBUG:urllib3.connectionpool:https://bigquery.googleapis.com:443 \"POST /bigquery/v2/projects/my-project/jobs?prettyPrint=false HTTP/1.1\" 200 None\r\n{\r\n    \"name\": \"BigQuery.job.begin\",\r\n    \"context\": {\r\n        \"trace_id\": \"0x192a0e4ec554c63f68525922208fed88\",\r\n        \"span_id\": \"0xfa29f0363122c4c4\",\r\n        \"trace_state\": \"[]\"\r\n    },\r\n    \"kind\": \"SpanKind.INTERNAL\",\r\n    \"parent_id\": null,\r\n    \"start_time\": \"2022-10-12T09:41:57.259114Z\",\r\n    \"end_time\": \"2022-10-12T09:41:57.934410Z\",\r\n    \"status\": {\r\n        \"status_code\": \"UNSET\"\r\n    },\r\n    \"attributes\": {\r\n        \"db.system\": \"BigQuery\",\r\n        \"db.name\": \"my-project\",\r\n        \"job_id\": \"fc1581e3-708b-4b51-9a05-e3ad52c68dec\",\r\n        \"hasErrors\": false,\r\n        \"num_child_jobs\": 0,\r\n        \"path\": \"/projects/my-project/jobs\"\r\n    },\r\n    \"events\": [],\r\n    \"links\": [],\r\n    \"resource\": {\r\n        \"attributes\": {\r\n            \"telemetry.sdk.language\": \"python\",\r\n            \"telemetry.sdk.name\": \"opentelemetry\",\r\n            \"telemetry.sdk.version\": \"1.13.0\",\r\n            \"service.name\": \"unknown_service\"\r\n        },\r\n        \"schema_url\": \"\"\r\n    }\r\n}\r\n```\r\n#### Analysis\r\n\r\nWarnings appear when `location` and job `state` attributes are not set.\r\n\r\n\n", "before_files": [{"content": "# Copyright 2020 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\nfrom contextlib import contextmanager\nfrom google.api_core.exceptions import GoogleAPICallError  # type: ignore\n\nlogger = logging.getLogger(__name__)\ntry:\n    from opentelemetry import trace  # type: ignore\n    from opentelemetry.instrumentation.utils import http_status_to_status_code  # type: ignore\n    from opentelemetry.trace.status import Status  # type: ignore\n\n    HAS_OPENTELEMETRY = True\n    _warned_telemetry = True\n\nexcept ImportError:\n    HAS_OPENTELEMETRY = False\n    _warned_telemetry = False\n\n_default_attributes = {\n    \"db.system\": \"BigQuery\"\n}  # static, default values assigned to all spans\n\n\n@contextmanager\ndef create_span(name, attributes=None, client=None, job_ref=None):\n    \"\"\"Creates a ContextManager for a Span to be exported to the configured exporter.\n    If no configuration exists yields None.\n\n        Args:\n            name (str): Name that will be set for the span being created\n            attributes (Optional[dict]):\n                Additional attributes that pertain to\n                the specific API call (i.e. not a default attribute)\n            client (Optional[google.cloud.bigquery.client.Client]):\n                Pass in a Client object to extract any attributes that may be\n                relevant to it and add them to the created spans.\n            job_ref (Optional[google.cloud.bigquery.job._AsyncJob])\n                Pass in a _AsyncJob object to extract any attributes that may be\n                relevant to it and add them to the created spans.\n\n        Yields:\n            opentelemetry.trace.Span: Yields the newly created Span.\n\n        Raises:\n            google.api_core.exceptions.GoogleAPICallError:\n                Raised if a span could not be yielded or issue with call to\n                OpenTelemetry.\n    \"\"\"\n    global _warned_telemetry\n    final_attributes = _get_final_span_attributes(attributes, client, job_ref)\n    if not HAS_OPENTELEMETRY:\n        if not _warned_telemetry:\n            logger.debug(\n                \"This service is instrumented using OpenTelemetry. \"\n                \"OpenTelemetry or one of its components could not be imported; \"\n                \"please add compatible versions of opentelemetry-api and \"\n                \"opentelemetry-instrumentation packages in order to get BigQuery \"\n                \"Tracing data.\"\n            )\n            _warned_telemetry = True\n\n        yield None\n        return\n    tracer = trace.get_tracer(__name__)\n\n    # yield new span value\n    with tracer.start_as_current_span(name=name, attributes=final_attributes) as span:\n        try:\n            yield span\n        except GoogleAPICallError as error:\n            if error.code is not None:\n                span.set_status(Status(http_status_to_status_code(error.code)))\n            raise\n\n\ndef _get_final_span_attributes(attributes=None, client=None, job_ref=None):\n    final_attributes = {}\n    final_attributes.update(_default_attributes.copy())\n    if client:\n        client_attributes = _set_client_attributes(client)\n        final_attributes.update(client_attributes)\n    if job_ref:\n        job_attributes = _set_job_attributes(job_ref)\n        final_attributes.update(job_attributes)\n    if attributes:\n        final_attributes.update(attributes)\n    return final_attributes\n\n\ndef _set_client_attributes(client):\n    return {\"db.name\": client.project, \"location\": client.location}\n\n\ndef _set_job_attributes(job_ref):\n    job_attributes = {\n        \"db.name\": job_ref.project,\n        \"job_id\": job_ref.job_id,\n        \"state\": job_ref.state,\n    }\n\n    job_attributes[\"hasErrors\"] = job_ref.error_result is not None\n\n    if job_ref.created is not None:\n        job_attributes[\"timeCreated\"] = job_ref.created.isoformat()\n\n    if job_ref.started is not None:\n        job_attributes[\"timeStarted\"] = job_ref.started.isoformat()\n\n    if job_ref.ended is not None:\n        job_attributes[\"timeEnded\"] = job_ref.ended.isoformat()\n\n    if job_ref.location is not None:\n        job_attributes[\"location\"] = job_ref.location\n\n    if job_ref.parent_job_id is not None:\n        job_attributes[\"parent_job_id\"] = job_ref.parent_job_id\n\n    if job_ref.num_child_jobs is not None:\n        job_attributes[\"num_child_jobs\"] = job_ref.num_child_jobs\n\n    return job_attributes\n", "path": "google/cloud/bigquery/opentelemetry_tracing.py"}], "after_files": [{"content": "# Copyright 2020 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nimport logging\nfrom contextlib import contextmanager\nfrom google.api_core.exceptions import GoogleAPICallError  # type: ignore\n\nlogger = logging.getLogger(__name__)\ntry:\n    from opentelemetry import trace  # type: ignore\n    from opentelemetry.instrumentation.utils import http_status_to_status_code  # type: ignore\n    from opentelemetry.trace.status import Status  # type: ignore\n\n    HAS_OPENTELEMETRY = True\n    _warned_telemetry = True\n\nexcept ImportError:\n    HAS_OPENTELEMETRY = False\n    _warned_telemetry = False\n\n_default_attributes = {\n    \"db.system\": \"BigQuery\"\n}  # static, default values assigned to all spans\n\n\n@contextmanager\ndef create_span(name, attributes=None, client=None, job_ref=None):\n    \"\"\"Creates a ContextManager for a Span to be exported to the configured exporter.\n    If no configuration exists yields None.\n\n        Args:\n            name (str): Name that will be set for the span being created\n            attributes (Optional[dict]):\n                Additional attributes that pertain to\n                the specific API call (i.e. not a default attribute)\n            client (Optional[google.cloud.bigquery.client.Client]):\n                Pass in a Client object to extract any attributes that may be\n                relevant to it and add them to the created spans.\n            job_ref (Optional[google.cloud.bigquery.job._AsyncJob])\n                Pass in a _AsyncJob object to extract any attributes that may be\n                relevant to it and add them to the created spans.\n\n        Yields:\n            opentelemetry.trace.Span: Yields the newly created Span.\n\n        Raises:\n            google.api_core.exceptions.GoogleAPICallError:\n                Raised if a span could not be yielded or issue with call to\n                OpenTelemetry.\n    \"\"\"\n    global _warned_telemetry\n    final_attributes = _get_final_span_attributes(attributes, client, job_ref)\n    if not HAS_OPENTELEMETRY:\n        if not _warned_telemetry:\n            logger.debug(\n                \"This service is instrumented using OpenTelemetry. \"\n                \"OpenTelemetry or one of its components could not be imported; \"\n                \"please add compatible versions of opentelemetry-api and \"\n                \"opentelemetry-instrumentation packages in order to get BigQuery \"\n                \"Tracing data.\"\n            )\n            _warned_telemetry = True\n\n        yield None\n        return\n    tracer = trace.get_tracer(__name__)\n\n    # yield new span value\n    with tracer.start_as_current_span(name=name, attributes=final_attributes) as span:\n        try:\n            yield span\n        except GoogleAPICallError as error:\n            if error.code is not None:\n                span.set_status(Status(http_status_to_status_code(error.code)))\n            raise\n\n\ndef _get_final_span_attributes(attributes=None, client=None, job_ref=None):\n    final_attributes = {}\n    final_attributes.update(_default_attributes.copy())\n    if client:\n        client_attributes = _set_client_attributes(client)\n        final_attributes.update(client_attributes)\n    if job_ref:\n        job_attributes = _set_job_attributes(job_ref)\n        final_attributes.update(job_attributes)\n    if attributes:\n        final_attributes.update(attributes)\n\n    filtered = {k: v for k, v in final_attributes.items() if v is not None}\n    final_attributes.clear()\n    final_attributes.update(filtered)\n\n    return final_attributes\n\n\ndef _set_client_attributes(client):\n    return {\"db.name\": client.project, \"location\": client.location}\n\n\ndef _set_job_attributes(job_ref):\n    job_attributes = {\n        \"db.name\": job_ref.project,\n        \"job_id\": job_ref.job_id,\n        \"state\": job_ref.state,\n    }\n\n    job_attributes[\"hasErrors\"] = job_ref.error_result is not None\n\n    if job_ref.created is not None:\n        job_attributes[\"timeCreated\"] = job_ref.created.isoformat()\n\n    if job_ref.started is not None:\n        job_attributes[\"timeStarted\"] = job_ref.started.isoformat()\n\n    if job_ref.ended is not None:\n        job_attributes[\"timeEnded\"] = job_ref.ended.isoformat()\n\n    if job_ref.location is not None:\n        job_attributes[\"location\"] = job_ref.location\n\n    if job_ref.parent_job_id is not None:\n        job_attributes[\"parent_job_id\"] = job_ref.parent_job_id\n\n    if job_ref.num_child_jobs is not None:\n        job_attributes[\"num_child_jobs\"] = job_ref.num_child_jobs\n\n    return job_attributes\n", "path": "google/cloud/bigquery/opentelemetry_tracing.py"}]}