From a60afdf8548ee88fa6151febc5267d5c54502755 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:50:42 +0000 Subject: [PATCH 1/4] Initial plan From 64e1fe27dbf011fb1acc0caef9494308f78591e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:55:23 +0000 Subject: [PATCH 2/4] Add optional sort_files parameter to improve performance with large corpora Co-authored-by: tlebryk <43556997+tlebryk@users.noreply.github.com> --- tests/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 142 bytes ...rd_from_audio.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 20565 bytes tests/test_shard_from_audio.py | 29 +++++++++++++++++- wsds/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 663 bytes wsds/__pycache__/utils.cpython-312.pyc | Bin 0 -> 10912 bytes wsds/__pycache__/ws_audio.cpython-312.pyc | Bin 0 -> 10831 bytes wsds/__pycache__/ws_dataset.cpython-312.pyc | Bin 0 -> 25824 bytes wsds/__pycache__/ws_index.cpython-312.pyc | Bin 0 -> 10026 bytes wsds/__pycache__/ws_sample.cpython-312.pyc | Bin 0 -> 10683 bytes wsds/__pycache__/ws_shard.cpython-312.pyc | Bin 0 -> 10561 bytes wsds/__pycache__/ws_sink.cpython-312.pyc | Bin 0 -> 7831 bytes wsds/__pycache__/ws_tools.cpython-312.pyc | Bin 0 -> 37117 bytes wsds/ws_tools.py | 17 +++++++--- 13 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 tests/__pycache__/__init__.cpython-312.pyc create mode 100644 tests/__pycache__/test_shard_from_audio.cpython-312-pytest-9.0.2.pyc create mode 100644 wsds/__pycache__/__init__.cpython-312.pyc create mode 100644 wsds/__pycache__/utils.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_audio.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_dataset.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_index.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_sample.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_shard.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_sink.cpython-312.pyc create mode 100644 wsds/__pycache__/ws_tools.cpython-312.pyc diff --git a/tests/__pycache__/__init__.cpython-312.pyc b/tests/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..904298741d9a46f28c40ce2877b7c0005895c05b GIT binary patch literal 142 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 literal 0 HcmV?d00001 diff --git a/tests/test_shard_from_audio.py b/tests/test_shard_from_audio.py index 9a9c31c..7505398 100644 --- a/tests/test_shard_from_audio.py +++ b/tests/test_shard_from_audio.py @@ -1,5 +1,4 @@ import struct -from pathlib import Path import pyarrow as pa import pyarrow.ipc @@ -202,3 +201,31 @@ def test_shard_naming(self, tmp_path): shard_names = sorted(p.name for p in output_dir.glob("*.wsds")) assert shard_names == ["audio-00000.wsds", "audio-00001.wsds"] + + def test_sort_files_parameter(self, tmp_path): + """sort_files=True produces deterministic ordering.""" + input_dir = tmp_path / "in" + output_dir_sorted = tmp_path / "out_sorted" + output_dir_unsorted = tmp_path / "out_unsorted" + input_dir.mkdir() + + # Create files with names that would sort differently than filesystem order + stems = ["zebra", "alpha", "beta", "gamma"] + for stem in stems: + make_wav(input_dir / f"{stem}.wav") + + # Run with sort_files=True + shard_from_audio_dir(str(input_dir), str(output_dir_sorted), sort_files=True) + + # Verify sorted output has keys in alphabetical order + shards_sorted = _collect_shards(output_dir_sorted) + keys_sorted = [k for keys, _, _ in shards_sorted for k in keys] + assert keys_sorted == sorted(stems) + + # Run without sorting (default) + shard_from_audio_dir(str(input_dir), str(output_dir_unsorted), sort_files=False) + + # Verify unsorted output has same keys (but possibly different order) + shards_unsorted = _collect_shards(output_dir_unsorted) + keys_unsorted = [k for keys, _, _ in shards_unsorted for k in keys] + assert sorted(keys_unsorted) == sorted(stems) diff --git a/wsds/__pycache__/__init__.cpython-312.pyc b/wsds/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7218df8b4534ecfdab0b4c4e193ac846f49cf00c GIT binary patch literal 663 zcmYjO&ubGw6rR~^_Q$jlX`von;vre6%|Y}aX`m=QiV&o*r3_(^Y)ls3uP@OfQU zrMD8t|Ki=Y)8m4VC#HA#=;0-ycu};|T2AStsN@r#ZwENiB&SN^I#F~Vr*-ed+D!A@ zbnDD{2jeMQV%)hn+^C#)%$4a}qzL`6-w0Az#(xL2Bsv=ot8NzWS*+%I#7^dvtKo!b znl?&wVwB{gQ!ZG!U%x$7S`zbYLh>=AWnjyAK7EnymLbMejW90JqQINYb;GtTV;iVv z)V|}9j6Z@KOTq17Z=xjY>3N3u zHy9tymbXz~DmoWzp!aOCTfcZ>-MRrG{OQHe|8)Rh`x@N82HkI<{{{5d0chS?`MWFs VVC7qIZ{?$PE8Owkh5D{7{R4q>#83bL literal 0 HcmV?d00001 diff --git a/wsds/__pycache__/utils.cpython-312.pyc b/wsds/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0e1df8822266eb671712422fd6cdff67dd129cd8 GIT binary patch literal 10912 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�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 literal 0 HcmV?d00001 diff --git a/wsds/__pycache__/ws_index.cpython-312.pyc b/wsds/__pycache__/ws_index.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..184dc7a7083c8432852bb50982061a421045de18 GIT binary patch literal 10026 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 X7$k^>rwHfIqvSrKZ3#i9&gK6BPXi@z literal 0 HcmV?d00001 diff --git a/wsds/__pycache__/ws_sample.cpython-312.pyc b/wsds/__pycache__/ws_sample.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca469f73a0699baa9c675b398816dcd6ebae842e GIT binary patch literal 10683 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 QdzTo9u$$v6EYkh{7xCT?$^ZZW literal 0 HcmV?d00001 diff --git a/wsds/__pycache__/ws_sink.cpython-312.pyc b/wsds/__pycache__/ws_sink.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b8ecf621b1455b0a2017f689955776448e44720 GIT binary patch literal 7831 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 Zl)jr*J+-FwGp>?vWlug;A;!2*|3BFBNHzcf literal 0 HcmV?d00001 diff --git a/wsds/ws_tools.py b/wsds/ws_tools.py index b0b98da..f95a033 100644 --- a/wsds/ws_tools.py +++ b/wsds/ws_tools.py @@ -6,7 +6,7 @@ import sys from collections.abc import Callable from pathlib import Path -import numpy as np + import polars as pl import pyarrow as pa @@ -327,7 +327,7 @@ def keys(dataset: Path, verbose=False, skip_audio=True): try: if not pl.scan_ipc(shard_fname).select((pl.col("__key__") == expected_keys).all()).collect().item(): tqdm.write(f"Shard {shard} in {subdir} has keys that don't match the index.") - except pl.exceptions.ShapeError as err: + except pl.exceptions.ShapeError: tqdm.write(f"Shard {shard} in {subdir} has {pl.scan_ipc(shard_fname).select(pl.len()).collect().item()} keys while we expect {len(expected_keys)}.") reader = pa.RecordBatchFileReader(pa.memory_map(str(shard_fname))) batch_size = int(reader.schema.metadata[b'batch_size']) @@ -611,6 +611,7 @@ def shard_from_audio_dir( key_fn: Callable[[str], str] | None = None, write_key_mapping: bool = False, key_prefix: str = "", + sort_files: bool = False, ): """Write batched Feather (.wsds) shards with up to N audio files each. @@ -622,6 +623,9 @@ def shard_from_audio_dir( key_prefix: Optional prefix to prepend to keys before hashing. Useful to avoid collisions when processing multiple directories with files that share the same names (e.g., "egyptian", "saudi"). + sort_files: If True, sorts all files before processing (loads full list + into memory). If False (default), iterates without sorting for + better performance with large corpora. """ from tqdm import tqdm @@ -629,8 +633,13 @@ def shard_from_audio_dir( output_dir.mkdir(parents=True, exist_ok=True) exts = (".wav", ".flac", ".mp3", ".m4a", ".ogg", ".opus") - all_files = sorted(p for p in input_dir.rglob("*") if p.suffix.lower() in exts) - print(f"[INFO] Found {len(all_files):,} audio files under {input_dir}") + file_iter = (p for p in input_dir.rglob("*") if p.suffix.lower() in exts) + if sort_files: + all_files = sorted(file_iter) + print(f"[INFO] Found {len(all_files):,} audio files under {input_dir}") + else: + all_files = file_iter + print(f"[INFO] Processing audio files under {input_dir}") MAX_ARROW_BYTES = 2_140_000_000 # ~2.1 GB Arrow cell limit From 83d85ffb2099108b136234a2e640c1c269cb82c2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:55:41 +0000 Subject: [PATCH 3/4] Add .gitignore and remove __pycache__ files Co-authored-by: tlebryk <43556997+tlebryk@users.noreply.github.com> --- .gitignore | 33 ++++++++++++++++++ tests/__pycache__/__init__.cpython-312.pyc | Bin 142 -> 0 bytes ...rd_from_audio.cpython-312-pytest-9.0.2.pyc | Bin 20565 -> 0 bytes wsds/__pycache__/__init__.cpython-312.pyc | Bin 663 -> 0 bytes wsds/__pycache__/utils.cpython-312.pyc | Bin 10912 -> 0 bytes wsds/__pycache__/ws_audio.cpython-312.pyc | Bin 10831 -> 0 bytes wsds/__pycache__/ws_dataset.cpython-312.pyc | Bin 25824 -> 0 bytes wsds/__pycache__/ws_index.cpython-312.pyc | Bin 10026 -> 0 bytes wsds/__pycache__/ws_sample.cpython-312.pyc | Bin 10683 -> 0 bytes wsds/__pycache__/ws_shard.cpython-312.pyc | Bin 10561 -> 0 bytes wsds/__pycache__/ws_sink.cpython-312.pyc | Bin 7831 -> 0 bytes wsds/__pycache__/ws_tools.cpython-312.pyc | Bin 37117 -> 0 bytes 12 files changed, 33 insertions(+) create mode 100644 .gitignore delete mode 100644 tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 tests/__pycache__/test_shard_from_audio.cpython-312-pytest-9.0.2.pyc delete mode 100644 wsds/__pycache__/__init__.cpython-312.pyc delete mode 100644 wsds/__pycache__/utils.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_audio.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_dataset.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_index.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_sample.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_shard.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_sink.cpython-312.pyc delete mode 100644 wsds/__pycache__/ws_tools.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aca63a8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST +.pytest_cache/ +.coverage +.tox/ +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ diff --git a/tests/__pycache__/__init__.cpython-312.pyc b/tests/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 904298741d9a46f28c40ce2877b7c0005895c05b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 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 diff --git a/wsds/__pycache__/__init__.cpython-312.pyc b/wsds/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 7218df8b4534ecfdab0b4c4e193ac846f49cf00c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmYjO&ubGw6rR~^_Q$jlX`von;vre6%|Y}aX`m=QiV&o*r3_(^Y)ls3uP@OfQU zrMD8t|Ki=Y)8m4VC#HA#=;0-ycu};|T2AStsN@r#ZwENiB&SN^I#F~Vr*-ed+D!A@ zbnDD{2jeMQV%)hn+^C#)%$4a}qzL`6-w0Az#(xL2Bsv=ot8NzWS*+%I#7^dvtKo!b znl?&wVwB{gQ!ZG!U%x$7S`zbYLh>=AWnjyAK7EnymLbMejW90JqQINYb;GtTV;iVv z)V|}9j6Z@KOTq17Z=xjY>3N3u zHy9tymbXz~DmoWzp!aOCTfcZ>-MRrG{OQHe|8)Rh`x@N82HkI<{{{5d0chS?`MWFs VVC7qIZ{?$PE8Owkh5D{7{R4q>#83bL diff --git a/wsds/__pycache__/utils.cpython-312.pyc b/wsds/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index 0e1df8822266eb671712422fd6cdff67dd129cd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10912 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�`^r@9AE5`(Lf7fosxnu6IT(x28bgHg>?zvQLyS$-asqMdd^j=}*g7f{c zyM-P1d$xSP=sQKX;)$N4inD9(kX+fdrsmzZLbqNp4-G5MW2|Pm zYtQXnsoIV5=7UP@!MUTUx{b@7N?rfe=YCmID>w9fuWUJ#*tAdX8IbGtCrS>;&I7+J ztNO};Ia?}g5w@kA7JXvm+a$-NlWX+|*{DS%bi1M&Ty(`A^HsabN60ybh3O_{-d@#uvHEsy=Utjb!wBO^wfL@Gy4C#L1bi&Z?Q9vSP)2 zYKoy_OgUYvlMcpuGBd_1F}G@J%FIg4G{ZE&u&{JNW=3SD4FoI`s}@xvVmUAvhPbA8iuUkMP@ns4K%4E_yZ9ha>D3kBv7{v+*yjCW|v2ejmbEZkF zmGVLH0_DoeR^oq6urjGC4k9L2ot36p+A-tsdq|dAAW>Cix~d^r(!w-#y=AyqTsvzOIQ2eRc&|D`w*8x9sx#wHo3f?QPUl0}# zFY}4=&2tBU5va&Pch`&X3F5R*aPQeo56^M^nzi z`Qobw=Ju@Av)24>@b5k=;;NdcxZ0nV)lk;j|08Vzwcgmczh}lW@M2bP9@7NI1vm z_>{vrx8q((oxHARxn|iZ*Y8f0^vllv6gau~YIM$_B3Sx&Lsj}hKD8g;nrE`r0J+ZR zL$LslW~>ttmYM)_y+)k_GV=in(XX625z8HM9!^|FZQjsI!51;ASNkPr7?qoFzS*@xQe>aR|z9xGA&k?C2}_Qr}WAI0+6@4OR;+9 zobwZG$*@6jG%Q@c>u5_=H!tp699md6cNkwF>1tM7&F>#v8d*MiyF>1M?#?TTmgf_$ zA=x_gC>BUmWus;UH;)@Nk3!6O$4KrMLTPj{*tlP_iU{ZnPfwl$x{>wdT7v*SipRyg zM+4#Wa9q+5*^A-G<#2v9)}XTbAyoYcNQbEg>mX2vi?ejjMEw`!mq_Q&tU%~6>yX?w zl&}t|Fe}BX)RnExjFb!@q(SE+KQcC>z+4EQ*HL^T2~8u!un%8@YV|vn*SRb_mlZ}D zYt5R@Lxq9jWQiN0HhdA&d_k5a^P%+d0{vZU+?r2m%crhsVhMFXzW~r+6AZM<2#Ccv zYk8Xt_B_f@+(zP#4K_QBdRyGVRwii$!ladm6$n$D8P$0q4u{rSz>NJ+YRq|aS#xrI z3ArrdVB93NqU5~oQpK>kl1eSiS0>hcGeUsp!fkO=K2=le1E^94syO4$Usn>!;?X|C z6-$(SFWALERviSP5w_TzsF6Gj{ zT5=lPI9ndx_?VJu!FA0g*y3)%Lj0}M>(`c_BRgpFS##m5m5&?dD#v-j{-!N%ALrS< z<4xO5r&b53?s~#_c57b;22*jq(GoAq=9uT-Zo_CPmJGPt8!yV2Kc~f8)-)H7@nWIy zW|7vmRV728i@U@NQBvU9CAhNbao3Z1{0zoxMy^$4ONiS647=kMP}Fqu7ILc+H5Ey{ z(H(kC#X`x%PVFiCn}r!sPHA+vmV$5Iuia;Vwbr6G9iD_V&4Ie}`G3cYwDOnCUWfoy3L*P|%m5{J> zC$TA*xlu5T&92!>U7l%pPSa$cn;A0wt{UPTo4Ycz6r%Nutu|%iNu{Fg z9efypc?@17A~a8nN=uP6pLCJ>pe;XVG|nr`hW*^SE99R%C;0ngTXXavb+ZRN3Vj)- z@J%s>=-$O3PN^R^>T3;Xhg64Z{_YBQyI&qUrR;k#xzDHU^U3Ef%KLnYeW5E{enpe@ zw+XMZ{sM$y{ndM!y&2{{rkfg;_o6YZNGqx0JNe1#tV_lvFA_j85%q^_-vo&#mF?< z6ELanebGQ~aubl?Vn`fLgCOH~<7o$;8v-XIZc<$r7(8+GsO0U78Q`zeI2ggOVLKkQ zVL&#Vr#ckc6eJt8qv+C;-jBpHJZJNS?^_(Yl@(snTtiK@Pk zs`IABKLvkGA#DNF4wrlJS;|!ez&K;vv67|{DW0LAkAkr^d6@HPE2Y>d#R6ANc>IgM zLl5L@#GarxaNA4tzw@QWEzeo{p zAV?Qvcr#s)ksN6=brO4(!hrzXMzLhT>Ped@I&DNN7~`bPOnRjGam_E3ItX8l$Yr>S zV;=zUCG{Jo&5ZbI8(vkDRDxyPNttV@K^SMlOe8f!1UN|)C?;Ow?_bNla=mXrCt zFr6rEh1+Ol?e&>!Gpf5mqO$7&S5VkJZ%ma|EOLEVJmK~u;iVi zSC1}~ed26bDMuqdt>K*IKP|1HH%#w3Za5YXDOKG|uP9ZU6!+$&dxzrQam)LOd*FVx z=iP=I4T);+1I|!fGruQQR(}29wSx;U-YskUX<7A(8LS|$+^S#%PK&h>e{)Y zdnNT6;mX%NEo(yfNoWF*JIaW$;!=_(D?fEno)l#%s!UENS}!GAUsqaR zr@VWScfoeAy7t|w8&#?Gowsavt3s)+-n;9DJ~JC@D(3fs#N~Ah2d*7UmURH{TiSZJ zY!g;eGVZ}8KXJFLG=nY=TR3;M9{+yH2i5OYFYUP1dAIS|pSTaMY#@Su+RZsj?>UR* zlE7W(xK3Aqe}!EtUGKTe7b+I4i-yIg7Te{D4WGC>0SOj%{Z(n*y$WxtV%sg#4{blN z-EK>4KP+!MA|E+(_hr9)ZajHTRL+TsmnHd3R4$ta0$N$J0=6k3ufg&^ICnjGEx2e) zRCFXOHYpXGmRl1Q+hx~w*}DBv1W88=(->KVAYHitr409LFR?m*e7-dmfxigVLo~rl z0Z7y^+a{8)%zW>%?IC=*N4#crjn|r4`NSdsR(t(XtlqLIjv+fJU!aJQ@{sXL&9!yrdgGvqokH6P&f?Vz3NN;cKqA4!Oj! z>FDc*-&1i~Gr%ogG{h}H+bt8cvcBfhOk{>0o_dyfPGqeHvRrZui%z%zs+$vaBW3_w zRSwXO(T$#?pcT8#dSbwQ!A4Z6TfBm5y#?ZF{HS^kQ-dr+%nek$Nzvb>;D(xyxj_Fb ziqOd}euEz0rGVNj5!EyEzdG&PX}(uAqg;458@r46jaqPpqviFnulL?{tiw!qz3W=n zqA^j@f+??T^ZY=vY_n3fdHLBpBgyA3D9>GxgRdr@n*r}UW7tPCMEQW>s%_3ZC;pYA zA%%S*hwi(I39tNe94kqx_%opv?V^Sft2{i1`g0My|9mB69hxS{1Xy$By!!+cPp>@>ey1_8z>|do zHa5j{Hr71-SF>?07i;D*)LGTW)|P6c7vMsR?f0~!7GjoJ-QCPkX1uJfLO9njwD^5A zA)`Iv=1ZhW5^1-n7g{MOymE$d{`pp#gEXQY=oy3gF>^Z!y7QU9( z)!1i=*Z&A_J)YO^msMpred{f+eB#CAi7Dm86xdwk_ZXncyuj}zfqBqy#2}Y#Mnw71 z4Bw}~?=x3t7Rnc1xlxsHH6>kM#pPY{CR|&RuAOj&{?olbJn(}9w|69VJ(t||qO$A7 z#IBbTuG2}EptyvDYg|4*rMO!4NlV1%yxDdo;+_T(qViFSx0%D$Uxn5;$(x*a|bb{w}-{Ojj!7M)6?W zo^N1Hy>03h&n{1I8@a|YZrXjoACdxI?@MhN4~Vui9#1o1E)m#RC~~>$m1(%aMX~>Y zEi37bZBsX{Kec7+mW|{O=bOU$9loh)fz&hKre17Je{|c7#;J5G00OOA5Eg!3i#CQSutBZagoN8d`j zRM~6Q7%g{`sup*QYpTB0A z=ToI+*LE*Hzts4x7sxThhHRhOIlvL_@|9|AgZO&}(Y>+PvA350QIVO#vI2x@D?u?n z;9aXgRg%q2tvQY^uTpDt4*>GR$S0LG2`IUdPE4@o($b-~0!V+dmt1}+iUr7w&Ye#s zfwhM=(*=pz28n9S)!Vf+)#r?IXiNIJd}qy6BpH$By3+Lc#T~--rTyb zuGOXb#A{D)@Lr3*7EL^)qMB{=0kEk`g8Ci8K0xexq=79&u%18wJ=;Hyb5dXp0-=V+ zLa-=yL?v2#ZjnT+Pt+c+4esmBO zJd%NOt@oasYQMg16ZG!7slyXVP8M?mFsW8P~p7`+hwP<+&rjtY7!; z=#9~LU%v6O-1+qFl0^MLvi`7AfA~&sqW;(e&S-Vwo-u1z&c&k3)|lxxLLY1@=^7-j>*kimXFBQ&m@ZW$ksiN z;yOf4CINmAH-zg*w7`n{wHFSppnUAgpW{g*OdA!D1Y}BSrR3^{nb>Sj@ohw9Pz~`K z?o|Mp-dFK%bt_NW89W~btE!u5a#0QOtH_$WQ))F}|7H4Av}AgP`>CsT(e#1+oA!I9 z1i;#F*i}zN5Is@aDLXrVS=zL?CE47oH1{S-x5&;dDkXJ_pcJ}ilqBkbk_Kj!8JTkf zV%A>REdr?o#{`74xf|s5rA$>G<)doW;9`qgBKg6>D~+U7W_XZK6@VNZn)Is1>T{IZ zOTlIYX(O#9uHo$KNXSnw8X?z+UbJYt%CoAdBw5s;6g4c?DMek&7NzK^IpaO>{qR?8 z3x|PwCtbaYt9SX?glm^<-KCNZ1?d+xfsyUM892aLMuuo!N7RxW#O7Dx(F8xyE&^DQ~?>fw00T?+Z(TFB#r3x!r zEsZrm%&O9~JKw<}U!@Ow78&tjtLxvby-}O2-k?-(NK|)`1loG_(A)v6G`Px{_7nfa z)p-x93=ny3NGy*l&AXCK&nivNCYlZDe-GO1fJWckAN#$L_9AA)U59Dt_q8 zV*qdu2N96?5qM%|&=9M;`NUA%xC`l^FdPk$BcmW7O21Sps}wF$DXbl*1o)FE$4H$a zAI@a~?nP^X;frkTYc>7SPMnN@Q<&7_m|_)KLgvPQod`(t2?$tRE?2cH#qD#JRC_0F zd9PQj^$X+J@}8=1UL08%oHM=Sxayc6_}E&VpB`*9gispMBR>`3(^Hirj&)@%e{Pi` zk4sY#7gg9A#4e(b8-WHDlTgVOs_7DvqN@+2iPdH4@@VRNM4hKl3_-*d3qrD?SHYj7 z_ui(yTRRh*o}C*=IvW*dcnad zFb{IOK5o>2vMhp-7sJ(M@T?`O!*f6(%$i0@gFK(s%05^ggciilD-cviJemVE@c~>w zhxH)cje}_m$p8RQ^d%rCfC_MII!xPwleE(w=4-l8z4hU=z-b^a1^5bt{A1e`d_&mR z5`RJOu`&u&-RC|<(1bwSvZw|hJLxQK&pe?l@vkYlFdKow9|djQIp3VEUgWwzuTA@7 z;)W=S1vgaIE*!k}+MM$q+bA_~*WpbycH#7#xx)*Vdv&eJx?ZKOclmIl?rA7NwM~n= zm)9q1cg!8V@2X9@S{3Z&ce>|Wk|kcH#Jkjz?C4WE`fiQf?oxIiS2~U-N}iX8Ps%Tj zVd2Yd$HJF(WCZb!cIng40kn%vKlojH;j8Ml2)=w?v6FAw0gn*kwdN9ZcQmq2zDVwb zdGsLc$!W*;F~m(k{YebunUrwwmM+c3rgw~|UBc2dA}atn+Q92=wRAxswk4@#r4@u;5iFDPjV!5Td!Z6l^q zISuEjYEzpY`5j_06*twFzn3bOYZB$V=IrX{F=o+ZLtc**i6f zvXQI%e_2+$FtFHhtLARmz})`(8*zwL(ps%ps~0+wH5(NCSvym%vN@+J*i7i3cF{c( zY&7#RX4F!0e&cKlg(k@G`E%JhlMlvhc561V_?iowr}V|rVNR9(MpXj=S_}smMoR{y zc{8v!2@3IB6htVPqik?VVTa+aLAFJ#uW-4LcDA(J^l3={)K!he6VNoS7R_1aErhSU zcJ;M|@x_URYg5v-OL6VG^}_8J60W1N_2?5O%k3!eapV#m`6fylQvy^7RevTe0`pxX ze%MY|ZSMPbh{&D$SYj-PC5q|!u zx#!d#Ag6wjEyF(eTZpAy{9NF>lU%GD(|# zfMFQEVbtr%BbUVWpqwc?f97vZK53P=4y?^TrUU}+)?BMv2bb`y?8+iE@hr`TqKC2g52R*I^k8fU*yE<6Zzb7XC4=55$T;!fJrmT*)qw@n_jsbIUd1xz* zk(e7hon;5$iwbO?u{z}9_3yvF9Q}UmJF(=p#XwjEH~4&0XR>`SyAm)AcpKR+zHMilD^a=S|A z@|+Sy(uxhbpWx9`E{r{dbL54>NxIFf8753NMwQ;E85a_#n8&f6n@{_?+lSsoaXM^4DD7i8-TPY|a# zI-ZGBfy2_`;{;~&W3U4Haym$bzGN=V&Szgx2cJpg=38R?Czox?Iw+wXWE-!!w07iE z`?R$4IylXEfvwlX>}SuOotlZ_PzQU=Ob-xl?5DZ8*>emhl&LFceRgj_+A`@EarC(A zQDm4D#D735;Qoq}BE~MV(~8nI99ay6)j#9Yrc3OfUOipnG=DC4y42tJ8Rfi$BCl{i zvzBL$Phdi&`udJ*I~KmMwB_5oKHT+DzYK-GO|IXYDBUMJ_uU5sF?)6PzPsYO?V4@j z2t0_KA38rOlH0b)+m6XK#}n@7*|D2Vin}S{Zb`bk6?b>S-Lqmg78X4;n#l|>XUqVv zab)lS&ITg&C}aH&ir>S7*K%M4r;Dif`~mLm9ScqDe-t2zXDQl5E)L>W+^XKlHqvOB6OOo_ zB9BmTjDj;1j8Jfr0s;xtos$yX%~J3>1ve@9E`qd8cjyssQRJUe@aGgXQ}9&^n2t_B zk@!~>{DK0emXj{XlsTsOFdh(jd^(Xn?1!q;x(YK9V!&VnGBBloiR9nnJ~fn>tt;(Z zNkzg`o-(z=So_k^l&Kf1S_xB4$~5!p@k4c`yHIiP7A) zXne@wXT@$bALAE$>ERf^V(&1Y;g^g{V;|Zca&-Uj6klsDUFox!%a-;nmoD|KaJapN zQ&#cwz-=-Q^ADV6R9nXF;|KUVWuI{ec=L`2#|<{~x|IrU`|dk}d}{OoXEWEyK7Z18 zQSn`r!&Av{Ou?To_K;E@R#?m;kL)$;QdM;TieN_2jkD;};#PA7{9H>bR|@FP3Yx9h z=*|vL-W3Pk;TW`%hlO-Eg1+zN7ssgcd-)}SdcK!`*kUqoec&{jcR#Ra?lwF?zc)Xy z+d!C#LUZ|p27~!I{(;qGu6f|Jn@b;58O3`9_hNa~I1zi!2mm~0|a zPffPz=i;m95l}KS@|bzZ8YkkwjU2Ya-V7D+=oj%n_~7uzNn{JaJC^5v#<_pSIey03 te#RC4jI;loYyLS`^$V`_Z@5U3i~O9c|2ek~;on+L6!7*39EEH~`M-uDeV70M diff --git a/wsds/__pycache__/ws_index.cpython-312.pyc b/wsds/__pycache__/ws_index.cpython-312.pyc deleted file mode 100644 index 184dc7a7083c8432852bb50982061a421045de18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10026 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 X7$k^>rwHfIqvSrKZ3#i9&gK6BPXi@z diff --git a/wsds/__pycache__/ws_sample.cpython-312.pyc b/wsds/__pycache__/ws_sample.cpython-312.pyc deleted file mode 100644 index ca469f73a0699baa9c675b398816dcd6ebae842e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10683 zcmb_CZE#c9mG?b8Nl&t5NtVAqK*k?fU~Iku1dM}&`3hiQ3*;>@+3&W6ya{ zPnKPg^vB+@kM6tg+;i_e=iGD8IrsgW*=!_G#82MzzFbDgAMimf+H_^M7b;_fBOK); zeN-3KM|aT_KGQx;AJfG^UBfXxZJ(}7M-dOh>)=`I)AzAmEJbMIp*S6z6 zgK+F6!Wq<-o9Ust41-2z-e>saq$LCA7Tw)Gw;)K`9vY8%f7cxW~p?raAVf=4_EYb$$3#)hc_4_S4i=~qZpyUTfU0l=zz|6lExB8?HO{^7yY8E=-q?j! zBGm6K)&~XUiK?{|T@!omSf=(LOdL8oedu`d(DBJbCnop16Z=jkD!L~NxP*y&Xt74v zS)fh2)0&NSSs7%7n1BaRh`(A9dR0>*lTm;wMxdh0YED=A%G~W=MJWiX)Jf*lM;$?F zzd?04wTh^9vM~|(5*Um}K1v$c8aF7u6zT%5*uhugJ46VYGrUKcS0KuB0D$cl`{mGZ zXxg$QX<0IDS(>ygowPXba6k9|%s+ncgX1@jPp{aLT(MIMaH(;AdbkjPbdVC7DDrt+E{h$z_;6y_GU!@uUKp-fMtNgBU7@r zilkHM1}zH)sz$tWmFj(abG-KbW!IOz+c;%!o@SfxvdxMFUa6>~u2D72_jGmCyi*8G z2d-!KdjRkh%58Se5#EyfjiSY!D6<@AR4#)8m^n<6JTe}z3(8HL9h6QY?+Y+8Xi^kQ zBOf7(Md$Oe)dJuKEpHee_n&}MN=r)0bGg90qb9pt!NLq9vs!DhODh1dK6%z?`&h?l zM>20o%3d}d9 z(~epIT&ADKOLT1p(<`Oqm4fP_-ISLjX%#g<(y9XDvcSCNSXQPLRaCG7fMq%ABFyFd z;r!^pUA9V|DEKV;w9k^+o4EUM5cD2qQ6X{8?c^97<>*(0$T`r?5jI3Z8Z<23;IDQP z2DB$FC1ukv%FNdT29Js=Q9YT{TG>3fAA;yzDyQM^#)be!o+3c3u;Txn{pPj zd7SsWy)J2BfLrS z+`)Qq2XRAY_lI6sa=CrI8D~$yL8zW#=Q10JncG0JR1}LZF9gR?cZJIotx7RPg zb}7m%I=lH9z!#bT!0Ii9G3NXESMn2<`n#6B<8>2jf7J3}%k-M<$u--j*X&NN**&>t zZ(`Zr1iSYy_XpYoMNBY-F>sAl0fjYU<|GJdI7*FZ_?JVPTx{XJ(9Qt01%;!}w1XDz z=QO#P1b#Ff(x_f;Z^lEOBf@3gVq8{ERNOEVV!*3r6biX!q+$Y=7UpK0qp8;5jqaKb z_f;o^JlQk(>)S+hvgH!eh-eDslHpddh(=Q`bL-^vGEZ3GE8+Cz5Hkh=Lm9J%hz02m zq?YjIVJ&9}X?tB%8Ro`ir^rzi|TNHU7eNYHLyg`q|^ai{b z*7p0nqNJ6{OGYmQ!h-1bcYDCQ6?sYH^Z0q(e-KM!M93G(1l;^70YacT3(oMKexAoY zBN;^qRk~f+AZcJ80`3AZ>rfQ0E8iu*gqR6}bJ&C>S(^}hsV_D_KcNWr$q<>L?S>U8 zYhm=zXkMi4fu%TlHnw!i0!LWk*!s8Dr%Fo4&W)an({Ei&)iu0-SsXmNrD&V9Jr5Up%lZc}yt7np9C;y!(Cc zb#MHe6I8;!`kra^mk%s(GElJIqN-T;_fKCr9Y1^JOzhZrb;90w&(!$kj0Rpl5uOM3 zywbL5D@}gdY5@2%R)z)5Q2&@Vv>P-Z=UKKoG#{5!Sa+BZHWsuqnvYwtWKijGtZXY`KAZvOqk(xD-lj(? z84@;z^C_9{xu zK!%CJxv(juPvsTMKZmP-iIX6hS$QOMMb0s4Z%7lfFv z<@#!c{aO1=)~HHL5%5nF_Ua9#t6KSMYl&e8l3 ztx6BvC=FjWY|BN7%b&xNdu2{~=*2v>mt{e(Opc5qBKq5M2^qgi15^s_BuX7SFsBPo znWr_R2Ww%=rJc}Ta4nN2r3mbKOUM8ka%G{0%#+SCb)F)++j7a0&Wd@scw)&#m7Y)) zvgG1tNGGmPaYH6`jX*c;$5F)J@f5v#KDXWp>*nFx)fw>1{+b!|u2N?+_p9zvbxzr{ z8@bAmEFNd%oYj`G3i4iSgjryyu%K{-kby6{Rjkeyw8;W~7F$l*$z|PTQ#V*KAJw>NVa`y|u2>?1( zdM#@&0F{Fbc?zAfxtVa~z0WRS1w0PhRE$nJTI|+@4PpIxNdAbmDmHkDm0|PO+Zfr? zG{0ny(j%{c&j~f~HR~5p`C6-yMdj~RDypZMJ*zp&BF0E^5!b4<9tLI&H#A3K50Bhd z`(r!|D>Q|5=ZUkjBM28IN`%`GG|R4P`r2S~(9q~mZVu$Ck~jt5^`c~Uxia?#E*A#* z1O7Aqzp2$ns-xCDrL2ev7>Bk zP3&x}J8q93oUYrDtlMzgcBe2=w*h?PMD30{XA@<+?pa@Wq`^LNL>tuCI1YL)h#P~3 z8b=$?y9b4hLAu5fq#X^x^7KWCfbtKVhg&p<80dGbTIt*e{R1z$dL|w?r5k*)z90d-@DOi&ZmA2LHk zUI$+0X+WPOJ@0|5E5Q>qIUF^PrluwbT)a4fW=CIu_o(X$YQj$A6UwM$=c<&%9INtw zE-j~|8EiOr%mwjX2$mt(jR5@vNjK1s*E*68Vk-|X^6mHrBQbs#0+gAgJvj&$KXRz0 z#8^5Zz>6ME(tsL3@Z}4*;r{4kAmHPVA->@tgoDc6lJOguoK4>|VK06=U^oku@C=nw z(gwuS9tg+83nJ*IEJG<@7&ys!c}R!gO_v~RrKD3Dc|7YR23`r0*$2^{$ECawB%9FZ z_W9C}iaz5Z%I`<;B6c&$lXWRMJ&6TBSihDR;yR zuT;*+coFj>`S){{R5`A0OR#0B%4O4)E0dKgCo5NDvaxx1Ph@+v9p`iGu4P%uT0L!T zNLm}l3-4K*Fzwhp!;*rU$HZc&jkL|s`R3YGVQI`Z3bE~s38LMY;jPwGVcFQ8(LHfn zyzO3L{ez;)*nzlys;FW7zz2taa5z<1KDKvsZ@l_mVeNyW#c}Grt+$HeEmK7+Q-vjC zFO0qrJNwSwhboD8_RTDYvHrA#HtePzvBY4HJ~PFZ-OtNUnar1W4)2T}oiZ)HZz_%o zBm3^>+0@o=PMNB)_1u(c(dRl+RTJMlU9&D(vu?6x!(`>Nv!vXxgGw(pO^A=x$4cV` z?`<7t-rW`7lxW(SDB3k;dI4l!xhS$HRa6GjHkZLdY1USjDurcTfgt}uNp-yXz3yAj z#9y2$S^X~?@3?jc`>otqb-vbhcd;xmK6`J zmDAShq_z6G|2CJfR!>>Crk1Un5N^|nWt*leTCUf|tK$d0+m@(kiL!SqT7VOkOX9Ux zTgElx1&NBrDEoWh(S<3KnFmAvTgrv z-9GaSa&Be=F&Hni!)&y8iY>*9fx+RynC;C_g01-T>@FI$@{7+)N#RmFTdGsm;xY56 zIp&_WI__E>Up}zI&Y{eXl(lHgG-`?+7_+=(!L)_h@#W`xC{osV>&OoWKUtP2*$a5K zGO4f>UfRn3ch*EIHw#-~zklpl+)=9gSEB7$ME}C}eDOXf^UF%pegpffMTUL#+FvcT zb+l@K)oOzJuZ^~S)!JWIYq9Pu+pp6nv=qR3Cl4Mjn6H?90^oJs>w3&n^XQpe!eaP%;p%U7DqA_sxba0^UwaZZg+a@~>*YeJNq1%aEExvTh4CLawmXF4Q< zi}OOd(mm)38eFcrm1|aBaJfFiesFz;hpLnZHyJ#f<|nZe$x3|vf{ZYo2spQfA{s>@9v$hU6-s~7uCmD*z2j1 z#Zk+D;$6_&=cCH~&lBT`6DRry#nS=5kv{^opD@_sWceX@kaWuM65Yq~c!cuk3CcbQ zx;nrwNaiv-#XcW&kTbTg;rmyxD{~r}6@OGd#E0UZ23NR;iJ zv~)~cI+K>p2$L$Tz=PxMeP9v{^~3Fvw#Zq$p==p#iBs`allHpdcFcU%KeQBGzBqg_ zwiZlff^{gjF6k&7W})2f$$K3m33;E>_yt-RzCa5@1OqW91^@KZcCxCcvd^E{J8GPV zpGJV+uO!xKxMEZ^QeyYI`7;~@GW@GBDt`$8eCT7@wOzq&7Fvb?(cesRTk`&99&ponRu)MF#1t%q}edGqIl(Uv?iQQBu?_E`cyh}D6P;j*S#Qm9=q(+C#;v+!Y`w({`> z+ODmhT}ErSD1nhYp$?}}%EM3R{^9+xPoB z9!aTmw_*eKgYH>Ap&I#st zeZm!R(Yz(@PIv+ymJ!Xw3~knUL!vRz$T9}zFeBKmF@pV$LEBlNiPkxw&M7wCF_vnZ z4UA|K>V8^(2lkDD_Hsclccs@It%(V=&{hw$Hi#|dIlQ8Y);B_ZlfGVg%$hXoZ~iUL zFzRPjn-G#i;dn@rpip<}^o!30M~*xC|HkB5lxd{mO6$@9+{5S`oILC+#K1jgu zZALVToWSmaS{powXcUZa8JuX2)mIPK@)5IOy2b^pX|vy=x=ZUHP0AvPguQO!h@CrL6~x^y}p9u~{XxYQgY(@KoqU~jW{Q;nl3`6wPY zA;Kbpc0{AfNn$)ga1e1pB;g!9&p+NYIG##~gJd$96v^OJid-0+k_2f*6r_6`m`JPk z^P(J-=xt`&R-a{{(&)t{tPovg7VEndYu7U5;UR6RHAv4I4662EFp&}_<09mp!Qg9? zp*Y?Gl#G&0R97$lBhjgXOg zA$p4`x*Okop~&r6;#iY!zHy0xWFbtGdyx-f@5dftjW!96uT25hprx7u1U3LP0IzO9 zDyaSP&}yWuR-_Kh2`0#yX|7(dUSk6`!3LCM7p;Orw8!u~s{&Au6R5{2)Lml&b!m&= zg``bsIP>O7ae{~vJhQ}yc%wp5-G^;D7E@;IN0Xd@#j!i$keG#rJwc}aY264GcW&WFNbQIdE$#cMPm4XCDw zM!H1fJ3E~(C`B_OL8+%&a4$g2qhYSu#Y7P3B zO8UpHCa=}UW|^2<&sWk|YbCGeV(ogak_s$Nq@N4UQ$Dr8K&d=4EqU~Dv{XJtnpw}t zO?q25LqNI6$bd9dZckv|FibI*jHj6?)^8Y<@RBN|;cp~8P(kW2S`U%hAVj6mIgkYj zF_9waU?Mc38YV(&^GPwBBEkWr(nCPOCGl>4VGK*84JYWv3G7t^J=g|f@K9Ty@FJc-tW3C^oHu#8zxxJI(#T z{>>u~$$!`iklHf)#|^9`Hsbt}$oOGc=9EFrth?cX`#Wj^w@jPx5TI)os_tWZu4 zsGw}!04zEOL=}UI)#1CH$kMSgOIO-2K%L~Kt<}P!)ZxM_3^T)$M%rFO1Y}_JWg`lY zSea2PbJr3II3sD5kqT+Z8h#A+7mTl=#(&JbW7Jva4eV2EjWW~dGlKXkj{+7eSN}1) z6bu>Q9=sb8hIPwxR5GzLdsgb8XN^0ev+R>mS<)cDeZiTzC!JX^{m)l~dCav}g%-;@ zwyN91H>$C_j0x_mTJ+bXk|&IX^T60LRXvePVBO1Hma7t4HSbj4?f;5KO1E5{#J~es z9bzcPR)s99??A9#0856n$tb>P5Nuf%?$i!9QJYdZeJrI^eOOhRrK%vyp+dN9qDr;1 zs=1UE9Qr(Do7|(}>MN%gbG1}k-XPAL0ScoXo(PwOp}G`6{t*K-#c;*huMrL0Nc zAIxHkZP)87so?slyV3{L`VPGf)OyclbCs0vPvB3_$U~jlQJ5cB$PZa@@Q>pwkiSsXEJ80?D>qHk0whEnYB17nhdAVv5`f- zcRYmVYdp2_B7cA}y#! z`I4M5P0Eq}9bg~GBpQ~%lX8I(A_YTI5V}B(lv#5q1crrx_OAeDi6HX&0ye%^^V#@} z(Lcod*AaXmf-gs&!3g<7GgKOqlZhaqR!xvvM53hHk0u525_Q!ybI69S6m3ILzjWX!t@L{82dt=RJoVRI_$UYX7M2UpL*D}^?u8PEuZZCaA$t!iK4sZM)$43n}a#G ze|mq><(@e>cYOAEp=oojY4bzZ=EW9%{?Pmm<*7ptHT2=ogH6i17xE1+D$W;6_gZkY=N#~sJErqFI~-V zzkdDo8ApiMMZy=`+>X0PPE8w=jeIq&AYcT2%L zobwLfKb-d-RNM!l^NlUHcHP`nXxov4KhKUuuWx=!-rK9Vd*Mdcw9jQ`GxvIDGI{T? z;vW8H(X|Hc-xLd1rF3q;Z@zcwe&*BefA0H5->2=$x6dd+Q8^P)B2guFL5aqdb%}gK zQgJ5#18w9K`&dG5|D8$Mi8Vn! zTy}C{I9j~acK%Dq020W`184{Xox=Ku6D`>Nlhas*%r zD#lg`LBD}Y29+fe9;eEI!VxPSD6QsI=q4S32qZv#%Maxn2X7s_c?=$2Y3W^H6=xq3 zJ4lAV7%DpJl*Ww<++D|Q$GuY@oPPhb(z{35xcB~Rif4b$xt|J!X{!eFpt)PWJ2Clr1ne}Xw4BlLnbfrbVW!3ga- zX$+#bn6C^5(@A#8$~awb9xFQQ3(js});!m(;Zt>M^4ywbuEEs0)ax^)SOlstMWhN- z4XRqE`Q;-lXYy$4;VP#p(FrMGQfoV3QUVOX}}cKP$dkDq!N6H zm*|SL3P7k5{B=}Db7E2gRemuV;^lFXKU+qC2SS1nL_=c|(9^R#pakP7Fe`}Gje=?Y z@o4gbhNwY%cs!JhN{Imt%>Y-8QR}s3DTshTt_vXP=tba_5*Vi1FNSatM0-b7Pq5UT zs#Xf8)$3In&Zd^j8q5|(LrD*1EDb4h4uJS9ljXquF#_Xjh)+o@03#bl2|A&aV1ZSQ z;kX2L0i1>)tC2Gpp*t+$0;r)&Acrji*BQi)nfBj*#({Dx!qF1))m7$Ku7;VR8&?)y zf51I>CAaTn-ZiFJ$0*f?k^S|6c`EmYAoC>5ptb}=-qk#rF@{j4Hjoh1(KG7Ord|@y zBNQIg473%Zrygx5Ihqgw`$FR?R|G|&h_lQ z(VS~Uv5shm)cFrOGvzn>2?+Hk9Wquu0!KlR%P$RApjEAipCH%``bUpw86UZ>MA{DO+StGq}CRldd!EIz>HPF;p8CR@Kq00qu(aS1_;=Co=MCUz* z5_DC_mR(u8ck^Y-e}{%<%~^|n`Y}W+kuYcgx5j}| zK`%8YLHMBYtBEN|^CbLrlwVZaM2JY#Bqn$?O$?mH9OWq_NR`_2bP93~TShRlVHCv( z$-{5ew4a7$kiL z5zujWZ=rifu6swJ`#`Syz@oEh=2W5CpKJCnY`MGl_TKx4^3IV5M{~|mFiSVsbJnhD z+sq!+WbT5aE9dB%KmE`#Q1tZ_d|PwAt@oli-@fUCpF2C3492<p1gPHx^vn*!!5d6X5>=sp?e4OuAPc? z=QocWOjA1;YB1|!i(l#6pKm#!xDTKe233!#;Q4Sv=Yeg^&$rn|T*ja8b&S}JAK6Wi z_q$f%^I*xGnd$a9kdCD-&0S6Ge3Dwd?_l3DXP>}I}w8uAsN1K zCRZpbyiMHLGG5}3*y@j$*8w^F0f;)lJ5X_PcS>Rb*tIMGYaxbZ6$fG!L)H|m2ow`l zc&aC@?JyXnwyJn(0yLjVnw$Vu!kwrFBB}rtBqs2S!bPY77Zx9oh#0L@j2e&Hfz~>|O-^%*t?jq^ zZuZTeQu=o1Htfl_?ghNw1qx@{@dtDZ2bZwwS^>V*uk{WpS_lA<*K`zOD1=r8=!wj* zD(H>}!l=^IvO{mC(0Psi=%74d%^KPRdK=##W$Mb zOE175Jy?N$P@M8;Vhtg3)H{h^P5BbB4)N5tp(vE!M$&LD&BjNX09;56k?=Sv!4O;zX4F*YKcT|Wl0sU^SniBXii)5irLYAPiyF@$`3hAgtJZOe! z6Z{AVUV#XxXVKF#>&7jIFrboNfgdZ=FUtiuU=FxPATq7AnP0J0fMNj ze`IFd9XG`J{Wr%K%y;W<*X3Q?6zeuhhRcHbjO`y-b z!iC4zqyp{)WYC2Ns)yX_fczlq5*qEEvdF6R)Oid5RSqcHIGX7gm*oj*XmD_9YHFY) z(gr|k4T_0#qA-}T?4?G*ZoiTI8O)=3tVoHsSxSi#UT(>pw;(l5l6a+yvKcDdEc^-zHj;1_~76t$3Hxt-}j=j_gjkVq+&g(38a$zg(2D%&}-;} zLg^Z++i55G5M4^~I^HpAhwRxEjS%2Yekv-+|CS$HnORae24z*=M%;c!`8} z`!fIP1uM@b?QK=obc|c0x zXE|bjG}&Lu4)asuxqbw(MITQ@z*C7xCQ|WeIKA7a;mQ3e5sXq$>0cAYGCOAmkNsMht?*H@|SM8~nJ`NHbJe|SkC*P}aDvG3JysJ;69Vhs= zcofaCEP9?=IC%HO?GtxKm8XX9Z&qA;6zd+kfB1pXYI%eZ3~7f5eyIWgxUAhM3YD7B z%~fo`=ob7-i2A(6d}(#OdAR8Gy!rg^;5S5LESg_QZW-denwY`<{!r?!G95o8L2%&wXM)SpO`=P+-XNQdBeXj2qzQms?)$pL*03a?YoK(#@gCi|&} zp~9DnXk4QHgKCGi5~@IdaHIVO%7-hxf)SOYS24$9R0gRYTX$){zS=|n8XAy4B}5*< zmS)*sGPYkbbz1xd)Aa?z|C(v|CDZh8Oy3tw=NC-RuZ-?5xD8*MO|0)L2BJsqLoDl2 z>N_4WnEC3YfiXB{nm%V+9vQmXA!V(9nSm4}wZXfDHIGJFH@jVF-Smiobg2ire{FEE QdzTo9u$$v6EYkh{7xCT?$^ZZW diff --git a/wsds/__pycache__/ws_sink.cpython-312.pyc b/wsds/__pycache__/ws_sink.cpython-312.pyc deleted file mode 100644 index 1b8ecf621b1455b0a2017f689955776448e44720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7831 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 Zl)jr*J+-FwGp>?vWlug;A;!2*|3BFBNHzcf From 71c92c5e9ebfd9e8874596a168f2cf888f65b769 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:56:17 +0000 Subject: [PATCH 4/4] Rename all_files to files for clarity Co-authored-by: tlebryk <43556997+tlebryk@users.noreply.github.com> --- wsds/ws_tools.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wsds/ws_tools.py b/wsds/ws_tools.py index f95a033..4b1dd30 100644 --- a/wsds/ws_tools.py +++ b/wsds/ws_tools.py @@ -635,10 +635,10 @@ def shard_from_audio_dir( exts = (".wav", ".flac", ".mp3", ".m4a", ".ogg", ".opus") file_iter = (p for p in input_dir.rglob("*") if p.suffix.lower() in exts) if sort_files: - all_files = sorted(file_iter) - print(f"[INFO] Found {len(all_files):,} audio files under {input_dir}") + files = sorted(file_iter) + print(f"[INFO] Found {len(files):,} audio files under {input_dir}") else: - all_files = file_iter + files = file_iter print(f"[INFO] Processing audio files under {input_dir}") MAX_ARROW_BYTES = 2_140_000_000 # ~2.1 GB Arrow cell limit @@ -656,7 +656,7 @@ def flush_batch(): shard_idx += 1 batch = [] - for path in tqdm(all_files, ncols=90, desc="Writing WSDS shards"): + for path in tqdm(files, ncols=90, desc="Writing WSDS shards"): rel_path = path.relative_to(input_dir).with_suffix('') stem = str(rel_path) if key_prefix: