# Example code
```python
# client.py
from setech import SyncClient
class LocalClient(SyncClient):
name = "local"
_base_url = "https://obligari.serveo.net/ping/local"
def __init__(self, nonce=None):
super().__init__(nonce)
self._session.headers.update(
{"User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:123.0) Gecko/20100101 Firefox/123.0"}
)
def send_post_ping(self, var1: str, var2: int) -> bool:
res = self.post("/some-post", json={"variable_one": var1, "second_variable": var2})
return res.json().get("status")
def send_put_ping(self, var1: str, var2: int) -> bool:
res = self.put("/some-put", data={"variable_one": var1, "second_variable": var2})
return res.json().get("status")
def send_get_ping(self, var1: str, var2: int) -> bool:
res = self.get("/some-get", params={"variable_one": var1, "second_variable": var2})
return res.json().get("status")
def send_patch_ping(self, var1: str, var2: int) -> bool:
res = self.put("/some-patch", data=(("variable_one", var1), ("variable_one", var2)))
return res.json().get("status")
def send_trace_ping(self, var1: str, var2: int) -> bool:
res = self.trace("/some-trace", params=(("variable_one", var1), ("variable_one", var2)))
return res.json().get("status")
```
```python
# main.py
from .client import LocalClient
client = LocalClient()
client.send_post_ping("asd", 123)
client.send_put_ping("asd", 123)
client.send_get_ping("asd", 123)
client.send_patch_ping("asd", 123)
client.send_trace_ping("asd", 123)
```
## Log output
### Simple
```text
[14d709e02c0c] Preparing POST request to "https://obligari.serveo.net/ping/local/some-post"
[14d709e02c0c] Sending request with payload=b'{"variable_one": "asd", "second_variable": 123}'
[14d709e02c0c] Response response.status_code=200 str_repr_content='{"status":true,"request_id":62}'
[14d709e02c0c] Preparing GET request to "https://obligari.serveo.net/ping/local/some-get"
[14d709e02c0c] Sending request with payload=None
[14d709e02c0c] Response response.status_code=200 str_repr_content='{"status":true,"request_id":63}'
```
### Structured
```json
{"app": "dev", "level": "DEBUG", "name": "APIClient", "date_time": "2024-03-09 22:59:24", "location": "api_client/client.py:_request:71", "message": "[cfbdadc56f53] Preparing POST request to \"https://obligari.serveo.net/ping/local/some-post\"", "extra_data": {"hooks": {"response": []}, "method": "POST", "url": "https://obligari.serveo.net/ping/local/some-post", "headers": {}, "files": [], "data": [], "json": {"variable_one": "asd", "second_variable": 123}, "params": {}, "auth": null, "cookies": null}}
{"app": "dev", "level": "INFO", "name": "APIClient", "date_time": "2024-03-09 22:59:24", "location": "api_client/client.py:_request:74", "message": "[cfbdadc56f53] Sending request with payload=b'{\"variable_one\": \"asd\", \"second_variable\": 123}'", "extra_data": {"payload": "{\"variable_one\": \"asd\", \"second_variable\": 123}"}}
{"app": "dev", "level": "INFO", "name": "APIClient", "date_time": "2024-03-09 22:59:25", "location": "api_client/client.py:_request:81", "message": "[cfbdadc56f53] Response response.status_code=200 str_repr_content='{\"status\":true,\"request_id\":72}'", "extra_data": {"status_code": 200, "content": "{\"status\":true,\"request_id\":72}"}}
{"app": "dev", "level": "DEBUG", "name": "APIClient", "date_time": "2024-03-09 22:59:25", "location": "api_client/client.py:_request:71", "message": "[cfbdadc56f53] Preparing GET request to \"https://obligari.serveo.net/ping/local/some-get\"", "extra_data": {"hooks": {"response": []}, "method": "GET", "url": "https://obligari.serveo.net/ping/local/some-get", "headers": {}, "files": [], "data": [], "json": null, "params": {"variable_one": "asd", "second_variable": 123}, "auth": null, "cookies": null}}
{"app": "dev", "level": "INFO", "name": "APIClient", "date_time": "2024-03-09 22:59:25", "location": "api_client/client.py:_request:74", "message": "[cfbdadc56f53] Sending request with payload=None", "extra_data": {"payload": "{}"}}
{"app": "dev", "level": "INFO", "name": "APIClient", "date_time": "2024-03-09 22:59:25", "location": "api_client/client.py:_request:81", "message": "[cfbdadc56f53] Response response.status_code=200 str_repr_content='{\"status\":true,\"request_id\":74}'", "extra_data": {"status_code": 200, "content": "{\"status\":true,\"request_id\":73}"}}
```
Raw data
{
"_id": null,
"home_page": null,
"name": "setech",
"maintainer": null,
"docs_url": null,
"requires_python": "~=3.11",
"maintainer_email": null,
"keywords": "setech, logging, api-client, utility, utils",
"author": null,
"author_email": "Eriks Karls <eriks.karls@sefinance.lv>",
"download_url": "https://files.pythonhosted.org/packages/d8/a6/552778e4e1e2262a5a90b5b53129aa966e902ce9539984e1d7c9afeb2d9b/setech-1.5.4.tar.gz",
"platform": null,
"description": "# Example code\n```python\n# client.py\nfrom setech import SyncClient\n\n\nclass LocalClient(SyncClient):\n name = \"local\"\n _base_url = \"https://obligari.serveo.net/ping/local\"\n\n def __init__(self, nonce=None):\n super().__init__(nonce)\n self._session.headers.update(\n {\"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; rv:123.0) Gecko/20100101 Firefox/123.0\"}\n )\n\n def send_post_ping(self, var1: str, var2: int) -> bool:\n res = self.post(\"/some-post\", json={\"variable_one\": var1, \"second_variable\": var2})\n return res.json().get(\"status\")\n\n def send_put_ping(self, var1: str, var2: int) -> bool:\n res = self.put(\"/some-put\", data={\"variable_one\": var1, \"second_variable\": var2})\n return res.json().get(\"status\")\n\n def send_get_ping(self, var1: str, var2: int) -> bool:\n res = self.get(\"/some-get\", params={\"variable_one\": var1, \"second_variable\": var2})\n return res.json().get(\"status\")\n\n def send_patch_ping(self, var1: str, var2: int) -> bool:\n res = self.put(\"/some-patch\", data=((\"variable_one\", var1), (\"variable_one\", var2)))\n return res.json().get(\"status\")\n\n def send_trace_ping(self, var1: str, var2: int) -> bool:\n res = self.trace(\"/some-trace\", params=((\"variable_one\", var1), (\"variable_one\", var2)))\n return res.json().get(\"status\")\n```\n\n```python\n# main.py\nfrom .client import LocalClient\n\n\nclient = LocalClient()\nclient.send_post_ping(\"asd\", 123)\nclient.send_put_ping(\"asd\", 123)\nclient.send_get_ping(\"asd\", 123)\nclient.send_patch_ping(\"asd\", 123)\nclient.send_trace_ping(\"asd\", 123)\n```\n\n## Log output\n### Simple\n```text\n[14d709e02c0c] Preparing POST request to \"https://obligari.serveo.net/ping/local/some-post\"\n[14d709e02c0c] Sending request with payload=b'{\"variable_one\": \"asd\", \"second_variable\": 123}'\n[14d709e02c0c] Response response.status_code=200 str_repr_content='{\"status\":true,\"request_id\":62}'\n[14d709e02c0c] Preparing GET request to \"https://obligari.serveo.net/ping/local/some-get\"\n[14d709e02c0c] Sending request with payload=None\n[14d709e02c0c] Response response.status_code=200 str_repr_content='{\"status\":true,\"request_id\":63}'\n```\n### Structured\n```json\n{\"app\": \"dev\", \"level\": \"DEBUG\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:24\", \"location\": \"api_client/client.py:_request:71\", \"message\": \"[cfbdadc56f53] Preparing POST request to \\\"https://obligari.serveo.net/ping/local/some-post\\\"\", \"extra_data\": {\"hooks\": {\"response\": []}, \"method\": \"POST\", \"url\": \"https://obligari.serveo.net/ping/local/some-post\", \"headers\": {}, \"files\": [], \"data\": [], \"json\": {\"variable_one\": \"asd\", \"second_variable\": 123}, \"params\": {}, \"auth\": null, \"cookies\": null}}\n{\"app\": \"dev\", \"level\": \"INFO\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:24\", \"location\": \"api_client/client.py:_request:74\", \"message\": \"[cfbdadc56f53] Sending request with payload=b'{\\\"variable_one\\\": \\\"asd\\\", \\\"second_variable\\\": 123}'\", \"extra_data\": {\"payload\": \"{\\\"variable_one\\\": \\\"asd\\\", \\\"second_variable\\\": 123}\"}}\n{\"app\": \"dev\", \"level\": \"INFO\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:25\", \"location\": \"api_client/client.py:_request:81\", \"message\": \"[cfbdadc56f53] Response response.status_code=200 str_repr_content='{\\\"status\\\":true,\\\"request_id\\\":72}'\", \"extra_data\": {\"status_code\": 200, \"content\": \"{\\\"status\\\":true,\\\"request_id\\\":72}\"}}\n{\"app\": \"dev\", \"level\": \"DEBUG\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:25\", \"location\": \"api_client/client.py:_request:71\", \"message\": \"[cfbdadc56f53] Preparing GET request to \\\"https://obligari.serveo.net/ping/local/some-get\\\"\", \"extra_data\": {\"hooks\": {\"response\": []}, \"method\": \"GET\", \"url\": \"https://obligari.serveo.net/ping/local/some-get\", \"headers\": {}, \"files\": [], \"data\": [], \"json\": null, \"params\": {\"variable_one\": \"asd\", \"second_variable\": 123}, \"auth\": null, \"cookies\": null}}\n{\"app\": \"dev\", \"level\": \"INFO\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:25\", \"location\": \"api_client/client.py:_request:74\", \"message\": \"[cfbdadc56f53] Sending request with payload=None\", \"extra_data\": {\"payload\": \"{}\"}}\n{\"app\": \"dev\", \"level\": \"INFO\", \"name\": \"APIClient\", \"date_time\": \"2024-03-09 22:59:25\", \"location\": \"api_client/client.py:_request:81\", \"message\": \"[cfbdadc56f53] Response response.status_code=200 str_repr_content='{\\\"status\\\":true,\\\"request_id\\\":74}'\", \"extra_data\": {\"status_code\": 200, \"content\": \"{\\\"status\\\":true,\\\"request_id\\\":73}\"}}\n```\n",
"bugtrack_url": null,
"license": null,
"summary": "Setech utilities",
"version": "1.5.4",
"project_urls": {
"Homepage": "https://pypi.org/project/setech/"
},
"split_keywords": [
"setech",
" logging",
" api-client",
" utility",
" utils"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "70fb95bffd86e2f0bf02c6a249ea6f629e454cf2aa6f8c5f4bcca95b35a355be",
"md5": "a2e853071e43eeb295a6f802a80aacea",
"sha256": "b979e85c5d0de8a4017de80429ebab45f5a54aa84677e6ba3b51a9ce40981523"
},
"downloads": -1,
"filename": "setech-1.5.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a2e853071e43eeb295a6f802a80aacea",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "~=3.11",
"size": 18202,
"upload_time": "2025-10-23T13:29:35",
"upload_time_iso_8601": "2025-10-23T13:29:35.660061Z",
"url": "https://files.pythonhosted.org/packages/70/fb/95bffd86e2f0bf02c6a249ea6f629e454cf2aa6f8c5f4bcca95b35a355be/setech-1.5.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d8a6552778e4e1e2262a5a90b5b53129aa966e902ce9539984e1d7c9afeb2d9b",
"md5": "d5559e4f81ed158c401ebaac327f7151",
"sha256": "1983f9cc36c8e0de79479817568031b4e266fae7ac02e3ec2ac704abb6b37cb3"
},
"downloads": -1,
"filename": "setech-1.5.4.tar.gz",
"has_sig": false,
"md5_digest": "d5559e4f81ed158c401ebaac327f7151",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "~=3.11",
"size": 15444,
"upload_time": "2025-10-23T13:29:37",
"upload_time_iso_8601": "2025-10-23T13:29:37.170487Z",
"url": "https://files.pythonhosted.org/packages/d8/a6/552778e4e1e2262a5a90b5b53129aa966e902ce9539984e1d7c9afeb2d9b/setech-1.5.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 13:29:37",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "setech"
}