polars-api 0.1.4__tar.gz → 0.1.5__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {polars_api-0.1.4/polars_api.egg-info → polars_api-0.1.5}/PKG-INFO +1 -1
- polars_api-0.1.5/polars_api/api.py +97 -0
- {polars_api-0.1.4 → polars_api-0.1.5/polars_api.egg-info}/PKG-INFO +1 -1
- {polars_api-0.1.4 → polars_api-0.1.5}/pyproject.toml +1 -1
- polars_api-0.1.4/polars_api/api.py +0 -91
- {polars_api-0.1.4 → polars_api-0.1.5}/LICENSE +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/README.md +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/examples/test.py +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/polars_api/__init__.py +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/polars_api.egg-info/SOURCES.txt +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/polars_api.egg-info/dependency_links.txt +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/polars_api.egg-info/requires.txt +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/polars_api.egg-info/top_level.txt +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/setup.cfg +0 -0
- {polars_api-0.1.4 → polars_api-0.1.5}/tests/test_api.py +0 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
import asyncio
|
2
|
+
from typing import Optional
|
3
|
+
|
4
|
+
import httpx
|
5
|
+
import polars as pl
|
6
|
+
|
7
|
+
|
8
|
+
def check_status_code(status_code):
|
9
|
+
return status_code >= 200 and status_code < 300
|
10
|
+
|
11
|
+
|
12
|
+
@pl.api.register_expr_namespace("api")
|
13
|
+
class Api:
|
14
|
+
def __init__(self, url: pl.Expr) -> None:
|
15
|
+
self._url = url
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def _get(url: str, params: Optional[dict[str, str]] = None, timeout: Optional[float] = None) -> Optional[str]:
|
19
|
+
result = httpx.get(url, params=params, timeout=timeout)
|
20
|
+
if check_status_code(result.status_code):
|
21
|
+
return result.text
|
22
|
+
else:
|
23
|
+
return None
|
24
|
+
|
25
|
+
@staticmethod
|
26
|
+
def _post(url: str, params: dict[str, str], body: str, timeout: float) -> Optional[str]:
|
27
|
+
result = httpx.post(url, params=params, json=body, timeout=timeout)
|
28
|
+
if check_status_code(result.status_code):
|
29
|
+
return result.text
|
30
|
+
else:
|
31
|
+
return None
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
async def _aget_one(url: str, params: str, timeout: float) -> str:
|
35
|
+
async with httpx.AsyncClient() as client:
|
36
|
+
r = await client.get(url, params=params, timeout=timeout)
|
37
|
+
return r.text
|
38
|
+
|
39
|
+
async def _aget_all(self, x, params, timeout):
|
40
|
+
return await asyncio.gather(*[self._aget_one(url, param, timeout) for url, param in zip(x, params)])
|
41
|
+
|
42
|
+
def _aget(self, x, params, timeout):
|
43
|
+
return pl.Series(asyncio.run(self._aget_all(x, params, timeout)))
|
44
|
+
|
45
|
+
@staticmethod
|
46
|
+
async def _apost_one(url: str, params: str, body: str, timeout: Optional[float]) -> str:
|
47
|
+
async with httpx.AsyncClient() as client:
|
48
|
+
r = await client.post(url, params=params, json=body, timeout=timeout)
|
49
|
+
return r.text
|
50
|
+
|
51
|
+
async def _apost_all(self, x, params, body, timeout):
|
52
|
+
return await asyncio.gather(*[
|
53
|
+
self._apost_one(url, _params, _body, timeout) for url, _params, _body in zip(x, params, body)
|
54
|
+
])
|
55
|
+
|
56
|
+
def _apost(self, x, params, body, timeout):
|
57
|
+
return pl.Series(asyncio.run(self._apost_all(x, params, body, timeout)))
|
58
|
+
|
59
|
+
def get(self, params: Optional[pl.Expr] = None, timeout: Optional[float] = None) -> pl.Expr:
|
60
|
+
if params is None:
|
61
|
+
params = pl.lit(None)
|
62
|
+
return pl.struct(self._url.alias("url"), params.alias("params")).map_elements(
|
63
|
+
lambda x: self._get(x["url"], params=x["params"], timeout=timeout),
|
64
|
+
return_dtype=pl.Utf8,
|
65
|
+
)
|
66
|
+
|
67
|
+
def post(
|
68
|
+
self, params: Optional[pl.Expr] = None, body: Optional[pl.Expr] = None, timeout: Optional[float] = None
|
69
|
+
) -> pl.Expr:
|
70
|
+
if params is None:
|
71
|
+
params = pl.lit(None)
|
72
|
+
if body is None:
|
73
|
+
body = pl.lit(None)
|
74
|
+
return pl.struct(self._url.alias("url"), params.alias("params"), body.alias("body")).map_elements(
|
75
|
+
lambda x: self._post(x["url"], params=x["params"], body=x["body"], timeout=timeout),
|
76
|
+
return_dtype=pl.Utf8,
|
77
|
+
)
|
78
|
+
|
79
|
+
def aget(self, params: Optional[pl.Expr] = None, timeout: Optional[float] = None) -> pl.Expr:
|
80
|
+
if params is None:
|
81
|
+
params = pl.lit(None)
|
82
|
+
return pl.struct(self._url.alias("url"), params.alias("params")).map_batches(
|
83
|
+
lambda x: self._aget(x.struct.field("url"), params=x.struct.field("params"), timeout=timeout)
|
84
|
+
)
|
85
|
+
|
86
|
+
def apost(
|
87
|
+
self, params: Optional[pl.Expr] = None, body: Optional[pl.Expr] = None, timeout: Optional[float] = None
|
88
|
+
) -> pl.Expr:
|
89
|
+
if params is None:
|
90
|
+
params = pl.lit(None)
|
91
|
+
if body is None:
|
92
|
+
body = pl.lit(None)
|
93
|
+
return pl.struct(self._url.alias("url"), params.alias("params"), body.alias("body")).map_batches(
|
94
|
+
lambda x: self._apost(
|
95
|
+
x.struct.field("url"), params=x.struct.field("params"), body=x.struct.field("body"), timeout=timeout
|
96
|
+
)
|
97
|
+
)
|
@@ -1,91 +0,0 @@
|
|
1
|
-
import asyncio
|
2
|
-
from typing import Optional
|
3
|
-
|
4
|
-
import httpx
|
5
|
-
import polars as pl
|
6
|
-
|
7
|
-
|
8
|
-
def check_status_code(status_code):
|
9
|
-
return status_code >= 200 and status_code < 300
|
10
|
-
|
11
|
-
|
12
|
-
@pl.api.register_expr_namespace("api")
|
13
|
-
class Api:
|
14
|
-
def __init__(self, url: pl.Expr) -> None:
|
15
|
-
self._url = url
|
16
|
-
|
17
|
-
@staticmethod
|
18
|
-
def _get(url: str, params: Optional[dict[str, str]] = None) -> Optional[str]:
|
19
|
-
result = httpx.get(url, params=params)
|
20
|
-
if check_status_code(result.status_code):
|
21
|
-
return result.text
|
22
|
-
else:
|
23
|
-
return None
|
24
|
-
|
25
|
-
@staticmethod
|
26
|
-
def _post(url: str, params: dict[str, str], body: str) -> Optional[str]:
|
27
|
-
result = httpx.post(url, params=params, json=body)
|
28
|
-
if check_status_code(result.status_code):
|
29
|
-
return result.text
|
30
|
-
else:
|
31
|
-
return None
|
32
|
-
|
33
|
-
@staticmethod
|
34
|
-
async def _aget_one(url: str, params: str) -> str:
|
35
|
-
async with httpx.AsyncClient() as client:
|
36
|
-
r = await client.get(url, params=params)
|
37
|
-
return r.text
|
38
|
-
|
39
|
-
async def _aget_all(self, x, params):
|
40
|
-
return await asyncio.gather(*[self._aget_one(url, param) for url, param in zip(x, params)])
|
41
|
-
|
42
|
-
def _aget(self, x, params):
|
43
|
-
return pl.Series(asyncio.run(self._aget_all(x, params)))
|
44
|
-
|
45
|
-
@staticmethod
|
46
|
-
async def _apost_one(url: str, params: str, body: str) -> str:
|
47
|
-
async with httpx.AsyncClient() as client:
|
48
|
-
r = await client.post(url, params=params, json=body)
|
49
|
-
return r.text
|
50
|
-
|
51
|
-
async def _apost_all(self, x, params, body):
|
52
|
-
return await asyncio.gather(*[
|
53
|
-
self._apost_one(url, _params, _body) for url, _params, _body in zip(x, params, body)
|
54
|
-
])
|
55
|
-
|
56
|
-
def _apost(self, x, params, body):
|
57
|
-
return pl.Series(asyncio.run(self._apost_all(x, params, body)))
|
58
|
-
|
59
|
-
def get(self, params: Optional[pl.Expr] = None) -> pl.Expr:
|
60
|
-
if params is None:
|
61
|
-
params = pl.lit(None)
|
62
|
-
return pl.struct(self._url.alias("url"), params.alias("params")).map_elements(
|
63
|
-
lambda x: self._get(x["url"], params=x["params"]),
|
64
|
-
return_dtype=pl.Utf8,
|
65
|
-
)
|
66
|
-
|
67
|
-
def post(self, params: Optional[pl.Expr] = None, body: Optional[pl.Expr] = None) -> pl.Expr:
|
68
|
-
if params is None:
|
69
|
-
params = pl.lit(None)
|
70
|
-
if body is None:
|
71
|
-
body = pl.lit(None)
|
72
|
-
return pl.struct(self._url.alias("url"), params.alias("params"), body.alias("body")).map_elements(
|
73
|
-
lambda x: self._post(x["url"], params=x["params"], body=x["body"]),
|
74
|
-
return_dtype=pl.Utf8,
|
75
|
-
)
|
76
|
-
|
77
|
-
def aget(self, params: Optional[pl.Expr] = None) -> pl.Expr:
|
78
|
-
if params is None:
|
79
|
-
params = pl.lit(None)
|
80
|
-
return pl.struct(self._url.alias("url"), params.alias("params")).map_batches(
|
81
|
-
lambda x: self._aget(x.struct.field("url"), params=x.struct.field("params"))
|
82
|
-
)
|
83
|
-
|
84
|
-
def apost(self, params: Optional[pl.Expr] = None, body: Optional[pl.Expr] = None) -> pl.Expr:
|
85
|
-
if params is None:
|
86
|
-
params = pl.lit(None)
|
87
|
-
if body is None:
|
88
|
-
body = pl.lit(None)
|
89
|
-
return pl.struct(self._url.alias("url"), params.alias("params"), body.alias("body")).map_batches(
|
90
|
-
lambda x: self._apost(x.struct.field("url"), params=x.struct.field("params"), body=x.struct.field("body"))
|
91
|
-
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|