String
SUMMARY
A string scalar value.
python
from telekinesis import datatypes
value = datatypes.String("hello")Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
data | str | Required | The value to store. No other type is accepted. |
Raises
| Exception | Condition |
|---|---|
TypeError | data is not a str |
Attributes
| Attribute | Type | Description |
|---|---|---|
data | str | The wrapped value. Since str is immutable, no copying is ever required — reading data returns the normalized value directly. Assigning a new value re-validates it the same way as construction. |
Methods
| Method | Type | Description |
|---|---|---|
String.coerce(value, name="value") | String | Converts a str into a String. If value is already a String, it is returned unchanged. The optional name is only used to make validation error messages more descriptive. |
lower() | String | Returns a new String with all the characters lowercased. |
upper() | String | Returns a new String with all the characters uppercased. |
strip(chars=None) | String | Returns a new String with leading and trailing characters removed. By default (chars=None) it strips whitespace; pass a set of characters to strip those instead. |
split(sep=None, maxsplit=-1) | list[String] | Splits into a list of pieces on sep. When sep is None (the default), it splits on runs of whitespace. maxsplit caps the number of splits; -1 (the default) means no limit. |
Operators
| Operation | Returns |
|---|---|
str(s) | str |
bool(s) | bool |
len(s) | int |
s + t | String |
s * n | String |
s[i] | String |
s[i:j] | String |
x in s | bool |
s == t | bool |
s != t | bool |
s < t | bool |
s <= t | bool |
s > t | bool |
s >= t | bool |
String supports common string operations including concatenation, repetition, indexing, slicing, membership checks, comparisons, length, and conversion to native str. Concatenation and membership checks work with String and native str values, and repetition uses an integer repeat count.
Visualization
python
import rerun as rr
# Your code block
# ....
rr.init("string_example", spawn=True)
datatypes.visualize(value, entity_path="/value", label="String")Example
python
"""Demonstrates the Telekinesis String datatype."""
import time
import rerun as rr
from loguru import logger
from telekinesis import datatypes
def string_example():
"""Demonstrate creation, inspection, operations, visualization, and serialization."""
# ======================= Create ============================================
value = datatypes.String("Hello")
logger.info(f"Created String: {value}")
coerced = datatypes.String.coerce("Coerced")
logger.info(f"String coerced from str: {coerced}")
# ======================= Inspect ===========================================
logger.info(f"data={value.data}")
# ======================= Operations ========================================
value.data = "Hello World"
logger.info(f"Updated String: {value}")
other = datatypes.String("!")
logger.info(f"Concatenation: {value} + {other} = {value + other}")
logger.info(f"Reflected concatenation: 'Say ' + {value} = {'Say ' + value}")
logger.info(f"Repeat: {value} * 3 = {value * 3}")
logger.info(f"Reflected repeat: 3 * {value} = {3 * value}")
logger.info(f"Lower: {value}.lower() = {value.lower()}")
logger.info(f"Upper: {value}.upper() = {value.upper()}")
padded = datatypes.String(" padded ")
logger.info(f"Strip: {padded!r}.strip() = {padded.strip()}")
topic = datatypes.String("/topic/ns/name")
logger.info(f"Split: {topic}.split('/') = {topic.split('/')}")
logger.info(f"Length: len({value}) = {len(value)}")
logger.info(f"Contains: 'World' in {value} = {'World' in value}")
logger.info(f"Indexing: {value}[0] = {value[0]}")
logger.info(f"Slicing: {value}[0:5] = {value[0:5]}")
logger.info(f"Format: '{value:>20}'")
logger.info(f"str(value)={str(value)}")
logger.info(f"bool(value)={bool(value)}")
logger.info(f"EQ: {value} == {other} = {value == other}")
logger.info(f"LT: {value} < {other} = {value < other}")
logger.info(f"LE: {value} <= {other} = {value <= other}")
logger.info(f"GT: {value} > {other} = {value > other}")
logger.info(f"GE: {value} >= {other} = {value >= other}")
# ======================= Visualize =========================================
rr.init("string_example", spawn=True)
datatypes.visualize(value, entity_path="/string")
# ======================= Serialize / Deserialize ===========================
start = time.perf_counter()
serialized = datatypes.serialize(value)
serialization_ms = (time.perf_counter() - start) * 1000
start = time.perf_counter()
deserialized = datatypes.deserialize(serialized)["param_0"]
deserialization_ms = (time.perf_counter() - start) * 1000
logger.info(f"Deserialized String: {deserialized}")
logger.info(f"Round-trip successful: {value == deserialized}")
logger.info(f"Serialization time: {serialization_ms:.3f} ms")
logger.info(f"Deserialization time: {deserialization_ms:.3f} ms")
if __name__ == "__main__":
string_example()