diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index d980fdf..68f022e 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -10,7 +10,7 @@ "rollForward": false }, "fable": { - "version": "5.1.0", + "version": "5.2.0", "commands": [ "fable" ], diff --git a/pyproject.toml b/pyproject.toml index 4f16a94..2fa4521 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ requires-python = ">= 3.12, < 4" readme = "README.md" license = "MIT" dependencies = [ - "fable-library==5.1.0", + "fable-library==5.2.0", "pyright>=1.1.410", ] diff --git a/src/pyproject.toml b/src/pyproject.toml index 30edc12..189357f 100644 --- a/src/pyproject.toml +++ b/src/pyproject.toml @@ -5,7 +5,7 @@ description = "Python bindings for Fable" authors = [{ name = "Dag Brattli", email = "dag@brattli.net" }] requires-python = ">= 3.12, < 4.0" license = "MIT" -dependencies = ["fable-library>=0.8.0"] +dependencies = ["fable-library>=5.0.0,<6"] [build-system] requires = ["hatchling"] diff --git a/src/stdlib/Collections.fs b/src/stdlib/Collections.fs index 8727336..5f69657 100644 --- a/src/stdlib/Collections.fs +++ b/src/stdlib/Collections.fs @@ -162,7 +162,7 @@ type deque<'T>() = member _.Item(index: int) : 'T = nativeOnly /// Maximum length of the deque, or None if unbounded - member _.maxlen : int option = nativeOnly + member _.maxlen: int option = nativeOnly /// Add item to the right end member _.append(item: 'T) : unit = nativeOnly diff --git a/src/stdlib/Os.fs b/src/stdlib/Os.fs index 198029b..a5d4cc4 100644 --- a/src/stdlib/Os.fs +++ b/src/stdlib/Os.fs @@ -48,15 +48,18 @@ type IExports = /// Recursive directory creation function /// See https://docs.python.org/3/library/os.html#os.makedirs abstract makedirs: path: string -> unit + /// Recursive directory creation, creating parent directories as needed. /// Raises FileExistsError if the directory already exists and exist_ok is false. /// See https://docs.python.org/3/library/os.html#os.makedirs [] abstract makedirs: path: string * exist_ok: bool -> unit + /// Recursive directory creation with explicit mode and exist_ok flag. /// See https://docs.python.org/3/library/os.html#os.makedirs [] abstract makedirs: path: string * mode: int * exist_ok: bool -> unit + /// Set the environment variable named key to the string value /// See https://docs.python.org/3/library/os.html#os.putenv abstract putenv: key: string * value: string -> unit @@ -77,10 +80,12 @@ type IExports = /// to prune the search or impose a specific visiting order. /// See https://docs.python.org/3/library/os.html#os.walk abstract walk: top: string -> seq * ResizeArray> + /// Walk a directory tree top-down or bottom-up (topdown=false). /// See https://docs.python.org/3/library/os.html#os.walk [] abstract walk: top: string * topdown: bool -> seq * ResizeArray> + /// Test whether a path exists /// See https://docs.python.org/3/library/os.path.html#os.path.exists abstract path: PathModule diff --git a/src/stdlib/Pathlib.fs b/src/stdlib/Pathlib.fs index 4523c62..39c840e 100644 --- a/src/stdlib/Pathlib.fs +++ b/src/stdlib/Pathlib.fs @@ -75,12 +75,12 @@ type Path() = /// This mirrors Python's ``path / "child"`` operator. /// See https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.__truediv__ [] - static member (/) (left: Path, right: string) : Path = nativeOnly + static member (/)(left: Path, right: string) : Path = nativeOnly /// Return a new Path by appending another Path. /// See https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.__truediv__ [] - static member (/) (left: Path, right: Path) : Path = nativeOnly + static member (/)(left: Path, right: Path) : Path = nativeOnly /// Join one or more path segments to this path and return the result. /// See https://docs.python.org/3/library/pathlib.html#pathlib.PurePath.joinpath diff --git a/src/stdlib/Threading.fs b/src/stdlib/Threading.fs index 172e066..49d5fde 100644 --- a/src/stdlib/Threading.fs +++ b/src/stdlib/Threading.fs @@ -69,6 +69,7 @@ type Event() = /// Set the internal flag to true [] member _.set() : unit = nativeOnly + /// Reset the internal flag to false member _.clear() : unit = nativeOnly /// Return true if and only if the internal flag is true diff --git a/test/TestBuiltins.fs b/test/TestBuiltins.fs index d2c4a69..5f2117f 100644 --- a/test/TestBuiltins.fs +++ b/test/TestBuiltins.fs @@ -158,9 +158,7 @@ let ``test len with string works`` () = [] let ``test map with single iterable works`` () = - builtins.map ((fun x -> x * 2), [ 1; 2; 3 ]) - |> Seq.toList - |> equal [ 2; 4; 6 ] + builtins.map ((fun x -> x * 2), [ 1; 2; 3 ]) |> Seq.toList |> equal [ 2; 4; 6 ] [] let ``test map with two iterables works`` () = diff --git a/test/TestCollections.fs b/test/TestCollections.fs index a47f6c3..84fd5dd 100644 --- a/test/TestCollections.fs +++ b/test/TestCollections.fs @@ -27,57 +27,57 @@ let ``test Counter missing key returns 0`` () = [] let ``test Counter most_common returns all elements sorted by count`` () = let c = Counter.ofSeq [ "a"; "b"; "a"; "c"; "a"; "b" ] - let top = c.most_common() |> Seq.head + let top = c.most_common () |> Seq.head top |> equal ("a", 3) [] let ``test Counter most_common n returns top n elements`` () = let c = Counter.ofSeq [ "a"; "b"; "a"; "c"; "a"; "b" ] - let topTwo = c.most_common(2) |> Seq.toList + let topTwo = c.most_common (2) |> Seq.toList topTwo |> List.length |> equal 2 topTwo |> List.head |> equal ("a", 3) [] let ``test Counter elements returns repeated sequence`` () = let c = Counter.ofSeq [ "a"; "a"; "b" ] - let elems = c.elements() |> Seq.toList |> List.sort + let elems = c.elements () |> Seq.toList |> List.sort elems |> equal [ "a"; "a"; "b" ] [] let ``test Counter total sums all counts`` () = let c = Counter.ofSeq [ "a"; "b"; "a"; "c" ] - c.total() |> equal 4 + c.total () |> equal 4 [] let ``test Counter update adds counts`` () = let c = Counter.ofSeq [ "a"; "b" ] - c.update([ "a"; "c" ]) + c.update ([ "a"; "c" ]) c.Item("a") |> equal 2 c.Item("c") |> equal 1 [] let ``test Counter subtract reduces counts`` () = let c = Counter.ofSeq [ "a"; "a"; "b" ] - c.subtract([ "a" ]) + c.subtract ([ "a" ]) c.Item("a") |> equal 1 [] let ``test Counter contains reflects key presence`` () = let c = Counter.ofSeq [ "a"; "b" ] - c.contains("a") |> equal true - c.contains("z") |> equal false + c.contains ("a") |> equal true + c.contains ("z") |> equal false [] let ``test Counter keys and values enumerate the counter`` () = let c = Counter.ofSeq [ "a"; "b"; "a" ] - c.keys() |> Seq.toList |> List.sort |> equal [ "a"; "b" ] - c.values() |> Seq.sum |> equal 3 + c.keys () |> Seq.toList |> List.sort |> equal [ "a"; "b" ] + c.values () |> Seq.sum |> equal 3 [] let ``test Counter pop removes and returns count`` () = let c = Counter.ofSeq [ "a"; "a"; "b" ] - c.pop("a") |> equal 2 - c.contains("a") |> equal false + c.pop ("a") |> equal 2 + c.contains ("a") |> equal false // ============================================================================ // defaultdict tests @@ -85,13 +85,13 @@ let ``test Counter pop removes and returns count`` () = [] let ``test defaultdict missing key invokes factory`` () = - let d = defaultdict>.withFactory(fun () -> ResizeArray()) + let d = defaultdict>.withFactory (fun () -> ResizeArray()) let list = d.Item("key") list.Count |> equal 0 [] let ``test defaultdict factory creates separate instances`` () = - let d = defaultdict>.withFactory(fun () -> ResizeArray()) + let d = defaultdict>.withFactory (fun () -> ResizeArray()) let list1 = d.Item("a") list1.Add(1) let list2 = d.Item("b") @@ -99,32 +99,37 @@ let ``test defaultdict factory creates separate instances`` () = [] let ``test defaultdict int factory starts at zero`` () = - let d = defaultdict.withFactory(fun () -> 0) + let d = defaultdict.withFactory (fun () -> 0) d.Item("key") |> equal 0 [] let ``test defaultdict get returns None for missing key without invoking factory`` () = let mutable factoryCalled = false - let d = defaultdict.withFactory(fun () -> factoryCalled <- true; 0) - let result = d.get("missing") + + let d = + defaultdict.withFactory (fun () -> + factoryCalled <- true + 0) + + let result = d.get ("missing") result |> equal None factoryCalled |> equal false [] let ``test defaultdict get with default returns default for missing key`` () = - let d = defaultdict.withFactory(fun () -> 0) - d.get("missing", 42) |> equal 42 + let d = defaultdict.withFactory (fun () -> 0) + d.get ("missing", 42) |> equal 42 [] let ``test defaultdict contains returns false for missing key`` () = - let d = defaultdict.withFactory(fun () -> 0) - d.contains("key") |> equal false + let d = defaultdict.withFactory (fun () -> 0) + d.contains ("key") |> equal false [] let ``test defaultdict contains returns true after access`` () = - let d = defaultdict.withFactory(fun () -> 99) + let d = defaultdict.withFactory (fun () -> 99) let _ = d.Item("key") - d.contains("key") |> equal true + d.contains ("key") |> equal true // ============================================================================ // deque tests @@ -132,45 +137,45 @@ let ``test defaultdict contains returns true after access`` () = [] let ``test deque empty deque has length 0`` () = - let d = deque() - d.length() |> equal 0 + let d = deque () + d.length () |> equal 0 [] let ``test deque ofSeq creates deque from sequence`` () = let d = deque.ofSeq [ 1; 2; 3 ] - d.length() |> equal 3 + d.length () |> equal 3 [] let ``test deque append adds to right`` () = let d = deque.ofSeq [ 1; 2 ] - d.append(3) + d.append (3) d.Item(2) |> equal 3 [] let ``test deque appendleft adds to left`` () = let d = deque.ofSeq [ 1; 2 ] - d.appendleft(0) + d.appendleft (0) d.Item(0) |> equal 0 - d.length() |> equal 3 + d.length () |> equal 3 [] let ``test deque pop removes from right`` () = let d = deque.ofSeq [ 1; 2; 3 ] - let v = d.pop() + let v = d.pop () v |> equal 3 - d.length() |> equal 2 + d.length () |> equal 2 [] let ``test deque popleft removes from left`` () = let d = deque.ofSeq [ 1; 2; 3 ] - let v = d.popleft() + let v = d.popleft () v |> equal 1 - d.length() |> equal 2 + d.length () |> equal 2 [] let ``test deque rotate shifts elements right`` () = let d = deque.ofSeq [ 1; 2; 3; 4; 5 ] - d.rotate(2) + d.rotate (2) d.Item(0) |> equal 4 d.Item(1) |> equal 5 @@ -181,29 +186,29 @@ let ``test deque maxlen is None for unbounded deque`` () = [] let ``test deque withMaxlen creates bounded deque`` () = - let d = deque.withMaxlen(3) - d.append(1) - d.append(2) - d.append(3) - d.append(4) // should push out 1 - d.length() |> equal 3 + let d = deque.withMaxlen (3) + d.append (1) + d.append (2) + d.append (3) + d.append (4) // should push out 1 + d.length () |> equal 3 d.Item(0) |> equal 2 [] let ``test deque ofSeq with maxlen creates bounded deque`` () = let d = deque.ofSeq ([ 1; 2; 3; 4; 5 ], 3) - d.length() |> equal 3 + d.length () |> equal 3 d.maxlen |> equal (Some 3) [] let ``test deque count occurrences`` () = let d = deque.ofSeq [ 1; 2; 1; 3; 1 ] - d.count(1) |> equal 3 + d.count (1) |> equal 3 [] let ``test deque extendleft reverses iterable order`` () = let d = deque.ofSeq [ 3 ] - d.extendleft([ 1; 2 ]) + d.extendleft ([ 1; 2 ]) // Each element pushed onto the left in turn => final order [2; 1; 3] d.Item(0) |> equal 2 d.Item(1) |> equal 1 @@ -216,43 +221,43 @@ let ``test deque extendleft reverses iterable order`` () = [] let ``test OrderedDict preserves insertion order`` () = let od = OrderedDict() - od.set("a", 1) - od.set("b", 2) - od.set("c", 3) - od.keys() |> Seq.toList |> equal [ "a"; "b"; "c" ] + od.set ("a", 1) + od.set ("b", 2) + od.set ("c", 3) + od.keys () |> Seq.toList |> equal [ "a"; "b"; "c" ] [] let ``test OrderedDict get existing key`` () = let od = OrderedDict() - od.set("x", 42) + od.set ("x", 42) od.Item("x") |> equal 42 [] let ``test OrderedDict get returns None for missing key`` () = let od = OrderedDict() - od.get("missing") |> equal None + od.get ("missing") |> equal None [] let ``test OrderedDict move_to_end moves last element`` () = let od = OrderedDict() - od.set("a", 1) - od.set("b", 2) - od.set("c", 3) - od.move_to_end("a") - od.keys() |> Seq.toList |> equal [ "b"; "c"; "a" ] + od.set ("a", 1) + od.set ("b", 2) + od.set ("c", 3) + od.move_to_end ("a") + od.keys () |> Seq.toList |> equal [ "b"; "c"; "a" ] [] let ``test OrderedDict move_to_end with last false moves to front`` () = let od = OrderedDict() - od.set("a", 1) - od.set("b", 2) - od.set("c", 3) - od.move_to_end("c", false) - od.keys() |> Seq.toList |> equal [ "c"; "a"; "b" ] + od.set ("a", 1) + od.set ("b", 2) + od.set ("c", 3) + od.move_to_end ("c", false) + od.keys () |> Seq.toList |> equal [ "c"; "a"; "b" ] [] let ``test OrderedDict contains returns correct result`` () = let od = OrderedDict() - od.set("a", 1) - od.contains("a") |> equal true - od.contains("b") |> equal false + od.set ("a", 1) + od.contains ("a") |> equal true + od.contains ("b") |> equal false diff --git a/test/TestPathlib.fs b/test/TestPathlib.fs index 25854d4..7ee98c2 100644 --- a/test/TestPathlib.fs +++ b/test/TestPathlib.fs @@ -161,8 +161,7 @@ let ``test Path is_relative_to false`` () = // ============================================================================ [] -let ``test Path exists true for cwd`` () = - Path.cwd().exists () |> equal true +let ``test Path exists true for cwd`` () = Path.cwd().exists () |> equal true [] let ``test Path exists false for nonexistent`` () = @@ -170,12 +169,10 @@ let ``test Path exists false for nonexistent`` () = p.exists () |> equal false [] -let ``test Path is_dir true for cwd`` () = - Path.cwd().is_dir () |> equal true +let ``test Path is_dir true for cwd`` () = Path.cwd().is_dir () |> equal true [] -let ``test Path is_file false for cwd`` () = - Path.cwd().is_file () |> equal false +let ``test Path is_file false for cwd`` () = Path.cwd().is_file () |> equal false [] let ``test Path resolve returns absolute`` () = diff --git a/test/TestRegex.fs b/test/TestRegex.fs index 3da6094..56a9e4e 100644 --- a/test/TestRegex.fs +++ b/test/TestRegex.fs @@ -79,7 +79,10 @@ let ``test match numbered group`` () = [] let ``test match named group`` () = - let m = re.``match`` ("(?P[a-z]+) (?P[a-z]+)", "hello world") |> Option.get + let m = + re.``match`` ("(?P[a-z]+) (?P[a-z]+)", "hello world") + |> Option.get + m.group "first" |> equal (Some "hello") m.group "second" |> equal (Some "world") @@ -93,7 +96,10 @@ let ``test match groups returns all subgroups`` () = [] let ``test match groupdict returns named groups`` () = - let m = re.``match`` ("(?P[a-z]+) (?P[a-z]+)", "hello world") |> Option.get + let m = + re.``match`` ("(?P[a-z]+) (?P[a-z]+)", "hello world") + |> Option.get + let d = m.groupdict () d.["first"] |> equal (Some "hello") d.["second"] |> equal (Some "world") @@ -221,7 +227,9 @@ let ``test pattern finditer works`` () = [] let ``test pattern sub works`` () = let pat = re.compile "[0-9]+" - pat.sub ("N", "there are 3 cats and 42 dogs") |> equal "there are N cats and N dogs" + + pat.sub ("N", "there are 3 cats and 42 dogs") + |> equal "there are N cats and N dogs" [] let ``test pattern subn works`` () = diff --git a/uv.lock b/uv.lock index 10170b5..63d130b 100644 --- a/uv.lock +++ b/uv.lock @@ -97,68 +97,68 @@ wheels = [ [[package]] name = "fable-library" -version = "5.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/e0/65fe5e6b0b3816b2807d9c445b1de8264727ec31aefdaa9aa442652db84e/fable_library-5.1.0.tar.gz", hash = "sha256:e07861cfe8679e12eaa05756fce5e09a4f8aaae3b417f14071dba9398573a4ae", size = 225011, upload-time = "2026-05-28T18:51:31.557Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/5c/d598285de7019d8ef076323bbcb5b0ce9b7880404cbb746f97372c73c664/fable_library-5.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:23beacb2ccfb2b686ea4749c0e6c132e69b611cd8b3e7a8d33f7b4dc09ac4752", size = 1722992, upload-time = "2026-05-28T18:50:41.142Z" }, - { url = "https://files.pythonhosted.org/packages/50/a7/6efdbb24dfbffee7789fd8c0c4caa0be1be89f66cc96a8714f6603c4c216/fable_library-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2c8ed6a0e891a817ba1d3fd37d03c540ea7e3f9773dcdaf83cdede1cda2e72c5", size = 1637357, upload-time = "2026-05-28T18:50:35.695Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5b/fd3469754753f7c27949c6ba5dffc14bc65afb9936ae6d4a077a647a3508/fable_library-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d798a452193ab21c7f53316de4fd6eebdd56564b4d2f4a6b5235092121698354", size = 1747274, upload-time = "2026-05-28T18:49:31.983Z" }, - { url = "https://files.pythonhosted.org/packages/3f/0e/f4e2e2e4b68e52a55f26199c04e3d7ba79b2704f7f06cfbf1d50189cb19a/fable_library-5.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03038e88fce4ce2d04a89ba7f223f99e1c2ee04ce3cca8e4f770ccc072b88c85", size = 1710915, upload-time = "2026-05-28T18:49:43.149Z" }, - { url = "https://files.pythonhosted.org/packages/5c/79/e9efc3e9e27689978c0d03c0f5f7b7abe77767a0acae5c3bfc8882251a27/fable_library-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6cf09736782c66915a0d46f90ec3efd9590afb24619e7d706997d97fa823d538", size = 1914928, upload-time = "2026-05-28T18:49:54.23Z" }, - { url = "https://files.pythonhosted.org/packages/4a/90/0566cfa959361981bea50c89b7f680ecbaf34cfe2017013f123ae2f3d0b9/fable_library-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c99c79a4186b59b93b0dea60dca6df492cab75af7291205b85e132552afcffec", size = 1851601, upload-time = "2026-05-28T18:50:05.372Z" }, - { url = "https://files.pythonhosted.org/packages/14/25/8218e10419644d2bb6fd69bf6b2e6449c67615c58cf435e6026666f0d864/fable_library-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3a215eab1e89cc04ad6e9efb070687d98f02e8b801d00f1abbce430ddd9ac5", size = 1758906, upload-time = "2026-05-28T18:50:26.946Z" }, - { url = "https://files.pythonhosted.org/packages/2f/fa/30dbafec3b835425f1dad2884373dc9122b880cadb8d0b772cffd4045cb6/fable_library-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35162ed32b195890fe4b1b3b1a366a4c4638bdab85a95fcae8e9ca74bfb599a3", size = 1857268, upload-time = "2026-05-28T18:50:16.911Z" }, - { url = "https://files.pythonhosted.org/packages/72/d9/a706c7e1f312cfb7f5a3da079ec1f348e0cfed1139535a3cdfd3c93aa8df/fable_library-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a840498a15c9f301b51db4c39abfaa9d62741620e8230dbc0e5b7d2aa4b26105", size = 1922221, upload-time = "2026-05-28T18:50:48.721Z" }, - { url = "https://files.pythonhosted.org/packages/c4/e3/8d5ce2cf8b33d8f227de09674521a1dc71f65a3a423015e46405aa0b1755/fable_library-5.1.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:8e9d047247ea9806a2f07d77b5eb266b58396f1877d9d386d3054ef22a79e4a6", size = 1987093, upload-time = "2026-05-28T18:50:59.967Z" }, - { url = "https://files.pythonhosted.org/packages/a7/27/9b854ebb135a523210271033149ec4061cc061161fb6b02578a58b7ac77c/fable_library-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9c74c8bb937a75995f081d45985ec75ebbacc5314fdec48594e71276b4d564ef", size = 2009125, upload-time = "2026-05-28T18:51:11.793Z" }, - { url = "https://files.pythonhosted.org/packages/5f/15/537826692478e97cf5a2feede9b6b5b0612ea6d801432db1ea2aed9f0707/fable_library-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7da4971bc03a648d99a64558ac9d3e04b2822612686b7ce53f3f11d9c5a41b90", size = 2021234, upload-time = "2026-05-28T18:51:22.802Z" }, - { url = "https://files.pythonhosted.org/packages/2d/ca/a6f32aa397accf7a2d9ade026d60a080b026357c122f7d9b911c5d90aa2b/fable_library-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:c2fff0f730c060f9efef23e2c168a6edb889b06f3a11969e20c13ba0fb75d1f8", size = 1498373, upload-time = "2026-05-28T18:51:36.021Z" }, - { url = "https://files.pythonhosted.org/packages/e5/4e/fc75965c4a2002efcfcafe967b82003ea579b407eae0b9e5f18e17c10b77/fable_library-5.1.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:739227603ccc73fdb3b11b2ba903ca15eb76795e47e66b5facc9da53ece2c04a", size = 1722609, upload-time = "2026-05-28T18:50:42.759Z" }, - { url = "https://files.pythonhosted.org/packages/8f/b3/8297bdc4c1011511805ac2a5276d31895e711548d10596c61e6aadb3ce25/fable_library-5.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:042d3fd496d592325fa13b978e15c9293245bc630b71e082e1714b5e5807612a", size = 1636661, upload-time = "2026-05-28T18:50:37.019Z" }, - { url = "https://files.pythonhosted.org/packages/41/19/4108b03da4b1fd447d7f925899442ea3872d7d9ce07af7a68616b3387c57/fable_library-5.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e58febfaf6f4ebc8f8a40a1dd500eac40ab94b8a073e5b66996a23757b3ca168", size = 1746022, upload-time = "2026-05-28T18:49:33.35Z" }, - { url = "https://files.pythonhosted.org/packages/38/a1/6348c12c1d191e965dcd64f6aa65b9250a82d6438298f9c09cf85b3adaf2/fable_library-5.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f72d4f776e4019e66c8275fe38897521c56db629dde05130e3d8836482a8464", size = 1710791, upload-time = "2026-05-28T18:49:44.486Z" }, - { url = "https://files.pythonhosted.org/packages/0a/c2/8cab73c01e530e4656df6ff3e770bba849b8aca61623837a5744388ba36e/fable_library-5.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cd77ab45ceadcf68e18bb45c3765b9e75e3522c36d19f841e60569fcd51ac11", size = 1913574, upload-time = "2026-05-28T18:49:55.655Z" }, - { url = "https://files.pythonhosted.org/packages/34/08/ee044e4d39a5dd636b3ba1d5758bfd92f9cfe8bfcdcee1c35bf629c5eea2/fable_library-5.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49c67ab8c55674e0680c4cecbfce71a02e552ca407e0ed1a80cf6164a6bbf9b3", size = 1850931, upload-time = "2026-05-28T18:50:06.663Z" }, - { url = "https://files.pythonhosted.org/packages/fd/aa/2aafd8b94d8b59e593e305809b9d06c00e3ba1718aec6dba99b8896ee066/fable_library-5.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abb6c08c472a2b9cae4b99f6c711190bbcca93064118d78cae392c2cae95bdd", size = 1757996, upload-time = "2026-05-28T18:50:28.397Z" }, - { url = "https://files.pythonhosted.org/packages/e6/f8/6aa1140f8a7cf285e3899d80ba7b472e7da04dedd3c90ff6b24b9073f22a/fable_library-5.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1670a0081b9b4bbe49f4f10ecd6c044c0df6f82f8b36cbb54d1c43d817d4cb5e", size = 1857172, upload-time = "2026-05-28T18:50:18.22Z" }, - { url = "https://files.pythonhosted.org/packages/80/11/859dda31260317b144bc1abca51568cc1fc86c6c172f9d5cee78fd0bbb63/fable_library-5.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dcb5be21b793322bcd358eadb1867d19ef6b54860d6115296278a79967e8aeb9", size = 1920763, upload-time = "2026-05-28T18:50:49.992Z" }, - { url = "https://files.pythonhosted.org/packages/d8/a2/761c7f609ff9538fc39c48d1c2ea7c43b1f44928a806aac34ea73787d23f/fable_library-5.1.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3582211ab399c5a1422dcc9a04b0759b4281bee77aba1b93779fe76124d845f8", size = 1986168, upload-time = "2026-05-28T18:51:01.585Z" }, - { url = "https://files.pythonhosted.org/packages/f6/41/5883a418408dceb88c62bed1e3d0ba38af10d134801179086fcbeb2aacc1/fable_library-5.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:558acb844da16b4c5f843ea257fe364a0c51bd08ac5c7728918a2c3c30bda233", size = 2008892, upload-time = "2026-05-28T18:51:13.259Z" }, - { url = "https://files.pythonhosted.org/packages/d6/88/618b4e5115cd71f6478ad8596bf24998b2098092d254f1d2eb89a8ad9335/fable_library-5.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c997598e0e44e2031026799bbb7346a3b07a1bce60820229d8fa3b9455d72263", size = 2019660, upload-time = "2026-05-28T18:51:24.27Z" }, - { url = "https://files.pythonhosted.org/packages/ff/58/952d53c9c33eed6be7ba4efe0321c7fedeeeb440f7c9f02eee21f1e78ddd/fable_library-5.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:93d11e83b378e4a1f2a2e5a15e5abb04a8637dc0c8be488a38d6285fdbd35ee8", size = 1497949, upload-time = "2026-05-28T18:51:37.524Z" }, - { url = "https://files.pythonhosted.org/packages/0b/9d/b32a6b82fa7274e3a44d9d3c25e6b60b3e193bd98567e75be415f0b22290/fable_library-5.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e502084d8f959e00a2f131e9fcd3f61a1065812f3f942cc1d5ed5ee783f1bd", size = 1760793, upload-time = "2026-05-28T18:49:34.918Z" }, - { url = "https://files.pythonhosted.org/packages/e9/f2/53ced59f9a9772452283c7e7512a92b01c1c3e643d836a0c6787af604029/fable_library-5.1.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7fd9010ed6ceb13567f06a35ac45197a3f476877667d908d13a0283773aed0fd", size = 1731682, upload-time = "2026-05-28T18:49:45.729Z" }, - { url = "https://files.pythonhosted.org/packages/94/bb/5b7fee29e7f7c7ce7188df29fe09516207ec5917cca3120093da776a60ab/fable_library-5.1.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fca3c48e2925a0f878807f472d29d0d939503c06bfc51cb4bf9e4ddfe3e2c7a", size = 1930440, upload-time = "2026-05-28T18:49:57.258Z" }, - { url = "https://files.pythonhosted.org/packages/51/93/d9984c7011f41d944d8332cfbc8e2a691776a1a8ddd8cce5114b2dfd8dfe/fable_library-5.1.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4a45baaefaa1b5ae447fc8cb1084e0e03da74d77a3332beb9b1ad8ec777d518", size = 1874462, upload-time = "2026-05-28T18:50:08.065Z" }, - { url = "https://files.pythonhosted.org/packages/be/22/02f68b047c36268b211f29b4b90d007eff1437b21d75de22c4c9322d3d91/fable_library-5.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b899c5dbe1f3d697e8416925207e695ece767c39c9b74a00dbb2929b20e5f1ab", size = 1933462, upload-time = "2026-05-28T18:50:51.393Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5b/d37767bdd28ea30d4c864b4eb8652ec46c86cd8eea2dcff60f3732a6ebd4/fable_library-5.1.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:9deeb7cb1c0ac7b221cd0f50478174f107a8ea19975674161ee3bb7dd689f856", size = 2007580, upload-time = "2026-05-28T18:51:03.054Z" }, - { url = "https://files.pythonhosted.org/packages/c6/c2/2ef1724ca523f067944c0a57290d7b31cfcc85a10764c76d135c04c18e37/fable_library-5.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:dc8cc244b78f69654573f6ea20c00cfdc0f1555ad3c3329d0556660fa2773ee0", size = 2029248, upload-time = "2026-05-28T18:51:14.631Z" }, - { url = "https://files.pythonhosted.org/packages/25/14/79255fd317248292a29ed789248c11a374e0c839cde22db3d56ba26ca353/fable_library-5.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7d8fd0e6fe80094de1e6ce96a62ff5b5ad00f78f8cacd6c16b6649304bab4e67", size = 2038702, upload-time = "2026-05-28T18:51:25.72Z" }, - { url = "https://files.pythonhosted.org/packages/82/73/aae7f2e77091486f88a38fa26506f44bc6ce90cbed903c3ad93ba51f8500/fable_library-5.1.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:111e2831bd7e7d2cc58cdc12d3c45486512cbeb807118749ae63275ea52223ef", size = 1722758, upload-time = "2026-05-28T18:50:44.328Z" }, - { url = "https://files.pythonhosted.org/packages/ac/e7/480fdab9e2bedf37e58939b362e9dac2e50301989ff29600c6cb08efe5ee/fable_library-5.1.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0ec49c6dfa3c0dfb9d7688cac92beb138ccfeaca8837655f8ac3fc8e7be10edc", size = 1636037, upload-time = "2026-05-28T18:50:38.395Z" }, - { url = "https://files.pythonhosted.org/packages/96/b4/e73528f386a323f1e9beef34434fe771e2b378c025cda13103b203075f0d/fable_library-5.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c452d2482ad28f9fc8c97c5ed2bc47ffabd85c87b40fb5ea49af22071725de9e", size = 1746075, upload-time = "2026-05-28T18:49:36.43Z" }, - { url = "https://files.pythonhosted.org/packages/98/b5/37d700f956325a4782a2b0cf3a0749dbb2955c676180d8af96cc405633bb/fable_library-5.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d2fa8228739efc17ae3a5e7829252ae80c3a44cc696d5fee7d09a9bfaf43056e", size = 1710106, upload-time = "2026-05-28T18:49:47.011Z" }, - { url = "https://files.pythonhosted.org/packages/c3/c7/f38ff7579197ad580c08677b11c29a0ea2c566d6f64c6a5cc267eff41faa/fable_library-5.1.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f64e25f298c85f9d777ae478aace5121d22ff9789fac6f4933c3fec60ecab17", size = 1915406, upload-time = "2026-05-28T18:49:58.534Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ab/b76423937e09f41fcff5096f116baa23ec9ec349c9f6084c3558216c8017/fable_library-5.1.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:842ca3fd1b8d04386564fbe547713f7bf1db66cc4159469dedd3a1db453a5ebf", size = 1850598, upload-time = "2026-05-28T18:50:09.495Z" }, - { url = "https://files.pythonhosted.org/packages/bb/92/373ca04d371a49542cca40e425060cf29d0de7789d32cc03bd850a98038c/fable_library-5.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd91146e762771d9d14bd4cfd8ccf2541a872487ff2e613d7b8d52792e107231", size = 1758102, upload-time = "2026-05-28T18:50:29.918Z" }, - { url = "https://files.pythonhosted.org/packages/f5/35/6516299fe5357674f034e98283c97e886cca7bf46a9f2a12b45d39502b1e/fable_library-5.1.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:89ccb55ef768bc7fce6c514c999c35e5c0d4cdc3ef63bf6ee98c48342413619b", size = 1854610, upload-time = "2026-05-28T18:50:19.843Z" }, - { url = "https://files.pythonhosted.org/packages/97/ef/e22cdb6ef00ca2291fc8e945f6d125e41258be1a699aaa761dfbb6f7c70c/fable_library-5.1.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:42c59cb9c568327290f7481f7f1e5697d90b1d179b70f25a10ab890b27be12dd", size = 1920332, upload-time = "2026-05-28T18:50:52.735Z" }, - { url = "https://files.pythonhosted.org/packages/cb/2b/0aedc0df31fc64b9b331bdf5025bdf32921ebc2c72c9d1694e53c55d1e42/fable_library-5.1.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:8a5fda73f39fff62514030084b93ca49b2f8ed187f5a5e04449298975074f0ff", size = 1986482, upload-time = "2026-05-28T18:51:04.546Z" }, - { url = "https://files.pythonhosted.org/packages/a3/44/66fb39d4df35d65fa0cc5976c31a61662fb15f2cedc7b980c2a70702a8e4/fable_library-5.1.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:795f943625ce92ee5bb6d3e37710e6740a92bcc31b1ea83179e46528d5405e86", size = 2007798, upload-time = "2026-05-28T18:51:15.888Z" }, - { url = "https://files.pythonhosted.org/packages/68/19/eb1f9fd98baa433b0b5c8ca3ae95b5fbdb6324b6b1155fd46399413010c3/fable_library-5.1.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7265d3d0fbc5a9c8239b094cd050801af7299fefaae056f0b8bc1f34162a3719", size = 2020126, upload-time = "2026-05-28T18:51:27.262Z" }, - { url = "https://files.pythonhosted.org/packages/41/8e/38840f14d96c85bc2944d1c63491fd862f4c17f1b00b43a0de993975b62f/fable_library-5.1.0-cp314-cp314-win32.whl", hash = "sha256:df85120f94020fb98ce4781866fdfccda04a9472ddfcab0c8196e14be06c31ef", size = 1343795, upload-time = "2026-05-28T18:51:40.326Z" }, - { url = "https://files.pythonhosted.org/packages/8b/a3/7795ab9395df60df808e4a5bd67855890d652a527d6a0883624a70d59272/fable_library-5.1.0-cp314-cp314-win_amd64.whl", hash = "sha256:cb712670710ea74e4c854d248c8427f8659145f28ff75f4c2558c927ea2fd7ff", size = 1499482, upload-time = "2026-05-28T18:51:38.806Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0a/f50c09550cc4f6fed55c41aafa8e3b86e65296c688d9a35a73e4084ce4e2/fable_library-5.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b69a4a7926ee5e1e0e39098b487bc3cf0064ccad4870486607aeacdd22a180b", size = 1758447, upload-time = "2026-05-28T18:49:37.797Z" }, - { url = "https://files.pythonhosted.org/packages/be/66/e1b0d5cb3351ad9e84feef9d9e09050f978aeb90fd31ccc4b327665bfb7b/fable_library-5.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c01ba79da927d0bd4e8e82744d23d55a3f49d131296320534a01b919aa9c728", size = 1730305, upload-time = "2026-05-28T18:49:48.542Z" }, - { url = "https://files.pythonhosted.org/packages/a3/f2/3a03ccdf8884d8ab84c429ff1c91ced5756bfb5a58b5c51a395fdbb1031b/fable_library-5.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:15e8c882a87fd1b22706bf7f8631fa96dfc69dff6743a7746cba176fbddeeb6c", size = 1930084, upload-time = "2026-05-28T18:49:59.83Z" }, - { url = "https://files.pythonhosted.org/packages/32/71/b2bc2d77034e37ab43cef914e2a9c8f0740bdb709f6b76d62e9ed3a631fe/fable_library-5.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a47acfbba112a8f9a4ee1e500c0aa480dff8870c7c7a83cd3447eee6c15381f3", size = 1872523, upload-time = "2026-05-28T18:50:10.909Z" }, - { url = "https://files.pythonhosted.org/packages/2f/1b/6fffb5aae6a1c3bf879173e7ac6529c36ebcddc4d780aa9f0e2ed5fbd1ab/fable_library-5.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:3b3ef8ac594a5c2b576e62f5fbb8ab9a868f49c9fdf9b0a4aeeaa93cf369a78b", size = 1932424, upload-time = "2026-05-28T18:50:54.254Z" }, - { url = "https://files.pythonhosted.org/packages/48/f2/03a37c4d77b06f331fde4aa48a3f9afa503fdf81a67d644b4ed8092a8d63/fable_library-5.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:7fe3bcc7d713db7627890915c0b2feed3620c44033e0969c7f88cb7d31c365fc", size = 2006593, upload-time = "2026-05-28T18:51:05.868Z" }, - { url = "https://files.pythonhosted.org/packages/c7/08/3f96d42fe6c2c9dcfb2ac7332dc7edc63f8a5705b3c34206e05bf168b5fb/fable_library-5.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ab5e4ff1c167107147b91d8743e6a52314e08f8ea6461faf62adbe5d79537cbf", size = 2028146, upload-time = "2026-05-28T18:51:17.325Z" }, - { url = "https://files.pythonhosted.org/packages/eb/d6/52dd2d2c23e4b11fc4a6d78bb470b0b0e2683fe982fc836212f829a369cc/fable_library-5.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:94c449469250189a72d0a04f5049d7c1065201542f393084a24689df78fc9ed1", size = 2038626, upload-time = "2026-05-28T18:51:28.627Z" }, - { url = "https://files.pythonhosted.org/packages/ac/5d/5c3fa9eeb4807b9c66422d67ccfb333a4b1b52f308a1c920064d6b20954d/fable_library-5.1.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:250f7230afbc25e339b90fbb9b761eee12056cecf20fe14e1132afbbb965de90", size = 1758568, upload-time = "2026-05-28T18:50:31.247Z" }, - { url = "https://files.pythonhosted.org/packages/5e/d1/21e9ec870f10093cbb3de0c7314e3d0857c337d7339147b16272bf1024c3/fable_library-5.1.0-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ea1cd14828b377b4e1900da8c76381bae3f7cd60f92c9e82aef577c33f84a19", size = 1854747, upload-time = "2026-05-28T18:50:21.32Z" }, +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/32/6a/ce6858c4d8af22f8fa6018f09d2c96631ed91b13b01a6aabbc54f79eb780/fable_library-5.2.0.tar.gz", hash = "sha256:4d8259b138d177c7965ed868d6ba4bfa9d6b8391b8a27809b05b46632ae10dc2", size = 225072, upload-time = "2026-06-11T18:34:56.907Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/23/e6057d9783dacc1fd5acb3c0eadf382a1e7a2f014d0d0a96872ce9558d4d/fable_library-5.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c13d2f054c1ac3e8c8a4dec72ba8b3b23655cd05edf08e8287299f0f65934564", size = 1715104, upload-time = "2026-06-11T18:34:09.624Z" }, + { url = "https://files.pythonhosted.org/packages/9a/28/fbe4b2c1422cf730bc4c7106d019e6622e2d3e786dc2f7cbf0c1a4bf05d6/fable_library-5.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e2a4730222fce51b0763adf7993ed72aad50a79269b1e2a4b62740a050e18714", size = 1641201, upload-time = "2026-06-11T18:34:04.327Z" }, + { url = "https://files.pythonhosted.org/packages/ca/32/33b286b87cb73b42996ed97334713150a75f40deb50fd4dc2e29b977fc97/fable_library-5.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad158546f7c37092a928b8c94bb5766369ce929940bc2e6388323c4c12de1b29", size = 1747385, upload-time = "2026-06-11T18:33:05.6Z" }, + { url = "https://files.pythonhosted.org/packages/3d/aa/87c1bf04d4dd91e722f997b106ebfc2dfe240a4937fd9c69f417a34097e2/fable_library-5.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:931fab52bcabe839428c8a17da983ddd8ed10a2cd7b97789e89afbf44e82f81a", size = 1709136, upload-time = "2026-06-11T18:33:15.24Z" }, + { url = "https://files.pythonhosted.org/packages/fe/75/727ebde45306a21d8ccce60ad3c03f6e303a6730f1711a0e58864bfd0018/fable_library-5.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dba6fc26e69e91f23d2d9bdd7e4db2846f622ae9b1e511a9c83c242477e57fec", size = 1912852, upload-time = "2026-06-11T18:33:25.238Z" }, + { url = "https://files.pythonhosted.org/packages/36/72/1b0c3e22e15c384fd4f9d54bf7485562ebeaf4f56d3539d9f82b8138c27e/fable_library-5.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a20240c9bb9135b10229ffe0fe6ec53d18c26a86d9a6aa46144cff23e92710ec", size = 1855005, upload-time = "2026-06-11T18:33:35.994Z" }, + { url = "https://files.pythonhosted.org/packages/38/70/a32fecd714b26c33ada52b8e8a860c831d85a07b8af181cedcd1d3d0f827/fable_library-5.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e28d52de31e549b05e99c36ca1eda6ffcec19f7b3fe07440061960ec8b477e62", size = 1758398, upload-time = "2026-06-11T18:33:55.919Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ac/bf5295a419688f57cd491c9d83d894de63ec80ed3d3f241a58397cd4c075/fable_library-5.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e2e5f686564b7885c5d9b3e6449da18a9688ff70bca371230f19b2e2845a08e8", size = 1858372, upload-time = "2026-06-11T18:33:45.998Z" }, + { url = "https://files.pythonhosted.org/packages/b6/e2/33a37ccdfc6b3d7b3238f6c6a1e6553679a1635c08c2183def6f16edaf89/fable_library-5.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:12e38c2132deaa28783ca2430373e7ef834efb03ce95bf22d36e7138b0271b11", size = 1925287, upload-time = "2026-06-11T18:34:16.005Z" }, + { url = "https://files.pythonhosted.org/packages/2f/28/4e2e1399a8e0235069a70512192f620ba69ccc7225b265ab8b6c379329a9/fable_library-5.2.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:127bcaddcf1ef9d4d08ee9d55346c2fc7645f90aeec7bf7950c66384a2a2b0e3", size = 1984005, upload-time = "2026-06-11T18:34:26.681Z" }, + { url = "https://files.pythonhosted.org/packages/73/8a/4a6bf7a57f4b078b605fd13bce57561b8b38b60225412b2f14c0d6334b66/fable_library-5.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:83b9504eb7acbe0aace436192f9115edbc113df6e83aacf67d32f9b059f61778", size = 2003480, upload-time = "2026-06-11T18:34:38.244Z" }, + { url = "https://files.pythonhosted.org/packages/b1/09/95229acabdaee351b4afb16d56c8009effacb506a7631a5d18a7f63ce973/fable_library-5.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7c98879b8f7b9c5f2a999b8f04a152abfeea3b8930d0c1ac2660124510847800", size = 2023271, upload-time = "2026-06-11T18:34:49.108Z" }, + { url = "https://files.pythonhosted.org/packages/75/fe/b58906ff78b84900259616bc6a1da77a5841937604e57a3f3200baa2474a/fable_library-5.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3db272ff472a36ad39d98a9b84607d9eb5e61e00b9fdddec0f42deeb53c60146", size = 1486654, upload-time = "2026-06-11T18:35:00.736Z" }, + { url = "https://files.pythonhosted.org/packages/63/a7/8ddf5af4cd922f05c140bc0e5799e4b7377e54fbfa3f7a836d2bf6faa1ba/fable_library-5.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ffc529431891835fb2ac3e3b0806e542ad47917ec0161b8c73dde988e9e13e51", size = 1714811, upload-time = "2026-06-11T18:34:10.81Z" }, + { url = "https://files.pythonhosted.org/packages/39/26/a9ce5e37d7e5b7b02ffd508ccb28f0343a46b3d52d0510669bce4a7eb582/fable_library-5.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ca808c0cb48e76b17a2c53ab9858d4c4430804aaf225494d11b8e61de524451f", size = 1639910, upload-time = "2026-06-11T18:34:05.584Z" }, + { url = "https://files.pythonhosted.org/packages/02/48/7e7a1eecf2521f9b79ea405c225ff01795c35b943e941bc7a6a8a19690d1/fable_library-5.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1766ea2e629be283be752684c99b1efdd72f9fb2b877ee2ae859965a547dc4", size = 1746099, upload-time = "2026-06-11T18:33:06.755Z" }, + { url = "https://files.pythonhosted.org/packages/06/ef/db9df473e56e0db61359f87aa8ab7a99d969404cc8c5c95695a4865f7546/fable_library-5.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8fe5202464a51bff6ddc5a397420fca0bf6f14b5df22fc05b49dc7f92bbc16e9", size = 1708158, upload-time = "2026-06-11T18:33:16.51Z" }, + { url = "https://files.pythonhosted.org/packages/7e/57/dd74d24731964306affe72f436a1ac67e28b0a805ddd1931dd811b31e252/fable_library-5.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:07608860386cc2a6201577801cdc7b964ecbb861a3c63156e84bee0e31196ed6", size = 1910988, upload-time = "2026-06-11T18:33:26.473Z" }, + { url = "https://files.pythonhosted.org/packages/77/f0/b98bc7e68f425c40e945370321eb5f920ea641f4fe2b81b8443a5e19a263/fable_library-5.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7dd237472a092300c8ca32cb362f022b29a2e78986a6a0ee080c1150821b23f5", size = 1854316, upload-time = "2026-06-11T18:33:37.182Z" }, + { url = "https://files.pythonhosted.org/packages/43/c1/24a460280a9d5d231bd15128da5d9a9d6fd3839c61440f794afaee9d4046/fable_library-5.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e27102f8f7713ff7ff5d033ea371c1511d0041e891c9c2e22c1a60b55f0c3412", size = 1757388, upload-time = "2026-06-11T18:33:57.239Z" }, + { url = "https://files.pythonhosted.org/packages/c0/33/9ff4ddf4d35796472344fa302be7da46fa5af9cbf9a7c3e5818ce2a8fc72/fable_library-5.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c9c968ac7edbca8f45875ba9e30b136a5e81254dd0ddbb091fbdf3f8e3c38ea5", size = 1858055, upload-time = "2026-06-11T18:33:47.375Z" }, + { url = "https://files.pythonhosted.org/packages/7e/13/62996819290e49f5d0218e5d87f1613723a400b8f3cb00cc3c6b43e9ba4b/fable_library-5.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:04e71774dec51c63ad49b62e3413a2eb8b35e161549ba43bc89da08e13403afb", size = 1924243, upload-time = "2026-06-11T18:34:17.3Z" }, + { url = "https://files.pythonhosted.org/packages/c6/3b/6978275727cb55effbc4ef30c3fac5433ece96803259d11f60d60c754670/fable_library-5.2.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:99e2e5d5f6b09ea382e7f5af4eccea65a284b8d4a7007a6c0a5644aa9671fd82", size = 1983541, upload-time = "2026-06-11T18:34:28.509Z" }, + { url = "https://files.pythonhosted.org/packages/62/63/adf8ed30439947314184a143c488cc31e015120748c5ddf138b14ceabd69/fable_library-5.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b7ee71755085677ae9a5ad012d9d07b4306f1334e577bdcd39700e4cfd9f34bf", size = 2003759, upload-time = "2026-06-11T18:34:39.441Z" }, + { url = "https://files.pythonhosted.org/packages/3f/90/6fd5ecc349dfb6e7736c3cceffb923a2a2c87ec76fe90033fc3ab87a6e3f/fable_library-5.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2108e0eb55bd83893092470b04b76663191bada8ed0a6de39e842adf3f774bfe", size = 2021640, upload-time = "2026-06-11T18:34:50.473Z" }, + { url = "https://files.pythonhosted.org/packages/27/12/e089a3cb4ee8e1d2514278658d25803e46118833231f61d20b51c095238d/fable_library-5.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:c9aa2b24bf5685aeb899cbe0ae10adaaa32b3b37128b9c0efbacde755cfa48f9", size = 1486253, upload-time = "2026-06-11T18:35:02.16Z" }, + { url = "https://files.pythonhosted.org/packages/45/5d/bbfbd34628180b9ea369a18cba5162d5245e1071e2e40e16c4a44f7a6ea8/fable_library-5.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa20cd6d048e419f27c8fe4d18fb65a0ca5d804b89bd3e0115d6f9cce9714d2", size = 1763485, upload-time = "2026-06-11T18:33:07.865Z" }, + { url = "https://files.pythonhosted.org/packages/2c/f0/ef4c3a9ca6ed4f5954997cf9cb4753327548c49f345b86c0756a05feab1f/fable_library-5.2.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07c070246e35a1eb9eed23e04bc69a6a7c86b24d666d52e91ce6035ebbc3f967", size = 1730818, upload-time = "2026-06-11T18:33:17.895Z" }, + { url = "https://files.pythonhosted.org/packages/8a/38/c3a48549bc46256104a80cb8c1d9f9e2b31c84688d85a74b7a13b98096ec/fable_library-5.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f5ac57c589b1510c6fd004fdb735f8dd0aa19d844bbd592d0c577e135ab23ce8", size = 1925849, upload-time = "2026-06-11T18:33:27.781Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f7/6e61604a3f7bcf0617848f6029df9ee3f60c26e4786b16483c79df74d5b4/fable_library-5.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1df6d3c6fc8e5eb7072788b8c3eeff8ef5d9fe00450d5038bcd0bad247d2084e", size = 1878940, upload-time = "2026-06-11T18:33:38.531Z" }, + { url = "https://files.pythonhosted.org/packages/ec/8c/9b2b8ef532b6c572dba5109fdcc5a0e4e0a12a1e2194454ae6c8edcf8379/fable_library-5.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bd0755d7c4613b585f6290e46c75245ee8db6f21565846bcbb45e4a5fb4beb30", size = 1937439, upload-time = "2026-06-11T18:34:18.69Z" }, + { url = "https://files.pythonhosted.org/packages/f0/10/5766e1e2c17fae3fc0dd85630b76ba4b2800b049aa7473dddf0fbf7f8c7c/fable_library-5.2.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e8eb167c5ead95648cf9870eb738a8b5a512f45482428db13b34e6f1c554a1f2", size = 2004029, upload-time = "2026-06-11T18:34:29.853Z" }, + { url = "https://files.pythonhosted.org/packages/80/16/dd333e569ae6d437f6adfd959cfc780c9eb6a42eb9704a51b3b619ea44f0/fable_library-5.2.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bc4dea3b9b0ac02cdc20e6da9b4d077f20f1e756ceec5a9830d48a1ef796c648", size = 2022342, upload-time = "2026-06-11T18:34:40.781Z" }, + { url = "https://files.pythonhosted.org/packages/b6/78/3a45b3adc088e16752438c6ce9c23862419ca7c93f32694be99b79683386/fable_library-5.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:36441a4ba1b22c21f3864577c468319a6ab72198394f0fd34bbb59f6c72df731", size = 2043716, upload-time = "2026-06-11T18:34:51.735Z" }, + { url = "https://files.pythonhosted.org/packages/99/19/22f9c1b0444591b3a0fcbf2d3acaf0eaad9f2793a9c622129ff7d02ab01b/fable_library-5.2.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:1b62a341ac1773310deffc61214ea5553e56837ff4120403207c0960d2111d18", size = 1713511, upload-time = "2026-06-11T18:34:12.014Z" }, + { url = "https://files.pythonhosted.org/packages/26/9d/06323401760870ea9b65c126b4070ea78db3d9774468e83ca28e3586f60a/fable_library-5.2.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ab7625d0c6f820282fe99c92053f71836f41f25e70f7b085be75e56b70e0e95c", size = 1639685, upload-time = "2026-06-11T18:34:07.047Z" }, + { url = "https://files.pythonhosted.org/packages/13/67/0555fa6e8a5ccacabe4c82b69f7fe6d30b5cd42c0ce1f6cd4a166d5a1096/fable_library-5.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de21a61aeebed1b489fd4c518b4ecc8872fa74f9be206b48d164b6fb80817dce", size = 1746519, upload-time = "2026-06-11T18:33:09.061Z" }, + { url = "https://files.pythonhosted.org/packages/d6/7f/83b8409579da26f1a2e23e1d3e4db939b3ebdc7f414d1d04bf785dd4370c/fable_library-5.2.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d85a4f37b7c69dc864504dc70b9a30c22636562ee43c80a30b843a7599740e56", size = 1708095, upload-time = "2026-06-11T18:33:19.128Z" }, + { url = "https://files.pythonhosted.org/packages/68/81/1b57710d208da5aa869deef49e84ce8b7f7622a81e07ed08b0e4b01238c2/fable_library-5.2.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b6a72177373878fe8642ad0820e708ff8b8d5e80311f29f83440f345a25ebc6", size = 1913187, upload-time = "2026-06-11T18:33:29.701Z" }, + { url = "https://files.pythonhosted.org/packages/6b/36/e749e260d44574d5fa782cf72f7a945fd3a98be091c0ce9cd4077bb841cc/fable_library-5.2.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b23b210a777e702f3d9dfdc42f026a622de8c368399697071a60cfa9c31153", size = 1856286, upload-time = "2026-06-11T18:33:39.891Z" }, + { url = "https://files.pythonhosted.org/packages/a7/17/bda44ea2e2518eac627997862840606318f8fb80d6b11142ddc368346117/fable_library-5.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30a2b0456a0283f1ebdc12df6a18e6308c821d5165be872ece37eadfdfa02454", size = 1756963, upload-time = "2026-06-11T18:33:58.529Z" }, + { url = "https://files.pythonhosted.org/packages/22/b5/8d0fb2f09f43f5e1e2c72b7ef14b3208069b43a18a5a44e603bdfcd01a47/fable_library-5.2.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00a00e0dd8acab0ca1e08f6050c6c87a65711e9da3c4e5868ad83a5b7489e378", size = 1855955, upload-time = "2026-06-11T18:33:48.959Z" }, + { url = "https://files.pythonhosted.org/packages/83/ac/2e0053ca9c949be448c24302b3d18b38f0011cdae2d0816c19ff632734de/fable_library-5.2.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e082315c489693201c59404525f9dde103f93a43eff6e344b7a174800a1e4890", size = 1923928, upload-time = "2026-06-11T18:34:19.965Z" }, + { url = "https://files.pythonhosted.org/packages/21/a7/66e4394f0b6787c39630e5b08dd4d68dbcc9b36d92159fad59f23217d6a6/fable_library-5.2.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:e6c843b22bec4d86faf566a19b88c93ee62f3f01887155d2d4bfb82171908ec4", size = 1983436, upload-time = "2026-06-11T18:34:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/52/54/e1270bd9d34fa8c3779f539eefab92b82576b98a27d1990d55f53883bb69/fable_library-5.2.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:d6da252f7b9cb4e3403f08d808a6042f13d281971f041605bc228bb4a934c976", size = 2001683, upload-time = "2026-06-11T18:34:42.231Z" }, + { url = "https://files.pythonhosted.org/packages/0e/d7/ad0fdfb7b695c9e2ccd6788e4dce89fde0ff18305445a14bd80fccfd22fd/fable_library-5.2.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3cdd0077f62be0c4851f2f704866e4451a0ec7e870793efb3f43fc8cc39a792e", size = 2023220, upload-time = "2026-06-11T18:34:53.013Z" }, + { url = "https://files.pythonhosted.org/packages/93/04/b4e8efb12e258a1f65fa595650b5fb6b260313ca9f45999d296c67683741/fable_library-5.2.0-cp314-cp314-win32.whl", hash = "sha256:5597ba76b9566e335a5fb2147103f57837d852ec662469c13ee046169346c7f3", size = 1341656, upload-time = "2026-06-11T18:35:04.839Z" }, + { url = "https://files.pythonhosted.org/packages/69/62/edc5b74318012eeaf897d9c44e49418ece477ba07e8442d7a09d86baec95/fable_library-5.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa533298ef1464c2378a21bf166eefc1910e835f318fc64b3b4e43228e6907a8", size = 1487227, upload-time = "2026-06-11T18:35:03.464Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c6/e0d4fae1d6315578582bd1eb10eaba017007550547f5f07d8833a973aa9b/fable_library-5.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66f18301d24f59dc81e8477fe6435e94a16cb6490d70c1cda1c4f8f0948d2662", size = 1761101, upload-time = "2026-06-11T18:33:10.27Z" }, + { url = "https://files.pythonhosted.org/packages/34/1b/6d0b30e80d959983c1ab2bc525204a9e51bcb98446ab937674c1f125c579/fable_library-5.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0406d1c909f76399c87002f5688e4b2ba7c1f24d7bad59d59083c82b718ecd81", size = 1729614, upload-time = "2026-06-11T18:33:20.465Z" }, + { url = "https://files.pythonhosted.org/packages/1c/e4/066e37821b6cce7ea98ac114b7c47a6630350f751d41570f702f84c67990/fable_library-5.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:00a28a3073b6e5f449a610dbba8eeb393dbefa4e1b07d6d7cd7b3726a6c86fef", size = 1926264, upload-time = "2026-06-11T18:33:30.886Z" }, + { url = "https://files.pythonhosted.org/packages/10/4b/a80385932c38f77f267e1c9af733a50f1121ee56ab5046995247595693d1/fable_library-5.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7fb3e1df243bd042aeab1504402f9bc5e571191a5c1c7670eb07ff31c99c6741", size = 1877774, upload-time = "2026-06-11T18:33:41.182Z" }, + { url = "https://files.pythonhosted.org/packages/7c/5f/f4b9e536f522a7a57ecaf8c00e435842e7d9be9fa50096969fb21897c9a1/fable_library-5.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:b076f9349de6b40c5fd3f4ebea6bde053ac6aa3e249176d1f769f3f7fdc79555", size = 1936325, upload-time = "2026-06-11T18:34:21.231Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9b/968f960c799f0c10c4ff2ba82b3937aae0febe76d27ec5e9341e8e2dc55a/fable_library-5.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:199f37361a10cec3c5e685da1960ca3fb9ca2c4e59474da3ca56bda9d14dffd7", size = 2003502, upload-time = "2026-06-11T18:34:32.753Z" }, + { url = "https://files.pythonhosted.org/packages/66/c6/c01ff761c7067e98fd99db17ed4a2393c7b1f7850dd369d646cdbf5d3e60/fable_library-5.2.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:f9dda2ce58901c6c892176f2b2fa2887b0a4e04e69cf61ef3a29424de7cd7c5c", size = 2022393, upload-time = "2026-06-11T18:34:43.69Z" }, + { url = "https://files.pythonhosted.org/packages/8c/13/35312ea3e7a471c98fd952b180e643b458f2c6409982820648953dc0a09e/fable_library-5.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:24b82460736adc1ecf4e8125c2f16b8f4853534eb2a26752e708b7dc75466486", size = 2042827, upload-time = "2026-06-11T18:34:54.446Z" }, + { url = "https://files.pythonhosted.org/packages/4b/9d/3d715a29af9031a6112cc6bf5bf015ac96c6589126d4fe855b07b30dd66a/fable_library-5.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6068a7d2546acf5630200458e69191a938216bb195fa5d27ed7502a64a69e1ce", size = 1757944, upload-time = "2026-06-11T18:33:59.719Z" }, + { url = "https://files.pythonhosted.org/packages/a1/a4/5e1af7184846a8496f859ffdfdd8736e71db0210a1335ff1d007cd91b6fb/fable_library-5.2.0-cp315-cp315-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8b8911bba84ad7d811efbcb2b8461ab8dcdd77f8344dea70e1adc2769d07077", size = 1856462, upload-time = "2026-06-11T18:33:50.248Z" }, ] [[package]] @@ -199,7 +199,7 @@ flask = [ [package.metadata] requires-dist = [ - { name = "fable-library", specifier = "==5.1.0" }, + { name = "fable-library", specifier = "==5.2.0" }, { name = "pyright", specifier = ">=1.1.410" }, ]