diff --git a/.python-version b/.python-version new file mode 100644 index 0000000000..2c0733315e --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.11 diff --git a/README.md b/README.md index 2a09aac241..14044b210f 100644 --- a/README.md +++ b/README.md @@ -372,4 +372,80 @@ The Agents framework is under active development in a rapidly evolving field. We ResourcesDocs · Example apps · Cloud · Self-hosting · CLI + +## Context-Aware Interruption Handling (Assignment Solution) + +This section documents the solution implemented for the **LiveKit Intelligent Interruption Handling** assignment. + +--- + +## Overview + +The goal of this implementation is to improve conversational flow by distinguishing between: + +- **Passive acknowledgements** such as “yeah”, “ok”, “hmm” +- **Active interruptions** such as “stop”, “wait”, “no” + +based on whether the agent is **currently speaking or silent**, without modifying the low-level Voice Activity Detection (VAD) system. + +--- + +## How to Run the Agent + +### 1. Set environment variables + +```bash +setx OPENAI_API_KEY "" +setx DEEPGRAM_API_KEY "" + +python examples/voice_agents/interrupt_agent.py dev +``` + +IGNORE_WORDS = { + "okay", "ok", "yeah", "hmm", "uh", "uhh", "uh-huh", "right", "aha" +} +```bash +async def on_audio_start(self): + self.speaking = True + +async def on_audio_end(self): + self.speaking = False +``` + +## Supported Scenarios + +✔ Agent ignores “yeah / ok” while speaking +✔ Agent responds to “yeah / ok” when silent +✔ Agent stops immediately on “stop” +✔ Mixed inputs like “yeah okay but wait” interrupt correctly + +--- + +## Semantic Interruption Detection + +User input is classified semantically: + +- If an interruption keyword is present, the agent stops immediately +- Mixed inputs such as **“yeah okay but wait”** correctly trigger an interruption + +--- + +## Handling False Interruptions (No VAD Modification) + +Voice Activity Detection (VAD) operates faster than speech-to-text and may briefly interrupt agent audio before transcription is available. + +Instead of modifying VAD (which is explicitly disallowed), this implementation: + +- Allows VAD to trigger normally +- Identifies passive acknowledgements after transcription +- Treats them as false interruptions +- Automatically resumes the agent’s speech +- Suppresses unintended responses + +This behavior is enabled using LiveKit’s built-in recovery mechanism: + +```python +resume_false_interruption = True +false_interruption_timeout = 1.5 + diff --git a/examples/.env.example b/examples/.env.example deleted file mode 100644 index d71e0e2b12..0000000000 --- a/examples/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -LIVEKIT_API_SECRET="" -LIVEKIT_API_KEY="" -LIVEKIT_URL="" \ No newline at end of file diff --git a/examples/voice_agents/myagent.py b/examples/voice_agents/myagent.py new file mode 100644 index 0000000000..6892c39bde --- /dev/null +++ b/examples/voice_agents/myagent.py @@ -0,0 +1,156 @@ +import os +import re +import logging +from dotenv import load_dotenv + +from livekit.agents import ( + Agent, + AgentServer, + AgentSession, + JobContext, + JobProcess, + cli, + room_io, +) +from livekit.plugins import silero + +# -------------------------------------------------- +# Setup +# -------------------------------------------------- + +load_dotenv() +logger = logging.getLogger("interrupt-agent") + +# Passive backchannel words (configurable) +IGNORE_WORDS = { + "okay", "ok", "yeah", "hmm", "uh", "uhh", "uh-huh", "right", "aha" +} + +# Explicit interruption commands +INTERRUPT_WORDS = { + "stop", "wait", "no", "pause", "hold" +} + + +def classify(text: str) -> str: + """ + Classify user input into: + - IGNORE: passive acknowledgement + - INTERRUPT: explicit command + - VALID: normal speech + """ + text = re.sub(r"[^\w\s]", "", text.lower().strip()) + tokens = set(text.split()) + + # Semantic interruption always wins + if tokens & INTERRUPT_WORDS: + return "INTERRUPT" + + # Pure filler only + if tokens and tokens.issubset(IGNORE_WORDS): + return "IGNORE" + + return "VALID" + + +# -------------------------------------------------- +# Agent +# -------------------------------------------------- + +class InterruptAwareAgent(Agent): + def __init__(self): + super().__init__( + instructions=( + "Your name is Kelly. You are a friendly voice assistant. " + "Speak clearly and naturally. English only." + ) + ) + self.speaking = False + + async def on_audio_start(self): + self.speaking = True + + async def on_audio_end(self): + self.speaking = False + + async def on_enter(self): + self.speaking = True + self.session.generate_reply() + + async def on_user_message(self, message: str): + decision = classify(message) + + logger.info( + f"user_message='{message}' decision={decision} speaking={self.speaking}" + ) + + # -------------------------------------------------- + # AGENT IS SPEAKING + # -------------------------------------------------- + if self.speaking: + + # Passive acknowledgement → FALSE INTERRUPTION + if decision == "IGNORE": + # Let LiveKit resume audio automatically + self.session.cancel_generation() + return + + # Explicit command → HARD INTERRUPT + if decision == "INTERRUPT": + await self.session.stop_audio() + self.session.cancel_generation() + self.speaking = False + return + + # Real speech → interrupt and respond + await self.session.stop_audio() + self.speaking = False + await self.session.generate_reply() + return + + # -------------------------------------------------- + # AGENT IS SILENT + # -------------------------------------------------- + await self.session.generate_reply() + + +# -------------------------------------------------- +# Server +# -------------------------------------------------- + +server = AgentServer() + + +def prewarm(proc: JobProcess): + proc.userdata["vad"] = silero.VAD.load() + + +server.setup_fnc = prewarm + + +@server.rtc_session() +async def entrypoint(ctx: JobContext): + session = AgentSession( + stt="deepgram/nova-3", + llm="openai/gpt-4.1-mini", + tts="cartesia/sonic-2", + vad=ctx.proc.userdata["vad"], + + # 🔑 REQUIRED FOR FALSE-INTERRUPTION HANDLING + turn_detection=None, + preemptive_generation=False, + resume_false_interruption=True, + false_interruption_timeout=1.0, + ) + + await session.start( + agent=InterruptAwareAgent(), + room=ctx.room, + room_options=room_io.RoomOptions( + audio_input=room_io.AudioInputOptions() + ), + ) + + +if __name__ == "__main__": + cli.run_app(server) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 4a46b53ebc..41b357e85f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ livekit-plugins-aws = { workspace = true } livekit-plugins-azure = { workspace = true } livekit-plugins-baseten = { workspace = true } livekit-plugins-bey = { workspace = true } -livekit-plugins-bithuman = { workspace = true } + livekit-plugins-cartesia = { workspace = true } livekit-plugins-clova = { workspace = true } livekit-plugins-deepgram = { workspace = true } @@ -53,6 +53,7 @@ members = ["livekit-plugins/*", "livekit-agents"] exclude = [ "livekit-plugins/livekit-plugins-browser", "livekit-plugins/livekit-blingfire", + "livekit-plugins/livekit-plugins-bithuman", ] [dependency-groups] diff --git a/uv.lock b/uv.lock index 0b49d4cf73..5657fc2715 100644 --- a/uv.lock +++ b/uv.lock @@ -33,7 +33,6 @@ members = [ "livekit-plugins-azure", "livekit-plugins-baseten", "livekit-plugins-bey", - "livekit-plugins-bithuman", "livekit-plugins-cartesia", "livekit-plugins-clova", "livekit-plugins-deepgram", @@ -509,7 +508,7 @@ wheels = [ [[package]] name = "bithuman" -version = "0.6.0" +version = "0.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -525,13 +524,10 @@ dependencies = [ { name = "numba", version = "0.61.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "numpy", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "opencv-python" }, { name = "pydantic" }, { name = "pydantic-settings" }, { name = "pyyaml" }, { name = "pyzmq" }, - { name = "scikit-image", version = "0.24.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "scikit-image", version = "0.25.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, { name = "scipy", version = "1.15.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, { name = "soundfile" }, @@ -539,26 +535,26 @@ dependencies = [ { name = "tqdm" }, ] wheels = [ - { url = "https://files.pythonhosted.org/packages/27/46/04bbb6d3605e13d2f701238b4cda1aeb9ece0eccca011f9572bafaa44a10/bithuman-0.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:37ca467a0c0118e3ee00fdf1eb6b6bc77849581319798f8ee00fa460f282fa18", size = 24861899, upload-time = "2025-09-26T08:12:16.026Z" }, - { url = "https://files.pythonhosted.org/packages/ab/ae/059c9b15a5a386610ea85f90b869b04ea2ad2932f16bdc210bcae7781fe8/bithuman-0.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96cb1045cf26460c08e031881c72f546e5e35671323e7f005e8ddc56a72ed179", size = 22916096, upload-time = "2025-09-26T08:12:19.446Z" }, - { url = "https://files.pythonhosted.org/packages/aa/5c/656baef735d766cda50990ab296fcc9f328f9ea2050eb4d8a227c0aae642/bithuman-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ca05e38d43ae7347db21e7f837da8cd9b24b9e70ef7809dd9583f076e2b76af4", size = 22651213, upload-time = "2025-09-26T12:18:27.551Z" }, - { url = "https://files.pythonhosted.org/packages/2b/80/56137ed5b9f64a9a6991186c89d380f53dc654082a73349b7c3ac8fc4c19/bithuman-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:99a87e7939fca51c9727f1e470906ff02f320eaa746fa927f0bfa124dee6ba25", size = 24045962, upload-time = "2025-09-26T08:15:48.876Z" }, - { url = "https://files.pythonhosted.org/packages/e7/f8/a43e741f070e14d656041e7efd88e87e944816806f1c40ee7ed022a44387/bithuman-0.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0a2f5c09953b2bf176b4bbb5cccf54c2bf46c3cf6c39f353a4b03882fa6da14", size = 24862566, upload-time = "2025-09-26T08:12:21.719Z" }, - { url = "https://files.pythonhosted.org/packages/ae/4f/11f0856ad181cb7629777ed3c762e09767409eef0c79784846787883a0eb/bithuman-0.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f9a3df1dbe478a9685697af827cd22ca271391c01ca384656627949f5ce89cbb", size = 22917739, upload-time = "2025-09-26T08:12:24.628Z" }, - { url = "https://files.pythonhosted.org/packages/7f/e5/a6f9ca2cdc7fe91b8b81acd7b8ae8771191cdd6b7aad4c5ce1ea67fe591a/bithuman-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:fb323483bda914a440f4df189afa23b3b9bad9c08db41e9898dfe2c498597545", size = 22651720, upload-time = "2025-09-26T12:18:30.208Z" }, - { url = "https://files.pythonhosted.org/packages/43/5b/0ab2f05bbdf00b4906f1e706aebec3c5a8e169d2dbc2f2b6245e66dd79bf/bithuman-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:f241cd6ea07e4ac93d441e0a9c39e97ad35384c186d086ab947e4535d94edb0f", size = 24047470, upload-time = "2025-09-26T08:15:51.378Z" }, - { url = "https://files.pythonhosted.org/packages/e8/29/89295bbd5ff4c1bd9f7c5c4863ce0dc40516c67f1b3ad38c60559966c576/bithuman-0.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b378b4f7b287e341440046fde27c2a8af06b51b3b50ca1a4c17f504d864cb358", size = 24863110, upload-time = "2025-09-26T08:12:26.951Z" }, - { url = "https://files.pythonhosted.org/packages/6b/88/238d6588a621686c648683418d0694a783bfbbb9afc44cf3e472603c7b45/bithuman-0.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f17628ff4ee0de07ce7a10813091f0c48dfb633906a6026ef6df06f4e8b5a82e", size = 22917404, upload-time = "2025-09-26T08:12:30.01Z" }, - { url = "https://files.pythonhosted.org/packages/a5/d3/c71fc57c44a53a90b4b2c8704570ea513a007eb80975827c92d6d41cfae1/bithuman-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:44dda5aca67f40b06ece0a1c02ae7472811cb582164580543de6e0c4bd75dfc3", size = 22652392, upload-time = "2025-09-26T12:18:32.663Z" }, - { url = "https://files.pythonhosted.org/packages/bb/15/346a32874dcb6960fa4f35a883bad4136da3abd397dcbd27c97330b66831/bithuman-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:83cf34bb335ff62834eb3ae0cd19f5f29c8d12117003942aae12d23178a43e7d", size = 24047726, upload-time = "2025-09-26T08:15:53.57Z" }, - { url = "https://files.pythonhosted.org/packages/1f/42/68a0087a1ef93814fcf1dcea2f873f797ad4ae61f0e5dedae624dc85583c/bithuman-0.6.0-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:17e03c4f7296956bf63e74b1b3dfeb0d336060aca1a2221eef82281fa09170be", size = 24863197, upload-time = "2025-09-26T08:12:32.465Z" }, - { url = "https://files.pythonhosted.org/packages/0a/fc/f4617724d052ccd8bc954ad9b6fef5d790dbb4f3649342c0edcbb211f30c/bithuman-0.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:702530007ba0e3da76f726d49edeedab76f08606c24630c32e398ab8f84ab988", size = 22917971, upload-time = "2025-09-26T08:12:35.052Z" }, - { url = "https://files.pythonhosted.org/packages/09/e2/09568a4c5e16d230eebeaee11cf6dbaf455a6a3de635564149777e8ddd1b/bithuman-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:a028b58050ddba195caba1e2355ce6da12eaa16db1e0433e416cd502688f37e0", size = 22652214, upload-time = "2025-09-26T12:18:34.803Z" }, - { url = "https://files.pythonhosted.org/packages/c4/35/1a5cde2795abdd328c015eb7e9ac07ce55a305577fb88f9b8585fd0772cd/bithuman-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:da2ae7e923d95ed00a9f0c62f73e691d3324b2c0d820946493eafaf7b5dab994", size = 24047418, upload-time = "2025-09-26T08:15:55.706Z" }, - { url = "https://files.pythonhosted.org/packages/c4/92/4cec69b5d206cb50c4ce43c4860768c9890fdc1e0f5c90d6d24cd3acea57/bithuman-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:346431c9f49b7e620c452bf38b19ceca92ef9b2f4131c10a8735274d48f0fb38", size = 24861978, upload-time = "2025-09-26T08:12:37.528Z" }, - { url = "https://files.pythonhosted.org/packages/cd/42/109001c20382043bdda1c4b7eca3400b645975e8196f353f78eaa0a4151d/bithuman-0.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f8d3f16ea8a3fe655fc7c86d2a88caeb29a9f11642961f9fb46b8bad5287522", size = 22916258, upload-time = "2025-09-26T08:12:40.596Z" }, - { url = "https://files.pythonhosted.org/packages/27/60/c6e9ad6e58e461c5ec644dbc82c85908e0146fbc88da1e48008b5eeff432/bithuman-0.6.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:a282d1d98d5d8ce2714ceed54dadfd2d72d95d15f67661317a1ed1ed1c8c5a13", size = 22651390, upload-time = "2025-09-26T12:18:36.947Z" }, - { url = "https://files.pythonhosted.org/packages/c0/42/cc4a0a172b2fd10efbae252919672372876c33890306fa3ff54c7fdff6dc/bithuman-0.6.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:2ee10cf37c788e9366a447584e83f062c45b8a775647ce92d3e39fa362c4268f", size = 24046444, upload-time = "2025-09-26T08:15:58.017Z" }, + { url = "https://files.pythonhosted.org/packages/59/ff/beac24a8af3a534e9612a438f9f748f9f91866d93944a68319d1b50edd06/bithuman-0.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5496618b6e94b3380bfa4580d8b202e81723aad21b58b09c46e398241e98f1bb", size = 23298519, upload-time = "2026-01-29T21:59:50.571Z" }, + { url = "https://files.pythonhosted.org/packages/48/6f/f5bd3efba578e54e278a992fe3e13ae7241a237b7d04072fbda6852b3614/bithuman-0.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:686bb67ace33edcae5d547b1f638c3c3b4e00600b44dc807ec24e60ef222c73d", size = 21849491, upload-time = "2026-01-29T21:59:53.619Z" }, + { url = "https://files.pythonhosted.org/packages/42/78/e6c296c24ae665ed3d1bc7ea6f5fca3b149beb47b07cff8a4d720b3ce681/bithuman-0.10.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:09400b2b2389052d2199b5c4611518e1019d1e85355f20f7fc9533d9341828fe", size = 21011089, upload-time = "2026-01-30T00:40:09.312Z" }, + { url = "https://files.pythonhosted.org/packages/a7/7f/2c1d24589102ee6b1ff413ecf1e5de03b229ba2d3068119619f5bca23ac2/bithuman-0.10.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:628b35495c496492fcf9fe12086714254e7d36c3190b7a28c466ae8e08768718", size = 21885162, upload-time = "2026-01-29T21:58:36.195Z" }, + { url = "https://files.pythonhosted.org/packages/d9/0c/81c34baa322f157ac7f74becffd5aa4fde2850a9438ec392983cd9abb40f/bithuman-0.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d370ee54e441b44c23c443618bb039f239f4a9a65b9a0a7d2a3f61f34430063f", size = 23300346, upload-time = "2026-01-29T22:00:01.585Z" }, + { url = "https://files.pythonhosted.org/packages/86/75/0c3265bbe62a260081b64be6c748a41efcd846d9f00e59b3677d8b2732ab/bithuman-0.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c92c4bbfb0600d1bc427c864529c8b25f0cb58466fb4c795e4070ae075295188", size = 21851006, upload-time = "2026-01-29T22:00:04.799Z" }, + { url = "https://files.pythonhosted.org/packages/ca/79/7a958ca4c97e9be0941c5ec8447b77ef69bfe796686ff46f6d4381992862/bithuman-0.10.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c71a2f7b667b78fc4eb6e93ac272b968724cc3ea9ad15456eb651b7dfd5657d9", size = 21011431, upload-time = "2026-01-30T00:40:12.17Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8c/f7dc05d8216d87291db1c4036361f205df301959aee26e63c2ce202be0b9/bithuman-0.10.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:91ef30f3e1c2bb7cc25c73acbfde97e2e109c96a4c19fd84df5d295086d5af94", size = 21886927, upload-time = "2026-01-29T21:58:39.069Z" }, + { url = "https://files.pythonhosted.org/packages/d2/7c/07ec7e4496b6223b3532ebe0911d957cbd2d2e975d0b51c29d6652c6fb0a/bithuman-0.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c89ab8cdd3a837198afda8942a3acfc2f23210fa0ad2999dc2805895b848688c", size = 23300122, upload-time = "2026-01-29T22:00:07.632Z" }, + { url = "https://files.pythonhosted.org/packages/16/db/5509e2cbe1c8971a6572291001133b1e566444bb53afd676b28504449770/bithuman-0.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f48240056137a9cb4cae4a76c81108f09bc86eb53133788d0b542c7db8a3dd", size = 21851242, upload-time = "2026-01-29T22:00:10.086Z" }, + { url = "https://files.pythonhosted.org/packages/e1/a4/349f8cc5eba6ea1b44a7a0f2541b296740f7c78363dcc5585a97cbca2b8d/bithuman-0.10.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:5b700e5d7ed5dfbd849129c14d3a0df8d7385e400d7410c926eccefd99d979b9", size = 21010911, upload-time = "2026-01-30T00:40:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/7e/07/51b724aa65ccf6ae2518f0b2a76fa830c7f21b148369558600662c9cdf66/bithuman-0.10.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:12083a27e8772ed65e2faf8bcd574444148b1c8dbfef88a81eeac65393a81320", size = 21886452, upload-time = "2026-01-29T21:58:42.076Z" }, + { url = "https://files.pythonhosted.org/packages/13/ed/908406e21057fc86e372536fe6da6690d049ddd169ad88634ee4e4ad38ff/bithuman-0.10.1-cp313-cp313-macosx_10_9_x86_64.whl", hash = "sha256:acd2a86d7df4bb8410c39c7bde417fc7b253681b5cf31aedfdf88520d2ffddbe", size = 23300236, upload-time = "2026-01-29T22:00:12.601Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a2/28be41f577c56bb77e2c75a64cf03f3f2282a4aa39a29b594bc21a461ebc/bithuman-0.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3d7e75dd576ef4c5b3191b401ce3b4814566a865b0e242fdbd7041a9e96d0d91", size = 21850494, upload-time = "2026-01-29T22:00:15.474Z" }, + { url = "https://files.pythonhosted.org/packages/4d/42/530fc6b67cc60003375913978f59a683223699a4112856b8008969848d9a/bithuman-0.10.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:aa0869747811e41c427909ec86d495e3eedf3cc584f5d0dd10617758e068fc05", size = 21010861, upload-time = "2026-01-30T00:40:17.643Z" }, + { url = "https://files.pythonhosted.org/packages/75/2e/7f1f52fcfc3d8c7b5bcb86d44753be4d15503d1afcf255e34f9ddbac30a0/bithuman-0.10.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:77703779d5c7c403155f2457654062ba14ddce643af48e4cdd5a05688aa80bc9", size = 21886175, upload-time = "2026-01-29T21:58:44.869Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ff/ec279fce0915fb3e0084e073808167d9f0b7f796aad6b0321cd2fd1ddb18/bithuman-0.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1df24c8ada67221eb13d00692e58c30a21e4198acb1d4c44cd1c6758acba8d98", size = 23298885, upload-time = "2026-01-29T22:00:25.42Z" }, + { url = "https://files.pythonhosted.org/packages/4f/aa/4e180975682345cedad48768672d64f4e71ebcc98b9b658ff24c511ab57f/bithuman-0.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d170fae4ca4d90057d8ab2488af6ec9c99b6a7b67182795d83e95578dee58368", size = 21849567, upload-time = "2026-01-29T22:00:27.887Z" }, + { url = "https://files.pythonhosted.org/packages/db/ae/fa17457c7b973d0813c757d14e58429edfcded552553a64623c4b42c3d5f/bithuman-0.10.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:37bbb8773f16c661eb70bda3bd965ff47aee35f6395cc44e920badfe43afd69a", size = 21011229, upload-time = "2026-01-30T00:40:22.368Z" }, + { url = "https://files.pythonhosted.org/packages/3e/ce/d874814f01d073716f7ebe33b217a0d0d5e5512f01ee4feeb38b41f96a38/bithuman-0.10.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:234563340d9219e865adec5326015e03e228890042e3313452607f2242ec19d2", size = 21885688, upload-time = "2026-01-29T21:58:49.54Z" }, ] [[package]] @@ -2042,7 +2038,7 @@ requires-dist = [ { name = "livekit-plugins-azure", marker = "extra == 'azure'", editable = "livekit-plugins/livekit-plugins-azure" }, { name = "livekit-plugins-baseten", marker = "extra == 'baseten'", editable = "livekit-plugins/livekit-plugins-baseten" }, { name = "livekit-plugins-bey", marker = "extra == 'bey'", editable = "livekit-plugins/livekit-plugins-bey" }, - { name = "livekit-plugins-bithuman", marker = "extra == 'bithuman'", editable = "livekit-plugins/livekit-plugins-bithuman" }, + { name = "livekit-plugins-bithuman", marker = "extra == 'bithuman'", specifier = ">=1.3.3" }, { name = "livekit-plugins-cartesia", marker = "extra == 'cartesia'", editable = "livekit-plugins/livekit-plugins-cartesia" }, { name = "livekit-plugins-clova", marker = "extra == 'clova'", editable = "livekit-plugins/livekit-plugins-clova" }, { name = "livekit-plugins-deepgram", marker = "extra == 'deepgram'", editable = "livekit-plugins/livekit-plugins-deepgram" }, @@ -2263,16 +2259,15 @@ requires-dist = [{ name = "livekit-agents", editable = "livekit-agents" }] [[package]] name = "livekit-plugins-bithuman" -source = { editable = "livekit-plugins/livekit-plugins-bithuman" } +version = "1.3.3" +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "bithuman" }, { name = "livekit-agents" }, ] - -[package.metadata] -requires-dist = [ - { name = "bithuman", specifier = ">=0.5.25" }, - { name = "livekit-agents", editable = "livekit-agents" }, +sdist = { url = "https://files.pythonhosted.org/packages/65/87/fc334c0d071b3bc49d0d6fe31ee77f044653522a9bf059153ffe1b07225b/livekit_plugins_bithuman-1.3.3.tar.gz", hash = "sha256:8a2b78379813f976f2ea17a1eff2fcd45899bca2924fbf6ee6f050b86ee03c40", size = 7717, upload-time = "2025-11-19T21:20:50.566Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/29/96974ebc4c42fe5da80b776b6573801797e04f7f80123af2cfd0d22673eb/livekit_plugins_bithuman-1.3.3-py3-none-any.whl", hash = "sha256:6ecb98eef03c5f8b8d39ed680f36733cc9ed11040373cd53dc29d3ef38b6146f", size = 7887, upload-time = "2025-11-19T21:20:49.775Z" }, ] [[package]] @@ -3711,24 +3706,6 @@ realtime = [ { name = "websockets" }, ] -[[package]] -name = "opencv-python" -version = "4.11.0.86" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/17/06/68c27a523103dad5837dc5b87e71285280c4f098c60e4fe8a8db6486ab09/opencv-python-4.11.0.86.tar.gz", hash = "sha256:03d60ccae62304860d232272e4a4fda93c39d595780cb40b161b310244b736a4", size = 95171956, upload-time = "2025-01-16T13:52:24.737Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/4d/53b30a2a3ac1f75f65a59eb29cf2ee7207ce64867db47036ad61743d5a23/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_arm64.whl", hash = "sha256:432f67c223f1dc2824f5e73cdfcd9db0efc8710647d4e813012195dc9122a52a", size = 37326322, upload-time = "2025-01-16T13:52:25.887Z" }, - { url = "https://files.pythonhosted.org/packages/3b/84/0a67490741867eacdfa37bc18df96e08a9d579583b419010d7f3da8ff503/opencv_python-4.11.0.86-cp37-abi3-macosx_13_0_x86_64.whl", hash = "sha256:9d05ef13d23fe97f575153558653e2d6e87103995d54e6a35db3f282fe1f9c66", size = 56723197, upload-time = "2025-01-16T13:55:21.222Z" }, - { url = "https://files.pythonhosted.org/packages/f3/bd/29c126788da65c1fb2b5fb621b7fed0ed5f9122aa22a0868c5e2c15c6d23/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b92ae2c8852208817e6776ba1ea0d6b1e0a1b5431e971a2a0ddd2a8cc398202", size = 42230439, upload-time = "2025-01-16T13:51:35.822Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8b/90eb44a40476fa0e71e05a0283947cfd74a5d36121a11d926ad6f3193cc4/opencv_python-4.11.0.86-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b02611523803495003bd87362db3e1d2a0454a6a63025dc6658a9830570aa0d", size = 62986597, upload-time = "2025-01-16T13:52:08.836Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d7/1d5941a9dde095468b288d989ff6539dd69cd429dbf1b9e839013d21b6f0/opencv_python-4.11.0.86-cp37-abi3-win32.whl", hash = "sha256:810549cb2a4aedaa84ad9a1c92fbfdfc14090e2749cedf2c1589ad8359aa169b", size = 29384337, upload-time = "2025-01-16T13:52:13.549Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/f1c30a92854540bf789e9cd5dde7ef49bbe63f855b85a2e6b3db8135c591/opencv_python-4.11.0.86-cp37-abi3-win_amd64.whl", hash = "sha256:085ad9b77c18853ea66283e98affefe2de8cc4c1f43eda4c100cf9b2721142ec", size = 39488044, upload-time = "2025-01-16T13:52:21.928Z" }, -] - [[package]] name = "opentelemetry-api" version = "1.34.1" @@ -5130,105 +5107,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/69/e2/b011c38e5394c4c18fb5500778a55ec43ad6106126e74723ffaee246f56e/safetensors-0.5.3-cp38-abi3-win_amd64.whl", hash = "sha256:836cbbc320b47e80acd40e44c8682db0e8ad7123209f69b093def21ec7cafd11", size = 308878, upload-time = "2025-02-26T09:15:14.99Z" }, ] -[[package]] -name = "scikit-image" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", - "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "imageio", marker = "python_full_version < '3.10'" }, - { name = "lazy-loader", marker = "python_full_version < '3.10'" }, - { name = "networkx", version = "3.2.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "packaging", marker = "python_full_version < '3.10'" }, - { name = "pillow", marker = "python_full_version < '3.10'" }, - { name = "scipy", version = "1.13.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, - { name = "tifffile", version = "2024.8.30", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5d/c5/bcd66bf5aae5587d3b4b69c74bee30889c46c9778e858942ce93a030e1f3/scikit_image-0.24.0.tar.gz", hash = "sha256:5d16efe95da8edbeb363e0c4157b99becbd650a60b77f6e3af5768b66cf007ab", size = 22693928, upload-time = "2024-06-18T19:05:31.49Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/82/d4eaa6e441f28a783762093a3c74bcc4a67f1c65bf011414ad4ea85187d8/scikit_image-0.24.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cb3bc0264b6ab30b43c4179ee6156bc18b4861e78bb329dd8d16537b7bbf827a", size = 14051470, upload-time = "2024-06-18T19:03:37.385Z" }, - { url = "https://files.pythonhosted.org/packages/65/15/1879307aaa2c771aa8ef8f00a171a85033bffc6b2553cfd2657426881452/scikit_image-0.24.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9c7a52e20cdd760738da38564ba1fed7942b623c0317489af1a598a8dedf088b", size = 13385822, upload-time = "2024-06-18T19:03:43.996Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/2d52864714b82122f4a36f47933f61f1cd2a6df34987873837f8064d4fdf/scikit_image-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93f46e6ce42e5409f4d09ce1b0c7f80dd7e4373bcec635b6348b63e3c886eac8", size = 14216787, upload-time = "2024-06-18T19:03:50.169Z" }, - { url = "https://files.pythonhosted.org/packages/40/2e/8b39cd2c347490dbe10adf21fd50bbddb1dada5bb0512c3a39371285eb62/scikit_image-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39ee0af13435c57351a3397eb379e72164ff85161923eec0c38849fecf1b4764", size = 14866533, upload-time = "2024-06-18T19:03:56.286Z" }, - { url = "https://files.pythonhosted.org/packages/99/89/3fcd68d034db5d29c974e964d03deec9d0fbf9410ff0a0b95efff70947f6/scikit_image-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:7ac7913b028b8aa780ffae85922894a69e33d1c0bf270ea1774f382fe8bf95e7", size = 12864601, upload-time = "2024-06-18T19:04:00.868Z" }, - { url = "https://files.pythonhosted.org/packages/90/e3/564beb0c78bf83018a146dfcdc959c99c10a0d136480b932a350c852adbc/scikit_image-0.24.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:272909e02a59cea3ed4aa03739bb88df2625daa809f633f40b5053cf09241831", size = 14020429, upload-time = "2024-06-18T19:04:07.18Z" }, - { url = "https://files.pythonhosted.org/packages/3c/f6/be8b16d8ab6ebf19057877c2aec905cbd438dd92ca64b8efe9e9af008fa3/scikit_image-0.24.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:190ebde80b4470fe8838764b9b15f232a964f1a20391663e31008d76f0c696f7", size = 13371950, upload-time = "2024-06-18T19:04:13.266Z" }, - { url = "https://files.pythonhosted.org/packages/b8/2e/3a949995f8fc2a65b15a4964373e26c5601cb2ea68f36b115571663e7a38/scikit_image-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59c98cc695005faf2b79904e4663796c977af22586ddf1b12d6af2fa22842dc2", size = 14197889, upload-time = "2024-06-18T19:04:17.181Z" }, - { url = "https://files.pythonhosted.org/packages/ad/96/138484302b8ec9a69cdf65e8d4ab47a640a3b1a8ea3c437e1da3e1a5a6b8/scikit_image-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa27b3a0dbad807b966b8db2d78da734cb812ca4787f7fbb143764800ce2fa9c", size = 14861425, upload-time = "2024-06-18T19:04:27.363Z" }, - { url = "https://files.pythonhosted.org/packages/50/b2/d5e97115733e2dc657e99868ae0237705b79d0c81f6ced21b8f0799a30d1/scikit_image-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:dacf591ac0c272a111181afad4b788a27fe70d213cfddd631d151cbc34f8ca2c", size = 12843506, upload-time = "2024-06-18T19:04:35.782Z" }, - { url = "https://files.pythonhosted.org/packages/16/19/45ad3b8b8ab8d275a48a9d1016c4beb1c2801a7a13e384268861d01145c1/scikit_image-0.24.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6fccceb54c9574590abcddc8caf6cefa57c13b5b8b4260ab3ff88ad8f3c252b3", size = 14101823, upload-time = "2024-06-18T19:04:39.576Z" }, - { url = "https://files.pythonhosted.org/packages/6e/75/db10ee1bc7936b411d285809b5fe62224bbb1b324a03dd703582132ce5ee/scikit_image-0.24.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ccc01e4760d655aab7601c1ba7aa4ddd8b46f494ac46ec9c268df6f33ccddf4c", size = 13420758, upload-time = "2024-06-18T19:04:45.645Z" }, - { url = "https://files.pythonhosted.org/packages/87/fd/07a7396962abfe22a285a922a63d18e4d5ec48eb5dbb1c06e96fb8fb6528/scikit_image-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18836a18d3a7b6aca5376a2d805f0045826bc6c9fc85331659c33b4813e0b563", size = 14256813, upload-time = "2024-06-18T19:04:51.68Z" }, - { url = "https://files.pythonhosted.org/packages/2c/24/4bcd94046b409ac4d63e2f92e46481f95f5006a43e68f6ab2b24f5d70ab4/scikit_image-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8579bda9c3f78cb3b3ed8b9425213c53a25fa7e994b7ac01f2440b395babf660", size = 15013039, upload-time = "2024-06-18T19:04:56.433Z" }, - { url = "https://files.pythonhosted.org/packages/d9/17/b561823143eb931de0f82fed03ae128ef954a9641309602ea0901c357f95/scikit_image-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:82ab903afa60b2da1da2e6f0c8c65e7c8868c60a869464c41971da929b3e82bc", size = 12949363, upload-time = "2024-06-18T19:05:02.773Z" }, - { url = "https://files.pythonhosted.org/packages/93/8e/b6e50d8a6572daf12e27acbf9a1722fdb5e6bfc64f04a5fefa2a71fea0c3/scikit_image-0.24.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef04360eda372ee5cd60aebe9be91258639c86ae2ea24093fb9182118008d009", size = 14083010, upload-time = "2024-06-18T19:05:07.582Z" }, - { url = "https://files.pythonhosted.org/packages/d6/6c/f528c6b80b4e9d38444d89f0d1160797d20c640b7a8cabd8b614ac600b79/scikit_image-0.24.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:e9aadb442360a7e76f0c5c9d105f79a83d6df0e01e431bd1d5757e2c5871a1f3", size = 13414235, upload-time = "2024-06-18T19:05:11.58Z" }, - { url = "https://files.pythonhosted.org/packages/52/03/59c52aa59b952aafcf19163e5d7e924e6156c3d9e9c86ea3372ad31d90f8/scikit_image-0.24.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e37de6f4c1abcf794e13c258dc9b7d385d5be868441de11c180363824192ff7", size = 14238540, upload-time = "2024-06-18T19:05:17.481Z" }, - { url = "https://files.pythonhosted.org/packages/f0/cc/1a58efefb9b17c60d15626b33416728003028d5d51f0521482151a222560/scikit_image-0.24.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4688c18bd7ec33c08d7bf0fd19549be246d90d5f2c1d795a89986629af0a1e83", size = 14883801, upload-time = "2024-06-18T19:05:23.231Z" }, - { url = "https://files.pythonhosted.org/packages/9d/63/233300aa76c65a442a301f9d2416a9b06c91631287bd6dd3d6b620040096/scikit_image-0.24.0-cp39-cp39-win_amd64.whl", hash = "sha256:56dab751d20b25d5d3985e95c9b4e975f55573554bd76b0aedf5875217c93e69", size = 12891952, upload-time = "2024-06-18T19:05:27.173Z" }, -] - -[[package]] -name = "scikit-image" -version = "0.25.2" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'", - "python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "imageio", marker = "python_full_version >= '3.10'" }, - { name = "lazy-loader", marker = "python_full_version >= '3.10'" }, - { name = "networkx", version = "3.4.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "numpy", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "packaging", marker = "python_full_version >= '3.10'" }, - { name = "pillow", marker = "python_full_version >= '3.10'" }, - { name = "scipy", version = "1.15.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, - { name = "tifffile", version = "2025.3.30", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c7/a8/3c0f256012b93dd2cb6fda9245e9f4bff7dc0486880b248005f15ea2255e/scikit_image-0.25.2.tar.gz", hash = "sha256:e5a37e6cd4d0c018a7a55b9d601357e3382826d3888c10d0213fc63bff977dde", size = 22693594, upload-time = "2025-02-18T18:05:24.538Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/cb/016c63f16065c2d333c8ed0337e18a5cdf9bc32d402e4f26b0db362eb0e2/scikit_image-0.25.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3278f586793176599df6a4cf48cb6beadae35c31e58dc01a98023af3dc31c78", size = 13988922, upload-time = "2025-02-18T18:04:11.069Z" }, - { url = "https://files.pythonhosted.org/packages/30/ca/ff4731289cbed63c94a0c9a5b672976603118de78ed21910d9060c82e859/scikit_image-0.25.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:5c311069899ce757d7dbf1d03e32acb38bb06153236ae77fcd820fd62044c063", size = 13192698, upload-time = "2025-02-18T18:04:15.362Z" }, - { url = "https://files.pythonhosted.org/packages/39/6d/a2aadb1be6d8e149199bb9b540ccde9e9622826e1ab42fe01de4c35ab918/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be455aa7039a6afa54e84f9e38293733a2622b8c2fb3362b822d459cc5605e99", size = 14153634, upload-time = "2025-02-18T18:04:18.496Z" }, - { url = "https://files.pythonhosted.org/packages/96/08/916e7d9ee4721031b2f625db54b11d8379bd51707afaa3e5a29aecf10bc4/scikit_image-0.25.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4c464b90e978d137330be433df4e76d92ad3c5f46a22f159520ce0fdbea8a09", size = 14767545, upload-time = "2025-02-18T18:04:22.556Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ee/c53a009e3997dda9d285402f19226fbd17b5b3cb215da391c4ed084a1424/scikit_image-0.25.2-cp310-cp310-win_amd64.whl", hash = "sha256:60516257c5a2d2f74387c502aa2f15a0ef3498fbeaa749f730ab18f0a40fd054", size = 12812908, upload-time = "2025-02-18T18:04:26.364Z" }, - { url = "https://files.pythonhosted.org/packages/c4/97/3051c68b782ee3f1fb7f8f5bb7d535cf8cb92e8aae18fa9c1cdf7e15150d/scikit_image-0.25.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f4bac9196fb80d37567316581c6060763b0f4893d3aca34a9ede3825bc035b17", size = 14003057, upload-time = "2025-02-18T18:04:30.395Z" }, - { url = "https://files.pythonhosted.org/packages/19/23/257fc696c562639826065514d551b7b9b969520bd902c3a8e2fcff5b9e17/scikit_image-0.25.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d989d64ff92e0c6c0f2018c7495a5b20e2451839299a018e0e5108b2680f71e0", size = 13180335, upload-time = "2025-02-18T18:04:33.449Z" }, - { url = "https://files.pythonhosted.org/packages/ef/14/0c4a02cb27ca8b1e836886b9ec7c9149de03053650e9e2ed0625f248dd92/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2cfc96b27afe9a05bc92f8c6235321d3a66499995675b27415e0d0c76625173", size = 14144783, upload-time = "2025-02-18T18:04:36.594Z" }, - { url = "https://files.pythonhosted.org/packages/dd/9b/9fb556463a34d9842491d72a421942c8baff4281025859c84fcdb5e7e602/scikit_image-0.25.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24cc986e1f4187a12aa319f777b36008764e856e5013666a4a83f8df083c2641", size = 14785376, upload-time = "2025-02-18T18:04:39.856Z" }, - { url = "https://files.pythonhosted.org/packages/de/ec/b57c500ee85885df5f2188f8bb70398481393a69de44a00d6f1d055f103c/scikit_image-0.25.2-cp311-cp311-win_amd64.whl", hash = "sha256:b4f6b61fc2db6340696afe3db6b26e0356911529f5f6aee8c322aa5157490c9b", size = 12791698, upload-time = "2025-02-18T18:04:42.868Z" }, - { url = "https://files.pythonhosted.org/packages/35/8c/5df82881284459f6eec796a5ac2a0a304bb3384eec2e73f35cfdfcfbf20c/scikit_image-0.25.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8db8dd03663112783221bf01ccfc9512d1cc50ac9b5b0fe8f4023967564719fb", size = 13986000, upload-time = "2025-02-18T18:04:47.156Z" }, - { url = "https://files.pythonhosted.org/packages/ce/e6/93bebe1abcdce9513ffec01d8af02528b4c41fb3c1e46336d70b9ed4ef0d/scikit_image-0.25.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:483bd8cc10c3d8a7a37fae36dfa5b21e239bd4ee121d91cad1f81bba10cfb0ed", size = 13235893, upload-time = "2025-02-18T18:04:51.049Z" }, - { url = "https://files.pythonhosted.org/packages/53/4b/eda616e33f67129e5979a9eb33c710013caa3aa8a921991e6cc0b22cea33/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d1e80107bcf2bf1291acfc0bf0425dceb8890abe9f38d8e94e23497cbf7ee0d", size = 14178389, upload-time = "2025-02-18T18:04:54.245Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b5/b75527c0f9532dd8a93e8e7cd8e62e547b9f207d4c11e24f0006e8646b36/scikit_image-0.25.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a17e17eb8562660cc0d31bb55643a4da996a81944b82c54805c91b3fe66f4824", size = 15003435, upload-time = "2025-02-18T18:04:57.586Z" }, - { url = "https://files.pythonhosted.org/packages/34/e3/49beb08ebccda3c21e871b607c1cb2f258c3fa0d2f609fed0a5ba741b92d/scikit_image-0.25.2-cp312-cp312-win_amd64.whl", hash = "sha256:bdd2b8c1de0849964dbc54037f36b4e9420157e67e45a8709a80d727f52c7da2", size = 12899474, upload-time = "2025-02-18T18:05:01.166Z" }, - { url = "https://files.pythonhosted.org/packages/e6/7c/9814dd1c637f7a0e44342985a76f95a55dd04be60154247679fd96c7169f/scikit_image-0.25.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7efa888130f6c548ec0439b1a7ed7295bc10105458a421e9bf739b457730b6da", size = 13921841, upload-time = "2025-02-18T18:05:03.963Z" }, - { url = "https://files.pythonhosted.org/packages/84/06/66a2e7661d6f526740c309e9717d3bd07b473661d5cdddef4dd978edab25/scikit_image-0.25.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dd8011efe69c3641920614d550f5505f83658fe33581e49bed86feab43a180fc", size = 13196862, upload-time = "2025-02-18T18:05:06.986Z" }, - { url = "https://files.pythonhosted.org/packages/4e/63/3368902ed79305f74c2ca8c297dfeb4307269cbe6402412668e322837143/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28182a9d3e2ce3c2e251383bdda68f8d88d9fff1a3ebe1eb61206595c9773341", size = 14117785, upload-time = "2025-02-18T18:05:10.69Z" }, - { url = "https://files.pythonhosted.org/packages/cd/9b/c3da56a145f52cd61a68b8465d6a29d9503bc45bc993bb45e84371c97d94/scikit_image-0.25.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8abd3c805ce6944b941cfed0406d88faeb19bab3ed3d4b50187af55cf24d147", size = 14977119, upload-time = "2025-02-18T18:05:13.871Z" }, - { url = "https://files.pythonhosted.org/packages/8a/97/5fcf332e1753831abb99a2525180d3fb0d70918d461ebda9873f66dcc12f/scikit_image-0.25.2-cp313-cp313-win_amd64.whl", hash = "sha256:64785a8acefee460ec49a354706db0b09d1f325674107d7fa3eadb663fb56d6f", size = 12885116, upload-time = "2025-02-18T18:05:17.844Z" }, - { url = "https://files.pythonhosted.org/packages/10/cc/75e9f17e3670b5ed93c32456fda823333c6279b144cd93e2c03aa06aa472/scikit_image-0.25.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:330d061bd107d12f8d68f1d611ae27b3b813b8cdb0300a71d07b1379178dd4cd", size = 13862801, upload-time = "2025-02-18T18:05:20.783Z" }, -] - [[package]] name = "scikit-learn" version = "1.6.1" @@ -5673,52 +5551,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" }, ] -[[package]] -name = "tifffile" -version = "2024.8.30" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.10' and platform_machine == 'arm64' and sys_platform == 'darwin'", - "python_full_version < '3.10' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version < '3.10' and platform_machine != 'arm64' and sys_platform == 'darwin') or (python_full_version < '3.10' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version < '3.10' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "numpy", version = "2.0.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/30/7017e5560154c100cad3a801c02adb48879cd8e8cb862b82696d84187184/tifffile-2024.8.30.tar.gz", hash = "sha256:2c9508fe768962e30f87def61819183fb07692c258cb175b3c114828368485a4", size = 365714, upload-time = "2024-08-31T17:32:43.945Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/4f/73714b1c1d339b1545cac28764e39f88c69468b5e10e51f327f9aa9d55b9/tifffile-2024.8.30-py3-none-any.whl", hash = "sha256:8bc59a8f02a2665cd50a910ec64961c5373bee0b8850ec89d3b7b485bf7be7ad", size = 227262, upload-time = "2024-08-31T17:32:41.87Z" }, -] - -[[package]] -name = "tifffile" -version = "2025.3.30" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform == 'darwin'", - "python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform == 'darwin'", - "python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version >= '3.12.4' and python_full_version < '3.13' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12.4' and python_full_version < '3.13' and sys_platform != 'darwin' and sys_platform != 'linux')", - "(python_full_version >= '3.12' and python_full_version < '3.12.4' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and python_full_version < '3.12.4' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.11.*' and sys_platform == 'darwin'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.11.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.11.*' and sys_platform != 'darwin' and sys_platform != 'linux')", - "python_full_version == '3.10.*' and sys_platform == 'darwin'", - "python_full_version == '3.10.*' and platform_machine == 'aarch64' and sys_platform == 'linux'", - "(python_full_version == '3.10.*' and platform_machine != 'aarch64' and sys_platform == 'linux') or (python_full_version == '3.10.*' and sys_platform != 'darwin' and sys_platform != 'linux')", -] -dependencies = [ - { name = "numpy", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.10'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3c/54/d5ebe66a9de349b833e570e87bdbd9eec76ec54bd505c24b0591a15783ad/tifffile-2025.3.30.tar.gz", hash = "sha256:3cdee47fe06cd75367c16bc3ff34523713156dae6cd498e3a392e5b39a51b789", size = 366039, upload-time = "2025-03-30T04:45:30.503Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/be/10d23cfd4078fbec6aba768a357eff9e70c0b6d2a07398425985c524ad2a/tifffile-2025.3.30-py3-none-any.whl", hash = "sha256:0ed6eee7b66771db2d1bfc42262a51b01887505d35539daef118f4ff8c0f629c", size = 226837, upload-time = "2025-03-30T04:45:29Z" }, -] - [[package]] name = "tiktoken" version = "0.9.0"