diff --git a/docs/_scripts/prepare_notebooks_for_ci.py b/docs/_scripts/prepare_notebooks_for_ci.py index fe038fa67..83267c3c6 100644 --- a/docs/_scripts/prepare_notebooks_for_ci.py +++ b/docs/_scripts/prepare_notebooks_for_ci.py @@ -88,10 +88,11 @@ def has_blocklisted_command(code: str, metadata: dict) -> bool: return True return False -def add_mermaid_retries(code: str) -> str: +def remove_mermaid(code: str) -> str: return code.replace( - "draw_mermaid_png()", - "draw_mermaid_png(max_retries=10, retry_delay=2.0)" + "display(Image(graph.get_graph().draw_mermaid_png()))", + # replace with a dummy statement + "print()" ) @@ -188,12 +189,12 @@ def add_vcr_to_notebook( return notebook -def add_mermaid_retries_to_notebook(notebook: nbformat.NotebookNode) -> nbformat.NotebookNode: +def remove_mermaid_from_notebook(notebook: nbformat.NotebookNode) -> nbformat.NotebookNode: for cell in notebook.cells: if cell.cell_type != "code": continue - cell.source = add_mermaid_retries(cell.source) + cell.source = remove_mermaid(cell.source) return notebook @@ -218,7 +219,7 @@ def process_notebooks(should_comment_install_cells: bool) -> None: notebook, cassette_prefix=cassette_prefix ) - notebook = add_mermaid_retries_to_notebook(notebook) + notebook = remove_mermaid_from_notebook(notebook) if notebook_path in NOTEBOOKS_NO_EXECUTION: # Add a cell at the beginning to indicate that this notebook should not be executed diff --git a/docs/cassettes/introduction_051dc374-67cc-4371-9dd1-221e07593148.msgpack.zlib b/docs/cassettes/introduction_051dc374-67cc-4371-9dd1-221e07593148.msgpack.zlib index 626117679..7f9e0dbb8 100644 --- a/docs/cassettes/introduction_051dc374-67cc-4371-9dd1-221e07593148.msgpack.zlib +++ b/docs/cassettes/introduction_051dc374-67cc-4371-9dd1-221e07593148.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_10701e49-d4b4-46db-bb30-f895fdf4411d.msgpack.zlib b/docs/cassettes/introduction_10701e49-d4b4-46db-bb30-f895fdf4411d.msgpack.zlib index b23b8c0e7..5f1643569 100644 --- a/docs/cassettes/introduction_10701e49-d4b4-46db-bb30-f895fdf4411d.msgpack.zlib +++ b/docs/cassettes/introduction_10701e49-d4b4-46db-bb30-f895fdf4411d.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_35c8978e-c07d-4dd0-a97b-0ce3a723eea5.msgpack.zlib b/docs/cassettes/introduction_35c8978e-c07d-4dd0-a97b-0ce3a723eea5.msgpack.zlib deleted file mode 100644 index 79b725f3b..000000000 --- a/docs/cassettes/introduction_35c8978e-c07d-4dd0-a97b-0ce3a723eea5.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -eNqFVMtOHEcUjaWs/BVXvcFY3fMKzMBsEmwT4mDACkSJZUejmu473eWpripXVQ+0EYuQx35+IRCIkPNYeedNVlnkC/w1udVDwyjGsjSL6fu+55y6x+cTNJYreesVlw4Nix192OnxucEXBVr341mOLlPJ6eOd3b2TwvA3mXPa9ptNpnnDsQkXZSNWedMiM3F2OlRJ+fbW7cOA3IMxlkEfAjcRZeT2Hiz31na/Gq/jveLFzpOVg2R5c9Phwe5Sa2u83QtCCKijqTK+yZhbsMBgQaoEF4BLeMRkumGYzj71kTk7GBi0hXCW4jtkmfUfJKhd5kuwZMJkjImP5jIWRYKDROWMS5/x9Dsy48GN5jqaSbuPhqwjJizOOQzbH8SK4JLuBi/PWYq2dhydZ8gSwvjni68tmmgtpazpa10SqDK6BNk2O41P6PfnWhzT/NG6jFXCZTr9PX3JdQgJjgRzeDZzT0/uNu9e3FdSYsXW9GKMqCMm+AT/uD+bK3qEMnXZ9KTT7b6qbXulxulfTGvBY+Yzm8+tkr8Rjpo4xx/OrGOusMen1B3//ec8R2tpl192NuslfnpP2w+0ONtFQzqb/ipTLg9OH9Au0zefGx5CuwdfMgmdVmcZ2t1+u9Nf7sLG1t7/9zhttzpLlbi+pykNYfP2448Oa8F8SC/BSAmh9geFHlR4e4kHfVkIEQY1y7OvmjwSQnClr6eHgeNOIDW6qgobQhE6poQINrj7ohjC4yo1DAojKLJ+JoIy4oz0FTHeSLnLimGDq8qc+kJNUpJn1Tb9hAInKJpU5EpfwTZtZP9+DQ/ndgrB70kLGwRXasJaiBJmooJRIWevGO7YUsagDDD/ZxH2M/QJGcKIG+tAK8t9JBNUKS1yagjcVgFeCqRqJhO4o/QsSJSL4cyJNF7yvnQGz/z4I54+o8fnF6HtiTGo68DMWxg2FAiaGUY3htRF8xZxRsNSCZcZktyAJ4sN2OU5F8yAU7CNbl+Z8bchlKoAliR+HouXcFAAgwpVKKzv6IeloIF3w+yQ9QlcGytDbLYaq51eq9XqdYns+TfttXAUXrP+UDqjkqJC1Te54qEPa3APSdQSDelvo+DUJ4ItTHiRvyOFvDJX1/KzWAuVNvlc4cip6EoVEYuGl3VtlPqyUXtptDrEVqfXXmq/K5A+bF8rgrYeFlz4EwJDoeKxBTXyiJnr0RuwzgjsChmDmsRO1TzytXwq3RBVuS5c9ZRJE6gb8ISAp4PE5RzqGs1ImRysxpiPeAyO2bENoeZTGxXTMfHzcEn1QsjZmL7muVhZXV5Z7a7eRMXsMVZHauB4TuHtRrd79B/qa3Sq \ No newline at end of file diff --git a/docs/cassettes/introduction_4527cf9a-b191-4bde-858a-e33a74a48c55.msgpack.zlib b/docs/cassettes/introduction_4527cf9a-b191-4bde-858a-e33a74a48c55.msgpack.zlib index b9bea8edb..3ee5dda60 100644 --- a/docs/cassettes/introduction_4527cf9a-b191-4bde-858a-e33a74a48c55.msgpack.zlib +++ b/docs/cassettes/introduction_4527cf9a-b191-4bde-858a-e33a74a48c55.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_69071b02-c011-4b7f-90b1-8e89e032322d.msgpack.zlib b/docs/cassettes/introduction_69071b02-c011-4b7f-90b1-8e89e032322d.msgpack.zlib index a69fc1008..385895cea 100644 --- a/docs/cassettes/introduction_69071b02-c011-4b7f-90b1-8e89e032322d.msgpack.zlib +++ b/docs/cassettes/introduction_69071b02-c011-4b7f-90b1-8e89e032322d.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_6a385b06-8d34-4a2d-aded-1cf4bb0ca590.msgpack.zlib b/docs/cassettes/introduction_6a385b06-8d34-4a2d-aded-1cf4bb0ca590.msgpack.zlib index 0049ee903..03e69d13b 100644 --- a/docs/cassettes/introduction_6a385b06-8d34-4a2d-aded-1cf4bb0ca590.msgpack.zlib +++ b/docs/cassettes/introduction_6a385b06-8d34-4a2d-aded-1cf4bb0ca590.msgpack.zlib @@ -1 +1 @@ -eNqNVHlQE1cYB4MW6hGL0/HoOOykIo64SZYckFSpKZfcVDJYoIwum0eyZLMbdzeEQ0djFa3isR7Voq1UQ2IjhyhTtdoOg7XUY1orU5EKtlOpjow4o/UYj5a+QBAsqN2/3r7v+n2/3/e9Ve4iwHIkQ/vXkDQPWJzg4Q8nrHKzYKkNcPxqlwXwJsbgzEjP1O+3sWR7qInnrZxWJsOtpBSneRPLWElCSjAWWREmswCOw42Ac+YzhpL2DWUSC168mGfMgOYkWgSTRyjnIJIBJ3iTWyZhGQrAk8TGAVYCrQQDkdC892qRCecRA4OUMDbETDN2BM9nbDySgtPGBBa3mt6VLM/z5mMMgPL6ExRuMwBUgapQjqFpwKMRsKJcHSGXLHebAG6AzW52mhiOFxqGwa/HCQJYeRTQBGMgaaNQaywlrXMQAyigcB54CG/GPn4EjxkAK4pTZBFw9UcJh3CrlSIJ3GuXFcLqNb4+UL7ECoabPd52UcgCzQtHdQM4ZBklkG0akUsVSmnEoWKU43GSpiBfKAWbFlzWPvuJoQYrTphhHtSnpODqD64b6sNwQnUqTqRnPpcSZwmTUI2zFrXyyNB71kbzpAUI7piM4eV8xsFyCimGSSMbnkvMldCEUF2AUxxoeEbysxAPVEWBytWoHKsbYIkCtJE3CfsxheYACzgrnELwkQum5G3cKidUBJz/we0bnH3pyQNqXvWb7IyF6gjfxLPkHASLRJJwGoH5VQim1mIRWpUSSUjV18T4yuhHFKNBz+I0VwAFiRsQ302YbLQZGDwxI8reLhlsi4X1KdJC8qhvaaBY3l/BqZTL5e0zX+rJAgtkzVvRqdBoNK/IC5kBvNDo7Q+Sh2KRel+XWM7IdUjaaoMj2LeAPlQuLyqIa/Yr/QexDcTM/B8xL0CozGkPGykaLvQwiNVRfdXCX+0/CNEXE/Z/Yl4MERkp/D/09Rea8RLPocT1eyMv9X4hHo9PeZQ0CCfhebEci7NH0QsKyOR43SKOL15qz4hlGA7sLyJxwYNJMcTIMEYK1MfEozE4YQJoZt8KCe7Y7DRdamJMzQfoQiafgbOkx+HM0QwNXJmAhaspeAiKsRngY8cCFwxfqMsWGjVyRSSOYWolUAElQWjQ9+AbMrBMz5bF6X0p+558B1xZFl6dHiUP2RDo1/eJDFtTmSvyceW9r3+RLEvb0pjreHSp51D1ZTxkbe2U8pWCafe6lNLgHc5Zj397TYOup8N0kkfdJYnRURPqbMTtowfv71jWe/xJaVkXY2+531m2IulmS89G857OdP2RWcZbZ1RSska8S2GMwdqOvS+Ka9OGNATkfIhelR5evwWVLtrJZLXtDG+Lqs+fcf3XxeKf9sW7c6JDap9UXFyREjW+aerEbzuuVI0S7EGt8wLOdowdLV/j+CPgRDM2X63sTlrdEHtt9IMZY6JShXnTDhpmfVq9dt3FybeCCi6dXL0xryv71PzRKWEXJsxuXuuf7RfatP1ekyNiV+H5C+SovYG13dNVPScOtMw1Hp4Seu+G2G5IkDia8hK+vNtBLRlzLiOU36PvtgTJPhFaHosrjoUtETWf396dXCWK++z61wvc10/fDd+trvI/p7vm+Mf2juLH8ZUSnbqyYKuiNTj6pjBh+7SmSk1rtHiyeqJeOm7M3IkBEV0L/LVp7eWeJPfHwduKSwuVuaJsnHtj5XfmxDdPibseqgpFjqLpZd8H6pZPTaSKMhzBj0qWnbmcoLWfzKqoHH+2UZ4XoKzsqXoY+svYZDc51/x72gb/3PJNF5L2HbFtnnQ76jD2Z3XZ085jlNYyCc9aWvt2UG54Ykcm0rp3IXo8K6liY/hf3UfFm8Dsr1Sd2wxtdfVv3fhZ3Divfs3ZB7bmbs3ngad6MfRBEv337Tt3ZHA0entFfoXGp64dIj+/fwEX/nZF \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_7df33d9e-cc76-4a0f-8307-01e619483b3e.msgpack.zlib b/docs/cassettes/introduction_7df33d9e-cc76-4a0f-8307-01e619483b3e.msgpack.zlib index 3f3c5747f..429390275 100644 --- a/docs/cassettes/introduction_7df33d9e-cc76-4a0f-8307-01e619483b3e.msgpack.zlib +++ b/docs/cassettes/introduction_7df33d9e-cc76-4a0f-8307-01e619483b3e.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_9f318020-ab7e-415b-a5e2-eddec6d9f3a6.msgpack.zlib b/docs/cassettes/introduction_9f318020-ab7e-415b-a5e2-eddec6d9f3a6.msgpack.zlib index f14d5edc4..66a6327d0 100644 --- a/docs/cassettes/introduction_9f318020-ab7e-415b-a5e2-eddec6d9f3a6.msgpack.zlib +++ b/docs/cassettes/introduction_9f318020-ab7e-415b-a5e2-eddec6d9f3a6.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_a7cc7306-7a4e-466f-8d41-b1a3d07be8bc.msgpack.zlib b/docs/cassettes/introduction_a7cc7306-7a4e-466f-8d41-b1a3d07be8bc.msgpack.zlib new file mode 100644 index 000000000..6ea03ee0f --- /dev/null +++ b/docs/cassettes/introduction_a7cc7306-7a4e-466f-8d41-b1a3d07be8bc.msgpack.zlib @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_acbec099-e5d2-497f-929e-c548d7bcbf77.msgpack.zlib b/docs/cassettes/introduction_acbec099-e5d2-497f-929e-c548d7bcbf77.msgpack.zlib index 00a9173f4..8387817ed 100644 --- a/docs/cassettes/introduction_acbec099-e5d2-497f-929e-c548d7bcbf77.msgpack.zlib +++ b/docs/cassettes/introduction_acbec099-e5d2-497f-929e-c548d7bcbf77.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_c5382e81-bfcd-4508-b02a-099e3d9627fd.msgpack.zlib b/docs/cassettes/introduction_c5382e81-bfcd-4508-b02a-099e3d9627fd.msgpack.zlib deleted file mode 100644 index e8bc8459f..000000000 --- a/docs/cassettes/introduction_c5382e81-bfcd-4508-b02a-099e3d9627fd.msgpack.zlib +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/cassettes/introduction_dba1b168-f8e0-496d-9bd6-37198fb4776e.msgpack.zlib b/docs/cassettes/introduction_dba1b168-f8e0-496d-9bd6-37198fb4776e.msgpack.zlib index aa5ff8b76..94b5a178c 100644 --- a/docs/cassettes/introduction_dba1b168-f8e0-496d-9bd6-37198fb4776e.msgpack.zlib +++ b/docs/cassettes/introduction_dba1b168-f8e0-496d-9bd6-37198fb4776e.msgpack.zlib @@ -1 +1 @@ -eNqNVWtsU1UcH8NXiAnxgy5+UA+NY4nudn1s6zbFZJbXgDFYS9yArZ7de9ZeenvP9dxzB2UOZQxDxKE3YlCCBlnXYi2wBWQQID7QiAkmk0DiCALxEUgMxn0AAjGZ/3vXssHGo0mbe8/5/f6P3//RzlQbYbpM1SkZWeWEYZHDi252phh5wyA670rGCI9QKbGkLhDsMZg8VBjhXNOrSkqwJjuxyiOMarLoFGmspM1dEiO6jsNET7RQKX42f1q7I4bXhDiNElV3VCG3y1NajBw5FJysaHcwqhB4chg6YQ64FSmEonLraL6MeIQwMgPVxpGKYwTJOnpNVhSno6PJMkQlolhAUcGGRASvUCboVFUJFzzgylXucVkWOaVK1pllxCJw3CYr8ZBOMBMjIUZ0Q+F6aBWQLYJEdJHJmiWGBa5GozhE1LCsEkThJiavJRJqpQxB6hojEchQbiPFCIuiwTC3nlQJcWboHIBZD060TCethmITVwMHxamBVAIIToGgryYM2cpbdUC4hRocgT0GgiDSBr9gokbV4FSPUEORUAtBOBceEFncaSUgW5CQLkZIDEMG7Q4NykQYl23R2x020n66I9XxlqyQFEqjyNBsFeOaLZ3OmayGHR0dcGa1icyIZImbNdo0DkpbVhGRA7SpIxUhWIJmez8RoTo3+ye0zz4QjmhcIKpIJXBg7gmvlbViJJFWBeRMi1Zd7f4001FCNAEroHdylGX2YU1TZBFb9yVWGTPZNhKsWCZep61uE6AJVW4OVOfiKFkSh25XkcvpLXV6+tYIOseyqkC7CgqGkJKafX9k/IWGxSjYEbKTZCZHyXvHY6hu9tZisS5wm0lLabMXs1h56f7x58xQob+ImfIvmegueznmzut0u52+/tsM63FVNHtbsaKT/lsi36KkYTa8gqtccLn35lRSoLV5xOwp83h2Q69q0H1kQxJMckPvTEBFyMkTqezc7qpbmKvm+byCxGyojnlsLpOLkduHFmAVgf0y5C6vcnurXBVoXm0w48+6CU5ajP4gg9ZvhYLMyRU/JUYMNUqktH/Ssg85xtKyhk2BeeRCdmlBsaxXM1HqcrmGZt4TyWBAZNXymPBWVlbexy4oQ7h5wMoPxBPcvmA2S9/yyf3YcyiM7r9sVEkrKojrhfvix2LLcWY+AOcuEVYsHyqajA0LZkKIvRW2txfvjx8LMcspehDO3UNEk9HvkG/U0fP3QI4XbhSN7om+azzpbOUFWTKPwnPI5a5c2lK2tDocqG2pX1NqyKuXRcvilaynTcZm2u10ozClYYXs888V/BjWrxCwR8hMzW5cXF1b4880CPW0hUIvBTH0nEpVkgwQBqNppkWFGhIsO0aSQK+vbjQPVLq8Puz2iWUVEi4VRVF4FXZIbphuDUvC2pT2X+765Oh2/mFK6XObH8uzP1PhOzIifVAbza9+/J2RBds3b/sq8/ePuKT56uCzXfWfbyUf1/z2rXtI9ezeNHIss2fwVOBi/PzR9Stdj2SGdx5J7lCmf1hQFVNWPOMvuhIYaHx5oOvhs4d7ZsxJq763m0/l7VgV1JWGi9X5hZlfirZN7U79caNh4yfKyo/OZFYGC5+6vLH71751R84t7F58/Gbs9KFdWx9qFhdM7zto5s+rez3/UceG/X/Oa/jpiaNiw/HrN9Z31miXCjNPZno/+2Z46OyJlwa3vPnfpnXzu/MTh74+c6VxC5rVtfuVL53DN5t3bue1dYs39s/9fbDhn6ff6joVnnmtq+zS1mknB0KnC947R6KLrn3/7tXMjoLLn9IvhmdVbv7u5wuz49dnHf73Qs3BC9Lypn0hW5qpeX8t2vNBckpe3v9NnJOl \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_df6d81bb-e674-44ef-a46e-17b1a8d2381a.msgpack.zlib b/docs/cassettes/introduction_df6d81bb-e674-44ef-a46e-17b1a8d2381a.msgpack.zlib index c88c4d311..6e179ba80 100644 --- a/docs/cassettes/introduction_df6d81bb-e674-44ef-a46e-17b1a8d2381a.msgpack.zlib +++ b/docs/cassettes/introduction_df6d81bb-e674-44ef-a46e-17b1a8d2381a.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/cassettes/introduction_f5447778-53d7-47f3-801b-f47bcf2185a0.msgpack.zlib b/docs/cassettes/introduction_f5447778-53d7-47f3-801b-f47bcf2185a0.msgpack.zlib index 870503059..28ee2fb76 100644 --- a/docs/cassettes/introduction_f5447778-53d7-47f3-801b-f47bcf2185a0.msgpack.zlib +++ b/docs/cassettes/introduction_f5447778-53d7-47f3-801b-f47bcf2185a0.msgpack.zlib @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/docs/cloud/reference/api/openapi_control_plane.json b/docs/docs/cloud/reference/api/openapi_control_plane.json index 871291505..9f0ca0020 100644 --- a/docs/docs/cloud/reference/api/openapi_control_plane.json +++ b/docs/docs/cloud/reference/api/openapi_control_plane.json @@ -3,7 +3,7 @@ "info": { "title": "LangGraph Control Plane API (Beta)", "version": "0.0.1", - "description": "The LangGraph Control Plane API is used to programmatically create and manage LangGraph Server deployments. For example, the APIs can be orchestrated to create custom CI/CD workflows.\n\n### Beta\nThis API is currently in beta and may change or break without notice. This API documentation may not be up-to-date with actual API functionality.\n### Host\nhttps://api.host.langchain.com/\n\n### Authentication\nTo authenticate with the LangGraph Control Plane API, set the `X-Api-Key` header to a valid LangSmith API key for each request.\n\n### Versioning\nEach endpoint path is prefixed with a version (e.g. `v1`).\n\n### Quick Start\n\n1. Call `GET /{version}/projects` to retrieve the `Project` `id`. The `Project` `id` is needed in subsequent API calls.\n2. Call `POST /{version}/projects/{project_id}/revisions` to create a new `Revision` for the `Project`.\n3. Call `GET /{version}/projects/{project_id}/revisions` to get the latest `Revision` (first element in returned list). Get the `Revision` `id`.\n4. Poll for `Revision` `status` until `status` is `DEPLOYED` by calling `GET /{version}/projects/{project_id}/revisions/{revision_id}`." + "description": "The LangGraph Control Plane API is used to programmatically create and manage LangGraph Server deployments. For example, the APIs can be orchestrated to create custom CI/CD workflows.\n\n### Beta\nThis API is currently in beta and may change or break without notice. This API documentation may not be up-to-date with actual API functionality.\n### Host\nhttps://api.host.langchain.com/\n\n### Authentication\nTo authenticate with the LangGraph Control Plane API, set the `X-Api-Key` header to a valid LangSmith API key for each request.\n\n### Versioning\nEach endpoint path is prefixed with a version (e.g. `v1`).\n\n### Quick Start\n\n1. Call `POST /{version}/projects` to create a new `Project`.\n2. Call `GET /{version}/projects` to retrieve the `Project` `id`. The `Project` `id` is needed in subsequent API calls.\n3. Call `POST /{version}/projects/{project_id}/revisions` to create a new `Revision` for the `Project`.\n4. Call `GET /{version}/projects/{project_id}/revisions` to get the latest `Revision` (first element in returned list). Get the `Revision` `id`.\n5. Poll for `Revision` `status` until `status` is `DEPLOYED` by calling `GET /{version}/projects/{project_id}/revisions/{revision_id}`." }, "servers": [ { @@ -22,6 +22,34 @@ ], "paths": { "/v1/projects": { + "post": { + "tags": ["Projects (v1)"], + "summary": "Create Project", + "description": "Create a new project.", + "operationId": "create_project_projects_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Project" + } + } + } + } + } + }, "get": { "tags": ["Projects (v1)"], "summary": "List Projects", @@ -397,6 +425,83 @@ } } }, + "CreateProjectRequest":{ + "type": "object", + "description": "Object for creating a new project.", + "properties": { + "name": { + "type": "string", + "description": "Name of the project.", + "required": true + }, + "lc_hosted": { + "type": "boolean", + "description": "Whether the project is hosted on LangChain's cloud (i.e. Cloud SaaS deployment option). Set to `false` for Self-Hosted Data Plane and Self-Hosted Control Plane deployment options.", + "default": true + }, + "repo_url": { + "type": ["string", "null"], + "description": "URL of the GitHub repository to use for the project. Omit this field if creating a new project from a Docker image.", + "default": "null" + }, + "repo_path": { + "type": ["string", "null"], + "description": "Path to `langgraph.json` configuration file. For example, `langgraph.json` or `src/langgraph.json`.\n\nIf this field is omitted or set to `null`, the previous revision's `repo_path` value is used. Set this field for deployments from a GitHub repository. Omit this field if creating a new revision from a Docker image.", + "default": "null" + }, + "repo_commit": { + "type": ["string", "null"], + "description": "Git branch name of deployment.\n\nThis field only applies to deployments from a GitHub repository.", + "default": "null" + }, + "env_vars": { + "type": "array", + "description": "List of environment variables or secrets.\n\nIf this field is omitted or set to `null`, the previous revision's `env_vars` value is used.", + "items": { + "$ref": "#/components/schemas/EnvVar" + }, + "default": "null" + }, + "host_integration_id": { + "type": ["string", "null"], + "format": "uuid", + "description": "Do not use." + }, + "deployment_type": { + "type": "string", + "description": "Development (`dev`) or Production (`prod`) type deployment.", + "enum": [ + "dev", + "prod" + ] + }, + "shareable": { + "type": ["boolean", "null"], + "description": "Boolean flag to configure if a deployment is shareable through LangGraph Studio.\n\nIf this field is omitted or set to `null`, the previous revision's `shareable` value is used. This field does not apply to BYOC deployments.", + "default": "null" + }, + "platform": { + "type": "object", + "description": "Do not use.", + "default": "null" + }, + "image_path": { + "type": ["string", "null"], + "description": "URI of the Docker image to deploy.\n\nIf this field is omitted or set to `null`, the previous revision's `image_path` value is used. Set this field for BYOC deployments. Omit this field if creating a new revision from a GitHub repository.", + "default": "null" + }, + "build_on_push": { + "type": "boolean", + "description": "Boolean flag to indicate if a new revision is automatically created on push to GitHub branch (`repo_branch`).\n\nThis field does not apply for BYOC deployments.", + "default": false + }, + "container_spec": { + "description": "If this field is omitted or set to `null`, the previous revision's `container_spec` value is used.", + "$ref": "#/components/schemas/ContainerSpec", + "default": "null" + } + } + }, "CreateRevisionRequest": { "type": "object", "description": "Object for creating a new revision.", diff --git a/docs/docs/concepts/langgraph_server.md b/docs/docs/concepts/langgraph_server.md index cb2d3948c..7fcb7c607 100644 --- a/docs/docs/concepts/langgraph_server.md +++ b/docs/docs/concepts/langgraph_server.md @@ -20,7 +20,7 @@ The LangGraph Platform incorporates best practices for agent deployment, so you * **Double texting support**: Many times users might interact with your graph in unintended ways. For instance, a user may send one message and before the graph has finished running send a second message. We call this ["double texting"](double_texting.md) and have added four different ways to handle this. * **Optimized checkpointer**: LangGraph Platform comes with a built-in [checkpointer](./persistence.md#checkpoints) optimized for LangGraph applications. * **Human-in-the-loop endpoints**: We've exposed all endpoints needed to support [human-in-the-loop](human_in_the_loop.md) features. -* **Memory**: In addition to thread-level persistence (covered above by [checkpointers]l(./persistence.md#checkpoints)), LangGraph Platform also comes with a built-in [memory store](persistence.md#memory-store). +* **Memory**: In addition to thread-level persistence (covered above by [checkpointers](./persistence.md#checkpoints)), LangGraph Platform also comes with a built-in [memory store](persistence.md#memory-store). * **Cron jobs**: Built-in support for scheduling tasks, enabling you to automate regular actions like data clean-up or batch processing within your applications. * **Webhooks**: Allows your application to send real-time notifications and data updates to external systems, making it easy to integrate with third-party services and trigger actions based on specific events. * **Monitoring**: LangGraph Server integrates seamlessly with the [LangSmith](https://docs.smith.langchain.com/) monitoring platform, providing real-time insights into your application's performance and health. diff --git a/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb b/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb index 6ffca2b6b..770d8bf4a 100644 --- a/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb +++ b/docs/docs/how-tos/human_in_the_loop/wait-user-input.ipynb @@ -499,7 +499,8 @@ " config,\n", " stream_mode=\"values\",\n", "):\n", - " event[\"messages\"][-1].pretty_print()" + " if \"messages\" in event:\n", + " event[\"messages\"][-1].pretty_print()" ] }, { @@ -572,7 +573,8 @@ ], "source": [ "for event in app.stream(Command(resume=\"san francisco\"), config, stream_mode=\"values\"):\n", - " event[\"messages\"][-1].pretty_print()" + " if \"messages\" in event:\n", + " event[\"messages\"][-1].pretty_print()" ] } ], @@ -592,7 +594,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.4" + "version": "3.12.3" } }, "nbformat": 4, diff --git a/docs/docs/tutorials/introduction.ipynb b/docs/docs/tutorials/introduction.ipynb index 7d35c9172..7d1fd7eed 100644 --- a/docs/docs/tutorials/introduction.ipynb +++ b/docs/docs/tutorials/introduction.ipynb @@ -30,7 +30,7 @@ "outputs": [], "source": [ "%%capture --no-stderr\n", - "%pip install -U langgraph langsmith langchain_anthropic" + "%pip install -U langgraph langsmith \"langchain[anthropic]\"" ] }, { @@ -129,13 +129,13 @@ { "cell_type": "code", "execution_count": null, - "id": "bc8c9137-8261-42ea-8e83-3590981d23e2", + "id": "f66edbfb-f374-4998-90a3-78bc8f18e0aa", "metadata": {}, "outputs": [], "source": [ - "from langchain_anthropic import ChatAnthropic\n", + "from langchain.chat_models import init_chat_model\n", "\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "\n", "\n", "def chatbot(state: State):\n", @@ -217,12 +217,12 @@ { "cell_type": "code", "execution_count": 7, - "id": "9403859a-f25a-46b4-a672-46a93f8a3cba", + "id": "0eb93a3b-5378-479f-bc32-19afed9c3270", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "" ] @@ -306,7 +306,7 @@ "```python\n", "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", + "from langchain.chat_models import init_chat_model\n", "from typing_extensions import TypedDict\n", "\n", "from langgraph.graph import StateGraph\n", @@ -320,7 +320,7 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "\n", "\n", "def chatbot(state: State):\n", @@ -364,7 +364,7 @@ "outputs": [], "source": [ "%%capture --no-stderr\n", - "%pip install -U tavily-python langchain_community" + "%pip install -U langchain-tavily" ] }, { @@ -395,28 +395,39 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "35c8978e-c07d-4dd0-a97b-0ce3a723eea5", + "execution_count": 10, + "id": "a7cc7306-7a4e-466f-8d41-b1a3d07be8bc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[{'url': 'https://medium.com/@cplog/introduction-to-langgraph-a-beginners-guide-14f9be027141',\n", - " 'content': 'Nodes: Nodes are the building blocks of your LangGraph. Each node represents a function or a computation step. You define nodes to perform specific tasks, such as processing input, making ...'},\n", - " {'url': 'https://saksheepatil05.medium.com/demystifying-langgraph-a-beginner-friendly-dive-into-langgraph-concepts-5ffe890ddac0',\n", - " 'content': 'Nodes (Tasks): Nodes are like the workstations on the assembly line. Each node performs a specific task on the product. In LangGraph, nodes are Python functions that take the current state, do some work, and return an updated state. Next, we define the nodes, each representing a task in our sandwich-making process.'}]" + "{'query': \"What's a 'node' in LangGraph?\",\n", + " 'follow_up_questions': None,\n", + " 'answer': None,\n", + " 'images': [],\n", + " 'results': [{'title': \"Introduction to LangGraph: A Beginner's Guide - Medium\",\n", + " 'url': 'https://medium.com/@cplog/introduction-to-langgraph-a-beginners-guide-14f9be027141',\n", + " 'content': 'Stateful Graph: LangGraph revolves around the concept of a stateful graph, where each node in the graph represents a step in your computation, and the graph maintains a state that is passed around and updated as the computation progresses. LangGraph supports conditional edges, allowing you to dynamically determine the next node to execute based on the current state of the graph. We define nodes for classifying the input, handling greetings, and handling search queries. def classify_input_node(state): LangGraph is a versatile tool for building complex, stateful applications with LLMs. By understanding its core concepts and working through simple examples, beginners can start to leverage its power for their projects. Remember to pay attention to state management, conditional edges, and ensuring there are no dead-end nodes in your graph.',\n", + " 'score': 0.7065353,\n", + " 'raw_content': None},\n", + " {'title': 'LangGraph Tutorial: What Is LangGraph and How to Use It?',\n", + " 'url': 'https://www.datacamp.com/tutorial/langgraph-tutorial',\n", + " 'content': 'LangGraph is a library within the LangChain ecosystem that provides a framework for defining, coordinating, and executing multiple LLM agents (or chains) in a structured and efficient manner. By managing the flow of data and the sequence of operations, LangGraph allows developers to focus on the high-level logic of their applications rather than the intricacies of agent coordination. Whether you need a chatbot that can handle various types of user requests or a multi-agent system that performs complex tasks, LangGraph provides the tools to build exactly what you need. LangGraph significantly simplifies the development of complex LLM applications by providing a structured framework for managing state and coordinating agent interactions.',\n", + " 'score': 0.5008063,\n", + " 'raw_content': None}],\n", + " 'response_time': 1.38}" ] }, - "execution_count": 11, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain_tavily import TavilySearch\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool]\n", "tool.invoke(\"What's a 'node' in LangGraph?\")" ] @@ -441,7 +452,7 @@ "source": [ "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", + "from langchain.chat_models import init_chat_model\n", "from typing_extensions import TypedDict\n", "\n", "from langgraph.graph import StateGraph, START, END\n", @@ -455,7 +466,7 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "# Modification: tell the LLM which tools it can call\n", "# highlight-next-line\n", "llm_with_tools = llm.bind_tools(tools)\n", @@ -712,8 +723,8 @@ "```python\n", "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.messages import BaseMessage\n", "from typing_extensions import TypedDict\n", "\n", @@ -729,9 +740,9 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -805,8 +816,8 @@ "source": [ "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.messages import BaseMessage\n", "from typing_extensions import TypedDict\n", "\n", @@ -822,9 +833,9 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -856,7 +867,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 19, "id": "a06548bf-81fa-4436-b4c1-f68601fb4187", "metadata": {}, "outputs": [], @@ -1113,8 +1124,8 @@ "```python\n", "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.messages import BaseMessage\n", "from typing_extensions import TypedDict\n", "\n", @@ -1131,9 +1142,9 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -1183,8 +1194,8 @@ "source": [ "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.tools import tool\n", "from typing_extensions import TypedDict\n", "\n", @@ -1216,9 +1227,9 @@ " return human_response[\"data\"]\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool, human_assistance]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -1482,8 +1493,8 @@ "```python\n", "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.tools import tool\n", "from typing_extensions import TypedDict\n", "\n", @@ -1508,9 +1519,9 @@ " return human_response[\"data\"]\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool, human_assistance]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -1647,17 +1658,17 @@ "metadata": {}, "outputs": [], "source": [ - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "\n", "from langgraph.checkpoint.memory import MemorySaver\n", "from langgraph.graph import StateGraph, START, END\n", "from langgraph.prebuilt import ToolNode, tools_condition\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool, human_assistance]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -1929,8 +1940,8 @@ "```python\n", "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.messages import ToolMessage\n", "from langchain_core.tools import InjectedToolCallId, tool\n", "from typing_extensions import TypedDict\n", @@ -1978,9 +1989,9 @@ " return Command(update=state_update)\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool, human_assistance]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -2037,8 +2048,8 @@ "source": [ "from typing import Annotated\n", "\n", - "from langchain_anthropic import ChatAnthropic\n", - "from langchain_community.tools.tavily_search import TavilySearchResults\n", + "from langchain.chat_models import init_chat_model\n", + "from langchain_tavily import TavilySearch\n", "from langchain_core.messages import BaseMessage\n", "from typing_extensions import TypedDict\n", "\n", @@ -2055,9 +2066,9 @@ "graph_builder = StateGraph(State)\n", "\n", "\n", - "tool = TavilySearchResults(max_results=2)\n", + "tool = TavilySearch(max_results=2)\n", "tools = [tool]\n", - "llm = ChatAnthropic(model=\"claude-3-5-sonnet-20240620\")\n", + "llm = init_chat_model(\"anthropic:claude-3-5-sonnet-latest\")\n", "llm_with_tools = llm.bind_tools(tools)\n", "\n", "\n", @@ -2464,7 +2475,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.10.4" } }, "nbformat": 4, diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 947611f00..ef2e2a6d6 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -492,6 +492,9 @@ extra: data: 0 note: >- Thanks for your feedback! Please help us improve this page by adding to the discussion below. + shared_analytics: + provider: google + property: G-47WX3HKKY2 validation: # https://www.mkdocs.org/user-guide/configuration/ # We are still raising for omitted files because they determine the breadcrumbs for pages. diff --git a/docs/poetry.lock b/docs/poetry.lock index 818a8d6fb..32a3327c4 100644 --- a/docs/poetry.lock +++ b/docs/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -7,6 +7,7 @@ description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "aiohappyeyeballs-2.4.3-py3-none-any.whl", hash = "sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"}, {file = "aiohappyeyeballs-2.4.3.tar.gz", hash = "sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586"}, @@ -19,6 +20,7 @@ description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "aiohttp-3.11.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96264854fedbea933a9ca4b7e0c745728f01380691687b7365d18d9e977179c4"}, {file = "aiohttp-3.11.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9602044ff047043430452bc3a2089743fa85da829e6fc9ee0025351d66c332b6"}, @@ -114,7 +116,7 @@ propcache = ">=0.2.0" yarl = ">=1.17.0,<2.0" [package.extras] -speedups = ["Brotli ; platform_python_implementation == \"CPython\"", "aiodns (>=3.2.0) ; sys_platform == \"linux\" or sys_platform == \"darwin\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] [[package]] name = "aiosignal" @@ -123,6 +125,7 @@ description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, @@ -138,6 +141,7 @@ description = "asyncio bridge to the standard sqlite3 module" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "aiosqlite-0.21.0-py3-none-any.whl", hash = "sha256:2549cf4057f95f53dcba16f2b64e8e2791d7e1adedb13197dd8ed77bb226d7d0"}, {file = "aiosqlite-0.21.0.tar.gz", hash = "sha256:131bb8056daa3bc875608c631c678cda73922a2d4ba8aec373b19f18c17e7aa3"}, @@ -157,6 +161,7 @@ description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -169,6 +174,7 @@ description = "The official Python library for the anthropic API" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "anthropic-0.50.0-py3-none-any.whl", hash = "sha256:defbd79327ca2fa61fd7b9eb2f1627dfb1f69c25d49288c52e167ddb84574f80"}, {file = "anthropic-0.50.0.tar.gz", hash = "sha256:42175ec04ce4ff2fa37cd436710206aadff546ee99d70d974699f59b49adc66f"}, @@ -194,6 +200,7 @@ description = "High level compatibility layer for multiple asynchronous event lo optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, @@ -207,7 +214,7 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -217,6 +224,7 @@ description = "A small Python module for determining appropriate platform-specif optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, @@ -229,7 +237,7 @@ description = "Disable App Nap on macOS >= 10.9" optional = false python-versions = ">=3.6" groups = ["docs"] -markers = "platform_system == \"Darwin\"" +markers = "platform_system == \"Darwin\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -242,6 +250,7 @@ description = "Argon2 for Python" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -263,6 +272,7 @@ description = "Low-level CFFI bindings for Argon2" optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, @@ -301,6 +311,7 @@ description = "Better dates & times for Python" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -321,6 +332,7 @@ description = "ASGI specs, helper code, and adapters" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47"}, {file = "asgiref-3.8.1.tar.gz", hash = "sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590"}, @@ -339,6 +351,7 @@ description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -355,6 +368,7 @@ description = "Simple LRU cache for asyncio" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943"}, {file = "async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb"}, @@ -370,24 +384,11 @@ description = "Timeout context manager for asyncio programs" optional = false python-versions = ">=3.7" groups = ["docs", "test"] -markers = "python_version == \"3.10\"" files = [ {file = "async-timeout-4.0.3.tar.gz", hash = "sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f"}, {file = "async_timeout-4.0.3-py3-none-any.whl", hash = "sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"}, ] - -[[package]] -name = "async-timeout" -version = "5.0.1" -description = "Timeout context manager for asyncio programs" -optional = false -python-versions = ">=3.8" -groups = ["test"] -markers = "python_version == \"3.11\" and python_full_version < \"3.11.3\"" -files = [ - {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, - {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, -] +markers = {docs = "python_version < \"3.11\"", test = "python_full_version < \"3.11.3\""} [[package]] name = "attrs" @@ -396,18 +397,19 @@ description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, ] [package.extras] -benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "autogen" @@ -416,7 +418,7 @@ description = "A programming framework for agentic AI" optional = false python-versions = "<3.13,>=3.8" groups = ["test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "autogen-0.3.2-py3-none-any.whl", hash = "sha256:e37a9df0ad84cde3429ec63298b8e9eb4e6306a28eec2627171e14b9a61ea64d"}, {file = "autogen-0.3.2.tar.gz", hash = "sha256:9f8a1170ac2e5a1fc9efc3cfa6e23261dd014db97b17c8c416f97ee14951bc7b"}, @@ -471,13 +473,14 @@ description = "Internationalization utilities" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] [[package]] name = "backoff" @@ -486,6 +489,7 @@ description = "Function decoration for backoff and retry" optional = false python-versions = ">=3.7,<4.0" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, @@ -498,6 +502,7 @@ description = "A wrapper around re and regex that adds additional back reference optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d"}, {file = "backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b"}, @@ -517,6 +522,7 @@ description = "Modern password hashing for your software and your servers" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281"}, {file = "bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb"}, @@ -582,6 +588,7 @@ description = "Screen-scraping library" optional = false python-versions = ">=3.7.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b"}, {file = "beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195"}, @@ -605,6 +612,7 @@ description = "The uncompromising code formatter." optional = false python-versions = ">=3.9" groups = ["main"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32"}, {file = "black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da"}, @@ -652,6 +660,7 @@ description = "An easy safelist-based HTML-sanitizing tool." optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, @@ -671,6 +680,7 @@ description = "A simple, correct Python build frontend" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5"}, {file = "build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7"}, @@ -685,7 +695,7 @@ tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [package.extras] docs = ["furo (>=2023.08.17)", "sphinx (>=7.0,<8.0)", "sphinx-argparse-cli (>=1.5)", "sphinx-autodoc-typehints (>=1.10)", "sphinx-issues (>=3.0.0)"] -test = ["build[uv,virtualenv]", "filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0) ; python_version < \"3.10\"", "setuptools (>=56.0.0) ; python_version == \"3.10\"", "setuptools (>=56.0.0) ; python_version == \"3.11\"", "setuptools (>=67.8.0) ; python_version >= \"3.12\"", "wheel (>=0.36.0)"] +test = ["build[uv,virtualenv]", "filelock (>=3)", "pytest (>=6.2.4)", "pytest-cov (>=2.12)", "pytest-mock (>=2)", "pytest-rerunfailures (>=9.1)", "pytest-xdist (>=1.34)", "setuptools (>=42.0.0)", "setuptools (>=56.0.0)", "setuptools (>=56.0.0)", "setuptools (>=67.8.0)", "wheel (>=0.36.0)"] typing = ["build[uv]", "importlib-metadata (>=5.1)", "mypy (>=1.9.0,<1.10.0)", "tomli", "typing-extensions (>=3.7.4.3)"] uv = ["uv (>=0.1.18)"] virtualenv = ["virtualenv (>=20.0.35)"] @@ -697,6 +707,7 @@ description = "httplib2 caching for requests" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cachecontrol-0.14.2-py3-none-any.whl", hash = "sha256:ebad2091bf12d0d200dfc2464330db638c5deb41d546f6d7aca079e87290f3b0"}, {file = "cachecontrol-0.14.2.tar.gz", hash = "sha256:7d47d19f866409b98ff6025b6a0fca8e4c791fb31abbd95f622093894ce903a2"}, @@ -719,6 +730,7 @@ description = "Extensible memoizing collections and decorators" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a"}, {file = "cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4"}, @@ -731,6 +743,7 @@ description = "cffi-based cairo bindings for Python" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f"}, {file = "cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b"}, @@ -751,6 +764,7 @@ description = "A Simple SVG Converter based on Cairo" optional = false python-versions = ">=3.5" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b"}, {file = "CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0"}, @@ -774,6 +788,7 @@ description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, @@ -855,7 +870,7 @@ files = [ {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] -markers = {test = "implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\""} +markers = {docs = "python_version <= \"3.11\" or python_version >= \"3.12\"", test = "(implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\") and (python_version <= \"3.11\" or python_version >= \"3.12\")"} [package.dependencies] pycparser = "*" @@ -867,6 +882,7 @@ description = "The Real First Universal Charset Detector. Open, modern and activ optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -969,6 +985,7 @@ description = "Chromas fork of hnswlib" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "chroma_hnswlib-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f35192fbbeadc8c0633f0a69c3d3e9f1a4eab3a46b65458bbcbcabdd9e895c36"}, {file = "chroma_hnswlib-0.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f007b608c96362b8f0c8b6b2ac94f67f83fcbabd857c378ae82007ec92f4d82"}, @@ -1011,6 +1028,7 @@ description = "Chroma." optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "chromadb-0.5.23-py3-none-any.whl", hash = "sha256:ffe5bdd7276d12cb682df0d38a13aa37573e6a3678e71889ac45f539ae05ad7e"}, {file = "chromadb-0.5.23.tar.gz", hash = "sha256:360a12b9795c5a33cb1f839d14410ccbde662ef1accd36153b0ae22312edabd1"}, @@ -1053,6 +1071,7 @@ description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -1068,6 +1087,7 @@ description = "" optional = false python-versions = "<4.0,>=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cohere-5.15.0-py3-none-any.whl", hash = "sha256:22ff867c2a6f2fc2b585360c6072f584f11f275ef6d9242bac24e0fa2df1dfb5"}, {file = "cohere-5.15.0.tar.gz", hash = "sha256:e802d4718ddb0bb655654382ebbce002756a3800faac30296cde7f1bdc6ff2cc"}, @@ -1095,7 +1115,7 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "platform_system == \"Windows\"", test = "platform_system == \"Windows\" or sys_platform == \"win32\" or os_name == \"nt\""} +markers = {main = "platform_system == \"Windows\" and (python_version <= \"3.11\" or python_version >= \"3.12\")", docs = "python_version <= \"3.11\" or python_version >= \"3.12\"", test = "(platform_system == \"Windows\" or sys_platform == \"win32\" or os_name == \"nt\") and (python_version <= \"3.11\" or python_version >= \"3.12\")"} [[package]] name = "coloredlogs" @@ -1104,6 +1124,7 @@ description = "Colored terminal output for Python's logging module" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"}, {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"}, @@ -1122,6 +1143,7 @@ description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus- optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -1140,6 +1162,7 @@ description = "Python library for calculating contours of 2D quadrilateral grids optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934"}, {file = "contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989"}, @@ -1217,6 +1240,7 @@ description = "A python port of YUI CSS Compressor" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05"}, ] @@ -1228,6 +1252,7 @@ description = "CSS selectors for Python ElementTree" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e"}, {file = "cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a"}, @@ -1248,6 +1273,7 @@ description = "Composable style cycles" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, @@ -1264,6 +1290,7 @@ description = "Easily serialize dataclasses to and from JSON." optional = false python-versions = "<4.0,>=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "dataclasses_json-0.6.7-py3-none-any.whl", hash = "sha256:0dbf33f26c8d5305befd61b39d2b3414e8a407bedc2834dea9b8d642666fb40a"}, {file = "dataclasses_json-0.6.7.tar.gz", hash = "sha256:b6b3e528266ea45b9535223bc53ca645f5208833c29229e847b3f26a1cc55fc0"}, @@ -1280,6 +1307,7 @@ description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339"}, {file = "debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79"}, @@ -1316,6 +1344,7 @@ description = "Decorators for Humans" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, @@ -1328,6 +1357,7 @@ description = "Data Lake for Multi-Modal AI Search" optional = false python-versions = "*" groups = ["main"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "deeplake-4.2.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6f2f3642169e900c04287be39fe087819f80daae1100125db29c63a27474e58c"}, {file = "deeplake-4.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23881fc225e4144bfd6af8403bcd2a355e67e312e1077e4b9fc9f81082414497"}, @@ -1365,6 +1395,7 @@ description = "XML bomb protection for Python stdlib modules" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -1377,6 +1408,7 @@ description = "Python @deprecated decorator to deprecate old python classes, fun optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, @@ -1386,7 +1418,7 @@ files = [ wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools ; python_version >= \"3.12\"", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] [[package]] name = "diskcache" @@ -1395,7 +1427,7 @@ description = "Disk Cache -- Disk and file backed persistent cache." optional = false python-versions = ">=3" groups = ["test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19"}, {file = "diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc"}, @@ -1408,6 +1440,7 @@ description = "Distro - an OS platform information API" optional = false python-versions = ">=3.6" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, @@ -1420,6 +1453,7 @@ description = "DNS toolkit" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86"}, {file = "dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1"}, @@ -1441,7 +1475,7 @@ description = "A Python library for the Docker Engine API." optional = false python-versions = ">=3.8" groups = ["test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0"}, {file = "docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c"}, @@ -1465,6 +1499,7 @@ description = "Docutils -- Python Documentation Utilities" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, @@ -1477,6 +1512,7 @@ description = "Module for converting between datetime.timedelta and Go's Duratio optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "durationpy-0.9-py3-none-any.whl", hash = "sha256:e65359a7af5cedad07fb77a2dd3f390f8eb0b74cb845589fa6c057086834dd38"}, {file = "durationpy-0.9.tar.gz", hash = "sha256:fd3feb0a69a0057d582ef643c355c40d2fa1c942191f914d12203b1a01ac722a"}, @@ -1489,6 +1525,7 @@ description = "Dynamically generate pydantic models from JSON schema." optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "dydantic-0.0.8-py3-none-any.whl", hash = "sha256:cd0a991f523bd8632699872f1c0c4278415dd04783e36adec5428defa0afb721"}, {file = "dydantic-0.0.8.tar.gz", hash = "sha256:14a31d4cdfce314ce3e69e8f8c7c46cbc26ce3ce4485de0832260386c612942f"}, @@ -1507,7 +1544,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["docs", "test"] -markers = "python_version == \"3.10\"" +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -1523,13 +1560,14 @@ description = "Get the currently executing AST node of a frame, and other inform optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, ] [package.extras] -tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich ; python_version >= \"3.11\""] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "fastapi" @@ -1538,6 +1576,7 @@ description = "FastAPI framework, high performance, easy to learn, fast to code, optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d"}, {file = "fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681"}, @@ -1559,6 +1598,7 @@ description = "Fast read/write of AVRO files" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fastavro-1.10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1a9fe0672d2caf0fe54e3be659b13de3cad25a267f2073d6f4b9f8862acc31eb"}, {file = "fastavro-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:86dd0410770e0c99363788f0584523709d85e57bb457372ec5c285a482c17fe6"}, @@ -1606,6 +1646,7 @@ description = "Fastest Python implementation of JSON schema" optional = false python-versions = "*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, @@ -1621,6 +1662,7 @@ description = "A platform independent file lock." optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de"}, {file = "filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2"}, @@ -1629,7 +1671,7 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fireworks-ai" @@ -1638,6 +1680,7 @@ description = "Python client library for the Fireworks.ai Generative AI Platform optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fireworks_ai-0.15.12-py3-none-any.whl", hash = "sha256:3fbf3f89e65ccfc46c88b71246b9d4fdf3301955ac4050193d8f4b4058cb193a"}, {file = "fireworks_ai-0.15.12.tar.gz", hash = "sha256:2380a53d92244c608fd398f8d97b97380d899f3ff710091f4b50917b75119ec2"}, @@ -1660,7 +1703,7 @@ description = "A fast library for automated machine learning and tuning" optional = false python-versions = ">=3.8" groups = ["test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "FLAML-2.3.4-py3-none-any.whl", hash = "sha256:dceab62194d469889c4584531049ac0a43480056f4f39c6ea207bfc12a157d76"}, {file = "flaml-2.3.4.tar.gz", hash = "sha256:308c3e769976d8a0272f2fd7d98258d7d4a4fd2e4525ba540d1ba149ae266c54"}, @@ -1676,8 +1719,8 @@ autozero = ["packaging", "pandas", "scikit-learn"] azureml = ["azureml-mlflow"] benchmark = ["catboost (>=0.26)", "pandas (==1.1.4)", "psutil (==5.8.0)", "xgboost (==1.3.3)"] blendsearch = ["optuna (>=2.8.0,<=3.6.1)", "packaging"] -catboost = ["catboost (>=0.26,<1.2) ; python_version < \"3.11\"", "catboost (>=0.26,<=1.2.5) ; python_version >= \"3.11\""] -forecast = ["hcrystalball (==0.1.10)", "holidays (<0.14)", "prophet (>=1.0.1)", "pytorch-forecasting (>=0.9.0) ; python_version < \"3.11\"", "pytorch-lightning (==1.9.0)", "statsmodels (>=0.12.2)", "tensorboardX (==2.6)"] +catboost = ["catboost (>=0.26,<1.2)", "catboost (>=0.26,<=1.2.5)"] +forecast = ["hcrystalball (==0.1.10)", "holidays (<0.14)", "prophet (>=1.0.1)", "pytorch-forecasting (>=0.9.0)", "pytorch-lightning (==1.9.0)", "statsmodels (>=0.12.2)", "tensorboardX (==2.6)"] hf = ["datasets", "nltk (<=3.8.1)", "rouge-score", "seqeval", "transformers[torch] (==4.26)"] mathchat = ["diskcache", "openai (==0.27.8)", "pydantic (==1.10.9)", "sympy", "termcolor", "wolframalpha"] nlp = ["datasets", "nltk (<=3.8.1)", "rouge-score", "seqeval", "transformers[torch] (==4.26)"] @@ -1688,7 +1731,7 @@ ray = ["ray[tune] (>=1.13,<2.0)"] retrievechat = ["chromadb", "diskcache", "openai (==0.27.8)", "sentence-transformers", "termcolor", "tiktoken"] spark = ["joblib (<=1.3.2)", "joblibspark (>=0.5.0)", "pyspark (>=3.2.0)"] synapse = ["joblibspark (>=0.5.0)", "optuna (>=2.8.0,<=3.6.1)", "pyspark (>=3.2.0)"] -test = ["catboost (>=0.26) ; python_version >= \"3.11\"", "catboost (>=0.26,<1.2) ; python_version < \"3.11\"", "coverage (>=5.3)", "dataclasses", "datasets", "dill", "hcrystalball (==0.1.10)", "ipykernel", "joblib (<=1.3.2)", "joblibspark (>=0.5.0)", "jupyter", "lightgbm (>=2.3.1)", "mlflow (==2.15.1)", "nbconvert", "nbformat", "nltk (<=3.8.1)", "openml", "optuna (>=2.8.0,<=3.6.1)", "packaging", "pandas (>=1.1.4) ; python_version >= \"3.10\"", "pandas (>=1.1.4,<2.0.0) ; python_version < \"3.10\"", "pre-commit", "psutil (==5.8.0)", "pydantic (==1.10.9)", "pytest (>=6.1.1)", "pytorch-forecasting (>=0.9.0,<=0.10.1) ; python_version < \"3.11\"", "pytorch-lightning (<1.9.1)", "requests (<2.29.0)", "rgf-python", "rouge-score", "scikit-learn (>=1.0.0)", "scipy (>=1.4.1)", "seqeval", "statsmodels (>=0.12.2)", "sympy", "tensorboardX (==2.6)", "thop", "torch", "torchvision", "transformers[torch] (==4.26)", "wolframalpha", "xgboost (>=0.90,<2.0.0)"] +test = ["catboost (>=0.26)", "catboost (>=0.26,<1.2)", "coverage (>=5.3)", "dataclasses", "datasets", "dill", "hcrystalball (==0.1.10)", "ipykernel", "joblib (<=1.3.2)", "joblibspark (>=0.5.0)", "jupyter", "lightgbm (>=2.3.1)", "mlflow (==2.15.1)", "nbconvert", "nbformat", "nltk (<=3.8.1)", "openml", "optuna (>=2.8.0,<=3.6.1)", "packaging", "pandas (>=1.1.4)", "pandas (>=1.1.4,<2.0.0)", "pre-commit", "psutil (==5.8.0)", "pydantic (==1.10.9)", "pytest (>=6.1.1)", "pytorch-forecasting (>=0.9.0,<=0.10.1)", "pytorch-lightning (<1.9.1)", "requests (<2.29.0)", "rgf-python", "rouge-score", "scikit-learn (>=1.0.0)", "scipy (>=1.4.1)", "seqeval", "statsmodels (>=0.12.2)", "sympy", "tensorboardX (==2.6)", "thop", "torch", "torchvision", "transformers[torch] (==4.26)", "wolframalpha", "xgboost (>=0.90,<2.0.0)"] ts-forecast = ["hcrystalball (==0.1.10)", "holidays (<0.14)", "prophet (>=1.0.1)", "statsmodels (>=0.12.2)"] vw = ["scikit-learn", "vowpalwabbit (>=8.10.0,<9.0.0)"] @@ -1699,6 +1742,7 @@ description = "The FlatBuffers serialization format for Python" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "flatbuffers-25.2.10-py2.py3-none-any.whl", hash = "sha256:ebba5f4d5ea615af3f7fd70fc310636fbb2bbd1f566ac0a23d98dd412de50051"}, {file = "flatbuffers-25.2.10.tar.gz", hash = "sha256:97e451377a41262f8d9bd4295cc836133415cc03d8cb966410a4af92eb00d26e"}, @@ -1711,6 +1755,7 @@ description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41"}, {file = "fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02"}, @@ -1765,18 +1810,18 @@ files = [ ] [package.extras] -all = ["brotli (>=1.0.1) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\"", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres ; platform_python_implementation == \"PyPy\"", "pycairo", "scipy ; platform_python_implementation != \"PyPy\"", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0) ; python_version <= \"3.12\"", "xattr ; sys_platform == \"darwin\"", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres ; platform_python_implementation == \"PyPy\"", "pycairo", "scipy ; platform_python_implementation != \"PyPy\""] +interpolatable = ["munkres", "pycairo", "scipy"] lxml = ["lxml (>=4.0)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] -type1 = ["xattr ; sys_platform == \"darwin\""] +type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=15.1.0) ; python_version <= \"3.12\""] -woff = ["brotli (>=1.0.1) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\"", "zopfli (>=0.1.4)"] +unicode = ["unicodedata2 (>=15.1.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "fqdn" @@ -1785,6 +1830,7 @@ description = "Validates fully-qualified domain names against RFC 1123, so that optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -1797,6 +1843,7 @@ description = "A list-like structure which implements collections.abc.MutableSeq optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "frozenlist-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e6e558ea1e47fd6fa8ac9ccdad403e5dd5ecc6ed8dda94343056fa4277d5c65e"}, {file = "frozenlist-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4b3cd7334a4bbc0c472164f3744562cb72d05002cc6fcf58adb104630bbc352"}, @@ -1911,6 +1958,7 @@ description = "File-system specification" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711"}, {file = "fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6"}, @@ -1951,6 +1999,7 @@ description = "Copy your docs directly to the gh-pages branch." optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -1969,6 +2018,7 @@ description = "Git Object Database" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf"}, {file = "gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571"}, @@ -1984,6 +2034,7 @@ description = "GitPython is a Python library used to interact with Git repositor optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"}, {file = "gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269"}, @@ -1994,7 +2045,7 @@ gitdb = ">=4.0.1,<5" [package.extras] doc = ["sphinx (>=7.1.2,<7.2)", "sphinx-autodoc-typehints", "sphinx_rtd_theme"] -test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock ; python_version < \"3.8\"", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions ; python_version < \"3.11\""] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] [[package]] name = "google-auth" @@ -2003,6 +2054,7 @@ description = "Google Authentication Library" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "google_auth-2.39.0-py2.py3-none-any.whl", hash = "sha256:0150b6711e97fb9f52fe599f55648950cc4540015565d8fbb31be2ad6e1548a2"}, {file = "google_auth-2.39.0.tar.gz", hash = "sha256:73222d43cdc35a3aeacbfdcaf73142a97839f10de930550d89ebfe1d0a00cde7"}, @@ -2016,11 +2068,11 @@ rsa = ">=3.1.4,<5" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0)", "requests (>=2.20.0,<3.0.0)"] enterprise-cert = ["cryptography", "pyopenssl"] -pyjwt = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyjwt (>=2.0)"] -pyopenssl = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] +pyjwt = ["cryptography (<39.0.0)", "cryptography (>=38.0.3)", "pyjwt (>=2.0)"] +pyopenssl = ["cryptography (<39.0.0)", "cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] requests = ["requests (>=2.20.0,<3.0.0)"] -testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "flask", "freezegun", "grpcio", "mock", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"] +testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "cryptography (<39.0.0)", "cryptography (>=38.0.3)", "flask", "freezegun", "grpcio", "mock", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"] urllib3 = ["packaging", "urllib3"] [[package]] @@ -2030,6 +2082,7 @@ description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8"}, {file = "googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257"}, @@ -2048,6 +2101,7 @@ description = "Python bindings for GPT4All" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "gpt4all-2.8.2-py3-none-macosx_10_15_universal2.whl", hash = "sha256:41d6de60fe1f9c9a29bcbb585c5eb39083893cf00db0b836de1f2d88e2fbbb17"}, {file = "gpt4all-2.8.2-py3-none-manylinux1_x86_64.whl", hash = "sha256:c61e977afa72475c076211fd9b59a88334fc0062615be8c2f7716363a21fbafa"}, @@ -2060,7 +2114,7 @@ tqdm = "*" typing-extensions = {version = ">=4.3.0", markers = "python_version >= \"3.9\" and python_version < \"3.11\""} [package.extras] -all = ["gpt4all[cuda] ; platform_system == \"Windows\" or platform_system == \"Linux\""] +all = ["gpt4all[cuda]"] cuda = ["nvidia-cublas-cu11", "nvidia-cuda-runtime-cu11"] dev = ["black", "gpt4all[all]", "isort", "mkautodoc", "mkdocs-jupyter", "mkdocs-material", "mkdocs-material[imaging]", "mkdocstrings[python]", "pytest", "setuptools", "twine", "typing-extensions (>=3.10)", "wheel"] @@ -2071,6 +2125,7 @@ description = "Graph and drawing algorithms framework" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "grandalf-0.8-py3-none-any.whl", hash = "sha256:793ca254442f4a79252ea9ff1ab998e852c1e071b863593e5383afee906b4185"}, {file = "grandalf-0.8.tar.gz", hash = "sha256:2813f7aab87f0d20f334a3162ccfbcbf085977134a17a5b516940a93a77ea974"}, @@ -2089,7 +2144,7 @@ description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.9" groups = ["docs", "test"] -markers = "(platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and python_version <= \"3.13\"" +markers = "python_version < \"3.14\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\") and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "greenlet-3.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:777c1281aa7c786738683e302db0f55eb4b0077c20f1dc53db8852ffaea0a6b0"}, {file = "greenlet-3.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3059c6f286b53ea4711745146ffe5a5c5ff801f62f6c56949446e0f6461f8157"}, @@ -2159,6 +2214,7 @@ description = "Signatures for entire Python programs. Extract the structure, the optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75"}, {file = "griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b"}, @@ -2174,6 +2230,7 @@ description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "grpcio-1.71.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:c200cb6f2393468142eb50ab19613229dcc7829b5ccee8b658a36005f6669fdd"}, {file = "grpcio-1.71.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b2266862c5ad664a380fbbcdbdb8289d71464c42a8c29053820ee78ba0119e5d"}, @@ -2233,14 +2290,15 @@ protobuf = ["grpcio-tools (>=1.71.0)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] @@ -2250,6 +2308,7 @@ description = "HTML parser based on the WHATWG HTML specification" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"}, {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"}, @@ -2260,10 +2319,10 @@ six = ">=1.9" webencodings = "*" [package.extras] -all = ["chardet (>=2.2)", "genshi", "lxml ; platform_python_implementation == \"CPython\""] +all = ["chardet (>=2.2)", "genshi", "lxml"] chardet = ["chardet (>=2.2)"] genshi = ["genshi"] -lxml = ["lxml ; platform_python_implementation == \"CPython\""] +lxml = ["lxml"] [[package]] name = "htmlmin2" @@ -2272,25 +2331,27 @@ description = "An HTML Minifier" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2"}, ] [[package]] name = "httpcore" -version = "1.0.8" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ - {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, - {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -2305,6 +2366,7 @@ description = "A collection of framework independent HTTP protocol utils." optional = false python-versions = ">=3.8.0" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "httptools-0.6.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3c73ce323711a6ffb0d247dcd5a550b8babf0f757e86a52558fe5b86d6fefcc0"}, {file = "httptools-0.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:345c288418f0944a6fe67be8e6afa9262b18c7626c3ef3c28adc5eabc06a68da"}, @@ -2361,6 +2423,7 @@ description = "The next generation HTTP client." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -2373,7 +2436,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -2386,6 +2449,7 @@ description = "Consume Server-Sent Event (SSE) messages with HTTPX." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, @@ -2398,6 +2462,7 @@ description = "WebSockets support for HTTPX" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "httpx_ws-0.7.2-py3-none-any.whl", hash = "sha256:dd7bf9dbaa96dcd5cef1af3a7e1130cfac068bebecce25a74145022f5a8427a3"}, {file = "httpx_ws-0.7.2.tar.gz", hash = "sha256:93edea6c8fc313464fc287bff7d2ad20e6196b7754c76f946f73b4af79886d4e"}, @@ -2416,6 +2481,7 @@ description = "Activeloop Deep Lake" optional = false python-versions = "*" groups = ["main"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "hub-3.0.1-py3-none-any.whl", hash = "sha256:16d20fbf44700b438dc372d697ee683f0d7c58b178ad01d2daf81efe88bc692d"}, {file = "hub-3.0.1.tar.gz", hash = "sha256:3866425914ed522090f0634887f06ff77517e8e6d7b9370e42009d774b725514"}, @@ -2431,6 +2497,7 @@ description = "Client library to download and publish models, datasets and other optional = false python-versions = ">=3.8.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "huggingface_hub-0.30.2-py3-none-any.whl", hash = "sha256:68ff05969927058cfa41df4f2155d4bb48f5f54f719dd0390103eefa9b191e28"}, {file = "huggingface_hub-0.30.2.tar.gz", hash = "sha256:9a7897c5b6fd9dad3168a794a8998d6378210f5b9688d0dfc180b1a228dc2466"}, @@ -2467,6 +2534,7 @@ description = "Human friendly output for text interfaces using Python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, @@ -2482,6 +2550,7 @@ description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -2497,6 +2566,7 @@ description = "Read metadata from Python packages" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e"}, {file = "importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580"}, @@ -2506,12 +2576,12 @@ files = [ zipp = ">=3.20" [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] perf = ["ipython"] -test = ["flufl.flake8", "importlib_resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib_resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-perf (>=0.9.2)"] type = ["pytest-mypy"] [[package]] @@ -2521,13 +2591,14 @@ description = "Read resources from Python packages" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec"}, {file = "importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] @@ -2541,6 +2612,7 @@ description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, @@ -2553,6 +2625,7 @@ description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -2587,7 +2660,7 @@ description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" groups = ["docs"] -markers = "python_version == \"3.10\"" +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ipython-8.35.0-py3-none-any.whl", hash = "sha256:e6b7470468ba6f1f0a7b116bb688a3ece2f13e2f94138e508201fad677a788ba"}, {file = "ipython-8.35.0.tar.gz", hash = "sha256:d200b7d93c3f5883fc36ab9ce28a18249c7706e51347681f80a0aef9895f2520"}, @@ -2609,7 +2682,7 @@ typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli ; python_version < \"3.11\"", "typing_extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -2620,56 +2693,6 @@ qtconsole = ["qtconsole"] test = ["packaging", "pickleshare", "pytest", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] -[[package]] -name = "ipython" -version = "9.1.0" -description = "IPython: Productive Interactive Computing" -optional = false -python-versions = ">=3.11" -groups = ["docs"] -markers = "python_version >= \"3.11\"" -files = [ - {file = "ipython-9.1.0-py3-none-any.whl", hash = "sha256:2df07257ec2f84a6b346b8d83100bcf8fa501c6e01ab75cd3799b0bb253b3d2a"}, - {file = "ipython-9.1.0.tar.gz", hash = "sha256:a47e13a5e05e02f3b8e1e7a0f9db372199fe8c3763532fe7a1e0379e4e135f16"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -decorator = "*" -ipython-pygments-lexers = "*" -jedi = ">=0.16" -matplotlib-inline = "*" -pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt_toolkit = ">=3.0.41,<3.1.0" -pygments = ">=2.4.0" -stack_data = "*" -traitlets = ">=5.13.0" -typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} - -[package.extras] -all = ["ipython[doc,matplotlib,test,test-extra]"] -black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinx_toml (==0.0.4)", "typing_extensions"] -matplotlib = ["matplotlib"] -test = ["packaging", "pytest", "pytest-asyncio (<0.22)", "testpath"] -test-extra = ["curio", "ipykernel", "ipython[test]", "jupyter_ai", "matplotlib (!=3.2.0)", "nbclient", "nbformat", "numpy (>=1.23)", "pandas", "trio"] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -description = "Defines a variety of Pygments lexers for highlighting IPython code." -optional = false -python-versions = ">=3.8" -groups = ["docs"] -markers = "python_version >= \"3.11\"" -files = [ - {file = "ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c"}, - {file = "ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81"}, -] - -[package.dependencies] -pygments = "*" - [[package]] name = "ipywidgets" version = "8.1.6" @@ -2677,6 +2700,7 @@ description = "Jupyter interactive widgets" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ipywidgets-8.1.6-py3-none-any.whl", hash = "sha256:446e7630a1d025bdc7635e1169fcc06f2ce33b5bd41c2003edeb4a47c8d4bbb1"}, {file = "ipywidgets-8.1.6.tar.gz", hash = "sha256:d8ace49c66f14419fc66071371b99d01bed230bbc15d8a60233b18bfbd782851"}, @@ -2699,6 +2723,7 @@ description = "Operations with ISO 8601 durations" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -2714,6 +2739,7 @@ description = "An autocompletion tool for Python that can be used for text edito optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -2734,6 +2760,7 @@ description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -2752,6 +2779,7 @@ description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jiter-0.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:816ec9b60fdfd1fec87da1d7ed46c66c44ffec37ab2ef7de5b147b2fce3fd5ad"}, {file = "jiter-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b1d3086f8a3ee0194ecf2008cf81286a5c3e540d977fa038ff23576c023c0ea"}, @@ -2838,6 +2866,7 @@ description = "Lightweight pipelining with Python functions" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, @@ -2850,6 +2879,7 @@ description = "JavaScript minifier." optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc"}, ] @@ -2861,13 +2891,14 @@ description = "A Python implementation of the JSON5 data format." optional = false python-versions = ">=3.8.0" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db"}, {file = "json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a"}, ] [package.extras] -dev = ["build (==1.2.2.post1)", "coverage (==7.5.4) ; python_version < \"3.9\"", "coverage (==7.8.0) ; python_version >= \"3.9\"", "mypy (==1.14.1) ; python_version < \"3.9\"", "mypy (==1.15.0) ; python_version >= \"3.9\"", "pip (==25.0.1)", "pylint (==3.2.7) ; python_version < \"3.9\"", "pylint (==3.3.6) ; python_version >= \"3.9\"", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] +dev = ["build (==1.2.2.post1)", "coverage (==7.5.4)", "coverage (==7.8.0)", "mypy (==1.14.1)", "mypy (==1.15.0)", "pip (==25.0.1)", "pylint (==3.2.7)", "pylint (==3.3.6)", "ruff (==0.11.2)", "twine (==6.1.0)", "uv (==0.6.11)"] [[package]] name = "jsonlines" @@ -2876,6 +2907,7 @@ description = "Library with helpers for the jsonlines file format" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55"}, {file = "jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74"}, @@ -2891,6 +2923,7 @@ description = "Apply JSON-Patches (RFC 6902)" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade"}, {file = "jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c"}, @@ -2906,6 +2939,7 @@ description = "Identify specific nodes in a JSON document (RFC 6901)" optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -2918,6 +2952,7 @@ description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -2948,6 +2983,7 @@ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Regis optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af"}, {file = "jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608"}, @@ -2963,6 +2999,7 @@ description = "Jupyter metapackage. Install all the Jupyter components in one go optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter-1.1.1-py2.py3-none-any.whl", hash = "sha256:7a59533c22af65439b24bbe60373a4e95af8f16ac65a6c00820ad378e3f7cc83"}, {file = "jupyter-1.1.1.tar.gz", hash = "sha256:d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a"}, @@ -2983,6 +3020,7 @@ description = "Jupyter protocol implementation and client libraries" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -2997,7 +3035,7 @@ traitlets = ">=5.3" [package.extras] docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko ; sys_platform == \"win32\"", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -3006,6 +3044,7 @@ description = "Jupyter terminal console" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, @@ -3031,6 +3070,7 @@ description = "Jupyter core package. A base package on which Jupyter projects re optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -3052,6 +3092,7 @@ description = "Jupyter Event System library" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, @@ -3079,6 +3120,7 @@ description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab se optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -3094,6 +3136,7 @@ description = "The backend—i.e. core services, APIs, and REST endpoints—to J optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, @@ -3131,6 +3174,7 @@ description = "A Jupyter Server Extension Providing Terminals." optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -3151,6 +3195,7 @@ description = "JupyterLab computational environment" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyterlab-4.4.1-py3-none-any.whl", hash = "sha256:989bca3f9cf2d04b2022e7e657e2df6d4aca808b364810d31c4865edd968a5f7"}, {file = "jupyterlab-4.4.1.tar.gz", hash = "sha256:c75c4f33056fbd84f0b31eb44622a00c7a5f981b85adfeb198a83721f0465808"}, @@ -3186,6 +3231,7 @@ description = "Pygments theme using JupyterLab CSS variables" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -3198,6 +3244,7 @@ description = "A set of server components for JupyterLab and JupyterLab like app optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4"}, {file = "jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4"}, @@ -3224,6 +3271,7 @@ description = "Jupyter interactive widgets for JupyterLab" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "jupyterlab_widgets-3.0.14-py3-none-any.whl", hash = "sha256:54c33e3306b7fca139d165d6190dc6c0627aafa5d14adfc974a4e9a3d26cb703"}, {file = "jupyterlab_widgets-3.0.14.tar.gz", hash = "sha256:bad03e59546869f026e537e0d170e454259e6dc7048e14041707ca31e523c8a1"}, @@ -3236,6 +3284,7 @@ description = "A fast implementation of the Cassowary constraint solver" optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db"}, {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b"}, @@ -3326,6 +3375,7 @@ description = "Kubernetes python client" optional = false python-versions = ">=3.6" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "kubernetes-32.0.1-py2.py3-none-any.whl", hash = "sha256:35282ab8493b938b08ab5526c7ce66588232df00ef5e1dbe88a419107dc10998"}, {file = "kubernetes-32.0.1.tar.gz", hash = "sha256:42f43d49abd437ada79a79a16bd48a604d3471a117a8347e87db693f2ba0ba28"}, @@ -3354,6 +3404,7 @@ description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain-0.3.24-py3-none-any.whl", hash = "sha256:596c5444716644ddd0cd819fb2bc9d0fd4221503b219fdfb5016edcfaa7da8ef"}, {file = "langchain-0.3.24.tar.gz", hash = "sha256:caf1bacdabbea429bc79b58b118c06c3386107d92812e15922072b91745f070f"}, @@ -3395,6 +3446,7 @@ description = "An integration package connecting AnthropicMessages and LangChain optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_anthropic-0.3.12-py3-none-any.whl", hash = "sha256:39764a0dc79c5777af6396a6160478a2b5b62eada965df778d041e68ac8aeeb9"}, {file = "langchain_anthropic-0.3.12.tar.gz", hash = "sha256:8f68461369f0c7707dea5950d6f68ce3faa8d49744bc97fb8d3a7c02e84fe840"}, @@ -3412,6 +3464,7 @@ description = "An integration package connecting Cohere and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_cohere-0.4.4-py3-none-any.whl", hash = "sha256:75572e1b165ae0c95b6830c5dd8e698890b69900eb320df75ad2ed875d879d7e"}, {file = "langchain_cohere-0.4.4.tar.gz", hash = "sha256:bef75deee58706aa0402bfa4233444e4dba1fcad324761e870f48bf7bdd3d26d"}, @@ -3458,7 +3511,7 @@ description = "Community contributed LangChain integrations." optional = false python-versions = "<4.0,>=3.9" groups = ["docs", "test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "langchain_community-0.3.22-py3-none-any.whl", hash = "sha256:02ecdc669408d587b9dda78462dbbe8c27168edd26bb205630d0bc753e7cce6b"}, {file = "langchain_community-0.3.22.tar.gz", hash = "sha256:36284687a9f64bc7820c0140beb3b96393f6c74c0b7ad8ba04ac35d673fe0988"}, @@ -3485,6 +3538,7 @@ description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_core-0.3.55-py3-none-any.whl", hash = "sha256:b3cb36bf37755a616158a79866657c6697b43a2f7c69dd723ce425f1c76c1baa"}, {file = "langchain_core-0.3.55.tar.gz", hash = "sha256:0f2b3e311621116a83510c70b0ac9d959030a0a457a69483535cff18501fedc9"}, @@ -3509,6 +3563,7 @@ description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_experimental-0.3.4-py3-none-any.whl", hash = "sha256:2e587306aea36b60fa5e5fc05dc7281bee9f60a806f0bf9d30916e0ee096af80"}, {file = "langchain_experimental-0.3.4.tar.gz", hash = "sha256:937c4259ee4a639c618d19acf0e2c5c2898ef127050346edc5655259aa281a21"}, @@ -3525,6 +3580,7 @@ description = "An integration package connecting Fireworks and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_fireworks-0.2.9-py3-none-any.whl", hash = "sha256:340ffe195216d1ab3b333b6ebc6d1b3482341afb40822919d66d7db8ec2ad81b"}, {file = "langchain_fireworks-0.2.9.tar.gz", hash = "sha256:c80dabaf8e884f8c6741732ca7239fd243e7554fdfeb5c458c0caab89c974e82"}, @@ -3544,6 +3600,7 @@ description = "An integration package connecting Mistral and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_mistralai-0.2.10-py3-none-any.whl", hash = "sha256:fc3bc813eab034335236a3b01ba189cd00bcf2b7e6ac57628d0409438bd13425"}, {file = "langchain_mistralai-0.2.10.tar.gz", hash = "sha256:698620c7dee8ae85bf1ca1ed5b544285c0764c453efead9a4ae34ab884704ce1"}, @@ -3563,6 +3620,7 @@ description = "An integration package connecting Nomic and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_nomic-0.1.4-py3-none-any.whl", hash = "sha256:64c12ad069db0d8368b039d40a20730981be5147e7c35a24d7f286477c53c290"}, {file = "langchain_nomic-0.1.4.tar.gz", hash = "sha256:fa3103f373e1f6b01abcaf23f9f746f66c29f43d593271e2be0b64a285b3ef36"}, @@ -3580,6 +3638,7 @@ description = "An integration package connecting Ollama and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_ollama-0.2.3-py3-none-any.whl", hash = "sha256:c47700ca68b013358b1e954493ecafb3bd10fa2cda71a9f15ba7897587a9aab2"}, {file = "langchain_ollama-0.2.3.tar.gz", hash = "sha256:d13fe8735176b652ca6e6656d7902c1265e8c0601097569f7c95433f3d034b38"}, @@ -3596,6 +3655,7 @@ description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = "<4.0,>=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_openai-0.3.14-py3-none-any.whl", hash = "sha256:b8e648d2d7678a5540818199d141ff727c6f1514294b3e1e999a95357c9d66a0"}, {file = "langchain_openai-0.3.14.tar.gz", hash = "sha256:0662db78620c2e5c3ccfc1c36dc959c0ddc80e6bdf7ef81632cbf4b2cc9b9461"}, @@ -3606,6 +3666,24 @@ langchain-core = ">=0.3.53,<1.0.0" openai = ">=1.68.2,<2.0.0" tiktoken = ">=0.7,<1" +[[package]] +name = "langchain-tavily" +version = "0.1.5" +description = "An integration package connecting Tavily and LangChain" +optional = false +python-versions = "<4.0,>=3.9" +groups = ["test"] +files = [ + {file = "langchain_tavily-0.1.5-py3-none-any.whl", hash = "sha256:4960756b64969dc63b6994019b15fee6550a2b07d30a59952400c07d47dbcd41"}, + {file = "langchain_tavily-0.1.5.tar.gz", hash = "sha256:09125611cb80ce41297b9e1dcc1045349f1854ce17fd8bd438b403a83feab229"}, +] + +[package.dependencies] +aiohttp = ">=3.11.14,<4.0.0" +langchain = ">=0.3.20,<0.4.0" +langchain-core = ">=0.3.15,<0.4.0" +mypy = ">=1.15.0,<2.0.0" + [[package]] name = "langchain-text-splitters" version = "0.3.8" @@ -3613,6 +3691,7 @@ description = "LangChain text splitting utilities" optional = false python-versions = "<4.0,>=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langchain_text_splitters-0.3.8-py3-none-any.whl", hash = "sha256:e75cc0f4ae58dcf07d9f18776400cf8ade27fadd4ff6d264df6278bb302f6f02"}, {file = "langchain_text_splitters-0.3.8.tar.gz", hash = "sha256:116d4b9f2a22dda357d0b79e30acf005c5518177971c66a9f1ab0edfdb0f912e"}, @@ -3623,11 +3702,12 @@ langchain-core = ">=0.3.51,<1.0.0" [[package]] name = "langgraph" -version = "0.3.33" +version = "0.3.34" description = "Building stateful, multi-actor applications with LLMs" optional = false python-versions = ">=3.9.0,<4.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3649,6 +3729,7 @@ description = "Library with base interfaces for LangGraph checkpoint savers." optional = false python-versions = "^3.9.0,<4.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3667,6 +3748,7 @@ description = "Library with a MongoDB implementation of LangGraph checkpoint sav optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langgraph_checkpoint_mongodb-0.1.3-py3-none-any.whl", hash = "sha256:c69cb921255f3ed347e0c878ed30447d2fadf674c8f855245d01090cf78ee688"}, {file = "langgraph_checkpoint_mongodb-0.1.3.tar.gz", hash = "sha256:e404053917fb02b2e83fbee2ce6ba98c97914fe876c6904bd363cada152e6f0c"}, @@ -3684,6 +3766,7 @@ description = "Library with a Postgres implementation of LangGraph checkpoint sa optional = false python-versions = "^3.9.0,<4.0" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3704,6 +3787,7 @@ description = "Library with a SQLite implementation of LangGraph checkpoint save optional = false python-versions = "^3.9.0" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3722,6 +3806,7 @@ description = "Library with high-level APIs for creating and executing LangGraph optional = false python-versions = "^3.9.0,<4.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3740,6 +3825,7 @@ description = "SDK for interacting with LangGraph API" optional = false python-versions = "^3.9.0,<4.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [] develop = true @@ -3758,6 +3844,7 @@ description = "Prebuilt utilities for memory management and retrieval." optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langmem-0.0.19-py3-none-any.whl", hash = "sha256:dfe4741a34491036f4ec2717f32660bda146be875cdc440dedb5af265afa8af8"}, {file = "langmem-0.0.19.tar.gz", hash = "sha256:502980334ab42e07ec082a462222bd8a1eb8ad83835a35bc07c5426903b28002"}, @@ -3780,6 +3867,7 @@ description = "Client library to connect to the LangSmith LLM Tracing and Evalua optional = false python-versions = "<4.0,>=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "langsmith-0.3.33-py3-none-any.whl", hash = "sha256:6fa453942014945e1de7e283880ed3e8031b5d84e0dc75b87d101ecedb62371b"}, {file = "langsmith-0.3.33.tar.gz", hash = "sha256:0f439e945528c6d14140137b918cc048aea04c6a987525926dbfda2560002924"}, @@ -3810,6 +3898,7 @@ description = "Python logging made (stupidly) simple" optional = false python-versions = "<4.0,>=3.5" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c"}, {file = "loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6"}, @@ -3820,7 +3909,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["Sphinx (==8.1.3) ; python_version >= \"3.11\"", "build (==1.2.2) ; python_version >= \"3.11\"", "colorama (==0.4.5) ; python_version < \"3.8\"", "colorama (==0.4.6) ; python_version >= \"3.8\"", "exceptiongroup (==1.1.3) ; python_version >= \"3.7\" and python_version < \"3.11\"", "freezegun (==1.1.0) ; python_version < \"3.8\"", "freezegun (==1.5.0) ; python_version >= \"3.8\"", "mypy (==v0.910) ; python_version < \"3.6\"", "mypy (==v0.971) ; python_version == \"3.6\"", "mypy (==v1.13.0) ; python_version >= \"3.8\"", "mypy (==v1.4.1) ; python_version == \"3.7\"", "myst-parser (==4.0.0) ; python_version >= \"3.11\"", "pre-commit (==4.0.1) ; python_version >= \"3.9\"", "pytest (==6.1.2) ; python_version < \"3.8\"", "pytest (==8.3.2) ; python_version >= \"3.8\"", "pytest-cov (==2.12.1) ; python_version < \"3.8\"", "pytest-cov (==5.0.0) ; python_version == \"3.8\"", "pytest-cov (==6.0.0) ; python_version >= \"3.9\"", "pytest-mypy-plugins (==1.9.3) ; python_version >= \"3.6\" and python_version < \"3.8\"", "pytest-mypy-plugins (==3.1.0) ; python_version >= \"3.8\"", "sphinx-rtd-theme (==3.0.2) ; python_version >= \"3.11\"", "tox (==3.27.1) ; python_version < \"3.8\"", "tox (==4.23.2) ; python_version >= \"3.8\"", "twine (==6.0.1) ; python_version >= \"3.11\""] +dev = ["Sphinx (==8.1.3)", "build (==1.2.2)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.5.0)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.13.0)", "mypy (==v1.4.1)", "myst-parser (==4.0.0)", "pre-commit (==4.0.1)", "pytest (==6.1.2)", "pytest (==8.3.2)", "pytest-cov (==2.12.1)", "pytest-cov (==5.0.0)", "pytest-cov (==6.0.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.1.0)", "sphinx-rtd-theme (==3.0.2)", "tox (==3.27.1)", "tox (==4.23.2)", "twine (==6.0.1)"] [[package]] name = "markdown" @@ -3829,6 +3918,7 @@ description = "Python implementation of John Gruber's Markdown." optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc"}, {file = "markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f"}, @@ -3845,6 +3935,7 @@ description = "Markdown extension: a classier syntax for admonitions" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "markdown_callouts-0.4.0-py3-none-any.whl", hash = "sha256:ed0da38f29158d93116a0d0c6ecaf9df90b37e0d989b5337d678ee6e6d6550b7"}, {file = "markdown_callouts-0.4.0.tar.gz", hash = "sha256:7ed2c90486967058a73a547781121983839522d67041ae52c4979616f1b2b746"}, @@ -3860,6 +3951,7 @@ description = "A Python-Markdown extension which provides an 'include' function" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "markdown-include-0.8.1.tar.gz", hash = "sha256:1d0623e0fc2757c38d35df53752768356162284259d259c486b4ab6285cdbbe3"}, {file = "markdown_include-0.8.1-py3-none-any.whl", hash = "sha256:32f0635b9cfef46997b307e2430022852529f7a5b87c0075c504283e7cc7db53"}, @@ -3878,6 +3970,7 @@ description = "Python port of markdown-it. Markdown parsing, done right!" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -3903,6 +3996,7 @@ description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, @@ -3974,6 +4068,7 @@ description = "A lightweight library for converting complex datatypes to and fro optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c"}, {file = "marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6"}, @@ -3994,6 +4089,7 @@ description = "Python plotting package" optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "matplotlib-3.10.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ff2ae14910be903f4a24afdbb6d7d3a6c44da210fc7d42790b87aeac92238a16"}, {file = "matplotlib-3.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0721a3fd3d5756ed593220a8b86808a36c5031fce489adb5b31ee6dbb47dd5b2"}, @@ -4052,6 +4148,7 @@ description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca"}, {file = "matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90"}, @@ -4067,6 +4164,7 @@ description = "Markdown URL utilities" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -4079,6 +4177,7 @@ description = "A deep merge function for 🐍." optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -4091,6 +4190,7 @@ description = "A sane and fast Markdown parser with useful plugins and renderers optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9"}, {file = "mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0"}, @@ -4106,6 +4206,7 @@ description = "Project documentation with Markdown." optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, @@ -4128,7 +4229,7 @@ watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] -min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform_system == \"Windows\"", "ghp-import (==1.0)", "importlib-metadata (==4.4) ; python_version < \"3.10\"", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"] [[package]] name = "mkdocs-autorefs" @@ -4137,6 +4238,7 @@ description = "Automatically link across pages in MkDocs." optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_autorefs-1.4.1-py3-none-any.whl", hash = "sha256:9793c5ac06a6ebbe52ec0f8439256e66187badf4b5334b5fde0b128ec134df4f"}, {file = "mkdocs_autorefs-1.4.1.tar.gz", hash = "sha256:4b5b6235a4becb2b10425c2fa191737e415b37aa3418919db33e5d774c9db079"}, @@ -4154,6 +4256,7 @@ description = "A mkdocs plugin that lets you exclude files or trees." optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs-exclude-1.0.2.tar.gz", hash = "sha256:ba6fab3c80ddbe3fd31d3e579861fd3124513708271180a5f81846da8c7e2a51"}, ] @@ -4168,6 +4271,7 @@ description = "MkDocs extension that lists all dependencies according to a mkdoc optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, @@ -4185,6 +4289,7 @@ description = "An MkDocs plugin to create a list of contributors on the page. Th optional = false python-versions = "<4,>=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_git_committers_plugin_2-2.5.0-py3-none-any.whl", hash = "sha256:1778becf98ccdc5fac809ac7b62cf01d3c67d6e8432723dffbb823307d1193c4"}, {file = "mkdocs_git_committers_plugin_2-2.5.0.tar.gz", hash = "sha256:a01f17369e79ca28651681cddf212770e646e6191954bad884ca3067316aae60"}, @@ -4202,6 +4307,7 @@ description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e"}, {file = "mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473"}, @@ -4234,6 +4340,7 @@ description = "Extension pack for Python Markdown and MkDocs Material." optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -4246,6 +4353,7 @@ description = "An MkDocs plugin to minify HTML, JS or CSS files prior to being w optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d"}, {file = "mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6"}, @@ -4264,6 +4372,7 @@ description = "MkDocs plugin which generates a static RSS feed using git log and optional = false python-versions = "<4,>=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocs_rss_plugin-1.17.1-py2.py3-none-any.whl", hash = "sha256:ff81f0ece33befd5a0152c196132e15eb93b4b9f7f53644c6d3db8e9a529e186"}, {file = "mkdocs_rss_plugin-1.17.1.tar.gz", hash = "sha256:9371d30afb0eda7288c946a89b419aa7a0b8e212d2219584c2dbd23ece93a991"}, @@ -4288,6 +4397,7 @@ description = "Automatic documentation from sources, for MkDocs." optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6"}, {file = "mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42"}, @@ -4313,6 +4423,7 @@ description = "A Python handler for mkdocstrings." optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mkdocstrings_python-1.16.10-py3-none-any.whl", hash = "sha256:63bb9f01f8848a644bdb6289e86dc38ceddeaa63ecc2e291e3b2ca52702a6643"}, {file = "mkdocstrings_python-1.16.10.tar.gz", hash = "sha256:f9eedfd98effb612ab4d0ed6dd2b73aff6eba5215e0a65cea6d877717f75502e"}, @@ -4331,6 +4442,7 @@ description = "Python extension for MurmurHash (MurmurHash3), a set of fast and optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec"}, {file = "mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a"}, @@ -4430,6 +4542,7 @@ description = "An implementation of time.monotonic() for Python 2 & < 3.3" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "monotonic-1.6-py2.py3-none-any.whl", hash = "sha256:68687e19a14f11f26d140dd5c86f3dba4bf5df58003000ed467e0e2a69bca96c"}, {file = "monotonic-1.6.tar.gz", hash = "sha256:3a55207bcfed53ddd5c5bae174524062935efed17792e9de2ad0205ce9ad63f7"}, @@ -4442,6 +4555,7 @@ description = "Non-blocking MongoDB driver for Tornado or asyncio" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "motor-3.7.0-py3-none-any.whl", hash = "sha256:61bdf1afded179f008d423f98066348157686f25a90776ea155db5f47f57d605"}, {file = "motor-3.7.0.tar.gz", hash = "sha256:0dfa1f12c812bd90819c519b78bed626b5a9dbb29bba079ccff2bfa8627e0fec"}, @@ -4457,7 +4571,7 @@ encryption = ["pymongo[encryption] (>=4.5,<5)"] gssapi = ["pymongo[gssapi] (>=4.5,<5)"] ocsp = ["pymongo[ocsp] (>=4.5,<5)"] snappy = ["pymongo[snappy] (>=4.5,<5)"] -test = ["aiohttp (>=3.8.7)", "cffi (>=1.17.0rc1) ; python_version == \"3.13\"", "mockupdb", "pymongo[encryption] (>=4.5,<5)", "pytest (>=7)", "pytest-asyncio", "tornado (>=5)"] +test = ["aiohttp (>=3.8.7)", "cffi (>=1.17.0rc1)", "mockupdb", "pymongo[encryption] (>=4.5,<5)", "pytest (>=7)", "pytest-asyncio", "tornado (>=5)"] zstd = ["pymongo[zstd] (>=4.5,<5)"] [[package]] @@ -4467,6 +4581,7 @@ description = "Python library for arbitrary-precision floating-point arithmetic" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c"}, {file = "mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f"}, @@ -4475,7 +4590,7 @@ files = [ [package.extras] develop = ["codecov", "pycodestyle", "pytest (>=4.6)", "pytest-cov", "wheel"] docs = ["sphinx"] -gmpy = ["gmpy2 (>=2.1.0a4) ; platform_python_implementation != \"PyPy\""] +gmpy = ["gmpy2 (>=2.1.0a4)"] tests = ["pytest (>=4.6)"] [[package]] @@ -4485,6 +4600,7 @@ description = "MessagePack serializer" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, @@ -4559,6 +4675,7 @@ description = "multidict implementation" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "multidict-6.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32a998bd8a64ca48616eac5a8c1cc4fa38fb244a3facf2eeb14abe186e0f6cc5"}, {file = "multidict-6.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54ec568f1fc7f3c313c2f3b16e5db346bf3660e1309746e7fccbbfded856188"}, @@ -4669,6 +4786,60 @@ files = [ [package.dependencies] typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} +[[package]] +name = "mypy" +version = "1.15.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +groups = ["test"] +files = [ + {file = "mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13"}, + {file = "mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + [[package]] name = "mypy-extensions" version = "1.1.0" @@ -4676,6 +4847,7 @@ description = "Type system extensions for programs checked with the mypy type ch optional = false python-versions = ">=3.8" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -4688,6 +4860,7 @@ description = "A client library for executing notebooks. Formerly nbconvert's Ex optional = false python-versions = ">=3.9.0" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, @@ -4711,6 +4884,7 @@ description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Ou optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, @@ -4748,6 +4922,7 @@ description = "The Jupyter Notebook format" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -4770,6 +4945,7 @@ description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -4782,6 +4958,7 @@ description = "Python package for creating and manipulating graphs and networks" optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, @@ -4802,6 +4979,7 @@ description = "The official Nomic python client." optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "nomic-3.4.1.tar.gz", hash = "sha256:509f152474834aac9c0931f4e5ed943c281359dd367ed765626c4ac802d383ba"}, ] @@ -4833,6 +5011,7 @@ description = "Jupyter Notebook - A web-based notebook environment for interacti optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "notebook-7.4.1-py3-none-any.whl", hash = "sha256:498f12cf567d95b20e780d62d52564ee4310248b3175e996b667b5808028e5d3"}, {file = "notebook-7.4.1.tar.gz", hash = "sha256:96894962b230013ea0c0a466e4e642c5aace25ba8c86686175b69990ef628ff9"}, @@ -4848,7 +5027,7 @@ tornado = ">=6.2.0" [package.extras] dev = ["hatch", "pre-commit"] docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] -test = ["importlib-resources (>=5.0) ; python_version < \"3.10\"", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] [[package]] name = "notebook-shim" @@ -4857,6 +5036,7 @@ description = "A shim layer for notebook traits and config" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -4875,6 +5055,7 @@ description = "Fast numerical expression evaluator for NumPy" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "numexpr-2.10.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5b0e82d2109c1d9e63fcd5ea177d80a11b881157ab61178ddbdebd4c561ea46"}, {file = "numexpr-2.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc2b8035a0c2cdc352e58c3875cb668836018065cbf5752cb531015d9a568d8"}, @@ -4924,6 +5105,7 @@ description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.9" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, @@ -4970,6 +5152,7 @@ description = "A generic, spec-compliant, thorough implementation of the OAuth r optional = false python-versions = ">=3.6" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, {file = "oauthlib-3.2.2.tar.gz", hash = "sha256:9859c40929662bec5d64f34d01c99e093149682a3f38915dc0655d5a633dd918"}, @@ -4987,6 +5170,7 @@ description = "The official Python client for Ollama." optional = false python-versions = "<4.0,>=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ollama-0.4.8-py3-none-any.whl", hash = "sha256:04312af2c5e72449aaebac4a2776f52ef010877c554103419d3f36066fe8af4c"}, {file = "ollama-0.4.8.tar.gz", hash = "sha256:1121439d49b96fa8339842965d0616eba5deb9f8c790786cdf4c0b3df4833802"}, @@ -5003,6 +5187,7 @@ description = "ONNX Runtime is a runtime accelerator for Machine Learning models optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "onnxruntime-1.21.1-cp310-cp310-macosx_13_0_universal2.whl", hash = "sha256:daedb5d33d8963062a25f4a3c788262074587f685a19478ef759a911b4b12c25"}, {file = "onnxruntime-1.21.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a402f9bda0b1cc791d9cf31d23c471e8189a55369b49ef2b9d0854eb11d22c4"}, @@ -5039,6 +5224,7 @@ description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "openai-1.76.0-py3-none-any.whl", hash = "sha256:a712b50e78cf78e6d7b2a8f69c4978243517c2c36999756673e07a14ce37dc0a"}, {file = "openai-1.76.0.tar.gz", hash = "sha256:fd2bfaf4608f48102d6b74f9e11c5ecaa058b60dad9c36e409c12477dfd91fb2"}, @@ -5066,6 +5252,7 @@ description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_api-1.32.1-py3-none-any.whl", hash = "sha256:bbd19f14ab9f15f0e85e43e6a958aa4cb1f36870ee62b7fd205783a112012724"}, {file = "opentelemetry_api-1.32.1.tar.gz", hash = "sha256:a5be71591694a4d9195caf6776b055aa702e964d961051a0715d05f8632c32fb"}, @@ -5082,6 +5269,7 @@ description = "OpenTelemetry Protobuf encoding" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_exporter_otlp_proto_common-1.32.1-py3-none-any.whl", hash = "sha256:a1e9ad3d0d9a9405c7ff8cdb54ba9b265da16da9844fe36b8c9661114b56c5d9"}, {file = "opentelemetry_exporter_otlp_proto_common-1.32.1.tar.gz", hash = "sha256:da4edee4f24aaef109bfe924efad3a98a2e27c91278115505b298ee61da5d68e"}, @@ -5097,6 +5285,7 @@ description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_exporter_otlp_proto_grpc-1.32.1-py3-none-any.whl", hash = "sha256:18f0bb17a732e73840eee562b760a40b6af6a4ab3e852bccf625c5fb04fbd2cd"}, {file = "opentelemetry_exporter_otlp_proto_grpc-1.32.1.tar.gz", hash = "sha256:e01157104c9f5d81fb404b66db0653a75ec606754445491c831301480c2a3950"}, @@ -5121,6 +5310,7 @@ description = "Instrumentation Tools & Auto Instrumentation for OpenTelemetry Py optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_instrumentation-0.53b1-py3-none-any.whl", hash = "sha256:c07850cecfbc51e8b357f56d5886ae5ccaa828635b220d0f5e78f941ea9a83ca"}, {file = "opentelemetry_instrumentation-0.53b1.tar.gz", hash = "sha256:0e69ca2c75727e8a300de671c4a2ec0e86e63a8e906beaa5d6c9f5228e8687e5"}, @@ -5139,6 +5329,7 @@ description = "ASGI instrumentation for OpenTelemetry" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_instrumentation_asgi-0.53b1-py3-none-any.whl", hash = "sha256:5f8422eff0a9e3ecb052a8726335925610bb9bd7bb1acf1619c2c28dc3c04842"}, {file = "opentelemetry_instrumentation_asgi-0.53b1.tar.gz", hash = "sha256:74b7a023787c574f2dd5ed9376e5b921c14501ba1b281ec8527eaadc442563e7"}, @@ -5161,6 +5352,7 @@ description = "OpenTelemetry FastAPI Instrumentation" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_instrumentation_fastapi-0.53b1-py3-none-any.whl", hash = "sha256:f8ed5b65e9086b86caeae191fcf798ec7b47469ac7f0341461acc03886278741"}, {file = "opentelemetry_instrumentation_fastapi-0.53b1.tar.gz", hash = "sha256:24e98ddd1bd8164069e68e36c47bb729fefb0a851e6dd520f4fc81c3bbc54147"}, @@ -5183,6 +5375,7 @@ description = "OpenTelemetry Python Proto" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_proto-1.32.1-py3-none-any.whl", hash = "sha256:fe56df31033ab0c40af7525f8bf4c487313377bbcfdf94184b701a8ccebc800e"}, {file = "opentelemetry_proto-1.32.1.tar.gz", hash = "sha256:bc6385ccf87768f029371535312071a2d09e6c9ebf119ac17dbc825a6a56ba53"}, @@ -5198,6 +5391,7 @@ description = "OpenTelemetry Python SDK" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_sdk-1.32.1-py3-none-any.whl", hash = "sha256:bba37b70a08038613247bc42beee5a81b0ddca422c7d7f1b097b32bf1c7e2f17"}, {file = "opentelemetry_sdk-1.32.1.tar.gz", hash = "sha256:8ef373d490961848f525255a42b193430a0637e064dd132fd2a014d94792a092"}, @@ -5215,6 +5409,7 @@ description = "OpenTelemetry Semantic Conventions" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_semantic_conventions-0.53b1-py3-none-any.whl", hash = "sha256:21df3ed13f035f8f3ea42d07cbebae37020367a53b47f1ebee3b10a381a00208"}, {file = "opentelemetry_semantic_conventions-0.53b1.tar.gz", hash = "sha256:4c5a6fede9de61211b2e9fc1e02e8acacce882204cd770177342b6a3be682992"}, @@ -5231,6 +5426,7 @@ description = "Web util for OpenTelemetry" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "opentelemetry_util_http-0.53b1-py3-none-any.whl", hash = "sha256:ee7ecc1cbe4598535a95eaf7742f80c0c924843bf8f7ef3bab4963a228a94dd0"}, {file = "opentelemetry_util_http-0.53b1.tar.gz", hash = "sha256:7b0356584400b3406a643e244d36ff1bbb7c95e3b5ed0509d212e4a11c050a0e"}, @@ -5243,6 +5439,7 @@ description = "Fast, correct Python JSON library supporting dataclasses, datetim optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "orjson-3.10.16-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:4cb473b8e79154fa778fb56d2d73763d977be3dcc140587e07dbc545bbfc38f8"}, {file = "orjson-3.10.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:622a8e85eeec1948690409a19ca1c7d9fd8ff116f4861d261e6ae2094fe59a00"}, @@ -5321,6 +5518,7 @@ description = "Fast, correct Python msgpack library supporting dataclasses, date optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ormsgpack-1.9.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:f1f804fd9c0fd84213a6022c34172f82323b34afa7052a4af18797582cf56365"}, {file = "ormsgpack-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eab5cec99c46276b37071d570aab98603f3d0309b3818da3247eb64bb95e5cfc"}, @@ -5372,6 +5570,7 @@ description = "A decorator to automatically detect mismatch when overriding a me optional = false python-versions = ">=3.6" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -5384,6 +5583,7 @@ description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -5396,6 +5596,7 @@ description = "Divides large result sets into pages for easier browsing" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, @@ -5412,46 +5613,36 @@ description = "Powerful data structures for data analysis, time series, and stat optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, - {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, - {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, - {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, - {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, - {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, - {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, - {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, - {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, - {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, - {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, - {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, @@ -5499,6 +5690,7 @@ description = "Utilities for writing pandoc filters in python" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -5511,6 +5703,7 @@ description = "A Python Parser" optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -5527,6 +5720,7 @@ description = "Utility library for gitignore style pattern matching of file path optional = false python-versions = ">=3.8" groups = ["main", "docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -5539,7 +5733,7 @@ description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" groups = ["docs"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" +markers = "(sys_platform != \"win32\" and sys_platform != \"emscripten\") and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -5555,6 +5749,7 @@ description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, @@ -5643,7 +5838,7 @@ docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -typing = ["typing-extensions ; python_version < \"3.10\""] +typing = ["typing-extensions"] xmp = ["defusedxml"] [[package]] @@ -5653,6 +5848,7 @@ description = "A small Python package for determining appropriate platform-speci optional = false python-versions = ">=3.9" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94"}, {file = "platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351"}, @@ -5670,6 +5866,7 @@ description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -5686,6 +5883,7 @@ description = "Integrate PostHog into any python application." optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "posthog-3.25.0-py2.py3-none-any.whl", hash = "sha256:85db78c13d1ecb11aed06fad53759c4e8fb3633442c2f3d0336bc0ce8a585d30"}, {file = "posthog-3.25.0.tar.gz", hash = "sha256:9168f3e7a0a5571b6b1065c41b3c171fbc68bfe72c3ac0bfd6e3d2fcdb7df2ca"}, @@ -5712,6 +5910,7 @@ description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -5727,6 +5926,7 @@ description = "Library for building powerful interactive command lines in Python optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07"}, {file = "prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed"}, @@ -5742,6 +5942,7 @@ description = "Accelerated property cache" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "propcache-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f27785888d2fdd918bc36de8b8739f2d6c791399552333721b58193f68ea3e98"}, {file = "propcache-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4e89cde74154c7b5957f87a355bb9c8ec929c167b59c83d90654ea36aeb6180"}, @@ -5850,6 +6051,7 @@ description = "" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "protobuf-5.29.4-cp310-abi3-win32.whl", hash = "sha256:13eb236f8eb9ec34e63fc8b1d6efd2777d062fa6aaa68268fb67cf77f6839ad7"}, {file = "protobuf-5.29.4-cp310-abi3-win_amd64.whl", hash = "sha256:bcefcdf3976233f8a502d265eb65ea740c989bacc6c30a58290ed0e519eb4b8d"}, @@ -5871,6 +6073,7 @@ description = "Cross-platform lib for process and system monitoring in Python. optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25"}, {file = "psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da"}, @@ -5895,6 +6098,7 @@ description = "PostgreSQL database adapter for Python" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "psycopg-3.2.6-py3-none-any.whl", hash = "sha256:f3ff5488525890abb0566c429146add66b329e20d6d4835662b920cbbf90ac58"}, {file = "psycopg-3.2.6.tar.gz", hash = "sha256:16fa094efa2698f260f2af74f3710f781e4a6f226efe9d1fd0c37f384639ed8a"}, @@ -5906,8 +6110,8 @@ typing-extensions = {version = ">=4.6", markers = "python_version < \"3.13\""} tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] -binary = ["psycopg-binary (==3.2.6) ; implementation_name != \"pypy\""] -c = ["psycopg-c (==3.2.6) ; implementation_name != \"pypy\""] +binary = ["psycopg-binary (==3.2.6)"] +c = ["psycopg-c (==3.2.6)"] dev = ["ast-comments (>=1.1.2)", "black (>=24.1.0)", "codespell (>=2.2)", "dnspython (>=2.1)", "flake8 (>=4.0)", "isort-psycopg", "isort[colors] (>=6.0)", "mypy (>=1.14)", "pre-commit (>=4.0.1)", "types-setuptools (>=57.4)", "wheel (>=0.37)"] docs = ["Sphinx (>=5.0)", "furo (==2022.6.21)", "sphinx-autobuild (>=2021.3.14)", "sphinx-autodoc-typehints (>=1.12)"] pool = ["psycopg-pool"] @@ -5920,7 +6124,7 @@ description = "PostgreSQL database adapter for Python -- C optimisation distribu optional = false python-versions = ">=3.8" groups = ["docs"] -markers = "implementation_name != \"pypy\"" +markers = "implementation_name != \"pypy\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "psycopg_binary-3.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1b639acb3e24243c23f75700bf6e3af7b76da92523ec7c3196a13aaf0b578453"}, {file = "psycopg_binary-3.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1b5c359173726b38d7acbb9f73270f269591d8031d099c1a70dd3f3d22b0e8a8"}, @@ -5996,6 +6200,7 @@ description = "Connection Pool for Psycopg" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "psycopg_pool-3.2.6-py3-none-any.whl", hash = "sha256:5887318a9f6af906d041a0b1dc1c60f8f0dda8340c2572b74e10907b51ed5da7"}, {file = "psycopg_pool-3.2.6.tar.gz", hash = "sha256:0f92a7817719517212fbfe2fd58b8c35c1850cdd2a80d36b581ba2085d9148e5"}, @@ -6011,7 +6216,7 @@ description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" groups = ["docs"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" +markers = "(os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\") and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -6024,6 +6229,7 @@ description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -6039,6 +6245,7 @@ description = "Python library for Apache Arrow" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69"}, {file = "pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec"}, @@ -6094,6 +6301,7 @@ description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, @@ -6106,6 +6314,7 @@ description = "A collection of ASN.1-based protocols modules" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"}, {file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"}, @@ -6125,7 +6334,7 @@ files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] -markers = {test = "implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\""} +markers = {docs = "python_version <= \"3.11\" or python_version >= \"3.12\"", test = "(implementation_name == \"pypy\" or platform_python_implementation == \"PyPy\") and (python_version <= \"3.11\" or python_version >= \"3.12\")"} [[package]] name = "pydantic" @@ -6134,6 +6343,7 @@ description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f"}, {file = "pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3"}, @@ -6147,7 +6357,7 @@ typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] +timezone = ["tzdata"] [[package]] name = "pydantic-core" @@ -6156,6 +6366,7 @@ description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26"}, {file = "pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927"}, @@ -6268,6 +6479,7 @@ description = "Settings management using Pydantic" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef"}, {file = "pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268"}, @@ -6292,6 +6504,7 @@ description = "A rough port of Node.js's EventEmitter to Python with a few trick optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyee-11.1.1-py3-none-any.whl", hash = "sha256:9e4cdd7c2f9fcf247db94bad39a260aceffefdbe52286ce71be01959de34a5c2"}, {file = "pyee-11.1.1.tar.gz", hash = "sha256:82e1eb1853f8497c4ff1a0c7fa26b9cd2f1253e2b6ffb93b4700fda907017302"}, @@ -6301,7 +6514,7 @@ files = [ typing-extensions = "*" [package.extras] -dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio ; python_version >= \"3.4\"", "pytest-trio ; python_version >= \"3.7\"", "sphinx", "toml", "tox", "trio", "trio ; python_version > \"3.6\"", "trio-typing ; python_version > \"3.6\"", "twine", "twisted", "validate-pyproject[all]"] +dev = ["black", "build", "flake8", "flake8-black", "isort", "jupyter-console", "mkdocs", "mkdocs-include-markdown-plugin", "mkdocstrings[python]", "pytest", "pytest-asyncio", "pytest-trio", "sphinx", "toml", "tox", "trio", "trio", "trio-typing", "twine", "twisted", "validate-pyproject[all]"] [[package]] name = "pygments" @@ -6310,6 +6523,7 @@ description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -6325,6 +6539,7 @@ description = "" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pygments-ansi-color-0.3.0.tar.gz", hash = "sha256:7018954cf5b11d1e734383a1bafab5af613213f246109417fee3f76da26d5431"}, {file = "pygments_ansi_color-0.3.0-py3-none-any.whl", hash = "sha256:7eb063feaecadad9d4d1fd3474cbfeadf3486b64f760a8f2a00fc25392180aba"}, @@ -6340,6 +6555,7 @@ description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb"}, {file = "pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953"}, @@ -6358,6 +6574,7 @@ description = "Extension pack for Python Markdown." optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, @@ -6377,6 +6594,7 @@ description = "Python driver for MongoDB " optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pymongo-4.11.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78f19598246dd61ba2a4fc4dddfa6a4f9af704fff7d81cb4fe0d02c7b17b1f68"}, {file = "pymongo-4.11.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1c9cbe81184ec81ad8c76ccedbf5b743639448008d68f51f9a3c8a9abe6d9a46"}, @@ -6443,9 +6661,9 @@ dnspython = ">=1.16.0,<3.0.0" [package.extras] aws = ["pymongo-auth-aws (>=1.1.0,<2.0.0)"] docs = ["furo (==2024.8.6)", "readthedocs-sphinx-search (>=0.3,<1.0)", "sphinx (>=5.3,<9)", "sphinx-autobuild (>=2020.9.1)", "sphinx-rtd-theme (>=2,<4)", "sphinxcontrib-shellcheck (>=1,<2)"] -encryption = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.12.0,<2.0.0)"] -gssapi = ["pykerberos ; os_name != \"nt\"", "winkerberos (>=0.5.0) ; os_name == \"nt\""] -ocsp = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"] +encryption = ["certifi", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.12.0,<2.0.0)"] +gssapi = ["pykerberos", "winkerberos (>=0.5.0)"] +ocsp = ["certifi", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"] snappy = ["python-snappy"] test = ["pytest (>=8.2)", "pytest-asyncio (>=0.24.0)"] zstd = ["zstandard"] @@ -6457,6 +6675,7 @@ description = "pyparsing module - Classes and methods to define and execute pars optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf"}, {file = "pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be"}, @@ -6472,6 +6691,7 @@ description = "A SQL query builder API for Python" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "PyPika-0.48.9.tar.gz", hash = "sha256:838836a61747e7c8380cd1b7ff638694b7a7335345d0f559b04b2cd832ad5378"}, ] @@ -6483,6 +6703,7 @@ description = "Headless chrome/chromium automation library (unofficial port of p optional = false python-versions = ">=3.8,<4.0" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyppeteer-2.0.0-py3-none-any.whl", hash = "sha256:96f4c574fb36f1d15e02746303ab742b98941f0da58337187e7c1d2ef982adea"}, {file = "pyppeteer-2.0.0.tar.gz", hash = "sha256:4af63473ff36a746a53347b2336a49efda669bcd781e400bc1799b81838358d9"}, @@ -6504,6 +6725,7 @@ description = "Wrappers to call pyproject.toml-based build backend hooks." optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913"}, {file = "pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8"}, @@ -6516,7 +6738,7 @@ description = "A python implementation of GNU readline." optional = false python-versions = ">=3.8" groups = ["test"] -markers = "sys_platform == \"win32\"" +markers = "sys_platform == \"win32\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6"}, {file = "pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7"}, @@ -6532,6 +6754,7 @@ description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, @@ -6555,6 +6778,7 @@ description = "Check links in files" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pytest_check_links-0.10.1-py3-none-any.whl", hash = "sha256:0e4a4313d08d6c5b81a72e133fd8513a3bb0b89d54dec3565da7ae01b74f603e"}, {file = "pytest_check_links-0.10.1.tar.gz", hash = "sha256:7358dd92c8e6c737c8749ec87f5a27c32390445d43182673f89247a1a34d776d"}, @@ -6579,6 +6803,7 @@ description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -6594,6 +6819,7 @@ description = "Read key-value pairs from a .env file and set them as environment optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d"}, {file = "python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5"}, @@ -6609,13 +6835,14 @@ description = "JSON Log Formatter for the Python Logging Package" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7"}, {file = "python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84"}, ] [package.extras] -dev = ["backports.zoneinfo ; python_version < \"3.9\"", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec ; implementation_name != \"pypy\"", "mypy", "orjson ; implementation_name != \"pypy\"", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] +dev = ["backports.zoneinfo", "black", "build", "freezegun", "mdx_truly_sane_lists", "mike", "mkdocs", "mkdocs-awesome-pages-plugin", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-material (>=8.5)", "mkdocstrings[python]", "msgspec", "mypy", "orjson", "pylint", "pytest", "tzdata", "validate-pyproject[all]"] [[package]] name = "pytz" @@ -6624,6 +6851,7 @@ description = "World timezone definitions, modern and historical" optional = false python-versions = "*" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, @@ -6654,7 +6882,7 @@ files = [ {file = "pywin32-310-cp39-cp39-win32.whl", hash = "sha256:851c8d927af0d879221e616ae1f66145253537bbdd321a77e8ef701b443a9a1a"}, {file = "pywin32-310-cp39-cp39-win_amd64.whl", hash = "sha256:96867217335559ac619f00ad70e513c0fcf84b8a3af9fc2bba3b59b97da70475"}, ] -markers = {docs = "platform_python_implementation != \"PyPy\" and sys_platform == \"win32\"", test = "sys_platform == \"win32\" and (python_version < \"3.13\" or platform_python_implementation != \"PyPy\")"} +markers = {docs = "platform_python_implementation != \"PyPy\" and (python_version <= \"3.11\" or python_version >= \"3.12\") and sys_platform == \"win32\"", test = "(python_version < \"3.13\" or platform_python_implementation != \"PyPy\") and sys_platform == \"win32\" and (python_version <= \"3.11\" or python_version >= \"3.12\")"} [[package]] name = "pywinpty" @@ -6663,7 +6891,7 @@ description = "Pseudo terminal support for Windows from Python." optional = false python-versions = ">=3.9" groups = ["docs"] -markers = "os_name == \"nt\"" +markers = "os_name == \"nt\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e"}, {file = "pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca"}, @@ -6681,6 +6909,7 @@ description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -6744,6 +6973,7 @@ description = "A custom YAML tag for referencing environment variables in YAML f optional = false python-versions = ">=3.6" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, @@ -6759,6 +6989,7 @@ description = "Python bindings for 0MQ" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918"}, {file = "pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315"}, @@ -6865,6 +7096,7 @@ description = "Python client for Redis database and key-value store" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "redis-5.2.1-py3-none-any.whl", hash = "sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4"}, {file = "redis-5.2.1.tar.gz", hash = "sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f"}, @@ -6884,6 +7116,7 @@ description = "JSON Referencing + Python" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -6901,6 +7134,7 @@ description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -7005,6 +7239,7 @@ description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -7027,6 +7262,7 @@ description = "OAuthlib authentication support for Requests." optional = false python-versions = ">=3.4" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9"}, {file = "requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36"}, @@ -7046,6 +7282,7 @@ description = "A utility belt for advanced users of python-requests" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, @@ -7061,6 +7298,7 @@ description = "A pure python RFC3339 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -7076,6 +7314,7 @@ description = "Pure python rfc3986 validator" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -7088,6 +7327,7 @@ description = "Render rich text, tables, progress bars, syntax highlighting, mar optional = false python-versions = ">=3.8.0" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0"}, {file = "rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725"}, @@ -7108,6 +7348,7 @@ description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724"}, {file = "rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b"}, @@ -7232,6 +7473,7 @@ description = "Pure-Python RSA implementation" optional = false python-versions = "<4,>=3.6" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, @@ -7247,6 +7489,7 @@ description = "An extremely fast Python linter and code formatter, written in Ru optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd"}, {file = "ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec"}, @@ -7275,6 +7518,7 @@ description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "scikit_learn-1.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d056391530ccd1e501056160e3c9673b4da4805eb67eb2bdf4e983e1f9c9204e"}, {file = "scikit_learn-1.6.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:0c8d036eb937dbb568c6242fa598d551d88fb4399c0344d95c001980ec1c7d36"}, @@ -7330,6 +7574,7 @@ description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "scipy-1.15.2-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:a2ec871edaa863e8213ea5df811cd600734f6400b4af272e1c011e69401218e9"}, {file = "scipy-1.15.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:6f223753c6ea76983af380787611ae1291e3ceb23917393079dcc746ba60cfb5"}, @@ -7385,7 +7630,7 @@ numpy = ">=1.23.5,<2.5" [package.extras] dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy (==1.10.0)", "pycodestyle", "pydevtool", "rich-click", "ruff (>=0.0.292)", "types-psutil", "typing_extensions"] doc = ["intersphinx_registry", "jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.16.5)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0,<8.0.0)", "sphinx-copybutton", "sphinx-design (>=0.4.0)"] -test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja ; sys_platform != \"emscripten\"", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +test = ["Cython", "array-api-strict (>=2.0,<2.1.1)", "asv", "gmpy2", "hypothesis (>=6.30)", "meson", "mpmath", "ninja", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "send2trash" @@ -7394,15 +7639,16 @@ description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, ] [package.extras] -nativelib = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\"", "pywin32 ; sys_platform == \"win32\""] -objc = ["pyobjc-framework-Cocoa ; sys_platform == \"darwin\""] -win32 = ["pywin32 ; sys_platform == \"win32\""] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] +win32 = ["pywin32"] [[package]] name = "setuptools" @@ -7411,19 +7657,20 @@ description = "Easily download, build, install, upgrade, and uninstall Python pa optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "setuptools-79.0.1-py3-none-any.whl", hash = "sha256:e147c0549f27767ba362f9da434eab9c5dc0045d5304feb602a0af001089fc51"}, {file = "setuptools-79.0.1.tar.gz", hash = "sha256:128ce7b8f33c3079fd1b067ecbb4051a66e8526e7b65f6cec075dfc650ddfa88"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\"", "ruff (>=0.8.0) ; sys_platform != \"cygwin\""] -core = ["importlib_metadata (>=6) ; python_version < \"3.10\"", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1) ; python_version < \"3.11\"", "wheel (>=0.43.0)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.8.0)"] +core = ["importlib_metadata (>=6)", "jaraco.functools (>=4)", "jaraco.text (>=3.7)", "more_itertools", "more_itertools (>=8.8)", "packaging (>=24.2)", "platformdirs (>=4.2.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"] enabler = ["pytest-enabler (>=2.2)"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21) ; python_version >= \"3.9\" and sys_platform != \"cygwin\"", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf ; sys_platform != \"cygwin\"", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] -type = ["importlib_metadata (>=7.0.2) ; python_version < \"3.10\"", "jaraco.develop (>=7.21) ; sys_platform != \"cygwin\"", "mypy (==1.14.*)", "pytest-mypy"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.7.2)", "jaraco.test (>=5.5)", "packaging (>=24.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"] +type = ["importlib_metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.14.*)", "pytest-mypy"] [[package]] name = "shellingham" @@ -7432,6 +7679,7 @@ description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -7444,6 +7692,7 @@ description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -7456,6 +7705,7 @@ description = "A pure Python implementation of a sliding window memory map manag optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e"}, {file = "smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5"}, @@ -7468,6 +7718,7 @@ description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -7480,6 +7731,7 @@ description = "A modern CSS selector implementation for Beautiful Soup." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4"}, {file = "soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a"}, @@ -7492,6 +7744,7 @@ description = "Database Abstraction Library" optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "SQLAlchemy-2.0.40-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ae9597cab738e7cc823f04a704fb754a9249f0b6695a6aeb63b74055cd417a96"}, {file = "SQLAlchemy-2.0.40-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a5c21ab099a83d669ebb251fddf8f5cee4d75ea40a5a1653d9c43d60e20867"}, @@ -7588,6 +7841,7 @@ description = "Extract data from python stack frames and tracebacks for informat optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -7608,6 +7862,7 @@ description = "The little ASGI library that shines." optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35"}, {file = "starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5"}, @@ -7626,6 +7881,7 @@ description = "Computer algebra system (CAS) in Python" optional = false python-versions = ">=3.8" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, @@ -7644,6 +7900,7 @@ description = "Retry code until it succeeds" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"}, {file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"}, @@ -7660,7 +7917,7 @@ description = "ANSI color formatting for output in terminal" optional = false python-versions = ">=3.9" groups = ["test"] -markers = "python_version < \"3.13\"" +markers = "python_version < \"3.13\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "termcolor-3.0.1-py3-none-any.whl", hash = "sha256:da1ed4ec8a5dc5b2e17476d859febdb3cccb612be1c36e64511a6f2485c10c69"}, {file = "termcolor-3.0.1.tar.gz", hash = "sha256:a6abd5c6e1284cea2934443ba806e70e5ec8fd2449021be55c280f8a3731b611"}, @@ -7676,6 +7933,7 @@ description = "Tornado websocket backend for the Xterm.js Javascript terminal em optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -7698,6 +7956,7 @@ description = "threadpoolctl" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb"}, {file = "threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e"}, @@ -7710,6 +7969,7 @@ description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tiktoken-0.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:586c16358138b96ea804c034b8acf3f5d3f0258bd2bc3b0227af4af5d622e382"}, {file = "tiktoken-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d9c59ccc528c6c5dd51820b3474402f69d9a9e1d656226848ad68a8d5b2e5108"}, @@ -7758,6 +8018,7 @@ description = "A tiny CSS parser" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -7777,6 +8038,7 @@ description = "" optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tokenizers-0.20.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:31ccab28dbb1a9fe539787210b0026e22debeab1662970f61c2d921f7557f7e4"}, {file = "tokenizers-0.20.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6361191f762bda98c773da418cf511cbaa0cb8d0a1196f16f8c0119bde68ff8"}, @@ -7907,7 +8169,7 @@ description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["main", "docs", "test"] -markers = "python_version == \"3.10\"" +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -7950,6 +8212,7 @@ description = "Tornado is a Python web framework and asynchronous networking lib optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -7971,6 +8234,7 @@ description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -7993,6 +8257,7 @@ description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -8009,6 +8274,7 @@ description = "Tenacious & trustworthy tool calling built on LangGraph." optional = false python-versions = "<4.0,>=3.10" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "trustcall-0.0.39-py3-none-any.whl", hash = "sha256:d7da42e0bba816c0539b2936dfed90ffb3ea8d789e548e73865d416f8ac4ee64"}, {file = "trustcall-0.0.39.tar.gz", hash = "sha256:ec315818224501b9537ce6b7618dbc21be41210c6e8f2e239169a5a00912cd6e"}, @@ -8026,6 +8292,7 @@ description = "Typer, build great CLIs. Easy to code. Based on Python type hints optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc"}, {file = "typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5"}, @@ -8044,6 +8311,7 @@ description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"}, {file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"}, @@ -8056,6 +8324,7 @@ description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "types_pyyaml-6.0.12.20250402-py3-none-any.whl", hash = "sha256:652348fa9e7a203d4b0d21066dfb00760d3cbd5a15ebb7cf8d33c88a49546681"}, {file = "types_pyyaml-6.0.12.20250402.tar.gz", hash = "sha256:d7c13c3e6d335b6af4b0122a01ff1d270aba84ab96d1a1a1063ecba3e13ec075"}, @@ -8068,6 +8337,7 @@ description = "Typing stubs for requests" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "types-requests-2.31.0.6.tar.gz", hash = "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0"}, {file = "types_requests-2.31.0.6-py3-none-any.whl", hash = "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9"}, @@ -8083,6 +8353,7 @@ description = "Typing stubs for urllib3" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, @@ -8099,7 +8370,7 @@ files = [ {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] -markers = {main = "python_version == \"3.10\""} +markers = {main = "python_version < \"3.11\"", docs = "python_version <= \"3.11\" or python_version >= \"3.12\"", test = "python_version <= \"3.11\" or python_version >= \"3.12\""} [[package]] name = "typing-inspect" @@ -8108,6 +8379,7 @@ description = "Runtime inspection utilities for typing module." optional = false python-versions = "*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, @@ -8124,6 +8396,7 @@ description = "Runtime typing introspection tools" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, @@ -8143,7 +8416,7 @@ files = [ {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] -markers = {docs = "sys_platform == \"win32\""} +markers = {docs = "sys_platform == \"win32\" and (python_version <= \"3.11\" or python_version >= \"3.12\")", test = "python_version <= \"3.11\" or python_version >= \"3.12\""} [[package]] name = "uri-template" @@ -8152,6 +8425,7 @@ description = "RFC 6570 URI Template Processor" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -8167,14 +8441,15 @@ description = "HTTP library with thread-safe connection pooling, file post, and optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] -brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -8184,6 +8459,7 @@ description = "The lightning-fast ASGI server." optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403"}, {file = "uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328"}, @@ -8197,12 +8473,12 @@ httptools = {version = ">=0.6.3", optional = true, markers = "extra == \"standar python-dotenv = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} pyyaml = {version = ">=5.1", optional = true, markers = "extra == \"standard\""} typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} -uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\" and extra == \"standard\""} +uvloop = {version = ">=0.14.0,<0.15.0 || >0.15.0,<0.15.1 || >0.15.1", optional = true, markers = "(sys_platform != \"win32\" and sys_platform != \"cygwin\") and platform_python_implementation != \"PyPy\" and extra == \"standard\""} watchfiles = {version = ">=0.13", optional = true, markers = "extra == \"standard\""} websockets = {version = ">=10.4", optional = true, markers = "extra == \"standard\""} [package.extras] -standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" @@ -8211,7 +8487,7 @@ description = "Fast implementation of asyncio event loop on top of libuv" optional = false python-versions = ">=3.8.0" groups = ["test"] -markers = "platform_python_implementation != \"PyPy\" and sys_platform != \"win32\" and sys_platform != \"cygwin\"" +markers = "platform_python_implementation != \"PyPy\" and (python_version <= \"3.11\" or python_version >= \"3.12\") and (sys_platform != \"win32\" and sys_platform != \"cygwin\")" files = [ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, @@ -8264,6 +8540,7 @@ description = "Automatically mock your HTTP interactions to simplify and speed u optional = false python-versions = ">=3.8" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "vcrpy-6.0.2-py2.py3-none-any.whl", hash = "sha256:40370223861181bc76a5e5d4b743a95058bb1ad516c3c08570316ab592f56cad"}, {file = "vcrpy-6.0.2.tar.gz", hash = "sha256:88e13d9111846745898411dbc74a75ce85870af96dd320d75f1ee33158addc09"}, @@ -8288,6 +8565,7 @@ description = "Filesystem events monitoring" optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -8331,6 +8609,7 @@ description = "Simple, modern and high performance file watching and code reload optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "watchfiles-1.0.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5c40fe7dd9e5f81e0847b1ea64e1f5dd79dd61afbedb57759df06767ac719b40"}, {file = "watchfiles-1.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8c0db396e6003d99bb2d7232c957b5f0b5634bbd1b24e381a5afcc880f7373fb"}, @@ -8415,6 +8694,7 @@ description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -8427,6 +8707,7 @@ description = "A library for working with the color formats defined by HTML and optional = false python-versions = ">=3.9" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, @@ -8439,6 +8720,7 @@ description = "Character encoding aliases for legacy web content" optional = false python-versions = "*" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -8451,6 +8733,7 @@ description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, @@ -8468,6 +8751,7 @@ description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = false python-versions = ">=3.7" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "websockets-10.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d58804e996d7d2307173d56c297cf7bc132c52df27a3efaac5e8d43e36c21c48"}, {file = "websockets-10.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc0b82d728fe21a0d03e65f81980abbbcb13b5387f733a1a870672c5be26edab"}, @@ -8547,6 +8831,7 @@ description = "Jupyter interactive widgets for Jupyter Notebook" optional = false python-versions = ">=3.7" groups = ["docs"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575"}, {file = "widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af"}, @@ -8559,14 +8844,14 @@ description = "A small Python utility to set file creation time on Windows" optional = false python-versions = ">=3.5" groups = ["test"] -markers = "sys_platform == \"win32\"" +markers = "sys_platform == \"win32\" and (python_version <= \"3.11\" or python_version >= \"3.12\")" files = [ {file = "win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390"}, {file = "win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0"}, ] [package.extras] -dev = ["black (>=19.3b0) ; python_version >= \"3.6\"", "pytest (>=4.6.2)"] +dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] [[package]] name = "wrapt" @@ -8575,6 +8860,7 @@ description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, @@ -8664,6 +8950,7 @@ description = "WebSockets state-machine based protocol implementation" optional = false python-versions = ">=3.7.0" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"}, {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"}, @@ -8679,6 +8966,7 @@ description = "Python binding for xxHash" optional = false python-versions = ">=3.7" groups = ["main", "docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "xxhash-3.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ece616532c499ee9afbb83078b1b952beffef121d989841f7f4b3dc5ac0fd212"}, {file = "xxhash-3.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3171f693dbc2cef6477054a665dc255d996646b4023fe56cb4db80e26f4cc520"}, @@ -8812,6 +9100,7 @@ description = "Yet another URL library" optional = false python-versions = ">=3.9" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "yarl-1.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f1f6670b9ae3daedb325fa55fbe31c22c8228f6e0b513772c2e1c623caa6ab22"}, {file = "yarl-1.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85a231fa250dfa3308f3c7896cc007a47bc76e9e8e8595c20b7426cac4884c62"}, @@ -8931,17 +9220,18 @@ description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.9" groups = ["test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931"}, {file = "zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [[package]] @@ -8951,6 +9241,7 @@ description = "Zstandard bindings for Python" optional = false python-versions = ">=3.8" groups = ["docs", "test"] +markers = "python_version <= \"3.11\" or python_version >= \"3.12\"" files = [ {file = "zstandard-0.23.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf0a05b6059c0528477fba9054d09179beb63744355cab9f38059548fedd46a9"}, {file = "zstandard-0.23.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc9ca1c9718cb3b06634c7c8dec57d24e9438b2aa9a0f02b8bb36bf478538880"}, @@ -9060,4 +9351,4 @@ cffi = ["cffi (>=1.11)"] [metadata] lock-version = "2.1" python-versions = "^3.10" -content-hash = "6518a82118e019cf79a50ebe1147e203d6537fdafe29b58cb1b7b46d11fa10e5" +content-hash = "4ea147f5c9060b856ea0a450ea78bb6666778d222dac2c3a3cf781b61f140bb6" diff --git a/docs/pyproject.toml b/docs/pyproject.toml index b6fc6521c..7b378ee9a 100644 --- a/docs/pyproject.toml +++ b/docs/pyproject.toml @@ -49,6 +49,7 @@ langchain-anthropic = "^0.3.8" langchain-nomic = "^0.1.3" langchain-fireworks = "^0.2.0" langchain-community = "^0.3.0" +langchain-tavily = "^0.1.5" langchain-experimental = "^0.3.2" langchain-mistralai = "^0.2.6" langgraph-checkpoint-mongodb = "^0.1.0" diff --git a/libs/checkpoint-postgres/poetry.lock b/libs/checkpoint-postgres/poetry.lock index 59a39dc90..4bdca117b 100644 --- a/libs/checkpoint-postgres/poetry.lock +++ b/libs/checkpoint-postgres/poetry.lock @@ -279,31 +279,31 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] diff --git a/libs/checkpoint-sqlite/poetry.lock b/libs/checkpoint-sqlite/poetry.lock index 325878ce0..c419f3d3b 100644 --- a/libs/checkpoint-sqlite/poetry.lock +++ b/libs/checkpoint-sqlite/poetry.lock @@ -215,54 +215,51 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" -groups = ["main", "dev"] -files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, -] - -[[package]] -name = "httpcore" -version = "1.0.5" -description = "A minimal low-level HTTP client." -optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, +] + +[[package]] +name = "httpcore" +version = "0.13.2" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.6" +groups = ["main", "dev"] +files = [ + {file = "httpcore-0.13.2-py3-none-any.whl", hash = "sha256:52b7d9413f6f5592a667de9209d70d4d41aba3fb0540dd7c93475c78b85941e9"}, + {file = "httpcore-0.13.2.tar.gz", hash = "sha256:c16efbdf643e1b57bde0adc12c53b08645d7d92d6d345a3f71adfc2a083e7fd2"}, ] [package.dependencies] -certifi = "*" -h11 = ">=0.13,<0.15" +h11 = "==0.*" +sniffio = "==1.*" [package.extras] -asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] [[package]] name = "httpx" -version = "0.27.2" +version = "0.25.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0"}, - {file = "httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2"}, + {file = "httpx-0.25.1-py3-none-any.whl", hash = "sha256:fec7d6cc5c27c578a391f7e87b9aa7d3d8fbcd034f6399f9f79b45bcc12a866a"}, + {file = "httpx-0.25.1.tar.gz", hash = "sha256:ffd96d5cf901e63863d9f1b4b6807861dbea4d301613415d9e6e57ead15fc5d0"}, ] [package.dependencies] anyio = "*" certifi = "*" -httpcore = "==1.*" +httpcore = "*" idna = "*" sniffio = "*" @@ -271,7 +268,6 @@ brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -zstd = ["zstandard (>=0.18.0)"] [[package]] name = "idna" diff --git a/libs/checkpoint/poetry.lock b/libs/checkpoint/poetry.lock index bb2c5055a..c246955b7 100644 --- a/libs/checkpoint/poetry.lock +++ b/libs/checkpoint/poetry.lock @@ -212,31 +212,31 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] diff --git a/libs/cli/examples/poetry.lock b/libs/cli/examples/poetry.lock index 936020585..d14131f27 100644 --- a/libs/cli/examples/poetry.lock +++ b/libs/cli/examples/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. [[package]] name = "anyio" @@ -6,6 +6,7 @@ version = "4.4.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, @@ -28,6 +29,7 @@ version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, @@ -39,6 +41,7 @@ version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, @@ -53,6 +56,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main"] +markers = "platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -64,6 +69,8 @@ version = "1.2.1" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"}, {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"}, @@ -74,45 +81,48 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.27.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, - {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -120,13 +130,13 @@ anyio = "*" certifi = "*" httpcore = "==1.*" idna = "*" -sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "httpx-sse" @@ -134,6 +144,7 @@ version = "0.4.0" description = "Consume Server-Sent Event (SSE) messages with HTTPX." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, @@ -145,6 +156,7 @@ version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, @@ -156,6 +168,7 @@ version = "0.1.52" description = "CLI for interacting with LangGraph API" optional = false python-versions = "^3.9.0,<4.0" +groups = ["main"] files = [] develop = true @@ -172,6 +185,7 @@ version = "0.1.29" description = "SDK for interacting with LangGraph API" optional = false python-versions = "^3.9.0,<4.0" +groups = ["main"] files = [] develop = true @@ -190,6 +204,7 @@ version = "3.10.5" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "orjson-3.10.5-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:545d493c1f560d5ccfc134803ceb8955a14c3fcb47bbb4b2fee0232646d0b932"}, {file = "orjson-3.10.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4324929c2dd917598212bfd554757feca3e5e0fa60da08be11b4aa8b90013c1"}, @@ -245,6 +260,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -256,12 +272,14 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.11\"" files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.9.0,<4.0" content-hash = "ec5109729f30d2033a10a10e8f8d3ed94c7d96d5d31025b4815b0123664bb063" diff --git a/libs/cli/js-examples/yarn.lock b/libs/cli/js-examples/yarn.lock index 49021efe5..c3bb60b36 100644 --- a/libs/cli/js-examples/yarn.lock +++ b/libs/cli/js-examples/yarn.lock @@ -619,20 +619,30 @@ zod "^3.22.4" zod-to-json-schema "^3.22.3" -"@langchain/langgraph-checkpoint@~0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.6.tgz#69f0c5c9aeefd48dcf0fa1ffa0744d8139a9f27d" - integrity sha512-hQsznlUMFKyOCaN9VtqNSSemfKATujNy5ePM6NX7lruk/Mmi2t7R9SsBnf9G2Yts+IaIwv3vJJaAFYEHfqbc5g== +"@langchain/langgraph-checkpoint@~0.0.17": + version "0.0.17" + resolved "https://registry.yarnpkg.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.17.tgz#d0a8824eb0769567da54262adebe65db4ee6d58f" + integrity sha512-6b3CuVVYx+7x0uWLG+7YXz9j2iBa+tn2AXvkLxzEvaAsLE6Sij++8PPbS2BZzC+S/FPJdWsz6I5bsrqL0BYrCA== dependencies: uuid "^10.0.0" -"@langchain/langgraph@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.2.5.tgz#c42743a59adef03f2e1fea0c198a01694ae34d51" - integrity sha512-H4OgZyGRWZHBaiXXIb9avyB8zI6+3OewKn+UOZ+wUzYLKyF3cnq0cNF4/Ps+gxCa5RtOnsHIqQyRkojfXIOqgA== +"@langchain/langgraph-sdk@~0.0.32": + version "0.0.70" + resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.70.tgz#9589f984b47de5e4a669b6008cbf01427a3d41d0" + integrity sha512-O8I12bfeMVz5fOrXnIcK4IdRf50IqyJTO458V56wAIHLNoi4H8/JHM+2M+Y4H2PtslXIGnvomWqlBd0eY5z/Og== dependencies: - "@langchain/langgraph-checkpoint" "~0.0.6" - double-ended-queue "^2.1.0-0" + "@types/json-schema" "^7.0.15" + p-queue "^6.6.2" + p-retry "4" + uuid "^9.0.0" + +"@langchain/langgraph@^0.2.5": + version "0.2.67" + resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.2.67.tgz#f154e4e8534ca78b2b73a2cd3a901d82790b0d1b" + integrity sha512-tu/ewNIvhIPzeW5GxGzqjmGHinnU/qbNAoLM9czdpci0PCbMysbEJ2pbJrZs7ZjaReWSnr/THkeLPQwqGOM9xw== + dependencies: + "@langchain/langgraph-checkpoint" "~0.0.17" + "@langchain/langgraph-sdk" "~0.0.32" uuid "^10.0.0" zod "^3.23.8" @@ -748,7 +758,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -1422,11 +1432,6 @@ dotenv@^16.4.5: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - integrity sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ== - ejs@^3.1.10: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" @@ -3685,6 +3690,11 @@ uuid@^10.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-to-istanbul@^9.0.1: version "9.3.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" @@ -3795,7 +3805,12 @@ zod-to-json-schema@^3.22.3: resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz#bc7e379c8050462538383e382964c03d8fe008f9" integrity sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw== -zod@^3.22.4, zod@^3.23.8: +zod@^3.22.4: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + +zod@^3.23.8: + version "3.24.3" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.3.tgz#1f40f750a05e477396da64438e0e1c0995dafd87" + integrity sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg== diff --git a/libs/cli/poetry.lock b/libs/cli/poetry.lock index 89fb6b7d4..42744f15e 100644 --- a/libs/cli/poetry.lock +++ b/libs/cli/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. [[package]] name = "annotated-types" @@ -33,7 +33,7 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -292,7 +292,7 @@ files = [ [package.extras] dev = ["Pygments", "build", "chardet", "pre-commit", "pytest", "pytest-cov", "pytest-dependency", "ruff", "tomli", "twine"] hard-encoding-detection = ["chardet"] -toml = ["tomli ; python_version < \"3.11\""] +toml = ["tomli"] types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency"] [[package]] @@ -358,10 +358,10 @@ files = [ cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0) ; python_version >= \"3.8\""] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=3.0.0)"] docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"] -nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2) ; python_version >= \"3.8\""] -pep8test = ["check-sdist ; python_version >= \"3.8\"", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] +nox = ["nox (>=2024.4.15)", "nox[uv] (>=2024.3.2)"] +pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.4)", "ruff (>=0.3.6)"] sdist = ["build (>=1.0.0)"] ssh = ["bcrypt (>=3.1.5)"] test = ["certifi (>=2024)", "cryptography-vectors (==44.0.2)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"] @@ -408,33 +408,33 @@ files = [ [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = true -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main"] markers = "python_version >= \"3.11\"" files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.8" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = true python-versions = ">=3.8" groups = ["main"] markers = "python_version >= \"3.11\"" files = [ - {file = "httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be"}, - {file = "httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -462,7 +462,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] +brotli = ["brotli", "brotlicffi"] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -805,10 +805,10 @@ files = [ ] [package.extras] -dev = ["attrs", "coverage", "eval-type-backport ; python_version < \"3.10\"", "furo", "ipython", "msgpack", "mypy", "pre-commit", "pyright", "pytest", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "tomli ; python_version < \"3.11\"", "tomli_w"] +dev = ["attrs", "coverage", "eval-type-backport", "furo", "ipython", "msgpack", "mypy", "pre-commit", "pyright", "pytest", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "tomli", "tomli_w"] doc = ["furo", "ipython", "sphinx", "sphinx-copybutton", "sphinx-design"] -test = ["attrs", "eval-type-backport ; python_version < \"3.10\"", "msgpack", "pytest", "pyyaml", "tomli ; python_version < \"3.11\"", "tomli_w"] -toml = ["tomli ; python_version < \"3.11\"", "tomli_w"] +test = ["attrs", "eval-type-backport", "msgpack", "pytest", "pyyaml", "tomli", "tomli_w"] +toml = ["tomli", "tomli_w"] yaml = ["pyyaml"] [[package]] @@ -1071,7 +1071,7 @@ typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] +timezone = ["tzdata"] [[package]] name = "pydantic-core" @@ -1604,7 +1604,7 @@ files = [ ] [package.extras] -brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1627,7 +1627,7 @@ click = ">=7.0" h11 = ">=0.8" [package.extras] -standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4)", "httptools (>=0.6.3)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "watchdog" diff --git a/libs/langgraph/langgraph/graph/branch.py b/libs/langgraph/langgraph/graph/branch.py index f80519ec3..c2c6c4da1 100644 --- a/libs/langgraph/langgraph/graph/branch.py +++ b/libs/langgraph/langgraph/graph/branch.py @@ -34,7 +34,7 @@ from langgraph.utils.runnable import ( ) Writer = Callable[ - [Sequence[Union[str, Send]]], + [Sequence[Union[str, Send]], bool], Sequence[Union[ChannelWriteEntry, Send]], ] @@ -142,8 +142,8 @@ class Branch(NamedTuple): ), list( zip_longest( - writer([e for e in self.ends.values() if e != END]), - [str(la) for la, e in self.ends.items() if e != END], + writer([e for e in self.ends.values()], True), + [str(la) for la, e in self.ends.items()], ) ) if self.ends @@ -215,7 +215,7 @@ class Branch(NamedTuple): raise ValueError("Branch did not return a valid destination") if any(p.node == END for p in destinations if isinstance(p, Send)): raise InvalidUpdateError("Cannot send a packet to the END node") - entries = writer(destinations) + entries = writer(destinations, False) if not entries: return input else: diff --git a/libs/langgraph/langgraph/graph/graph.py b/libs/langgraph/langgraph/graph/graph.py index ec23b5351..cbc58e819 100644 --- a/libs/langgraph/langgraph/graph/graph.py +++ b/libs/langgraph/langgraph/graph/graph.py @@ -374,7 +374,7 @@ class CompiledGraph(Pregel): def attach_branch(self, start: str, name: str, branch: Branch) -> None: def get_writes( - packets: Sequence[Union[str, Send]], + packets: Sequence[Union[str, Send]], static: bool = False ) -> Sequence[Union[ChannelWriteEntry, Send]]: return [ ( diff --git a/libs/langgraph/langgraph/graph/state.py b/libs/langgraph/langgraph/graph/state.py index 9604152d4..e88b6db99 100644 --- a/libs/langgraph/langgraph/graph/state.py +++ b/libs/langgraph/langgraph/graph/state.py @@ -843,31 +843,31 @@ class CompiledStateGraph(CompiledGraph): self, start: str, name: str, branch: Branch, *, with_reader: bool = True ) -> None: def get_writes( - packets: Sequence[Union[str, Send]], + packets: Sequence[Union[str, Send]], static: bool = False ) -> Sequence[Union[ChannelWriteEntry, Send]]: - if filtered := [p for p in packets if p != END]: - writes = [ - ( - ChannelWriteEntry(CHANNEL_BRANCH_TO.format(p), None) - if not isinstance(p, Send) - else p + writes = [ + ( + ChannelWriteEntry(CHANNEL_BRANCH_TO.format(p), None) + if not isinstance(p, Send) + else p + ) + for p in packets + if (True if static else p != END) + ] + if not writes: + return [] + if branch.then and branch.then != END: + writes.append( + ChannelWriteEntry( + f"branch:{start}:{name}::then", + WaitForNames( + frozenset( + p.node if isinstance(p, Send) else p for p in packets + ) + ), ) - for p in filtered - ] - if branch.then and branch.then != END: - writes.append( - ChannelWriteEntry( - f"branch:{start}:{name}::then", - WaitForNames( - frozenset( - p.node if isinstance(p, Send) else p - for p in filtered - ) - ), - ) - ) - return writes - return [] + ) + return writes if with_reader: # get schema @@ -1067,13 +1067,9 @@ def _control_static( ends: Union[tuple[str, ...], dict[str, str]], ) -> Sequence[tuple[str, Any, Optional[str]]]: if isinstance(ends, dict): - return [ - (CHANNEL_BRANCH_TO.format(k), None, label) - for k, label in ends.items() - if k != END - ] + return [(CHANNEL_BRANCH_TO.format(k), None, label) for k, label in ends.items()] else: - return [(CHANNEL_BRANCH_TO.format(e), None, None) for e in ends if e != END] + return [(CHANNEL_BRANCH_TO.format(e), None, None) for e in ends] def _get_root(input: Any) -> Optional[Sequence[tuple[str, Any]]]: diff --git a/libs/langgraph/langgraph/pregel/draw.py b/libs/langgraph/langgraph/pregel/draw.py index a32aaeded..44b7c1995 100644 --- a/libs/langgraph/langgraph/pregel/draw.py +++ b/libs/langgraph/langgraph/pregel/draw.py @@ -110,6 +110,11 @@ def draw_graph( static_seen.add(w) # apply static writes if writes := ChannelWrite.get_static_writes(w): + # END writes are not written, but become edges directly + for t in writes: + if t[0] == END: + edges.add((task.name, t[0], True, t[2])) + writes = [t for t in writes if t[0] != END] conditionals.update( {(task.name, *t[:2]): t[2] for t in writes} ) @@ -175,31 +180,36 @@ def draw_graph( if START not in nodes: graph.add_node(None, START) for task in start_tasks.values(): - graph.add_edge(graph.nodes[START], graph.nodes[task.name]) + add_edge(graph, START, task.name) # add discovered edges for src, dest, is_conditional, label in sorted(edges): - graph.add_edge( - graph.nodes[src], - graph.nodes[dest], + add_edge( + graph, + src, + dest, data=label if label != dest else None, conditional=is_conditional, ) # add end edges - if step_sources: - end = graph.add_node(None, END) - termini = {d for _, d, _, _ in edges}.difference(s for s, _, _, _ in edges) - for src in sorted(termini.union(step_sources)): - graph.add_edge(graph.nodes[src], end, conditional=src not in termini) + termini = {d for _, d, _, _ in edges if d != END}.difference( + s for s, _, _, _ in edges + ) + if termini: + for src in sorted(termini): + add_edge(graph, src, END) + elif len(step_sources) == 1: + for src in sorted(step_sources): + add_edge(graph, src, END, conditional=True) # replace subgraphs for name, subgraph in subgraphs.items(): - subgraph.trim_first_node() - subgraph.trim_last_node() if ( len(subgraph.nodes) > 1 and name in graph.nodes and subgraph.first_node() and subgraph.last_node() ): + subgraph.trim_first_node() + subgraph.trim_last_node() # replace the node with the subgraph graph.nodes.pop(name) first, last = graph.extend(subgraph, prefix=name) @@ -210,3 +220,20 @@ def draw_graph( graph.edges[idx] = edge.copy(target=cast(Node, first).id) return graph + + +def add_edge( + graph: Graph, + source: str, + target: str, + *, + data: Optional[Any] = None, + conditional: bool = False, +) -> None: + """Add an edge to the graph.""" + for edge in graph.edges: + if edge.source == source and edge.target == target: + return + if target not in graph.nodes and target == END: + graph.add_node(None, END) + graph.add_edge(graph.nodes[source], graph.nodes[target], data, conditional) diff --git a/libs/langgraph/poetry.lock b/libs/langgraph/poetry.lock index d1c1542f1..d7aba6646 100644 --- a/libs/langgraph/poetry.lock +++ b/libs/langgraph/poetry.lock @@ -706,31 +706,31 @@ files = [ [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.6" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.6-py3-none-any.whl", hash = "sha256:27b59625743b85577a8c0e10e55b50b5368a4f2cfe8cc7bcfa9cf00829c2682f"}, - {file = "httpcore-1.0.6.tar.gz", hash = "sha256:73f6dbd6eb8c21bbf7ef8efad555481853f5f6acdeaff1edb0694289269ee17f"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] diff --git a/libs/langgraph/tests/__snapshots__/test_large_cases.ambr b/libs/langgraph/tests/__snapshots__/test_large_cases.ambr index 35a8de7fc..4a9d05004 100644 --- a/libs/langgraph/tests/__snapshots__/test_large_cases.ambr +++ b/libs/langgraph/tests/__snapshots__/test_large_cases.ambr @@ -86,6 +86,12 @@ "source": "__start__", "target": "agent" }, + { + "source": "agent", + "target": "__end__", + "data": "exit", + "conditional": true + }, { "source": "agent", "target": "tools", @@ -95,11 +101,6 @@ { "source": "tools", "target": "agent" - }, - { - "source": "agent", - "target": "__end__", - "conditional": true } ] } @@ -109,9 +110,9 @@ ''' graph TD; __start__ --> agent; + agent -.  exit  .-> __end__; agent -.  continue  .-> tools; tools --> agent; - agent -.-> __end__; ''' # --- @@ -130,9 +131,9 @@ __start__([

__start__

]):::first __end__([

__end__

]):::last __start__ --> agent; + agent -.  exit  .-> __end__; agent -.  continue  .-> tools; tools --> agent; - agent -.-> __end__; classDef default fill:#f2f0ff,line-height:1.2 classDef first fill-opacity:0 classDef last fill:#bfb6fc diff --git a/libs/langgraph/tests/__snapshots__/test_pregel.ambr b/libs/langgraph/tests/__snapshots__/test_pregel.ambr index 816273093..d4815ce86 100644 --- a/libs/langgraph/tests/__snapshots__/test_pregel.ambr +++ b/libs/langgraph/tests/__snapshots__/test_pregel.ambr @@ -67,7 +67,8 @@ }, { "source": "left", - "target": "__end__" + "target": "__end__", + "conditional": true }, { "source": "right", @@ -82,7 +83,7 @@ graph TD; __start__ -.  go-left  .-> left; __start__ -.  go-right  .-> right; - left --> __end__; + left -.-> __end__; right --> __end__; ''' @@ -481,6 +482,17 @@ ''' # --- +# name: test_migration_graph + ''' + graph TD; + B -.  X  .-> C; + B -.  Y  .-> D; + D --> B; + __start__ --> B; + C --> __end__; + + ''' +# --- # name: test_multiple_sinks_subgraphs ''' --- @@ -532,12 +544,14 @@ --- graph TD; __start__([

__start__

]):::first - inner(inner) side(side) __end__([

__end__

]):::last - __start__ --> inner; - inner --> side; + __start__ --> inner_up; + inner_up --> side; side --> __end__; + subgraph inner + inner_up(up) + end classDef default fill:#f2f0ff,line-height:1.2 classDef first fill-opacity:0 classDef last fill:#bfb6fc @@ -550,8 +564,48 @@ dict({ 'conditional': True, 'source': '__start__', + 'target': 'tool_one', + }), + dict({ + 'conditional': True, + 'source': '__start__', + 'target': 'tool_three', + }), + dict({ + 'conditional': True, + 'source': '__start__', + 'target': 'tool_two:__start__', + }), + dict({ + 'source': 'tool_one', 'target': '__end__', }), + dict({ + 'source': 'tool_three', + 'target': '__end__', + }), + dict({ + 'source': 'tool_two:__end__', + 'target': '__end__', + }), + dict({ + 'conditional': True, + 'source': 'tool_two:__start__', + 'target': 'tool_two:tool_two_fast', + }), + dict({ + 'conditional': True, + 'source': 'tool_two:__start__', + 'target': 'tool_two:tool_two_slow', + }), + dict({ + 'source': 'tool_two:tool_two_fast', + 'target': 'tool_two:__end__', + }), + dict({ + 'source': 'tool_two:tool_two_slow', + 'target': 'tool_two:__end__', + }), ]), 'nodes': list([ dict({ @@ -580,19 +634,6 @@ 'id': 'tool_one', 'type': 'runnable', }), - dict({ - 'data': dict({ - 'id': list([ - 'langgraph', - 'graph', - 'state', - 'CompiledStateGraph', - ]), - 'name': 'tool_two', - }), - 'id': 'tool_two', - 'type': 'runnable', - }), dict({ 'data': dict({ 'id': list([ @@ -609,6 +650,48 @@ dict({ 'id': '__end__', }), + dict({ + 'data': dict({ + 'id': list([ + 'langchain', + 'schema', + 'runnable', + 'RunnablePassthrough', + ]), + 'name': 'tool_two:__start__', + }), + 'id': 'tool_two:__start__', + 'type': 'runnable', + }), + dict({ + 'data': dict({ + 'id': list([ + 'langgraph', + 'utils', + 'runnable', + 'RunnableCallable', + ]), + 'name': 'tool_two:tool_two_slow', + }), + 'id': 'tool_two:tool_two_slow', + 'type': 'runnable', + }), + dict({ + 'data': dict({ + 'id': list([ + 'langgraph', + 'utils', + 'runnable', + 'RunnableCallable', + ]), + 'name': 'tool_two:tool_two_fast', + }), + 'id': 'tool_two:tool_two_fast', + 'type': 'runnable', + }), + dict({ + 'id': 'tool_two:__end__', + }), ]), }) # --- @@ -620,12 +703,26 @@ curve: linear --- graph TD; - __start__(

__start__

) + __start__([

__start__

]):::first tool_one(tool_one) - tool_two(tool_two) tool_three(tool_three) - __end__(

__end__

) - __start__ -.-> __end__; + __end__([

__end__

]):::last + __start__ -.-> tool_one; + __start__ -.-> tool_three; + __start__ -.-> tool_two___start__; + tool_one --> __end__; + tool_three --> __end__; + tool_two___end__ --> __end__; + subgraph tool_two + tool_two___start__(

__start__

) + tool_two_tool_two_slow(tool_two_slow) + tool_two_tool_two_fast(tool_two_fast) + tool_two___end__(

__end__

) + tool_two___start__ -.-> tool_two_tool_two_fast; + tool_two___start__ -.-> tool_two_tool_two_slow; + tool_two_tool_two_fast --> tool_two___end__; + tool_two_tool_two_slow --> tool_two___end__; + end classDef default fill:#f2f0ff,line-height:1.2 classDef first fill-opacity:0 classDef last fill:#bfb6fc @@ -642,9 +739,6 @@ Researcher -.  call_tool  .-> Call_Tool; Researcher -.  continue  .-> Chart_Generator; __start__ --> Researcher; - Call_Tool -.-> __end__; - Chart_Generator -.-> __end__; - Researcher -.-> __end__; Researcher -.  redo  .-> Researcher; ''' @@ -1014,7 +1108,6 @@ dict({ 'id': 'conduct_interview:__end__', }), - ]), }) # --- diff --git a/libs/langgraph/tests/test_pregel.py b/libs/langgraph/tests/test_pregel.py index 3b60a8627..9d0274255 100644 --- a/libs/langgraph/tests/test_pregel.py +++ b/libs/langgraph/tests/test_pregel.py @@ -3492,6 +3492,7 @@ def test_nested_graph_xray(snapshot: SnapshotAssertion) -> None: tool_two_graph.add_node("tool_two_fast", logic) tool_two_graph.set_conditional_entry_point( lambda s: "tool_two_slow" if s["market"] == "DE" else "tool_two_fast", + ["tool_two_slow", "tool_two_fast"], then=END, ) tool_two = tool_two_graph.compile() @@ -3500,7 +3501,9 @@ def test_nested_graph_xray(snapshot: SnapshotAssertion) -> None: graph.add_node("tool_one", logic) graph.add_node("tool_two", tool_two) graph.add_node("tool_three", logic) - graph.set_conditional_entry_point(lambda s: "tool_one", then=END) + graph.set_conditional_entry_point( + lambda s: "tool_one", ["tool_one", "tool_two", "tool_three"], then=END + ) app = graph.compile() assert app.get_graph(xray=True).to_json() == snapshot @@ -8122,3 +8125,44 @@ def test_batch_update_as_input( ] assert new_history == history + + +def test_migration_graph(snapshot: SnapshotAssertion) -> None: + from pydantic import BaseModel + + class DummyState(BaseModel): + pass_count: int = 0 + + def increment_pass_count(state: DummyState): + state.pass_count += 1 + return state + + def route_b(state: DummyState): + if state.pass_count == 0: + return "X" + else: + return "Y" + + migration_graph = StateGraph(DummyState) + + migration_graph.add_node("B", increment_pass_count) + migration_graph.add_node("C", increment_pass_count) + migration_graph.add_node("D", increment_pass_count) + + migration_graph.add_edge(START, "B") + + migration_graph.add_conditional_edges( + "B", + route_b, + { + "X": "C", + "Y": "D", + }, + ) + + migration_graph.add_edge("D", "B") + migration_graph.add_edge("C", END) + + app = migration_graph.compile() + + assert app.get_graph().draw_mermaid(with_styles=False) == snapshot diff --git a/libs/prebuilt/poetry.lock b/libs/prebuilt/poetry.lock index e1b637667..a7908c908 100644 --- a/libs/prebuilt/poetry.lock +++ b/libs/prebuilt/poetry.lock @@ -298,31 +298,31 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] diff --git a/libs/scheduler-kafka/poetry.lock b/libs/scheduler-kafka/poetry.lock index a8bd416fb..e083f2946 100644 --- a/libs/scheduler-kafka/poetry.lock +++ b/libs/scheduler-kafka/poetry.lock @@ -459,37 +459,37 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.5" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, - {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.26.0)"] +trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" diff --git a/libs/sdk-py/poetry.lock b/libs/sdk-py/poetry.lock index 583d001ae..e0a2b1d50 100644 --- a/libs/sdk-py/poetry.lock +++ b/libs/sdk-py/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.0.0 and should not be changed by hand. [[package]] name = "anyio" @@ -6,6 +6,7 @@ version = "4.7.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" +groups = ["main"] files = [ {file = "anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352"}, {file = "anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48"}, @@ -28,6 +29,7 @@ version = "2024.8.30" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, @@ -39,6 +41,7 @@ version = "2.3.0" description = "Codespell" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "codespell-2.3.0-py3-none-any.whl", hash = "sha256:a9c7cef2501c9cfede2110fd6d4e5e62296920efe9abfb84648df866e47f58d1"}, {file = "codespell-2.3.0.tar.gz", hash = "sha256:360c7d10f75e65f67bad720af7007e1060a5d395670ec11a7ed1fed9dd17471f"}, @@ -56,6 +59,7 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -67,6 +71,7 @@ version = "0.6.2" description = "Pythonic argument parser, that will make you smile" optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, ] @@ -77,6 +82,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -87,29 +94,31 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -123,6 +132,7 @@ version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -147,6 +157,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -161,6 +172,7 @@ version = "2.0.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -172,6 +184,7 @@ version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, @@ -225,6 +238,7 @@ version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -236,6 +250,7 @@ version = "3.10.12" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "orjson-3.10.12-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:ece01a7ec71d9940cc654c482907a6b65df27251255097629d0dea781f255c6d"}, {file = "orjson-3.10.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c34ec9aebc04f11f4b978dd6caf697a2df2dd9b47d35aa4cc606cabcb9df69d7"}, @@ -320,6 +335,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -331,6 +347,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -346,6 +363,7 @@ version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -368,6 +386,7 @@ version = "0.21.2" description = "Pytest support for asyncio" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest_asyncio-0.21.2-py3-none-any.whl", hash = "sha256:ab664c88bb7998f711d8039cacd4884da6430886ae8bbd4eded552ed2004f16b"}, {file = "pytest_asyncio-0.21.2.tar.gz", hash = "sha256:d67738fc232b94b326b9d060750beb16e0074210b98dd8b58a5239fa2a154f45"}, @@ -386,6 +405,7 @@ version = "3.14.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0"}, {file = "pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f"}, @@ -403,6 +423,7 @@ version = "4.2.0" description = "Local continuous test runner with pytest and watchdog." optional = false python-versions = "*" +groups = ["dev"] files = [ {file = "pytest-watch-4.2.0.tar.gz", hash = "sha256:06136f03d5b361718b8d0d234042f7b2f203910d8568f63df2f866b547b3d4b9"}, ] @@ -419,6 +440,7 @@ version = "0.6.9" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ruff-0.6.9-py3-none-linux_armv6l.whl", hash = "sha256:064df58d84ccc0ac0fcd63bc3090b251d90e2a372558c0f057c3f75ed73e1ccd"}, {file = "ruff-0.6.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:140d4b5c9f5fc7a7b074908a78ab8d384dd7f6510402267bc76c37195c02a7ec"}, @@ -446,6 +468,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -457,6 +480,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -498,10 +523,12 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] +markers = {main = "python_version < \"3.13\""} [[package]] name = "watchdog" @@ -509,6 +536,7 @@ version = "6.0.0" description = "Filesystem events monitoring" optional = false python-versions = ">=3.9" +groups = ["dev"] files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -546,6 +574,6 @@ files = [ watchmedo = ["PyYAML (>=3.10)"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.9.0,<4.0" content-hash = "1262a6148df18cc44ade00466b6e0f8305897a460eea370c8de649d8d20cd7a2"