diff --git a/python/CHANGELOG.md b/python/CHANGELOG.md index c2fcd53af..200b3f0bf 100644 --- a/python/CHANGELOG.md +++ b/python/CHANGELOG.md @@ -5,6 +5,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +## [v0.21.0] - September 4, 2026 + ### What's New #### List and get data imports @@ -38,6 +40,7 @@ CsvDataColumn( Setting `enum_types` on a non-enum data type raises a validation error. Multi-channel Parquet single-channel-per-row imports don't support enums, since channel configs there are derived per row. ### Bugfixes +- Fix ingesting `ChannelDataType.BYTES` channels. Registering a flow with a bytes channel raised `ValueError: Unknown data type: bytes`, and sending a value on one raised `ValueError: Invalid data type: bytes`. Both paths now map to the bytes type in `sift-stream-bindings`. Values may be `bytes`, `bytearray`, `memoryview`, or an iterable of ints. Requires `sift-stream-bindings` 0.5.1. - Fix `channels.get_data` printing a `UserWarning: Discarding nonzero nanoseconds in conversion` once per channel on each run-scoped fetch. The channel data cache stored segment bounds as `datetime`, which truncated the nanosecond timestamps the data already carries; they are now `pd.Timestamp`. `start_time` and `end_time` on `get_data` and `get_data_as_arrow` also accept a `pd.Timestamp` now, and its nanoseconds survive to the wire, where the service filters on them. ## [v0.20.0] - August 25, 2026 diff --git a/python/lib/sift_client/_tests/sift_types/test_ingestion.py b/python/lib/sift_client/_tests/sift_types/test_ingestion.py index 9451b78da..5678c1147 100644 --- a/python/lib/sift_client/_tests/sift_types/test_ingestion.py +++ b/python/lib/sift_client/_tests/sift_types/test_ingestion.py @@ -8,9 +8,11 @@ from sift_client.sift_types.channel import ChannelBitFieldElement, ChannelDataType from sift_client.sift_types.ingestion import ( ChannelConfig, + ChannelValue, FlowConfig, IngestionConfig, _to_rust_type, + _to_rust_value, ) @@ -84,6 +86,50 @@ def test_to_rust_type_covers_every_channel_data_type(self): assert _to_rust_type(ChannelDataType.BYTES) == ChannelDataTypePy.Bytes +class TestChannelValue: + """Unit tests for ChannelValue conversion to the Rust bindings.""" + + @pytest.mark.parametrize( + "value", + [b"\xde\xad", bytearray(b"\xde\xad"), memoryview(b"\xde\xad"), [0xDE, 0xAD]], + ) + def test_to_rust_form_bytes(self, value): + """Test BYTES channel values reach the Rust Bytes variant, not BitField.""" + channel_value = ChannelValue(name="payload", ty=ChannelDataType.BYTES, value=value) + + value_py = channel_value._to_rust_form().value + + assert value_py.is_bytes() + assert not value_py.is_bitfield() + assert bytes(value_py.as_bytes()) == b"\xde\xad" + + def test_to_rust_form_bytes_none_is_empty(self): + """Test a None BYTES value becomes an empty value.""" + channel_value = ChannelValue(name="payload", ty=ChannelDataType.BYTES, value=None) + + assert channel_value._to_rust_form().value.is_empty() + + def test_to_rust_form_covers_every_channel_data_type(self): + """Test _to_rust_form has a branch for every ChannelDataType.""" + for data_type in ChannelDataType: + # A None value takes the Empty path but still exercises the data type branch. + channel_value = ChannelValue(name="c", ty=data_type, value=None) + assert channel_value._to_rust_form().value.is_empty() + + def test_to_rust_value_bytes(self): + """Test the flow-config value converter accepts BYTES channels.""" + channel = ChannelConfig(name="payload", data_type=ChannelDataType.BYTES) + + # Raises ValueError("Invalid data type: bytes") if the branch is missing. + assert _to_rust_value(channel, b"\xde\xad") is not None + + def test_to_rust_value_string(self): + """Test the flow-config value converter accepts STRING channels.""" + channel = ChannelConfig(name="label", data_type=ChannelDataType.STRING) + + assert _to_rust_value(channel, "hello") is not None + + class TestFlowConfig: """Unit tests for FlowConfig model.""" diff --git a/python/lib/sift_client/sift_types/ingestion.py b/python/lib/sift_client/sift_types/ingestion.py index 97e905bd0..723656de8 100644 --- a/python/lib/sift_client/sift_types/ingestion.py +++ b/python/lib/sift_client/sift_types/ingestion.py @@ -386,6 +386,9 @@ def _to_rust_form(self): value_py = ValuePy.Uint64(self.value) elif self.ty == ChannelDataType.STRING: value_py = ValuePy.String(self.value) + elif self.ty == ChannelDataType.BYTES: + # Accept bytes, bytearray, memoryview, or any iterable of ints. + value_py = ValuePy.Bytes(None if self.value is None else bytes(self.value)) else: raise ValueError(f"Invalid data type: {self.ty}") @@ -501,6 +504,10 @@ def _to_rust_value(channel: ChannelConfig, value: Any) -> IngestWithConfigDataCh return IngestWithConfigDataChannelValuePy.uint32(value) elif channel.data_type == ChannelDataType.UINT_64: return IngestWithConfigDataChannelValuePy.uint64(value) + elif channel.data_type == ChannelDataType.STRING: + return IngestWithConfigDataChannelValuePy.string(value) + elif channel.data_type == ChannelDataType.BYTES: + return IngestWithConfigDataChannelValuePy.bytes(bytes(value)) else: raise ValueError(f"Invalid data type: {channel.data_type}") diff --git a/python/pyproject.toml b/python/pyproject.toml index 4aa459cd1..92df851d8 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "sift_stack_py" -version = "0.20.0" +version = "0.21.0" description = "Python client library for the Sift API" requires-python = ">=3.8" readme = { file = "README.md", content-type = "text/markdown" } @@ -69,7 +69,7 @@ all = [ 'pyarrow>=17.0.0', 'pyulog~=1.2.2', "rosbags~=0.0 ; python_full_version >= '3.8.2'", - 'sift-stream-bindings==0.5.0', + 'sift-stream-bindings==0.5.1', 'types-pyOpenSSL<24.0.0', ] build = [ @@ -115,7 +115,7 @@ dev-all = [ 'pyulog~=1.2.2', "rosbags~=0.0 ; python_full_version >= '3.8.2'", 'ruff~=0.12.10', - 'sift-stream-bindings==0.5.0', + 'sift-stream-bindings==0.5.1', 'tomlkit~=0.13.3', 'types-pyOpenSSL<24.0.0', ] @@ -173,7 +173,7 @@ docs-build = [ 'pyulog~=1.2.2', "rosbags~=0.0 ; python_full_version >= '3.8.2'", 'ruff~=0.12.10', - 'sift-stream-bindings==0.5.0', + 'sift-stream-bindings==0.5.1', 'tomlkit~=0.13.3', 'types-pyOpenSSL<24.0.0', ] @@ -197,10 +197,10 @@ rosbags = [ "rosbags~=0.0 ; python_full_version >= '3.8.2'", ] sift-stream = [ - 'sift-stream-bindings==0.5.0', + 'sift-stream-bindings==0.5.1', ] sift-stream-bindings = [ - 'sift-stream-bindings==0.5.0', + 'sift-stream-bindings==0.5.1', ] tdms = [ 'npTDMS~=1.9', @@ -248,7 +248,7 @@ docs = [ openssl = ["pyOpenSSL<24.0.0", "types-pyOpenSSL<24.0.0", "cffi~=1.14"] tdms = ["npTDMS~=1.9"] rosbags = ["rosbags~=0.0 ; python_full_version >= '3.8.2'"] -sift-stream = ["sift-stream-bindings==0.5.0"] +sift-stream = ["sift-stream-bindings==0.5.1"] hdf5 = ["h5py~=3.11", "polars~=1.8"] # polars is only used by sift_py; remove once sift_py is fully deprecated ulog = ["pyulog~=1.2.2"] data-review = ["pyarrow>=17.0.0"] diff --git a/python/uv.lock b/python/uv.lock index 2a91f3bb5..17d010704 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -4432,7 +4432,7 @@ wheels = [ [[package]] name = "sift-stack-py" -version = "0.20.0" +version = "0.21.0" source = { editable = "." } dependencies = [ { name = "alive-progress", version = "3.1.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" }, @@ -4788,11 +4788,11 @@ requires-dist = [ { name = "ruff", marker = "extra == 'dev-all'", specifier = "~=0.12.10" }, { name = "ruff", marker = "extra == 'development'", specifier = "~=0.12.10" }, { name = "ruff", marker = "extra == 'docs-build'", specifier = "~=0.12.10" }, - { name = "sift-stream-bindings", marker = "extra == 'all'", specifier = "==0.5.0" }, - { name = "sift-stream-bindings", marker = "extra == 'dev-all'", specifier = "==0.5.0" }, - { name = "sift-stream-bindings", marker = "extra == 'docs-build'", specifier = "==0.5.0" }, - { name = "sift-stream-bindings", marker = "extra == 'sift-stream'", specifier = "==0.5.0" }, - { name = "sift-stream-bindings", marker = "extra == 'sift-stream-bindings'", specifier = "==0.5.0" }, + { name = "sift-stream-bindings", marker = "extra == 'all'", specifier = "==0.5.1" }, + { name = "sift-stream-bindings", marker = "extra == 'dev-all'", specifier = "==0.5.1" }, + { name = "sift-stream-bindings", marker = "extra == 'docs-build'", specifier = "==0.5.1" }, + { name = "sift-stream-bindings", marker = "extra == 'sift-stream'", specifier = "==0.5.1" }, + { name = "sift-stream-bindings", marker = "extra == 'sift-stream-bindings'", specifier = "==0.5.1" }, { name = "tomli", marker = "python_full_version < '3.11'", specifier = "~=2.0" }, { name = "tomlkit", marker = "extra == 'dev'", specifier = "~=0.13.3" }, { name = "tomlkit", marker = "extra == 'dev-all'", specifier = "~=0.13.3" }, @@ -4811,58 +4811,59 @@ provides-extras = ["all", "build", "data-review", "dev", "dev-all", "development [[package]] name = "sift-stream-bindings" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/c4/326f7a02ad00fdc542c22085f00e312d8133b59d2e61850096d6c4e9929c/sift_stream_bindings-0.5.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:46de88c9ff5420ed26e8f0606ac53e629304913eaf2955a5d3750603df88d182", size = 3891241, upload-time = "2026-08-21T01:07:32.234Z" }, - { url = "https://files.pythonhosted.org/packages/ff/ad/c46e4118c4329bd19468d33681444e3766dcab686184dafff3cf6661d064/sift_stream_bindings-0.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4167fc2e1ba84d163c04bab92090760a729a48647bdf3145a1abff02b5334306", size = 3837693, upload-time = "2026-08-21T01:07:33.923Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/2678e3ab4b6ddf1ad436b9bbcadbe651dd2544d46e739dc894785de921d2/sift_stream_bindings-0.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b2100bfd01635b65b9cd57d4a4e7e57c30ec3b8faa404948bcca78c8e10380f", size = 4296821, upload-time = "2026-08-21T01:07:36.082Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ae/373ae20219e19e74e653d610f3a375db017a53a4368425ab3bd03685c1bb/sift_stream_bindings-0.5.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef01d6425a5fd1fe4d8097187b3ae95aca8ea780fd343412b57513e4bc69c512", size = 4043621, upload-time = "2026-08-21T01:07:38.03Z" }, - { url = "https://files.pythonhosted.org/packages/ee/cd/42ee41f02a15ece72c8ab63d0399ad1b6f385b254cc51e8f4fe28a9feb8c/sift_stream_bindings-0.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4a7ca957d4eabbc8348c2c34a4fb25e84135a7984f7f598279986488d2d4aa9", size = 4071709, upload-time = "2026-08-21T01:07:39.52Z" }, - { url = "https://files.pythonhosted.org/packages/ef/a0/8b6f5d9f03ce7e0e984b3baea7421de5d70eb8cd03deac398ec6b975a13e/sift_stream_bindings-0.5.0-cp310-cp310-win32.whl", hash = "sha256:68d8b251d5aba591a84ca049c50e4a800d5fbbb75b06f26a3f7903f69e44a9df", size = 2968879, upload-time = "2026-08-21T01:07:40.993Z" }, - { url = "https://files.pythonhosted.org/packages/12/89/7e0dfc1547d18509de8fc96db79b6c99d0d292e4d5dd5d04ca013d4448f7/sift_stream_bindings-0.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d0ac9bdb446c393695ba40d770ae7da46b84227af16c1fd83c10ca3cfe201496", size = 3583340, upload-time = "2026-08-21T01:07:42.485Z" }, - { url = "https://files.pythonhosted.org/packages/dd/bc/e96645feb415cd73202e666f012bdb5b7f20315fba16acecff96ada9be43/sift_stream_bindings-0.5.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:e11f847c307f644eb79550c69770821c6777d52ef71847808fda2d031ff1fe93", size = 3891174, upload-time = "2026-08-21T01:07:44.165Z" }, - { url = "https://files.pythonhosted.org/packages/a2/00/04c9855989b6a84592593ffc413b1d81077f513e9f43278a7ced3c776ec8/sift_stream_bindings-0.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:301f11f4751f8299a14295aa1a386b15c698123cc0c6fdd82bc38ffab2b8886b", size = 3836012, upload-time = "2026-08-21T01:07:46.043Z" }, - { url = "https://files.pythonhosted.org/packages/c3/45/153a01383abcc222e672b9ba712ec02db55736074a6d6b1285a0ada22c3d/sift_stream_bindings-0.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d00b6ed15b032dc6b766083e9b14094e02154c1d3e84dad63a681518f5fbcbf6", size = 4296493, upload-time = "2026-08-21T01:07:47.397Z" }, - { url = "https://files.pythonhosted.org/packages/e6/a5/05ea3ca8b96aa72355875d7afa09429b064a55f2de6b527b9b05959909a9/sift_stream_bindings-0.5.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:97e61a9d01769f51f39415758bc4e122e7d846415bce9a7aa976501520d6c860", size = 4043723, upload-time = "2026-08-21T01:07:48.996Z" }, - { url = "https://files.pythonhosted.org/packages/2e/56/0763ff5774d705d6568cf4639236e8179787acd37ee43e5548523d266b06/sift_stream_bindings-0.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7b5a7e25f41c7733c3c0d03b83535c4fe32b149739224212ccea69b2ea5757", size = 4071813, upload-time = "2026-08-21T01:07:50.549Z" }, - { url = "https://files.pythonhosted.org/packages/cb/88/17d9b34e6bd00da38bb472b822e2ed327d33b7795d3f6ecade2397c9cb5d/sift_stream_bindings-0.5.0-cp311-cp311-win32.whl", hash = "sha256:45ee0a6e76bc3c627c44720ba11b8dff3de4046956e48717fb212f5c0f8addd5", size = 2969009, upload-time = "2026-08-21T01:07:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/ed/3f/1df4c177905fb60c19bec59e922385a26a6acaf82c2cec2a0081aca9f780/sift_stream_bindings-0.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:f6576ae3af67618be995bbad052e8f3852e932ac6122d2963bae4ba6e19136a3", size = 3583433, upload-time = "2026-08-21T01:07:54.396Z" }, - { url = "https://files.pythonhosted.org/packages/e3/80/b252d2bb5397d29fe841e0a5f52b55efbf360e0dae10a36add855c6c4988/sift_stream_bindings-0.5.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a4948971c4830bb9045d2cefb1af0c805b8d5bebc55ca9811163135886146833", size = 3888362, upload-time = "2026-08-21T01:07:55.916Z" }, - { url = "https://files.pythonhosted.org/packages/29/d1/58be73c8fc7f3813469dfd554eaea82f3e3b57fd89ed6e1435295d41ddcc/sift_stream_bindings-0.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:32e53d8c20da4e67a1c8f927d5c858dfc7df0dfcf2179997d6f3c7bdb348820a", size = 3829886, upload-time = "2026-08-21T01:07:57.402Z" }, - { url = "https://files.pythonhosted.org/packages/55/c7/01de4dc3409fa4bd2e927ad7e276655e6d8c9fc42df5a0781f9efa43ed65/sift_stream_bindings-0.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9c0a0d7096cd768719d597b0cbfa501fb5ff5c9c265c9575f6b8003ee2387ce", size = 4293258, upload-time = "2026-08-21T01:07:59.305Z" }, - { url = "https://files.pythonhosted.org/packages/52/7b/238168ab32dbdef9471162b1510f822bee94e072c0e7cc14936b30532e28/sift_stream_bindings-0.5.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26ae7d212e00297aff39c193f523f7ca48409e6d00e55345dd94b04462b79e68", size = 4034648, upload-time = "2026-08-21T01:08:01.069Z" }, - { url = "https://files.pythonhosted.org/packages/19/5d/33ba1b7a84715e0c845cf9e016e41eb408d5c2d5a6baa98f0c577053b686/sift_stream_bindings-0.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deef0181f6f290da19fc0e60310ca100d53397f29da5637bb4c4b7485e69b62d", size = 4069883, upload-time = "2026-08-21T01:08:02.954Z" }, - { url = "https://files.pythonhosted.org/packages/c3/8f/3710f28b25a05d4256434a0f0990fd1248c9b4869c6d2736eb7cf9ab4e63/sift_stream_bindings-0.5.0-cp312-cp312-win32.whl", hash = "sha256:519d8dc1c9c34a14946e212201c1d8e46c2612aecb5967d10f2b577184ae5fb9", size = 2973067, upload-time = "2026-08-21T01:08:04.49Z" }, - { url = "https://files.pythonhosted.org/packages/8d/3c/143b12daf55a15c0393e6b60f95a206cdb9a8f14fe253c990e21eee26a0d/sift_stream_bindings-0.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:6c6d22ae57249536ca517bdbe59ef7a3a78c72294facea37bea863b9c6454a20", size = 3580028, upload-time = "2026-08-21T01:08:05.98Z" }, - { url = "https://files.pythonhosted.org/packages/4f/f6/92173904f4c7159cf442aa0b1085af79b34e24e33cbb61dcd82abf84673b/sift_stream_bindings-0.5.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e6049286b59ce1af52ac544d96d5d803d456406ae03cdb96a8bb82241ea2261b", size = 3887685, upload-time = "2026-08-21T01:08:07.484Z" }, - { url = "https://files.pythonhosted.org/packages/3f/98/8886abc6561fcc4274a44373b3f06747dc0c7331b3e74456fc777b88bf3e/sift_stream_bindings-0.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1d6939f4aca801c0e1b62b8604d2ee6750bee42953b00fd85342a9e36a20feaf", size = 3828388, upload-time = "2026-08-21T01:08:09.126Z" }, - { url = "https://files.pythonhosted.org/packages/45/0e/e61fefb70bdef6c02b441a868e9262ea2fd99bb45faba84408b1797b271f/sift_stream_bindings-0.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:074064022a20f5fa076af8b7c9befb0339135ac51b7325272ce3373ce5dbda88", size = 4293005, upload-time = "2026-08-21T01:08:10.606Z" }, - { url = "https://files.pythonhosted.org/packages/91/3f/72c0f18ce04e90bc9cccc3c36f5f1ac264e9ca69a3f9914f31272d03dd37/sift_stream_bindings-0.5.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a3997be6d32b85177b06c48e7ac4ff70730343ba63496183488e8cf9efea475c", size = 4032997, upload-time = "2026-08-21T01:08:12.204Z" }, - { url = "https://files.pythonhosted.org/packages/e8/cb/3ee1b8d62d06cb886e47960e2bbd6ac91780c1001f98d159e6df1feba45e/sift_stream_bindings-0.5.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b74790ee487f2bbedd9c469804059e270180897eff7b0792c5b66f905dff408f", size = 4068600, upload-time = "2026-08-21T01:08:13.654Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fc/c0470e9c99a021c247732045d6b012a7e3227ab63d76566e0d7d7ca7dbc6/sift_stream_bindings-0.5.0-cp313-cp313-win32.whl", hash = "sha256:4fdeeb72ceaf19ddb89ead096f6335a0c4de6ef0b9afc7988e48299dbdbc1e57", size = 2972887, upload-time = "2026-08-21T01:08:15.159Z" }, - { url = "https://files.pythonhosted.org/packages/95/71/f42f79053ae4bcc8dc85957201f013ae54fdf0e650f342406a37da098d6e/sift_stream_bindings-0.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:714f10bf45263ed910f97910069f57e9fb1425a1c66af78890b7200594af7781", size = 3579557, upload-time = "2026-08-21T01:08:16.827Z" }, - { url = "https://files.pythonhosted.org/packages/04/91/de14a6d06c9e949bd5e52d4650feca0b392ad921ad78f8570a908821735e/sift_stream_bindings-0.5.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:910d773ad86404d5d918b97000586103b9c46966b2d0f4979a23c79cfe107852", size = 3891609, upload-time = "2026-08-21T01:08:18.976Z" }, - { url = "https://files.pythonhosted.org/packages/7d/95/3a6d7905f1c3f77aab7e3ef539cc47d5886c423fde609916563742161258/sift_stream_bindings-0.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d58e14fb3070ef5ac1fb7dc8ca9f489a15d42f39753d207b7621dbeb8b073fc7", size = 3831695, upload-time = "2026-08-21T01:08:20.783Z" }, - { url = "https://files.pythonhosted.org/packages/62/7e/9feb6a50c95093b39058985335f256aff5f44b23444e241620a6255ff276/sift_stream_bindings-0.5.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85aa1fb8e19f2afd6b5c14a567ca14f17f82a791d0ed6c14ea8dda9db5cd026", size = 4294105, upload-time = "2026-08-21T01:08:22.674Z" }, - { url = "https://files.pythonhosted.org/packages/89/d9/cd94e818625c7c51d88990533113dcaad7cde79601647d0fe0eb6c91ee59/sift_stream_bindings-0.5.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:41b7b1a7a78c2bbb722a408cf07ced48aeea6b55c65091e063ac78eda80bcb04", size = 4029538, upload-time = "2026-08-21T01:08:24.211Z" }, - { url = "https://files.pythonhosted.org/packages/58/8d/4d3848e3e81a0bb568445d875e5adb12a0297eabfaaca1a722543f11a3a0/sift_stream_bindings-0.5.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:449776a0ba0fa40db45d70f969b1141a1494e04558a1f3d58321b24f8d88e529", size = 4065969, upload-time = "2026-08-21T01:08:25.734Z" }, - { url = "https://files.pythonhosted.org/packages/86/dc/6afcdd4b8312fee8ee60cc9a5f41ff9f76d601281eceb76837c809323908/sift_stream_bindings-0.5.0-cp314-cp314-win32.whl", hash = "sha256:56482095d3eafddfefceaef0981c429d955a1a09f957f01b1de4b113498a3055", size = 2973547, upload-time = "2026-08-21T01:08:27.326Z" }, - { url = "https://files.pythonhosted.org/packages/d0/de/ea53e52bbcd4685332af925937e645c1cf94c2f9e5f8c6e3143181dcee06/sift_stream_bindings-0.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:0458ed9efe0d6aaa6b79823eea1c69d2e9c6f6bf9aae10bb558b95a1d271bec9", size = 3582106, upload-time = "2026-08-21T01:08:28.926Z" }, - { url = "https://files.pythonhosted.org/packages/f9/76/90cb83f22f3b7309608c4d26a157a2371055d6f6d16b26c2e9044192b75c/sift_stream_bindings-0.5.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a694f4577e3e56d8bc6c9a20d9f0958b77aeb912ead9193a4d382f67b3465b97", size = 3897833, upload-time = "2026-08-21T01:08:30.568Z" }, - { url = "https://files.pythonhosted.org/packages/33/fa/7cb11723f71ee6f1bf30bdf081b9ce9e4bdcf1718a36a013188c9f6bba9e/sift_stream_bindings-0.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:768809cbc3849679c580d5fbc81b06e24a8b0cf6bb134418bd7388dbbea4ad38", size = 3834978, upload-time = "2026-08-21T01:08:32.259Z" }, - { url = "https://files.pythonhosted.org/packages/8f/90/14185a35034faa6e6ae7ccc8c956353d7aa55a4fe9e509b5515fc9205b1d/sift_stream_bindings-0.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ac6a10e82d432af743e43a03e18a7d1ae576e458cfeb944b87874e1e0bd82dc", size = 4298876, upload-time = "2026-08-21T01:08:33.678Z" }, - { url = "https://files.pythonhosted.org/packages/5a/34/bc7b56c8c9b83517518430578b771a88a0a64e8a2340537698ef491b8a0d/sift_stream_bindings-0.5.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f15a94833fc6ab8fd126c364f902a513ad32a86ed845993a3e4076eb2092109", size = 4049318, upload-time = "2026-08-21T01:08:35.546Z" }, - { url = "https://files.pythonhosted.org/packages/c2/2c/f31da8cc8c01557744b3ac984cd31f8e746115bec9b8620995d304bb5821/sift_stream_bindings-0.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21670556d39e58a63ed4da4ed7ac44962b3cc6d498cb0b1ab586ff8729feb553", size = 4074753, upload-time = "2026-08-21T01:08:37.197Z" }, - { url = "https://files.pythonhosted.org/packages/d2/eb/a40f101b2cc837b68ad4c50512a3b51411d686729b878f463e6a8ba736ae/sift_stream_bindings-0.5.0-cp38-cp38-win32.whl", hash = "sha256:c80f3f128a32ddb7b888901fcc3a9cfb1927352fc58bca27f8cadbf541c5f84c", size = 2975419, upload-time = "2026-08-21T01:08:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/9c/0e/f005cbe1f25df4a2e2698b2affbd1e6b616241134a58d5c8df8935ae19a2/sift_stream_bindings-0.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:a606cd51db7841ca57e4073b2082f791f9a5486f693030d7cc859fbe71fd97ec", size = 3584761, upload-time = "2026-08-21T01:08:40.89Z" }, - { url = "https://files.pythonhosted.org/packages/4e/a5/d386c6fb3ae1cb4f3574be893368e2822192ab3984b5cfaadc405093d8c6/sift_stream_bindings-0.5.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:35355e553d93040b3ab122ee8830c75089a18ac1efe394ea6901485c7c25093c", size = 3894556, upload-time = "2026-08-21T01:08:42.844Z" }, - { url = "https://files.pythonhosted.org/packages/c0/6e/ee8182b860644b86ad0de09eb280d058bf97af85781c948ba66da0d179d0/sift_stream_bindings-0.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e00f0ac967ad665203b5147e4133fac8ee513e647bb323d752292aac949c121b", size = 3841965, upload-time = "2026-08-21T01:08:44.447Z" }, - { url = "https://files.pythonhosted.org/packages/4f/91/4591a0547c0c12f1eaa1eed78ffb976bf919fac089fcf5a53d7aab56d15e/sift_stream_bindings-0.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9c5d9d645358ab473d660c2c5c2a4c18bfebffbff8b5f63ba5c97e7a9500a61", size = 4299067, upload-time = "2026-08-21T01:08:46.227Z" }, - { url = "https://files.pythonhosted.org/packages/a0/31/00d9f0be43f18fa010ac38febc4d51a0859e3ab9e90b9c1791735b68837a/sift_stream_bindings-0.5.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7ca9641d5dacad0e8bcf1e4032e08ab0b1f1bab93a691965aae9715c41ce7ba3", size = 4046896, upload-time = "2026-08-21T01:08:47.683Z" }, - { url = "https://files.pythonhosted.org/packages/c0/3b/a7124d436bce8b635154fe6ef76a974c121ef9264cc78d7b44b7f99fdb80/sift_stream_bindings-0.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c4151526d3c858bfc10053bddaee554ace77103cdae5ab7e7d5be68d7316eff", size = 4074753, upload-time = "2026-08-21T01:08:49.329Z" }, - { url = "https://files.pythonhosted.org/packages/ed/6a/351569f0af2b203982476b57d1dca06dd01037814b6cbc16cd94b3a4f82b/sift_stream_bindings-0.5.0-cp39-cp39-win32.whl", hash = "sha256:41f1d9056c90576644d8f13a8adb8f975ed9c5766a8870a5fb0c300511748c0c", size = 2970343, upload-time = "2026-08-21T01:08:50.956Z" }, - { url = "https://files.pythonhosted.org/packages/1c/79/841d2fe0072e71a0151e8d857b46541cf1e31db036ec6aafdc5bc7107ba2/sift_stream_bindings-0.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:1ac7619fc9b4d7656ae1a119cc88a641afff94f617e8e913b73cd7771879abf8", size = 3585698, upload-time = "2026-08-21T01:08:52.413Z" }, +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/4f/adca80ebdfeda6ced38ab1ca129798e7b37ce1540bc6bea351152b297dc3/sift_stream_bindings-0.5.1.tar.gz", hash = "sha256:4d31c3f7bad1ddcad014f0e6acbd9ffdf9950e2503821908940ef2727e304645", size = 1495977, upload-time = "2026-09-04T21:39:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/70/d86850faa940453f9353402c3c59ce43994388936a1166cf4633b293594b/sift_stream_bindings-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:63806981fe33e1c9874f9719a70f52aea29f7791fe405c1fb37fb114c3b1b095", size = 3789539, upload-time = "2026-09-04T21:38:34.402Z" }, + { url = "https://files.pythonhosted.org/packages/8a/34/cc752058acc078f9d6393d1f0a4fab4b50a17b6fc4af6a92e68d15451432/sift_stream_bindings-0.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c3cfe61a4c8e7cff3c834dcad3de14c9019da5b00e106b846b6c20fec744a0c1", size = 3741123, upload-time = "2026-09-04T21:38:36.145Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d9/a851327100dfff0aad30ef57378708bc015e1725b710e65cbc0ec9d75fef/sift_stream_bindings-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13089381a8c1d7630e4ffe284ffc182ecdb6d58dee2d5b7f687aa8be7529fd0c", size = 4293897, upload-time = "2026-09-04T21:38:37.696Z" }, + { url = "https://files.pythonhosted.org/packages/cd/3e/74c2fed5106b5d0145e3c9c15a01024917c0fd3ec4acfcf39622d638a460/sift_stream_bindings-0.5.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ef6c132272165371a97f15ab8c05fa41a60d6581ac873a55ec200b02f9f049b", size = 4055927, upload-time = "2026-09-04T21:38:39.369Z" }, + { url = "https://files.pythonhosted.org/packages/9a/50/94799fbf3bee361dd2cfffee7e64bdc4f4b512e583f276215916dfb5dd1e/sift_stream_bindings-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1c45e137de704f8f349e6a67ac0659e691b08067a89f84237ee5c19156967b", size = 4077036, upload-time = "2026-09-04T21:38:41.693Z" }, + { url = "https://files.pythonhosted.org/packages/52/3c/3f4321c714c8cfac63e2ca1a3eb6d45b2834ae6e571fc3acb2671945f8d4/sift_stream_bindings-0.5.1-cp310-cp310-win32.whl", hash = "sha256:610035c1cda9052926f713cb0ad30f33385c81617d64c0b5d032f4b112891ce0", size = 2985130, upload-time = "2026-09-04T21:38:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d0/49037584ade61fcd29bb5484f8156da962df77538b7eb1690b38e24cdced/sift_stream_bindings-0.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:cb34c809d1c3534bb6d303b5ab6a9a5f035cca8f297cc7c0ddd7357f21f8fcdd", size = 3583908, upload-time = "2026-09-04T21:38:45.136Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c0/2ddc648dfba06e70303133074bc2a13b15d1f3d9f9e37c244ceaa80286ea/sift_stream_bindings-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:96ed3eea4c7ad6280d4393d17291677b1345181392b6826db3b2252f8b9d7f8c", size = 3789543, upload-time = "2026-09-04T21:38:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/ce/9f/6c645d6b0111a3bded652d7ba3db81fae619cd7bc83b402ef258f6e76316/sift_stream_bindings-0.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:895e400d76282479297c79ac684a39893bf1de09249b95835b2631a554805e5a", size = 3740716, upload-time = "2026-09-04T21:38:48.278Z" }, + { url = "https://files.pythonhosted.org/packages/92/52/f98657cc03f546206f9962b1c78bd0d41f047cc59611fe6248192d01f49b/sift_stream_bindings-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91da0eff328a391b875f5c7cd84a32a5672d46c1a9d897fda238a9fffdd653c5", size = 4294888, upload-time = "2026-09-04T21:38:49.898Z" }, + { url = "https://files.pythonhosted.org/packages/03/01/8cc8fa4d844c2099929031094c55a0ce3acc075c12005eb4b486c4978726/sift_stream_bindings-0.5.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bbfeb57d559ca53995c0f718d4a60e006891a4bff1b45258e5edda770057785e", size = 4055672, upload-time = "2026-09-04T21:38:51.395Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ed/becfb1ab75c8ce0443a22697ab54ad16ec1edeea3dac5a8cd739d563aee1/sift_stream_bindings-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482f14710286c706d43d7c200268522ba71e3ec129345a64342d069f13aa6d91", size = 4077327, upload-time = "2026-09-04T21:38:52.884Z" }, + { url = "https://files.pythonhosted.org/packages/53/21/514e89379a7911cbaa3e26ccf4712a9b26c0c4afabc00fcef91ba13b34b4/sift_stream_bindings-0.5.1-cp311-cp311-win32.whl", hash = "sha256:88b4a31d53f5ef7dfa0da42d4d316293c98092936141e3442af76848dda63b6a", size = 2985415, upload-time = "2026-09-04T21:38:54.374Z" }, + { url = "https://files.pythonhosted.org/packages/59/c2/463528a8babfd104c0b65758c453f66e54eadb247f8c1a9b3704900737ea/sift_stream_bindings-0.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5874caca2f53a156b8c281e90038f89c9ed15f1214a43620edc5491c8c237243", size = 3584050, upload-time = "2026-09-04T21:38:56.079Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f6/c27d01cc9a7ea17d06262150fe3e2539af8971550f6fe70187a611cc296a/sift_stream_bindings-0.5.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1ff82aaa311d0cd062fef2f8d92489714d527c068fd8d22796eb9bfebfa44074", size = 3788136, upload-time = "2026-09-04T21:38:57.75Z" }, + { url = "https://files.pythonhosted.org/packages/5f/1f/a54b3c17218fba41ae2f2fc434533dda2640c0c112a191ff24d1c09140a2/sift_stream_bindings-0.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bc2fe1b61e50eea082d4283066d7709e8d18ad611c935b24ee4e98d5394eada6", size = 3734037, upload-time = "2026-09-04T21:38:59.593Z" }, + { url = "https://files.pythonhosted.org/packages/b9/11/1a4c09362cee1968e55fb144f47229f5a52344191af1c29e9af302dfff77/sift_stream_bindings-0.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4c802889a885d95c377565eef9b996578c1f23932f1e4375ca42c0ef4ff331", size = 4283250, upload-time = "2026-09-04T21:39:01.246Z" }, + { url = "https://files.pythonhosted.org/packages/1b/2d/7dd081185b53182e349851f563744c325a46453f4fb22a0392879ee63bd4/sift_stream_bindings-0.5.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:37362d272879ed012674dbbb55c6bc371b7d7afc144b910de4d0bd886104fcf7", size = 4033461, upload-time = "2026-09-04T21:39:02.931Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d3/ba2f254b1953f7c657851d6a3cf65b038646821d3282d72cfcc79f29a7de/sift_stream_bindings-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fb2a5e701b8fe15189c820570d2f7ea68b6daa1823332f0a6c94c2df40f264", size = 4071247, upload-time = "2026-09-04T21:39:04.441Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c5/c540966a6bcc5f34818771bb493ed18f3fa40ceff5b7db775b31d83ac441/sift_stream_bindings-0.5.1-cp312-cp312-win32.whl", hash = "sha256:7b8dda4c2d2de7446c3ed83ed1390c8970ed2b0dc5816f34de69ee8d5a208b20", size = 2979192, upload-time = "2026-09-04T21:39:05.928Z" }, + { url = "https://files.pythonhosted.org/packages/d2/25/0e85f36907b80bd33acd2aa5d3889c9a469bb1cd6e981f2dec1eeb669d65/sift_stream_bindings-0.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:ce2e4484609caccc4978d2cc38067aa7da02f0567739a9ebd81fe7055747546e", size = 3570458, upload-time = "2026-09-04T21:39:07.521Z" }, + { url = "https://files.pythonhosted.org/packages/f1/db/93ba9bb1db30993a17b6840b4a97b11a688c199c38d4023853d2857ca661/sift_stream_bindings-0.5.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:286de18554f288c39e6641c07e7411be129162a4514cfea9b5e3a0766f96bca4", size = 3787938, upload-time = "2026-09-04T21:39:09.34Z" }, + { url = "https://files.pythonhosted.org/packages/05/80/191ab6007959ddf907470ba1b63c1b1beec33d5e18f1879254d70b3e9b97/sift_stream_bindings-0.5.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:551c683f84e375c749fa5e9fc0ff8ca622325bda26e66b7b809e6fae44aaa514", size = 3733856, upload-time = "2026-09-04T21:39:10.855Z" }, + { url = "https://files.pythonhosted.org/packages/5d/d8/7a7dc9a81bef15237edfce4ad3426b5dfe2c1bdd5162ea30549d9042aa7a/sift_stream_bindings-0.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43ebac359a8ab703c91d09558cdd7b35002e1087d954fec2f59752109878af52", size = 4281654, upload-time = "2026-09-04T21:39:12.37Z" }, + { url = "https://files.pythonhosted.org/packages/83/f9/440d7b7a5e034bb49053b585506d5d4defbc039f8adf0de60be60f0865e3/sift_stream_bindings-0.5.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:998be5679dd4e6ed39d7f38b993f609e2b2c02c5fcd9c8e05b6ea9173ea2bbcf", size = 4031620, upload-time = "2026-09-04T21:39:13.717Z" }, + { url = "https://files.pythonhosted.org/packages/3d/cb/1bc7ec6d17b464447226e567af5248075b46b901bb1d4c43355a17040e8b/sift_stream_bindings-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f00115022a05ccb6788fe15ba95493ac2941e6b3edab31821c0bfebed960cefc", size = 4070606, upload-time = "2026-09-04T21:39:15.135Z" }, + { url = "https://files.pythonhosted.org/packages/30/c0/3d944e99c724aa1085629d52a0934691e3fe35c97686732ae5dafeb1306e/sift_stream_bindings-0.5.1-cp313-cp313-win32.whl", hash = "sha256:dcd1977898cb13602587973e0420a2fb8c571e273899df8fa99aca802a9fa3cf", size = 2979040, upload-time = "2026-09-04T21:39:16.486Z" }, + { url = "https://files.pythonhosted.org/packages/22/cb/e130d8b55e59023227aac6c4774962f4c1ddfe991df05cb3d552bd1bf721/sift_stream_bindings-0.5.1-cp313-cp313-win_amd64.whl", hash = "sha256:3e277f1c5d54d00423fef36a8c5a61d6a6dffb8cc3d555691d86973f150f6719", size = 3569633, upload-time = "2026-09-04T21:39:17.858Z" }, + { url = "https://files.pythonhosted.org/packages/6b/20/ce2dff28a5ffd1b955ec787df8f4912eb8d3a288f0417be25fc7a1cfbf7b/sift_stream_bindings-0.5.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:67c6df91f56ec5a3d2544ce312f96b8fe382386e47e2c602a5cd83fcf5525e84", size = 3788633, upload-time = "2026-09-04T21:39:19.313Z" }, + { url = "https://files.pythonhosted.org/packages/3b/11/c8930d9d53151b7a9e5a61f40cbe3708a6f1b7fecca3af637f591097e1cb/sift_stream_bindings-0.5.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2590fc912692ba31a42c5d8803aab60da3a46f628977798dd3a1e8b076435862", size = 3733294, upload-time = "2026-09-04T21:39:20.829Z" }, + { url = "https://files.pythonhosted.org/packages/6e/72/f07c158d3c1518004c59e8292b6efe3f1ef2e6660cbf96aca01b8fcb4694/sift_stream_bindings-0.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feff315276b01309298739ac232d5059161b12c1c36091c008eb98bda02c9ca1", size = 4285256, upload-time = "2026-09-04T21:39:22.401Z" }, + { url = "https://files.pythonhosted.org/packages/55/a2/787e89c44f53664cd69c7fb8be477d0dbb4848fba1c729405f0707ccc44b/sift_stream_bindings-0.5.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:98ed15607ed8398217e697a5ec538bed308b1488945ef0c79a418e8c9dc14893", size = 4031842, upload-time = "2026-09-04T21:39:24.071Z" }, + { url = "https://files.pythonhosted.org/packages/22/28/4c844dad5ee5d6d92ef65780e64e3b3e877de5766b54be554475e8afe56f/sift_stream_bindings-0.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72baf7985cbcb3ce272b74cb540d882f46a887166fb00ec4db0adf7cd05dde97", size = 4066827, upload-time = "2026-09-04T21:39:25.533Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c8/e4b70a160eaa3e50d40c5b6b6644d92d065c3d3292e4cc19ae6f7caefde7/sift_stream_bindings-0.5.1-cp314-cp314-win32.whl", hash = "sha256:c7dbbad7acd51fdc23573081f216ef1d92eb2bdf7ef5d4c232442f4223468f0d", size = 2977536, upload-time = "2026-09-04T21:39:27.314Z" }, + { url = "https://files.pythonhosted.org/packages/f1/49/66b228652f1b441f844239f3c865693835b0cef943d16ef5ec8df8018baf/sift_stream_bindings-0.5.1-cp314-cp314-win_amd64.whl", hash = "sha256:3dec6cb63bae7c87376bdce646922349b7596e88f52f27a915c36f053c4a89e8", size = 3576312, upload-time = "2026-09-04T21:39:29.206Z" }, + { url = "https://files.pythonhosted.org/packages/8d/96/ce76b9290df99ee01bd8d3ff570286d66cf52fdf909efb9514a8e01002bf/sift_stream_bindings-0.5.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a896b7d390178bda0420b2decb0858cab88484647f0684b25169a7d4ef6c8fb7", size = 3796859, upload-time = "2026-09-04T21:39:30.749Z" }, + { url = "https://files.pythonhosted.org/packages/7f/4f/34529663a3a86679363cca13824b4340014bfb66314ebc2a8c29cb6201c7/sift_stream_bindings-0.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:85142032cb138497f97f7776535f102819de7553c67f369407feb2149f984fcf", size = 3745943, upload-time = "2026-09-04T21:39:32.273Z" }, + { url = "https://files.pythonhosted.org/packages/9d/96/55ea6837ec4e863fb51ea948ec5089f1faaf45c49fb3eda19c03f8c1e6a2/sift_stream_bindings-0.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db3099a43b1297e2e4672ca1d7769da804f193cef6e85a039f93b6acdb883111", size = 4298921, upload-time = "2026-09-04T21:39:34.058Z" }, + { url = "https://files.pythonhosted.org/packages/a2/bf/a6b6237e24dcf2df0f0868af1ddf8b4ca9e89609e552ee845a0a29c30384/sift_stream_bindings-0.5.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16bec7c58435b4c93f869d8918779cac1c809f57cf41c51c32dbb5743e5c1db8", size = 4056973, upload-time = "2026-09-04T21:39:35.925Z" }, + { url = "https://files.pythonhosted.org/packages/f3/32/1f86c066b932c9ab8c5acdac38defd3875e02319bee2c4e7e1abfa35e264/sift_stream_bindings-0.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f551d81dea6a2cbe280c27faf61700cfb44734fdfca8269239b4f90b3aadfbff", size = 4082016, upload-time = "2026-09-04T21:39:37.63Z" }, + { url = "https://files.pythonhosted.org/packages/de/51/c754477791c6549779d063b8a4a5191a10a378687607f5c3ef3b47658e67/sift_stream_bindings-0.5.1-cp38-cp38-win32.whl", hash = "sha256:d7bb6d1da1559fbc6f7f9b6093d36993ba317fe9e8d583d821c687b134a34594", size = 2990198, upload-time = "2026-09-04T21:39:39.196Z" }, + { url = "https://files.pythonhosted.org/packages/66/a4/41f723c3935a696c89285dc6408409bca02ca11921e89176992a75e8fc0a/sift_stream_bindings-0.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:2401b6aaac021efa7f124c904ef02ae6b8e55e0073f2dcef310f16f361c7bb33", size = 3589360, upload-time = "2026-09-04T21:39:40.681Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ae/50a2fef61e8f3019ccc3b3dbe2c09cb9cc97712a8a0162b13b8f138b1519/sift_stream_bindings-0.5.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:adb0193f02bc77df967b766595c169cdb1cdca34521827457a8321fc7b02a3f7", size = 3793126, upload-time = "2026-09-04T21:39:42.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/2d/ee55bef52a8da651c85ef17688012b822ab7783ded9fa632df2728538642/sift_stream_bindings-0.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:804a77b056a0bb9b161c5f74fbd69c57698db20d086981697fadb706ade63085", size = 3745317, upload-time = "2026-09-04T21:39:43.611Z" }, + { url = "https://files.pythonhosted.org/packages/04/bc/8ef33f98312f16e10b4284a68d7469a597a8d90b8aab6de82e4760774d3d/sift_stream_bindings-0.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f98c50fd9fc1a8659a47b1db151be69bc8b3d9fa1db3a5903d812fecfa646021", size = 4298577, upload-time = "2026-09-04T21:39:45.003Z" }, + { url = "https://files.pythonhosted.org/packages/ed/85/9e86a0bb6205409f4266eeef0b8db0a2197c3fd0153deaa672037e7579f1/sift_stream_bindings-0.5.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:63eea940d93aa48bb454ee39cb278be24e48c752b827e47be672be28f41c4f58", size = 4057153, upload-time = "2026-09-04T21:39:46.562Z" }, + { url = "https://files.pythonhosted.org/packages/e3/8a/852cb56a92c109eb295a3059a960da979e5ca381893ebeb7d90f5f6e896d/sift_stream_bindings-0.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee0543d57cf3fad2260318aee7c61847794383fcce0d109f5b5f924f0dc3b7d", size = 4081005, upload-time = "2026-09-04T21:39:48.371Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e5/bfa3270aa7cd8069a8b162f740bdb82c5c6834d545792d23e94b4b358d1c/sift_stream_bindings-0.5.1-cp39-cp39-win32.whl", hash = "sha256:267e5186f9d0390699f5457f37af7240918a2686f93a24224335d543214f7128", size = 2986384, upload-time = "2026-09-04T21:39:50.059Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2e/3244ef0366f6491fe082aedc081ef06c9d7f56e27070565f862b596d3222/sift_stream_bindings-0.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:ba41d49919bad10126a4b34692dcfff12e65251947b4d72b65f7abd797ef5748", size = 3586931, upload-time = "2026-09-04T21:39:51.491Z" }, ] [[package]]