From f0c7ef4acee4118e9aee77070d927a8d79003d7c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jules=20Ch=C3=A9ron?= <jules.cheron@gmail.com>
Date: Tue, 22 Aug 2023 20:30:35 +0200
Subject: [PATCH 1/2] fix: return `str` instead of `urllib3.HTTPResponse` for
 `InfluxDBClient.QueryAPI.query_raw`

---
 CHANGELOG.md                        | 22 ++++++++++++++++++++++
 influxdb_client/client/query_api.py |  5 +++--
 tests/test_InfluxDBClient.py        |  4 ++--
 3 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f7973f1..4fb471cb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,33 @@
 ## 1.39.0 [unreleased]
 
+### Breaking Changes
+
+1. [#569](https://github.com/influxdata/influxdb-client-python/pull/569): Return `str` instead of `urllib3.HTTPResponse` for `InfluxDBClient.QueryAPI.query_raw`.
+
+This fixes `InfluxDBClient.query_raw` that returned the wrong type based on the documentation.
+
+The async version `InfluxDBClientAsync` is not affected.
+
+To make your code compatible with this version, you can remove the step of retrieving the response content:
+
+```diff
+from influxdb_client.client import InfluxDBClient
+
+with InfluxDBClient(url="http://localhost:8086", token="my-token", org="my-org") as client:
+    query = "..."
+    result = client.query_raw(query=query)
+-   content = result.data.decode("utf8")
++   content = result
+```
+
+
 ## 1.38.0 [2023-10-02]
 
 ### Bug Fixes
 1. [#601](https://github.com/influxdata/influxdb-client-python/pull/601): Use HTTResponse.headers to clear deprecation warning [urllib3]
 1. [#610](https://github.com/influxdata/influxdb-client-python/pull/601): Use iloc to clear deprecation warning
 
+
 ### Documentation
 1. [#566](https://github.com/influxdata/influxdb-client-python/pull/566): Fix Sphinx documentation build and add support `.readthedocs.yml` V2 configuration file
 
diff --git a/influxdb_client/client/query_api.py b/influxdb_client/client/query_api.py
index f1df2041..a6d89b1f 100644
--- a/influxdb_client/client/query_api.py
+++ b/influxdb_client/client/query_api.py
@@ -9,6 +9,7 @@
 from influxdb_client import Dialect
 from influxdb_client.client._base import _BaseQueryApi
 from influxdb_client.client.flux_table import FluxRecord, TableList, CSVIterator
+from influxdb_client.rest import _UTF_8_encoding
 
 
 class QueryOptions(object):
@@ -121,8 +122,8 @@ def query_raw(self, query: str, org=None, dialect=_BaseQueryApi.default_dialect,
         org = self._org_param(org)
         result = self._query_api.post_query(org=org, query=self._create_query(query, dialect, params), async_req=False,
                                             _preload_content=False)
-
-        return result
+        raw_bytes = result.data
+        return raw_bytes.decode(_UTF_8_encoding)
 
     def query(self, query: str, org=None, params: dict = None) -> TableList:
         """Execute synchronous Flux query and return result as a :class:`~influxdb_client.client.flux_table.FluxTable` list.
diff --git a/tests/test_InfluxDBClient.py b/tests/test_InfluxDBClient.py
index ca37291b..aea7c0ab 100644
--- a/tests/test_InfluxDBClient.py
+++ b/tests/test_InfluxDBClient.py
@@ -1,4 +1,3 @@
-import codecs
 import http.server
 import json
 import logging
@@ -346,7 +345,8 @@ def test_query_and_debug(self):
         self.assertIn("my-bucket", list(map(lambda record: record["name"], results[0].records)))
         # Query RAW
         results = self.client.query_api().query_raw("buckets()", "my-org")
-        self.assertIn("my-bucket", codecs.decode(results.data))
+        self.assertIn("my-bucket", results)
+        self.assertTrue(isinstance(results, str))
         # Bucket API
         results = self.client.buckets_api().find_buckets()
         self.assertIn("my-bucket", list(map(lambda bucket: bucket.name, results.buckets)))

From a05c5b03fc6ed34bc8b728b19d25e6e6b0d5d8ad Mon Sep 17 00:00:00 2001
From: Ales Pour <ales.pour@bonitoo.io>
Date: Mon, 29 Jan 2024 12:14:22 +0100
Subject: [PATCH 2/2] chore(build): trigger CI/CD pipeline