I’m trying to set an environment variable using the
Balena Python SDK on a specific device. However, I keep getting this error. Is this a know issue? I’ve double checked that the string I’m passing as an environment variable is properly formatted (actually utf-8 encoded as well).
balena_sdk.models.device.env_var.set(
File ".venv/lib/python3.11/site-packages/balena/models/device.py", line 2287, in set
super(DeviceEnvVariable, self)._set(uuid_or_id, env_var_name, value)
File ".venv/lib/python3.11/site-packages/balena/dependent_resource.py", line 61, in _set
parent_id = parent_param if is_id(parent_param) else self.get_resource_id(parent_param)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/balena/models/device.py", line 2204, in <lambda>
lambda id: self.__device.get(id, {"$select": "id"})["id"],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/balena/models/device.py", line 377, in get
device = self.__pine.get(
^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/pine_client/client.py", line 848, in get
result = self.request({**params, "method": "GET"})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/pine_client/client.py", line 944, in request
return self._request(method=method, url=url, body=params.get("body"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/balena/pine.py", line 39, in _request
return self.__request(method, url, body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/balena/pine.py", line 63, in __base_request
req = requests.request(method, url=url, json=body, headers=headers)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/requests/sessions.py", line 589, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/requests/sessions.py", line 703, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/requests/adapters.py", line 486, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 715, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File ".venv/lib/python3.11/site-packages/urllib3/connectionpool.py", line 416, in _make_request
conn.request(method, url, **httplib_request_kw)
File ".venv/lib/python3.11/site-packages/urllib3/connection.py", line 244, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File "/.pyenv/versions/3.11.6/lib/python3.11/http/client.py", line 1286, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/.pyenv/versions/3.11.6/lib/python3.11/http/client.py", line 1327, in _send_request
self.putheader(hdr, value)
File ".venv/lib/python3.11/site-packages/urllib3/connection.py", line 224, in putheader
_HTTPConnection.putheader(self, header, *values)
File "/.pyenv/versions/3.11.6/lib/python3.11/http/client.py", line 1259, in putheader
values[i] = one_value.encode('latin-1')
^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 9-11: ordinal not in range(256)
This comes from this function call:
balena_sdk.models.device.env_var.set(
uuid_or_id=balena_device_id, env_var_name=env_var_name, value=value
)