move to default protobuf, seems faster?
This commit is contained in:
parent
d1226719e2
commit
9bcab3fae7
4 changed files with 50 additions and 189 deletions
|
|
@ -42,7 +42,6 @@ dependencies = [
|
|||
"nptyping>=2.5.0",
|
||||
"py-to-proto>=0.6.0",
|
||||
"grpcio-tools>=1.76.0",
|
||||
"betterproto[compiler]>=1.2.5",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
|
|
|
|||
113
trap/lines.py
113
trap/lines.py
|
|
@ -23,35 +23,27 @@ from noise import snoise2
|
|||
from trap import renderable_pb2
|
||||
from trap.utils import exponentialDecayRounded, inv_lerp
|
||||
|
||||
from trap.protobuf import renderable
|
||||
|
||||
|
||||
"""
|
||||
See [notebook](../test_path_transforms.ipynb) for examples
|
||||
"""
|
||||
|
||||
@dataclass
|
||||
class RenderablePosition( renderable.RenderablePosition): # Tuple[float,float]
|
||||
def to_tuple(self ):
|
||||
return (self.x, self.y)
|
||||
|
||||
RenderablePosition = Tuple[float,float]
|
||||
Coordinate = Tuple[float, float]
|
||||
DeltaT = float # delta_t in seconds
|
||||
|
||||
CoordinateSpace = renderable.CoordinateSpace
|
||||
# class CoordinateSpace(renderable.CoordinateSpace):
|
||||
# pass
|
||||
# CAMERA = 1
|
||||
# UNDISTORTED_CAMERA = 2
|
||||
# WORLD = 3
|
||||
# LASER = 4
|
||||
class CoordinateSpace(IntEnum):
|
||||
CAMERA = 1
|
||||
UNDISTORTED_CAMERA = 2
|
||||
WORLD = 3
|
||||
LASER = 4
|
||||
|
||||
@dataclass
|
||||
class SrgbaColor(renderable.SrgbaColor):
|
||||
# red: float
|
||||
# green: float
|
||||
# blue: float
|
||||
# alpha: float
|
||||
class SrgbaColor():
|
||||
red: float
|
||||
green: float
|
||||
blue: float
|
||||
alpha: float
|
||||
|
||||
def with_alpha(self, alpha: float) -> SrgbaColor:
|
||||
return SrgbaColor(self.red, self.green, self.blue, alpha)
|
||||
|
|
@ -60,28 +52,20 @@ class SrgbaColor(renderable.SrgbaColor):
|
|||
return SrgbaColor(self.red, self.green, self.blue, self.alpha * alpha)
|
||||
|
||||
def __eq__(self, other):
|
||||
if not isinstance(other, SrgbaColor):
|
||||
return False
|
||||
return math.isclose(self.red, other.red) and math.isclose(self.green, other.green) and math.isclose(self.blue, other.blue) and math.isclose(self.alpha, other.alpha)
|
||||
|
||||
|
||||
@dataclass
|
||||
class RenderablePoint(renderable.RenderablePoint):
|
||||
# position: RenderablePosition
|
||||
# color: SrgbaColor
|
||||
class RenderablePoint():
|
||||
position: RenderablePosition
|
||||
color: SrgbaColor
|
||||
|
||||
def __post_init__(self):
|
||||
if type(self.position) is np.ndarray:
|
||||
# convert if wrong type, so it can be serialised
|
||||
# print('convert')
|
||||
self.position = RenderablePosition(*self.position.tolist())
|
||||
# self.position = tuple(self.position.tolist())
|
||||
self.position = tuple(self.position.tolist())
|
||||
# self.position = (float(self.position[0]), float(self.position[0]))
|
||||
if type(self.position) is tuple:
|
||||
self.position = RenderablePosition(*self.position)
|
||||
|
||||
|
||||
super().__post_init__()
|
||||
# pass
|
||||
|
||||
@classmethod
|
||||
|
|
@ -96,14 +80,14 @@ class SimplifyMethod(Enum):
|
|||
VW = 2 # Visvalingam-Whyatt
|
||||
|
||||
@dataclass
|
||||
class RenderableLine(renderable.RenderableLine):
|
||||
# points: List[RenderablePoint]
|
||||
class RenderableLine():
|
||||
points: List[RenderablePoint]
|
||||
|
||||
def __len__(self):
|
||||
return len(self.points)
|
||||
|
||||
def as_simplified(self, method: SimplifyMethod = SimplifyMethod.RDP, factor = SIMPLIFY_FACTOR_RDP):
|
||||
linestring = [p.position.to_tuple() for p in self.points]
|
||||
linestring = [p.position for p in self.points]
|
||||
if method == SimplifyMethod.RDP:
|
||||
indexes = simplify_coords_idx(linestring, factor)
|
||||
elif method == SimplifyMethod.VW:
|
||||
|
|
@ -112,7 +96,7 @@ class RenderableLine(renderable.RenderableLine):
|
|||
return RenderableLine(points)
|
||||
|
||||
def as_linestring(self):
|
||||
return shapely.geometry.LineString([p.position.to_tuple() for p in self.points])
|
||||
return shapely.geometry.LineString([p.position for p in self.points])
|
||||
|
||||
@classmethod
|
||||
def from_multilinestring(cls, mls: shapely.geometry.MultiLineString, color: SrgbaColor) -> RenderableLine:
|
||||
|
|
@ -126,7 +110,7 @@ class RenderableLine(renderable.RenderableLine):
|
|||
|
||||
# blank point
|
||||
if not is_first:
|
||||
points.append(RenderablePoint(RenderablePosition(*line.coords[0]), color.as_faded(0)))
|
||||
points.append(RenderablePoint(line.coords[0], color.as_faded(0)))
|
||||
|
||||
points.extend(
|
||||
[RenderablePoint(pos, color) for pos in line.coords]
|
||||
|
|
@ -134,21 +118,21 @@ class RenderableLine(renderable.RenderableLine):
|
|||
|
||||
# blank point
|
||||
if not is_last:
|
||||
points.append(RenderablePoint(RenderablePosition(*line.coords[-1]), color.as_faded(0)))
|
||||
points.append(RenderablePoint(line.coords[-1], color.as_faded(0)))
|
||||
return RenderableLine(points)
|
||||
|
||||
@classmethod
|
||||
def from_linestring(cls, ls: shapely.geometry.LineString, color: SrgbaColor) -> RenderableLine:
|
||||
points: List[RenderablePoint] = []
|
||||
for coord in ls.coords:
|
||||
points.append(RenderablePoint(RenderablePosition(*coord), color))
|
||||
points.append(RenderablePoint(coord, color))
|
||||
return RenderableLine(points)
|
||||
|
||||
|
||||
@dataclass
|
||||
class RenderableLines(renderable.RenderableLines):
|
||||
# lines: List[RenderableLine]
|
||||
# space: CoordinateSpace = CoordinateSpace.WORLD
|
||||
class RenderableLines():
|
||||
lines: List[RenderableLine]
|
||||
space: CoordinateSpace = CoordinateSpace.WORLD
|
||||
|
||||
def as_simplified(self, method: SimplifyMethod = SimplifyMethod.RDP, factor = SIMPLIFY_FACTOR_RDP):
|
||||
"""Wraps RenderableLine simplification, smaller factor is more detailed"""
|
||||
|
|
@ -167,9 +151,7 @@ class RenderableLines(renderable.RenderableLines):
|
|||
|
||||
# def merge(self, rl: RenderableLines):
|
||||
|
||||
# RenderableLayers = Dict[int, RenderableLines]
|
||||
|
||||
RenderableLayers = renderable.RenderableLayers
|
||||
RenderableLayers = Dict[int, RenderableLines]
|
||||
|
||||
def circle_arc(cx, cy, r, t, l, c: SrgbaColor):
|
||||
"""
|
||||
|
|
@ -185,7 +167,7 @@ def circle_arc(cx, cy, r, t, l, c: SrgbaColor):
|
|||
x = cx + math.cos(i * (2*math.pi)/resolution) * r
|
||||
y = cy + math.sin(i * (2*math.pi)/resolution)* r
|
||||
|
||||
pointlist.append(RenderablePoint(RenderablePosition(x, y), c))
|
||||
pointlist.append(RenderablePoint((x, y), c))
|
||||
|
||||
|
||||
return RenderableLine(pointlist)
|
||||
|
|
@ -198,14 +180,14 @@ def cross_points(cx, cy, r, c: SrgbaColor):
|
|||
x = int(cx)
|
||||
y = int(cy + r - i * 2 * r/steps)
|
||||
pos = (x, y)
|
||||
pointlist.append(RenderablePoint(RenderablePosition(*pos), c))
|
||||
pointlist.append(RenderablePoint(pos, c))
|
||||
path = RenderableLine(pointlist)
|
||||
pointlist: list[RenderablePoint] = []
|
||||
for i in range(steps):
|
||||
y = int(cy)
|
||||
x = int(cx + r - i * 2 * r/steps)
|
||||
pos = (x, y)
|
||||
pointlist.append(RenderablePoint(RenderablePosition(*pos), c))
|
||||
pointlist.append(RenderablePoint(pos, c))
|
||||
path2 = RenderableLine(pointlist)
|
||||
|
||||
return [path, path2]
|
||||
|
|
@ -261,7 +243,7 @@ def load_lines_from_svg(svg_path: Path, scale: float, c: SrgbaColor, max_len = 0
|
|||
linestring = shapely.segmentize(linestring, max_len)
|
||||
|
||||
|
||||
points = [RenderablePoint(RenderablePosition(*pos), c) for pos in linestring.coords]
|
||||
points = [RenderablePoint(pos, c) for pos in linestring.coords]
|
||||
line = RenderableLine(points)
|
||||
lines.append(line)
|
||||
# linestrings.append(linestring)
|
||||
|
|
@ -282,7 +264,7 @@ class LineGenerator(ABC):
|
|||
|
||||
|
||||
def as_renderable(self, dt: DeltaT, color: SrgbaColor) -> RenderableLines:
|
||||
points = [RenderablePoint(RenderablePosition(*p), color) for p in self.get_drawn_points(dt)]
|
||||
points = [RenderablePoint(p, color) for p in self.get_drawn_points(dt)]
|
||||
lines = [RenderableLine(points)]
|
||||
return RenderableLines(lines)
|
||||
|
||||
|
|
@ -454,7 +436,7 @@ class StaticLine():
|
|||
self.points.extend(coords)
|
||||
|
||||
def as_renderable_line(self, dt: DeltaT) -> RenderableLine:
|
||||
points = [RenderablePoint(RenderablePosition(*p), self.color) for p in self.points]
|
||||
points = [RenderablePoint(p, self.color) for p in self.points]
|
||||
line = RenderableLine(points)
|
||||
return line
|
||||
|
||||
|
|
@ -541,7 +523,7 @@ class AppendableLineAnimator(LineAnimator):
|
|||
idx = len(self.drawn_points) - 1
|
||||
target = target_line.points[idx]
|
||||
|
||||
if np.isclose(self.drawn_points[-1].position.to_tuple(), target.position.to_tuple(), atol=.05).all():
|
||||
if np.isclose(self.drawn_points[-1].position, target.position, atol=.05).all():
|
||||
# TODO: might want to migrate to np.isclose()
|
||||
if len(self.drawn_points) == len(target_line):
|
||||
self.ready = True
|
||||
|
|
@ -554,8 +536,8 @@ class AppendableLineAnimator(LineAnimator):
|
|||
self.ready = False
|
||||
|
||||
decay_speed = self.draw_decay_speed if self.is_init else self.draw_decay_speed_init
|
||||
x = exponentialDecayRounded(self.drawn_points[-1].position.x, target.position.x, decay_speed, dt, .05)
|
||||
y = exponentialDecayRounded(self.drawn_points[-1].position.y, target.position.y, decay_speed, dt, .05)
|
||||
x = exponentialDecayRounded(self.drawn_points[-1].position[0], target.position[0], decay_speed, dt, .05)
|
||||
y = exponentialDecayRounded(self.drawn_points[-1].position[1], target.position[1], decay_speed, dt, .05)
|
||||
|
||||
# handle color gradient:
|
||||
# if self.drawn_points[-1].color != target.color:
|
||||
|
|
@ -565,7 +547,7 @@ class AppendableLineAnimator(LineAnimator):
|
|||
# t = (tx+ty) / 2
|
||||
# TODO: this should set color to intermediate color, but this is hardly used, so skip it for sake of speed
|
||||
|
||||
self.drawn_points[-1].position = RenderablePosition(float(x), float(y))
|
||||
self.drawn_points[-1].position = (float(x), float(y))
|
||||
|
||||
|
||||
|
||||
|
|
@ -780,7 +762,7 @@ class NoiseLine(LineAnimator):
|
|||
if self.amplitude < 0.01:
|
||||
return target_line
|
||||
|
||||
positions = np.array([p.position.to_tuple() for p in target_line.points])
|
||||
positions = np.array([p.position for p in target_line.points])
|
||||
new_positions = self.apply_perlin_noise_to_line_normal(
|
||||
positions,
|
||||
self.t * self.t_factor,
|
||||
|
|
@ -791,7 +773,7 @@ class NoiseLine(LineAnimator):
|
|||
points = []
|
||||
for point, pos in zip(target_line.points, new_positions):
|
||||
p = copy.deepcopy(point)
|
||||
p.position = RenderablePosition(*pos)
|
||||
p.position = pos
|
||||
points.append(p)
|
||||
|
||||
|
||||
|
|
@ -1046,14 +1028,14 @@ def layers_to_protobuf(layers: RenderableLayers):
|
|||
for n, lines in layers.items():
|
||||
# pb_lines = pb_layers.layers[n].value.add()
|
||||
pb_lines = renderable_pb2.RenderableLines()
|
||||
pb_lines.space = lines.space
|
||||
pb_lines.space = renderable_pb2.CoordinateSpace.WORLD
|
||||
|
||||
for line in lines.lines:
|
||||
l = renderable_pb2.RenderableLine()
|
||||
for p in line.points:
|
||||
point = renderable_pb2.RenderablePoint()
|
||||
point.position.x = p.position.x
|
||||
point.position.y = p.position.y
|
||||
point.position.x = p.position[0]
|
||||
point.position.y = p.position[1]
|
||||
point.color.red = p.color.red
|
||||
point.color.green = p.color.green
|
||||
point.color.blue = p.color.blue
|
||||
|
|
@ -1068,13 +1050,12 @@ def layers_to_protobuf(layers: RenderableLayers):
|
|||
return pb_layers
|
||||
|
||||
def layers_to_message(layers: RenderableLayers):
|
||||
t1 = time.perf_counter()
|
||||
# buf = layers_to_protobuf(layers)
|
||||
t2 = time.perf_counter()
|
||||
# s = buf.SerializeToString()
|
||||
s = bytes(layers)
|
||||
t3 = time.perf_counter()
|
||||
# t1 = time.perf_counter()
|
||||
buf = layers_to_protobuf(layers)
|
||||
# t2 = time.perf_counter()
|
||||
s = buf.SerializeToString()
|
||||
# t3 = time.perf_counter()
|
||||
|
||||
print( t2-t1, t3-t2, len(s))
|
||||
# print( t2-t1,t3-t2)
|
||||
|
||||
return s
|
||||
|
|
@ -547,10 +547,10 @@ class Stage(Node):
|
|||
t3 = time.perf_counter()
|
||||
|
||||
|
||||
layers = RenderableLayers({
|
||||
layers: RenderableLayers = {
|
||||
1: lines,
|
||||
2: self.debug_lines,
|
||||
})
|
||||
}
|
||||
|
||||
t4 = time.perf_counter()
|
||||
|
||||
|
|
@ -570,7 +570,7 @@ class Stage(Node):
|
|||
print(len(lines.lines))
|
||||
print(lines.point_count())
|
||||
print(len(msg))
|
||||
print(msg)
|
||||
# print(msg)
|
||||
# exit()
|
||||
|
||||
|
||||
|
|
|
|||
119
uv.lock
119
uv.lock
|
|
@ -248,23 +248,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16", size = 186015 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "betterproto"
|
||||
version = "1.2.5"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "grpclib" },
|
||||
{ name = "stringcase" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ff/2e/abfed7a721928e14aeb900182ff695be474c4ee5f07ef0874cc5ecd5b0b1/betterproto-1.2.5.tar.gz", hash = "sha256:74a3ab34646054f674d236d1229ba8182dc2eae86feb249b8590ef496ce9803d", size = 26098 }
|
||||
|
||||
[package.optional-dependencies]
|
||||
compiler = [
|
||||
{ name = "black" },
|
||||
{ name = "jinja2" },
|
||||
{ name = "protobuf" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bidict"
|
||||
version = "0.23.1"
|
||||
|
|
@ -274,29 +257,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/99/37/e8730c3587a65eb5645d4aba2d27aae48e8003614d6aaf15dda67f702f1f/bidict-0.23.1-py3-none-any.whl", hash = "sha256:5dae8d4d79b552a71cbabc7deb25dfe8ce710b17ff41711e13010ead2abfc3e5", size = 32764 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "black"
|
||||
version = "25.9.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "click" },
|
||||
{ name = "mypy-extensions" },
|
||||
{ name = "packaging" },
|
||||
{ name = "pathspec" },
|
||||
{ name = "platformdirs" },
|
||||
{ name = "pytokens" },
|
||||
{ name = "tomli" },
|
||||
{ name = "typing-extensions" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/4b/43/20b5c90612d7bdb2bdbcceeb53d588acca3bb8f0e4c5d5c751a2c8fdd55a/black-25.9.0.tar.gz", hash = "sha256:0474bca9a0dd1b51791fcc507a4e02078a1c63f6d4e4ae5544b9848c7adfb619", size = 648393 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/25/40/dbe31fc56b218a858c8fc6f5d8d3ba61c1fa7e989d43d4a4574b8b992840/black-25.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ce41ed2614b706fd55fd0b4a6909d06b5bab344ffbfadc6ef34ae50adba3d4f7", size = 1715605 },
|
||||
{ url = "https://files.pythonhosted.org/packages/92/b2/f46800621200eab6479b1f4c0e3ede5b4c06b768e79ee228bc80270bcc74/black-25.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2ab0ce111ef026790e9b13bd216fa7bc48edd934ffc4cbf78808b235793cbc92", size = 1571829 },
|
||||
{ url = "https://files.pythonhosted.org/packages/4e/64/5c7f66bd65af5c19b4ea86062bb585adc28d51d37babf70969e804dbd5c2/black-25.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f96b6726d690c96c60ba682955199f8c39abc1ae0c3a494a9c62c0184049a713", size = 1631888 },
|
||||
{ url = "https://files.pythonhosted.org/packages/3b/64/0b9e5bfcf67db25a6eef6d9be6726499a8a72ebab3888c2de135190853d3/black-25.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:d119957b37cc641596063cd7db2656c5be3752ac17877017b2ffcdb9dfc4d2b1", size = 1327056 },
|
||||
{ url = "https://files.pythonhosted.org/packages/1b/46/863c90dcd3f9d41b109b7f19032ae0db021f0b2a81482ba0a1e28c84de86/black-25.9.0-py3-none-any.whl", hash = "sha256:474b34c1342cdc157d307b56c4c65bce916480c4a8f6551fdc6bf9b486a7c4ae", size = 203363 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bleach"
|
||||
version = "6.2.0"
|
||||
|
|
@ -753,19 +713,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/3d/d2/c5211feb81a532eca2c4dddd00d4971b91c10837cd083781f6ab3a6fdb5b/grpcio_tools-1.76.0-cp310-cp310-win_amd64.whl", hash = "sha256:ec6e49e7c4b2a222eb26d1e1726a07a572b6e629b2cf37e6bb784c9687904a52", size = 1158401 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "grpclib"
|
||||
version = "0.4.8"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "h2" },
|
||||
{ name = "multidict" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/19/75/0f0d3524b38b35e5cd07334b754aa9bd0570140ad982131b04ebfa3b0374/grpclib-0.4.8.tar.gz", hash = "sha256:d8823763780ef94fed8b2c562f7485cf0bbee15fc7d065a640673667f7719c9a", size = 62793 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/03/8b/ad381ec1b8195fa4a9a693cb8087e031b99530c0d6b8ad036dcb99e144c4/grpclib-0.4.8-py3-none-any.whl", hash = "sha256:a5047733a7acc1c1cee6abf3c841c7c6fab67d2844a45a853b113fa2e6cd2654", size = 76311 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h11"
|
||||
version = "0.14.0"
|
||||
|
|
@ -775,28 +722,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "4.3.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "hpack" },
|
||||
{ name = "hyperframe" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/1d/17/afa56379f94ad0fe8defd37d6eb3f89a25404ffc71d4d848893d270325fc/h2-4.3.0.tar.gz", hash = "sha256:6c59efe4323fa18b47a632221a1888bd7fde6249819beda254aeca909f221bf1", size = 2152026 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/69/b2/119f6e6dcbd96f9069ce9a2665e0146588dc9f88f29549711853645e736a/h2-4.3.0-py3-none-any.whl", hash = "sha256:c438f029a25f7945c69e0ccf0fb951dc3f73a5f6412981daee861431b70e2bdd", size = 61779 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hpack"
|
||||
version = "4.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/2c/48/71de9ed269fdae9c8057e5a4c0aa7402e8bb16f2c6e90b3aa53327b113f8/hpack-4.1.0.tar.gz", hash = "sha256:ec5eca154f7056aa06f196a557655c5b009b382873ac8d1e66e79e87535f1dca", size = 51276 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/07/c6/80c95b1b2b94682a72cbdbfb85b81ae2daffa4291fbfa1b1464502ede10d/hpack-4.1.0-py3-none-any.whl", hash = "sha256:157ac792668d995c657d93111f46b4535ed114f0c9c8d672271bbec7eae1b496", size = 34357 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "httpcore"
|
||||
version = "1.0.7"
|
||||
|
|
@ -840,15 +765,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hyperframe"
|
||||
version = "6.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/02/e7/94f8232d4a74cc99514c13a9f995811485a6903d48e5d952771ef6322e30/hyperframe-6.1.0.tar.gz", hash = "sha256:f630908a00854a7adeabd6382b43923a4c4cd4b821fcb527e6ab9e15382a3b08", size = 26566 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/48/30/47d0bf6072f7252e6521f3447ccfa40b421b6824517f82854703d0f5a98b/hyperframe-6.1.0-py3-none-any.whl", hash = "sha256:b03380493a519fce58ea5af42e4a42317bf9bd425596f7a0835ffce80f1a42e5", size = 13007 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "idna"
|
||||
version = "3.10"
|
||||
|
|
@ -1399,15 +1315,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/9c/fd/b247aec6add5601956d440488b7f23151d8343747e82c038af37b28d6098/multidict-6.2.0-py3-none-any.whl", hash = "sha256:5d26547423e5e71dcc562c4acdc134b900640a39abd9066d7326a7cc2324c530", size = 10266 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mypy-extensions"
|
||||
version = "1.1.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "narwhals"
|
||||
version = "2.9.0"
|
||||
|
|
@ -1727,15 +1634,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pathspec"
|
||||
version = "0.12.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pexpect"
|
||||
version = "4.9.0"
|
||||
|
|
@ -2116,15 +2014,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/bf/2d/1c95ebe84df60d630f8e855d1df2c66368805444ac167e9b50f29eabe917/python_statemachine-2.5.0-py3-none-any.whl", hash = "sha256:0ed53846802c17037fcb2a92323f4bc0c833290fa9d17a3587c50886c1541e62", size = 50415 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pytokens"
|
||||
version = "0.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/d4/c2/dbadcdddb412a267585459142bfd7cc241e6276db69339353ae6e241ab2b/pytokens-0.2.0.tar.gz", hash = "sha256:532d6421364e5869ea57a9523bf385f02586d4662acbcc0342afd69511b4dd43", size = 15368 }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/89/5a/c269ea6b348b6f2c32686635df89f32dbe05df1088dd4579302a6f8f99af/pytokens-0.2.0-py3-none-any.whl", hash = "sha256:74d4b318c67f4295c13782ddd9abcb7e297ec5630ad060eb90abf7ebbefe59f8", size = 12038 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pytz"
|
||||
version = "2025.2"
|
||||
|
|
@ -2520,12 +2409,6 @@ wheels = [
|
|||
{ url = "https://files.pythonhosted.org/packages/a0/4b/528ccf7a982216885a1ff4908e886b8fb5f19862d1962f56a3fce2435a70/starlette-0.46.1-py3-none-any.whl", hash = "sha256:77c74ed9d2720138b25875133f3a2dae6d854af2ec37dceb56aef370c1d8a227", size = 71995 },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "stringcase"
|
||||
version = "1.2.0"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/f3/1f/1241aa3d66e8dc1612427b17885f5fcd9c9ee3079fc0d28e9a3aeeb36fa3/stringcase-1.2.0.tar.gz", hash = "sha256:48a06980661908efe8d9d34eab2b6c13aefa2163b3ced26972902e3bdfd87008", size = 2958 }
|
||||
|
||||
[[package]]
|
||||
name = "superfsmon"
|
||||
version = "1.2.3"
|
||||
|
|
@ -2873,7 +2756,6 @@ version = "0.1.0"
|
|||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "baumer-neoapi" },
|
||||
{ name = "betterproto", extra = ["compiler"] },
|
||||
{ name = "bytetracker" },
|
||||
{ name = "deep-sort-realtime" },
|
||||
{ name = "facenet-pytorch" },
|
||||
|
|
@ -2915,7 +2797,6 @@ dependencies = [
|
|||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "baumer-neoapi", path = "../../Downloads/Baumer_neoAPI_1.5.0_lin_x86_64_python/wheel/baumer_neoapi-1.5.0-cp34.cp35.cp36.cp37.cp38.cp39.cp310.cp311.cp312-none-linux_x86_64.whl" },
|
||||
{ name = "betterproto", extras = ["compiler"], specifier = ">=1.2.5" },
|
||||
{ name = "bytetracker", git = "https://github.com/rubenvandeven/bytetrack-pip" },
|
||||
{ name = "deep-sort-realtime", specifier = ">=1.3.2,<2" },
|
||||
{ name = "facenet-pytorch", specifier = ">=2.5.3" },
|
||||
|
|
|
|||
Loading…
Reference in a new issue