pinecone.openapi_support.rest_aiohttp

  1import ssl
  2import certifi
  3import json
  4from .rest_utils import RestClientInterface, RESTResponse, raise_exceptions_or_return
  5from .configuration import Configuration
  6
  7
  8class AiohttpRestClient(RestClientInterface):
  9    def __init__(self, configuration: Configuration) -> None:
 10        try:
 11            import aiohttp
 12        except ImportError:
 13            raise ImportError(
 14                "Additional dependencies are required to use Pinecone with asyncio. Include these extra dependencies in your project by installing `pinecone[asyncio]`."
 15            ) from None
 16
 17        if configuration.ssl_ca_cert is not None:
 18            ca_certs = configuration.ssl_ca_cert
 19        else:
 20            ca_certs = certifi.where()
 21
 22        ssl_context = ssl.create_default_context(cafile=ca_certs)
 23
 24        conn = aiohttp.TCPConnector(verify_ssl=configuration.verify_ssl, ssl=ssl_context)
 25
 26        if configuration.proxy:
 27            self._session = aiohttp.ClientSession(connector=conn, proxy=configuration.proxy)
 28        else:
 29            self._session = aiohttp.ClientSession(connector=conn)
 30
 31    async def close(self):
 32        await self._session.close()
 33
 34    async def request(
 35        self,
 36        method,
 37        url,
 38        query_params=None,
 39        headers=None,
 40        body=None,
 41        post_params=None,
 42        _preload_content=True,
 43        _request_timeout=None,
 44    ):
 45        if method in ["POST", "PUT", "PATCH", "OPTIONS"] and ("Content-Type" not in headers):
 46            headers["Content-Type"] = "application/json"
 47
 48        if "application/x-ndjson" in headers.get("Content-Type", "").lower():
 49            ndjson_data = "\n".join(json.dumps(record) for record in body)
 50
 51            async with self._session.request(
 52                method, url, params=query_params, headers=headers, data=ndjson_data
 53            ) as resp:
 54                content = await resp.read()
 55                return raise_exceptions_or_return(
 56                    RESTResponse(resp.status, content, resp.headers, resp.reason)
 57                )
 58
 59        else:
 60            async with self._session.request(
 61                method, url, params=query_params, headers=headers, json=body
 62            ) as resp:
 63                content = await resp.read()
 64                return raise_exceptions_or_return(
 65                    RESTResponse(resp.status, content, resp.headers, resp.reason)
 66                )
 67
 68    async def GET(
 69        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
 70    ):
 71        return await self.request(
 72            "GET",
 73            url,
 74            headers=headers,
 75            _preload_content=_preload_content,
 76            _request_timeout=_request_timeout,
 77            query_params=query_params,
 78        )
 79
 80    async def HEAD(
 81        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
 82    ):
 83        return await self.request(
 84            "HEAD",
 85            url,
 86            headers=headers,
 87            _preload_content=_preload_content,
 88            _request_timeout=_request_timeout,
 89            query_params=query_params,
 90        )
 91
 92    async def OPTIONS(
 93        self,
 94        url,
 95        headers=None,
 96        query_params=None,
 97        post_params=None,
 98        body=None,
 99        _preload_content=True,
100        _request_timeout=None,
101    ):
102        return await self.request(
103            "OPTIONS",
104            url,
105            headers=headers,
106            query_params=query_params,
107            post_params=post_params,
108            _preload_content=_preload_content,
109            _request_timeout=_request_timeout,
110            body=body,
111        )
112
113    async def DELETE(
114        self,
115        url,
116        headers=None,
117        query_params=None,
118        body=None,
119        _preload_content=True,
120        _request_timeout=None,
121    ):
122        return await self.request(
123            "DELETE",
124            url,
125            headers=headers,
126            query_params=query_params,
127            _preload_content=_preload_content,
128            _request_timeout=_request_timeout,
129            body=body,
130        )
131
132    async def POST(
133        self,
134        url,
135        headers=None,
136        query_params=None,
137        post_params=None,
138        body=None,
139        _preload_content=True,
140        _request_timeout=None,
141    ):
142        return await self.request(
143            "POST",
144            url,
145            headers=headers,
146            query_params=query_params,
147            post_params=post_params,
148            _preload_content=_preload_content,
149            _request_timeout=_request_timeout,
150            body=body,
151        )
152
153    async def PUT(
154        self,
155        url,
156        headers=None,
157        query_params=None,
158        post_params=None,
159        body=None,
160        _preload_content=True,
161        _request_timeout=None,
162    ):
163        return await self.request(
164            "PUT",
165            url,
166            headers=headers,
167            query_params=query_params,
168            post_params=post_params,
169            _preload_content=_preload_content,
170            _request_timeout=_request_timeout,
171            body=body,
172        )
173
174    async def PATCH(
175        self,
176        url,
177        headers=None,
178        query_params=None,
179        post_params=None,
180        body=None,
181        _preload_content=True,
182        _request_timeout=None,
183    ):
184        return await self.request(
185            "PATCH",
186            url,
187            headers=headers,
188            query_params=query_params,
189            post_params=post_params,
190            _preload_content=_preload_content,
191            _request_timeout=_request_timeout,
192            body=body,
193        )
class AiohttpRestClient(pinecone.openapi_support.rest_utils.RestClientInterface):
  9class AiohttpRestClient(RestClientInterface):
 10    def __init__(self, configuration: Configuration) -> None:
 11        try:
 12            import aiohttp
 13        except ImportError:
 14            raise ImportError(
 15                "Additional dependencies are required to use Pinecone with asyncio. Include these extra dependencies in your project by installing `pinecone[asyncio]`."
 16            ) from None
 17
 18        if configuration.ssl_ca_cert is not None:
 19            ca_certs = configuration.ssl_ca_cert
 20        else:
 21            ca_certs = certifi.where()
 22
 23        ssl_context = ssl.create_default_context(cafile=ca_certs)
 24
 25        conn = aiohttp.TCPConnector(verify_ssl=configuration.verify_ssl, ssl=ssl_context)
 26
 27        if configuration.proxy:
 28            self._session = aiohttp.ClientSession(connector=conn, proxy=configuration.proxy)
 29        else:
 30            self._session = aiohttp.ClientSession(connector=conn)
 31
 32    async def close(self):
 33        await self._session.close()
 34
 35    async def request(
 36        self,
 37        method,
 38        url,
 39        query_params=None,
 40        headers=None,
 41        body=None,
 42        post_params=None,
 43        _preload_content=True,
 44        _request_timeout=None,
 45    ):
 46        if method in ["POST", "PUT", "PATCH", "OPTIONS"] and ("Content-Type" not in headers):
 47            headers["Content-Type"] = "application/json"
 48
 49        if "application/x-ndjson" in headers.get("Content-Type", "").lower():
 50            ndjson_data = "\n".join(json.dumps(record) for record in body)
 51
 52            async with self._session.request(
 53                method, url, params=query_params, headers=headers, data=ndjson_data
 54            ) as resp:
 55                content = await resp.read()
 56                return raise_exceptions_or_return(
 57                    RESTResponse(resp.status, content, resp.headers, resp.reason)
 58                )
 59
 60        else:
 61            async with self._session.request(
 62                method, url, params=query_params, headers=headers, json=body
 63            ) as resp:
 64                content = await resp.read()
 65                return raise_exceptions_or_return(
 66                    RESTResponse(resp.status, content, resp.headers, resp.reason)
 67                )
 68
 69    async def GET(
 70        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
 71    ):
 72        return await self.request(
 73            "GET",
 74            url,
 75            headers=headers,
 76            _preload_content=_preload_content,
 77            _request_timeout=_request_timeout,
 78            query_params=query_params,
 79        )
 80
 81    async def HEAD(
 82        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
 83    ):
 84        return await self.request(
 85            "HEAD",
 86            url,
 87            headers=headers,
 88            _preload_content=_preload_content,
 89            _request_timeout=_request_timeout,
 90            query_params=query_params,
 91        )
 92
 93    async def OPTIONS(
 94        self,
 95        url,
 96        headers=None,
 97        query_params=None,
 98        post_params=None,
 99        body=None,
100        _preload_content=True,
101        _request_timeout=None,
102    ):
103        return await self.request(
104            "OPTIONS",
105            url,
106            headers=headers,
107            query_params=query_params,
108            post_params=post_params,
109            _preload_content=_preload_content,
110            _request_timeout=_request_timeout,
111            body=body,
112        )
113
114    async def DELETE(
115        self,
116        url,
117        headers=None,
118        query_params=None,
119        body=None,
120        _preload_content=True,
121        _request_timeout=None,
122    ):
123        return await self.request(
124            "DELETE",
125            url,
126            headers=headers,
127            query_params=query_params,
128            _preload_content=_preload_content,
129            _request_timeout=_request_timeout,
130            body=body,
131        )
132
133    async def POST(
134        self,
135        url,
136        headers=None,
137        query_params=None,
138        post_params=None,
139        body=None,
140        _preload_content=True,
141        _request_timeout=None,
142    ):
143        return await self.request(
144            "POST",
145            url,
146            headers=headers,
147            query_params=query_params,
148            post_params=post_params,
149            _preload_content=_preload_content,
150            _request_timeout=_request_timeout,
151            body=body,
152        )
153
154    async def PUT(
155        self,
156        url,
157        headers=None,
158        query_params=None,
159        post_params=None,
160        body=None,
161        _preload_content=True,
162        _request_timeout=None,
163    ):
164        return await self.request(
165            "PUT",
166            url,
167            headers=headers,
168            query_params=query_params,
169            post_params=post_params,
170            _preload_content=_preload_content,
171            _request_timeout=_request_timeout,
172            body=body,
173        )
174
175    async def PATCH(
176        self,
177        url,
178        headers=None,
179        query_params=None,
180        post_params=None,
181        body=None,
182        _preload_content=True,
183        _request_timeout=None,
184    ):
185        return await self.request(
186            "PATCH",
187            url,
188            headers=headers,
189            query_params=query_params,
190            post_params=post_params,
191            _preload_content=_preload_content,
192            _request_timeout=_request_timeout,
193            body=body,
194        )

Helper class that provides a standard way to create an ABC using inheritance.

AiohttpRestClient(configuration: pinecone.openapi_support.configuration.Configuration)
10    def __init__(self, configuration: Configuration) -> None:
11        try:
12            import aiohttp
13        except ImportError:
14            raise ImportError(
15                "Additional dependencies are required to use Pinecone with asyncio. Include these extra dependencies in your project by installing `pinecone[asyncio]`."
16            ) from None
17
18        if configuration.ssl_ca_cert is not None:
19            ca_certs = configuration.ssl_ca_cert
20        else:
21            ca_certs = certifi.where()
22
23        ssl_context = ssl.create_default_context(cafile=ca_certs)
24
25        conn = aiohttp.TCPConnector(verify_ssl=configuration.verify_ssl, ssl=ssl_context)
26
27        if configuration.proxy:
28            self._session = aiohttp.ClientSession(connector=conn, proxy=configuration.proxy)
29        else:
30            self._session = aiohttp.ClientSession(connector=conn)
async def close(self):
32    async def close(self):
33        await self._session.close()
async def request( self, method, url, query_params=None, headers=None, body=None, post_params=None, _preload_content=True, _request_timeout=None):
35    async def request(
36        self,
37        method,
38        url,
39        query_params=None,
40        headers=None,
41        body=None,
42        post_params=None,
43        _preload_content=True,
44        _request_timeout=None,
45    ):
46        if method in ["POST", "PUT", "PATCH", "OPTIONS"] and ("Content-Type" not in headers):
47            headers["Content-Type"] = "application/json"
48
49        if "application/x-ndjson" in headers.get("Content-Type", "").lower():
50            ndjson_data = "\n".join(json.dumps(record) for record in body)
51
52            async with self._session.request(
53                method, url, params=query_params, headers=headers, data=ndjson_data
54            ) as resp:
55                content = await resp.read()
56                return raise_exceptions_or_return(
57                    RESTResponse(resp.status, content, resp.headers, resp.reason)
58                )
59
60        else:
61            async with self._session.request(
62                method, url, params=query_params, headers=headers, json=body
63            ) as resp:
64                content = await resp.read()
65                return raise_exceptions_or_return(
66                    RESTResponse(resp.status, content, resp.headers, resp.reason)
67                )
async def GET( self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None):
69    async def GET(
70        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
71    ):
72        return await self.request(
73            "GET",
74            url,
75            headers=headers,
76            _preload_content=_preload_content,
77            _request_timeout=_request_timeout,
78            query_params=query_params,
79        )
async def HEAD( self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None):
81    async def HEAD(
82        self, url, headers=None, query_params=None, _preload_content=True, _request_timeout=None
83    ):
84        return await self.request(
85            "HEAD",
86            url,
87            headers=headers,
88            _preload_content=_preload_content,
89            _request_timeout=_request_timeout,
90            query_params=query_params,
91        )
async def OPTIONS( self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True, _request_timeout=None):
 93    async def OPTIONS(
 94        self,
 95        url,
 96        headers=None,
 97        query_params=None,
 98        post_params=None,
 99        body=None,
100        _preload_content=True,
101        _request_timeout=None,
102    ):
103        return await self.request(
104            "OPTIONS",
105            url,
106            headers=headers,
107            query_params=query_params,
108            post_params=post_params,
109            _preload_content=_preload_content,
110            _request_timeout=_request_timeout,
111            body=body,
112        )
async def DELETE( self, url, headers=None, query_params=None, body=None, _preload_content=True, _request_timeout=None):
114    async def DELETE(
115        self,
116        url,
117        headers=None,
118        query_params=None,
119        body=None,
120        _preload_content=True,
121        _request_timeout=None,
122    ):
123        return await self.request(
124            "DELETE",
125            url,
126            headers=headers,
127            query_params=query_params,
128            _preload_content=_preload_content,
129            _request_timeout=_request_timeout,
130            body=body,
131        )
async def POST( self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True, _request_timeout=None):
133    async def POST(
134        self,
135        url,
136        headers=None,
137        query_params=None,
138        post_params=None,
139        body=None,
140        _preload_content=True,
141        _request_timeout=None,
142    ):
143        return await self.request(
144            "POST",
145            url,
146            headers=headers,
147            query_params=query_params,
148            post_params=post_params,
149            _preload_content=_preload_content,
150            _request_timeout=_request_timeout,
151            body=body,
152        )
async def PUT( self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True, _request_timeout=None):
154    async def PUT(
155        self,
156        url,
157        headers=None,
158        query_params=None,
159        post_params=None,
160        body=None,
161        _preload_content=True,
162        _request_timeout=None,
163    ):
164        return await self.request(
165            "PUT",
166            url,
167            headers=headers,
168            query_params=query_params,
169            post_params=post_params,
170            _preload_content=_preload_content,
171            _request_timeout=_request_timeout,
172            body=body,
173        )
async def PATCH( self, url, headers=None, query_params=None, post_params=None, body=None, _preload_content=True, _request_timeout=None):
175    async def PATCH(
176        self,
177        url,
178        headers=None,
179        query_params=None,
180        post_params=None,
181        body=None,
182        _preload_content=True,
183        _request_timeout=None,
184    ):
185        return await self.request(
186            "PATCH",
187            url,
188            headers=headers,
189            query_params=query_params,
190            post_params=post_params,
191            _preload_content=_preload_content,
192            _request_timeout=_request_timeout,
193            body=body,
194        )