Int
SUMMARY
An integer scalar value.
python
from telekinesis import datatypes
value = datatypes.Int(42)Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
data | int | float | Required | The value to store. A float must be integral (e.g. 3.0). |
Raises
| Exception | Condition |
|---|---|
TypeError | data is a bool or any other non-numeric type |
ValueError | data is a float with a fractional part |
Attributes
| Attribute | Type | Description |
|---|---|---|
data | int | The wrapped value. Since int 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 |
|---|---|---|
Int.coerce(value, name="value") | Int | Converts an int or whole-number float into an Int. If value is already an Int, it is returned unchanged. The optional name is only used to make validation error messages more descriptive. A float with a fractional part (e.g. 3.5) isn't accepted, and bool values are rejected even though they're technically ints. |
Operators
| Operation | Returns |
|---|---|
bool(a) | bool |
int(a) | int |
float(a) | float |
range(a) | Works, via __index__ |
a + b | Int or Float |
a - b | Int or Float |
a * b | Int or Float |
a / b | Float |
a // b | Int or Float |
a % b | Int or Float |
-a | Int |
+a | Int |
abs(a) | Int |
a == b | bool |
a != b | bool |
a < b | bool |
a <= b | bool |
a > b | bool |
a >= b | bool |
Arithmetic operands may be Int, Float, int, or float; the result is Int only if every operand is integral, otherwise Float. bool operands are rejected on both sides of every arithmetic/comparison operator (returns NotImplemented), keeping Bool a distinct type. __index__ also makes Int usable for slicing, range(), and with bin()/hex()/oct(). <=, >, and >= are derived from ==/< via functools.total_ordering.
Visualization
python
import rerun as rr
# Your code block
# ....
rr.init("int_example", spawn=True)
datatypes.visualize(value, entity_path="/value", label="Int")Example
python
"""Demonstrates the Telekinesis Int datatype."""
import time
import rerun as rr
from loguru import logger
from telekinesis import datatypes
def int_example():
"""Demonstrate creation, inspection, operations, visualization, and serialization."""
# ======================= Create ============================================
value = datatypes.Int(42)
logger.info(f"Created Int: {value}")
coerced = datatypes.Int.coerce(7.0)
logger.info(f"Int coerced from float: {coerced}")
# ======================= Inspect ===========================================
logger.info(f"data={value.data}")
# ======================= Operations ========================================
value.data = 100
logger.info(f"Updated Int: {value}")
other = datatypes.Int(58)
logger.info(f"{value} + {other} = {value + other}")
logger.info(f"{value} - {other} = {value - other}")
logger.info(f"{value} * {other} = {value * other}")
logger.info(f"{value} / {other} = {value / other}")
logger.info(f"{value} // {other} = {value // other}")
logger.info(f"{value} % {other} = {value % other}")
logger.info(f"Reflected add: 10 + {value} = {10 + value}")
logger.info(f"Reflected sub: 200 - {value} = {200 - value}")
logger.info(f"Reflected mul: 2 * {value} = {2 * value}")
logger.info(f"Reflected truediv: 1000 / {value} = {1000 / value}")
logger.info(f"Reflected floordiv: 1000 // {value} = {1000 // value}")
logger.info(f"Reflected mod: 1000 % {value} = {1000 % value}")
logger.info(f"negated={-value}")
logger.info(f"positive={+value}")
logger.info(f"absolute={abs(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}")
logger.info(f"int(value)={int(value)}")
logger.info(f"float(value)={float(value)}")
logger.info(f"bool(value)={bool(value)}")
items = [1, 2, 3, 4, 5]
index = value % len(items)
logger.info(f"Used as index via __index__: items[{index}] = {items[index]}")
# ======================= Visualize =========================================
rr.init("int_example", spawn=True)
datatypes.visualize(value, entity_path="/int")
# ======================= 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 Int: {deserialized}")
logger.info(f"Round-trip successful: {deserialized == value}")
logger.info(f"Serialization time: {serialization_ms:.3f} ms")
logger.info(f"Deserialization time: {deserialization_ms:.3f} ms")
if __name__ == "__main__":
int_example()