diff --git a/pyproject.toml b/pyproject.toml index e15cb26..f68a598 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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] diff --git a/trap/lines.py b/trap/lines.py index e3a1d8a..4c8ab97 100644 --- a/trap/lines.py +++ b/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 \ No newline at end of file diff --git a/trap/stage.py b/trap/stage.py index 1eb6085..1b001ad 100644 --- a/trap/stage.py +++ b/trap/stage.py @@ -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() diff --git a/uv.lock b/uv.lock index 41bdb08..32a30e4 100644 --- a/uv.lock +++ b/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" },