From f5eeeeb3dd6f7e55a0999c8b49ddfeb0017e87ca Mon Sep 17 00:00:00 2001 From: Stuart Axelbrooke Date: Wed, 7 May 2025 16:47:59 -0700 Subject: [PATCH] Remove go analyzer --- MODULE.bazel | 2 +- examples/basic_graph/MODULE.bazel.lock | 28 +- examples/basic_graph/test/BUILD.bazel | 10 + examples/basic_graph/test/exec_test.sh | 0 graph/BUILD.bazel | 6 - graph/analyze.go | 495 ------------------------- 6 files changed, 25 insertions(+), 516 deletions(-) mode change 100644 => 100755 examples/basic_graph/test/exec_test.sh delete mode 100644 graph/analyze.go diff --git a/MODULE.bazel b/MODULE.bazel index 7762b5a..f344071 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -15,7 +15,7 @@ crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate") crate.spec(package = "serde", features = ["derive"], version = "1.0") crate.spec(package = "serde_json", version = "1.0") crate.spec(package = "log", version = "0.4") -crate.spec(package = "simple_logger", version = "4.3") +crate.spec(package = "simple_logger", features=["stderr"], version = "4.3") crate.spec(package = "crossbeam-channel", version = "0.5") crate.spec(package = "num_cpus", version = "1.16") crate.spec(package = "tokio", default_features = False, features = ["macros", "net", "rt-multi-thread"], version = "1.38") diff --git a/examples/basic_graph/MODULE.bazel.lock b/examples/basic_graph/MODULE.bazel.lock index 2192f00..b9f5328 100644 --- a/examples/basic_graph/MODULE.bazel.lock +++ b/examples/basic_graph/MODULE.bazel.lock @@ -3373,7 +3373,7 @@ "@@rules_rust+//crate_universe:extensions.bzl%crate": { "general": { "bzlTransitiveDigest": "ZiBDkz0R3InGw/zNaGPmytL3p0tYvJ3HQ+dwzM33SCQ=", - "usagesDigest": "GlpHFapeo9UXALMzV0jv7JH1bYYMfa/CBmT7tjZzzo4=", + "usagesDigest": "2/FO/XhEB8hrSwGBcPc0da1gkPLJwb+7uxzd66WBTts=", "recordedFileInputs": {}, "recordedDirentsInputs": {}, "envVariables": { @@ -3390,9 +3390,9 @@ "repoRuleId": "@@rules_rust+//crate_universe:extensions.bzl%_generate_repo", "attributes": { "contents": { - "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"crossbeam-channel-0.5.15\",\n actual = \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossbeam-channel\",\n actual = \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log-0.4.27\",\n actual = \"@crates__log-0.4.27//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log\",\n actual = \"@crates__log-0.4.27//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"num_cpus-1.16.0\",\n actual = \"@crates__num_cpus-1.16.0//:num_cpus\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"num_cpus\",\n actual = \"@crates__num_cpus-1.16.0//:num_cpus\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-0.13.5\",\n actual = \"@crates__prost-0.13.5//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost\",\n actual = \"@crates__prost-0.13.5//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types-0.13.5\",\n actual = \"@crates__prost-types-0.13.5//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types\",\n actual = \"@crates__prost-types-0.13.5//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.219\",\n actual = \"@crates__serde-1.0.219//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.219//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.140\",\n actual = \"@crates__serde_json-1.0.140//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.140//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"simple_logger-4.3.3\",\n actual = \"@crates__simple_logger-4.3.3//:simple_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"simple_logger\",\n actual = \"@crates__simple_logger-4.3.3//:simple_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-1.44.2\",\n actual = \"@crates__tokio-1.44.2//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio\",\n actual = \"@crates__tokio-1.44.2//:tokio\",\n tags = [\"manual\"],\n)\n", + "BUILD.bazel": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\npackage(default_visibility = [\"//visibility:public\"])\n\nexports_files(\n [\n \"cargo-bazel.json\",\n \"crates.bzl\",\n \"defs.bzl\",\n ] + glob(\n allow_empty = True,\n include = [\"*.bazel\"],\n ),\n)\n\nfilegroup(\n name = \"srcs\",\n srcs = glob(\n allow_empty = True,\n include = [\n \"*.bazel\",\n \"*.bzl\",\n ],\n ),\n)\n\n# Workspace Member Dependencies\nalias(\n name = \"crossbeam-channel-0.5.15\",\n actual = \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"crossbeam-channel\",\n actual = \"@crates__crossbeam-channel-0.5.15//:crossbeam_channel\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log-0.4.27\",\n actual = \"@crates__log-0.4.27//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"log\",\n actual = \"@crates__log-0.4.27//:log\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"num_cpus-1.16.0\",\n actual = \"@crates__num_cpus-1.16.0//:num_cpus\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"num_cpus\",\n actual = \"@crates__num_cpus-1.16.0//:num_cpus\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-0.13.5\",\n actual = \"@crates__prost-0.13.5//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost\",\n actual = \"@crates__prost-0.13.5//:prost\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types-0.13.5\",\n actual = \"@crates__prost-types-0.13.5//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"prost-types\",\n actual = \"@crates__prost-types-0.13.5//:prost_types\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde-1.0.219\",\n actual = \"@crates__serde-1.0.219//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde\",\n actual = \"@crates__serde-1.0.219//:serde\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json-1.0.140\",\n actual = \"@crates__serde_json-1.0.140//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"serde_json\",\n actual = \"@crates__serde_json-1.0.140//:serde_json\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"simple_logger-4.3.3\",\n actual = \"@crates__simple_logger-4.3.3//:simple_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"simple_logger\",\n actual = \"@crates__simple_logger-4.3.3//:simple_logger\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio-1.45.0\",\n actual = \"@crates__tokio-1.45.0//:tokio\",\n tags = [\"manual\"],\n)\n\nalias(\n name = \"tokio\",\n actual = \"@crates__tokio-1.45.0//:tokio\",\n tags = [\"manual\"],\n)\n", "alias_rules.bzl": "\"\"\"Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias=\"opt\"` to enable.\"\"\"\n\nload(\"@rules_cc//cc:defs.bzl\", \"CcInfo\")\nload(\"@rules_rust//rust:rust_common.bzl\", \"COMMON_PROVIDERS\")\n\ndef _transition_alias_impl(ctx):\n # `ctx.attr.actual` is a list of 1 item due to the transition\n providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]\n if CcInfo in ctx.attr.actual[0]:\n providers.append(ctx.attr.actual[0][CcInfo])\n return providers\n\ndef _change_compilation_mode(compilation_mode):\n def _change_compilation_mode_impl(_settings, _attr):\n return {\n \"//command_line_option:compilation_mode\": compilation_mode,\n }\n\n return transition(\n implementation = _change_compilation_mode_impl,\n inputs = [],\n outputs = [\n \"//command_line_option:compilation_mode\",\n ],\n )\n\ndef _transition_alias_rule(compilation_mode):\n return rule(\n implementation = _transition_alias_impl,\n provides = COMMON_PROVIDERS,\n attrs = {\n \"actual\": attr.label(\n mandatory = True,\n doc = \"`rust_library()` target to transition to `compilation_mode=opt`.\",\n providers = COMMON_PROVIDERS,\n cfg = _change_compilation_mode(compilation_mode),\n ),\n \"_allowlist_function_transition\": attr.label(\n default = \"@bazel_tools//tools/allowlists/function_transition_allowlist\",\n ),\n },\n doc = \"Transitions a Rust library crate to the `compilation_mode=opt`.\",\n )\n\ntransition_alias_dbg = _transition_alias_rule(\"dbg\")\ntransition_alias_fastbuild = _transition_alias_rule(\"fastbuild\")\ntransition_alias_opt = _transition_alias_rule(\"opt\")\n", - "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"crossbeam-channel\": Label(\"@crates//:crossbeam-channel-0.5.15\"),\n \"log\": Label(\"@crates//:log-0.4.27\"),\n \"num_cpus\": Label(\"@crates//:num_cpus-1.16.0\"),\n \"prost\": Label(\"@crates//:prost-0.13.5\"),\n \"prost-types\": Label(\"@crates//:prost-types-0.13.5\"),\n \"serde\": Label(\"@crates//:serde-1.0.219\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.140\"),\n \"simple_logger\": Label(\"@crates//:simple_logger-4.3.3\"),\n \"tokio\": Label(\"@crates//:tokio-1.44.2\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-pc-windows-gnullvm\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_arch = \\\"x86_64\\\", target_arch = \\\"arm64ec\\\"), target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"ios\\\", target_os = \\\"freebsd\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(not(all(windows, target_env = \\\"msvc\\\", not(target_vendor = \\\"uwp\\\"))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(windows))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(tokio_taskdump)\": [],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"i686-pc-windows-gnullvm\": [],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-gnullvm\": [],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__addr2line-0.24.2\",\n sha256 = \"dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/addr2line/0.24.2/download\"],\n strip_prefix = \"addr2line-0.24.2\",\n build_file = Label(\"@crates//crates:BUILD.addr2line-0.24.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__adler2-2.0.0\",\n sha256 = \"512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adler2/2.0.0/download\"],\n strip_prefix = \"adler2-2.0.0\",\n build_file = Label(\"@crates//crates:BUILD.adler2-2.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anyhow-1.0.98\",\n sha256 = \"e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anyhow/1.0.98/download\"],\n strip_prefix = \"anyhow-1.0.98\",\n build_file = Label(\"@crates//crates:BUILD.anyhow-1.0.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__backtrace-0.3.74\",\n sha256 = \"8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/backtrace/0.3.74/download\"],\n strip_prefix = \"backtrace-0.3.74\",\n build_file = Label(\"@crates//crates:BUILD.backtrace-0.3.74.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytes-1.10.1\",\n sha256 = \"d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytes/1.10.1/download\"],\n strip_prefix = \"bytes-1.10.1\",\n build_file = Label(\"@crates//crates:BUILD.bytes-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.0\",\n sha256 = \"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.0/download\"],\n strip_prefix = \"cfg-if-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colored-2.2.0\",\n sha256 = \"117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colored/2.2.0/download\"],\n strip_prefix = \"colored-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.colored-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-channel-0.5.15\",\n sha256 = \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-channel/0.5.15/download\"],\n strip_prefix = \"crossbeam-channel-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-channel-0.5.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.21\",\n sha256 = \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.21/download\"],\n strip_prefix = \"crossbeam-utils-0.8.21\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deranged-0.4.0\",\n sha256 = \"9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deranged/0.4.0/download\"],\n strip_prefix = \"deranged-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.deranged-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.15.0\",\n sha256 = \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.15.0/download\"],\n strip_prefix = \"either-1.15.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__gimli-0.31.1\",\n sha256 = \"07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gimli/0.31.1/download\"],\n strip_prefix = \"gimli-0.31.1\",\n build_file = Label(\"@crates//crates:BUILD.gimli-0.31.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hermit-abi-0.3.9\",\n sha256 = \"d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hermit-abi/0.3.9/download\"],\n strip_prefix = \"hermit-abi-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.hermit-abi-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.15\",\n sha256 = \"4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.15/download\"],\n strip_prefix = \"itoa-1.0.15\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lazy_static-1.5.0\",\n sha256 = \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazy_static/1.5.0/download\"],\n strip_prefix = \"lazy_static-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.lazy_static-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.172\",\n sha256 = \"d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.172/download\"],\n strip_prefix = \"libc-0.2.172\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.172.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__log-0.4.27\",\n sha256 = \"13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.27/download\"],\n strip_prefix = \"log-0.4.27\",\n build_file = Label(\"@crates//crates:BUILD.log-0.4.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.7.4\",\n sha256 = \"78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.7.4/download\"],\n strip_prefix = \"memchr-2.7.4\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__miniz_oxide-0.8.8\",\n sha256 = \"3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/miniz_oxide/0.8.8/download\"],\n strip_prefix = \"miniz_oxide-0.8.8\",\n build_file = Label(\"@crates//crates:BUILD.miniz_oxide-0.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mio-1.0.3\",\n sha256 = \"2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/1.0.3/download\"],\n strip_prefix = \"mio-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.mio-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-conv-0.1.0\",\n sha256 = \"51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-conv/0.1.0/download\"],\n strip_prefix = \"num-conv-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.num-conv-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_cpus-1.16.0\",\n sha256 = \"4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_cpus/1.16.0/download\"],\n strip_prefix = \"num_cpus-1.16.0\",\n build_file = Label(\"@crates//crates:BUILD.num_cpus-1.16.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_threads-0.1.7\",\n sha256 = \"5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_threads/0.1.7/download\"],\n strip_prefix = \"num_threads-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.num_threads-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__object-0.36.7\",\n sha256 = \"62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/object/0.36.7/download\"],\n strip_prefix = \"object-0.36.7\",\n build_file = Label(\"@crates//crates:BUILD.object-0.36.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.16\",\n sha256 = \"3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.16/download\"],\n strip_prefix = \"pin-project-lite-0.2.16\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__powerfmt-0.2.0\",\n sha256 = \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/powerfmt/0.2.0/download\"],\n strip_prefix = \"powerfmt-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.powerfmt-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.95\",\n sha256 = \"02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.95/download\"],\n strip_prefix = \"proc-macro2-1.0.95\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.95.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-0.13.5\",\n sha256 = \"2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.13.5/download\"],\n strip_prefix = \"prost-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-derive-0.13.5\",\n sha256 = \"8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.13.5/download\"],\n strip_prefix = \"prost-derive-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-derive-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-types-0.13.5\",\n sha256 = \"52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-types/0.13.5/download\"],\n strip_prefix = \"prost-types-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-types-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.40\",\n sha256 = \"1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.40/download\"],\n strip_prefix = \"quote-1.0.40\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-demangle-0.1.24\",\n sha256 = \"719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-demangle/0.1.24/download\"],\n strip_prefix = \"rustc-demangle-0.1.24\",\n build_file = Label(\"@crates//crates:BUILD.rustc-demangle-0.1.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.20\",\n sha256 = \"28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.20/download\"],\n strip_prefix = \"ryu-1.0.20\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.219\",\n sha256 = \"5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.219/download\"],\n strip_prefix = \"serde-1.0.219\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.219.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.219\",\n sha256 = \"5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.219/download\"],\n strip_prefix = \"serde_derive-1.0.219\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.219.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.140\",\n sha256 = \"20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.140/download\"],\n strip_prefix = \"serde_json-1.0.140\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.140.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simple_logger-4.3.3\",\n sha256 = \"8e7e46c8c90251d47d08b28b8a419ffb4aede0f87c2eea95e17d1d5bacbf3ef1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simple_logger/4.3.3/download\"],\n strip_prefix = \"simple_logger-4.3.3\",\n build_file = Label(\"@crates//crates:BUILD.simple_logger-4.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.5.9\",\n sha256 = \"4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.5.9/download\"],\n strip_prefix = \"socket2-0.5.9\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.5.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.101\",\n sha256 = \"8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.101/download\"],\n strip_prefix = \"syn-2.0.101\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.101.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-0.3.41\",\n sha256 = \"8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time/0.3.41/download\"],\n strip_prefix = \"time-0.3.41\",\n build_file = Label(\"@crates//crates:BUILD.time-0.3.41.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-core-0.1.4\",\n sha256 = \"c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-core/0.1.4/download\"],\n strip_prefix = \"time-core-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.time-core-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-macros-0.2.22\",\n sha256 = \"3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-macros/0.2.22/download\"],\n strip_prefix = \"time-macros-0.2.22\",\n build_file = Label(\"@crates//crates:BUILD.time-macros-0.2.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-1.44.2\",\n sha256 = \"e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio/1.44.2/download\"],\n strip_prefix = \"tokio-1.44.2\",\n build_file = Label(\"@crates//crates:BUILD.tokio-1.44.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-macros-2.5.0\",\n sha256 = \"6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-macros/2.5.0/download\"],\n strip_prefix = \"tokio-macros-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.tokio-macros-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.18\",\n sha256 = \"5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.18/download\"],\n strip_prefix = \"unicode-ident-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasi-0.11.0-wasi-snapshot-preview1\",\n sha256 = \"9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasi/0.11.0+wasi-snapshot-preview1/download\"],\n strip_prefix = \"wasi-0.11.0+wasi-snapshot-preview1\",\n build_file = Label(\"@crates//crates:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.48.0\",\n sha256 = \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.48.0/download\"],\n strip_prefix = \"windows-sys-0.48.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.48.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.52.0\",\n sha256 = \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.52.0/download\"],\n strip_prefix = \"windows-sys-0.52.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.52.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.59.0\",\n sha256 = \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.59.0/download\"],\n strip_prefix = \"windows-sys-0.59.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.59.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.48.5\",\n sha256 = \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.48.5/download\"],\n strip_prefix = \"windows-targets-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.52.6\",\n sha256 = \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.52.6/download\"],\n strip_prefix = \"windows-targets-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.48.5\",\n sha256 = \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.52.6\",\n sha256 = \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.48.5\",\n sha256 = \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.52.6\",\n sha256 = \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.48.5\",\n sha256 = \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.48.5/download\"],\n strip_prefix = \"windows_i686_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.52.6\",\n sha256 = \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.52.6\",\n sha256 = \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.48.5\",\n sha256 = \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.48.5/download\"],\n strip_prefix = \"windows_i686_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.52.6\",\n sha256 = \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.52.6/download\"],\n strip_prefix = \"windows_i686_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.48.5\",\n sha256 = \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.52.6\",\n sha256 = \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.48.5\",\n sha256 = \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.52.6\",\n sha256 = \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.48.5\",\n sha256 = \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.52.6\",\n sha256 = \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.52.6.bazel\"),\n )\n\n return [\n struct(repo=\"crates__crossbeam-channel-0.5.15\", is_dev_dep = False),\n struct(repo=\"crates__log-0.4.27\", is_dev_dep = False),\n struct(repo=\"crates__num_cpus-1.16.0\", is_dev_dep = False),\n struct(repo=\"crates__prost-0.13.5\", is_dev_dep = False),\n struct(repo=\"crates__prost-types-0.13.5\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.219\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.140\", is_dev_dep = False),\n struct(repo=\"crates__simple_logger-4.3.3\", is_dev_dep = False),\n struct(repo=\"crates__tokio-1.44.2\", is_dev_dep = False),\n ]\n" + "defs.bzl": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\"\"\"\n# `crates_repository` API\n\n- [aliases](#aliases)\n- [crate_deps](#crate_deps)\n- [all_crate_deps](#all_crate_deps)\n- [crate_repositories](#crate_repositories)\n\n\"\"\"\n\nload(\"@bazel_tools//tools/build_defs/repo:git.bzl\", \"new_git_repository\")\nload(\"@bazel_tools//tools/build_defs/repo:http.bzl\", \"http_archive\")\nload(\"@bazel_tools//tools/build_defs/repo:utils.bzl\", \"maybe\")\nload(\"@bazel_skylib//lib:selects.bzl\", \"selects\")\nload(\"@rules_rust//crate_universe/private:local_crate_mirror.bzl\", \"local_crate_mirror\")\n\n###############################################################################\n# MACROS API\n###############################################################################\n\n# An identifier that represent common dependencies (unconditional).\n_COMMON_CONDITION = \"\"\n\ndef _flatten_dependency_maps(all_dependency_maps):\n \"\"\"Flatten a list of dependency maps into one dictionary.\n\n Dependency maps have the following structure:\n\n ```python\n DEPENDENCIES_MAP = {\n # The first key in the map is a Bazel package\n # name of the workspace this file is defined in.\n \"workspace_member_package\": {\n\n # Not all dependencies are supported for all platforms.\n # the condition key is the condition required to be true\n # on the host platform.\n \"condition\": {\n\n # An alias to a crate target. # The label of the crate target the\n # Aliases are only crate names. # package name refers to.\n \"package_name\": \"@full//:label\",\n }\n }\n }\n ```\n\n Args:\n all_dependency_maps (list): A list of dicts as described above\n\n Returns:\n dict: A dictionary as described above\n \"\"\"\n dependencies = {}\n\n for workspace_deps_map in all_dependency_maps:\n for pkg_name, conditional_deps_map in workspace_deps_map.items():\n if pkg_name not in dependencies:\n non_frozen_map = dict()\n for key, values in conditional_deps_map.items():\n non_frozen_map.update({key: dict(values.items())})\n dependencies.setdefault(pkg_name, non_frozen_map)\n continue\n\n for condition, deps_map in conditional_deps_map.items():\n # If the condition has not been recorded, do so and continue\n if condition not in dependencies[pkg_name]:\n dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))\n continue\n\n # Alert on any miss-matched dependencies\n inconsistent_entries = []\n for crate_name, crate_label in deps_map.items():\n existing = dependencies[pkg_name][condition].get(crate_name)\n if existing and existing != crate_label:\n inconsistent_entries.append((crate_name, existing, crate_label))\n dependencies[pkg_name][condition].update({crate_name: crate_label})\n\n return dependencies\n\ndef crate_deps(deps, package_name = None):\n \"\"\"Finds the fully qualified label of the requested crates for the package where this macro is called.\n\n Args:\n deps (list): The desired list of crate targets.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()`.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if not deps:\n return []\n\n if package_name == None:\n package_name = native.package_name()\n\n # Join both sets of dependencies\n dependencies = _flatten_dependency_maps([\n _NORMAL_DEPENDENCIES,\n _NORMAL_DEV_DEPENDENCIES,\n _PROC_MACRO_DEPENDENCIES,\n _PROC_MACRO_DEV_DEPENDENCIES,\n _BUILD_DEPENDENCIES,\n _BUILD_PROC_MACRO_DEPENDENCIES,\n ]).pop(package_name, {})\n\n # Combine all conditional packages so we can easily index over a flat list\n # TODO: Perhaps this should actually return select statements and maintain\n # the conditionals of the dependencies\n flat_deps = {}\n for deps_set in dependencies.values():\n for crate_name, crate_label in deps_set.items():\n flat_deps.update({crate_name: crate_label})\n\n missing_crates = []\n crate_targets = []\n for crate_target in deps:\n if crate_target not in flat_deps:\n missing_crates.append(crate_target)\n else:\n crate_targets.append(flat_deps[crate_target])\n\n if missing_crates:\n fail(\"Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`\".format(\n missing_crates,\n package_name,\n dependencies,\n ))\n\n return crate_targets\n\ndef all_crate_deps(\n normal = False, \n normal_dev = False, \n proc_macro = False, \n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Finds the fully qualified label of all requested direct crate dependencies \\\n for the package where this macro is called.\n\n If no parameters are set, all normal dependencies are returned. Setting any one flag will\n otherwise impact the contents of the returned list.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n list: A list of labels to generated rust targets (str)\n \"\"\"\n\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_dependency_maps = []\n if normal:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n if normal_dev:\n all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)\n if proc_macro:\n all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)\n if proc_macro_dev:\n all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)\n if build:\n all_dependency_maps.append(_BUILD_DEPENDENCIES)\n if build_proc_macro:\n all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)\n\n # Default to always using normal dependencies\n if not all_dependency_maps:\n all_dependency_maps.append(_NORMAL_DEPENDENCIES)\n\n dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)\n\n if not dependencies:\n if dependencies == None:\n fail(\"Tried to get all_crate_deps for package \" + package_name + \" but that package had no Cargo.toml file\")\n else:\n return []\n\n crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())\n for condition, deps in dependencies.items():\n crate_deps += selects.with_or({\n tuple(_CONDITIONS[condition]): deps.values(),\n \"//conditions:default\": [],\n })\n\n return crate_deps\n\ndef aliases(\n normal = False,\n normal_dev = False,\n proc_macro = False,\n proc_macro_dev = False,\n build = False,\n build_proc_macro = False,\n package_name = None):\n \"\"\"Produces a map of Crate alias names to their original label\n\n If no dependency kinds are specified, `normal` and `proc_macro` are used by default.\n Setting any one flag will otherwise determine the contents of the returned dict.\n\n Args:\n normal (bool, optional): If True, normal dependencies are included in the\n output list.\n normal_dev (bool, optional): If True, normal dev dependencies will be\n included in the output list..\n proc_macro (bool, optional): If True, proc_macro dependencies are included\n in the output list.\n proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are\n included in the output list.\n build (bool, optional): If True, build dependencies are included\n in the output list.\n build_proc_macro (bool, optional): If True, build proc_macro dependencies are\n included in the output list.\n package_name (str, optional): The package name of the set of dependencies to look up.\n Defaults to `native.package_name()` when unset.\n\n Returns:\n dict: The aliases of all associated packages\n \"\"\"\n if package_name == None:\n package_name = native.package_name()\n\n # Determine the relevant maps to use\n all_aliases_maps = []\n if normal:\n all_aliases_maps.append(_NORMAL_ALIASES)\n if normal_dev:\n all_aliases_maps.append(_NORMAL_DEV_ALIASES)\n if proc_macro:\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n if proc_macro_dev:\n all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)\n if build:\n all_aliases_maps.append(_BUILD_ALIASES)\n if build_proc_macro:\n all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)\n\n # Default to always using normal aliases\n if not all_aliases_maps:\n all_aliases_maps.append(_NORMAL_ALIASES)\n all_aliases_maps.append(_PROC_MACRO_ALIASES)\n\n aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)\n\n if not aliases:\n return dict()\n\n common_items = aliases.pop(_COMMON_CONDITION, {}).items()\n\n # If there are only common items in the dictionary, immediately return them\n if not len(aliases.keys()) == 1:\n return dict(common_items)\n\n # Build a single select statement where each conditional has accounted for the\n # common set of aliases.\n crate_aliases = {\"//conditions:default\": dict(common_items)}\n for condition, deps in aliases.items():\n condition_triples = _CONDITIONS[condition]\n for triple in condition_triples:\n if triple in crate_aliases:\n crate_aliases[triple].update(deps)\n else:\n crate_aliases.update({triple: dict(deps.items() + common_items)})\n\n return select(crate_aliases)\n\n###############################################################################\n# WORKSPACE MEMBER DEPS AND ALIASES\n###############################################################################\n\n_NORMAL_DEPENDENCIES = {\n \"\": {\n _COMMON_CONDITION: {\n \"crossbeam-channel\": Label(\"@crates//:crossbeam-channel-0.5.15\"),\n \"log\": Label(\"@crates//:log-0.4.27\"),\n \"num_cpus\": Label(\"@crates//:num_cpus-1.16.0\"),\n \"prost\": Label(\"@crates//:prost-0.13.5\"),\n \"prost-types\": Label(\"@crates//:prost-types-0.13.5\"),\n \"serde\": Label(\"@crates//:serde-1.0.219\"),\n \"serde_json\": Label(\"@crates//:serde_json-1.0.140\"),\n \"simple_logger\": Label(\"@crates//:simple_logger-4.3.3\"),\n \"tokio\": Label(\"@crates//:tokio-1.45.0\"),\n },\n },\n}\n\n\n_NORMAL_ALIASES = {\n \"\": {\n _COMMON_CONDITION: {\n },\n },\n}\n\n\n_NORMAL_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_NORMAL_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_PROC_MACRO_DEV_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_ALIASES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_DEPENDENCIES = {\n \"\": {\n },\n}\n\n\n_BUILD_PROC_MACRO_ALIASES = {\n \"\": {\n },\n}\n\n\n_CONDITIONS = {\n \"aarch64-apple-darwin\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"aarch64-pc-windows-gnullvm\": [],\n \"aarch64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\"],\n \"cfg(all(any(target_arch = \\\"x86_64\\\", target_arch = \\\"arm64ec\\\"), target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(all(target_arch = \\\"aarch64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"gnu\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"gnu\\\", not(target_abi = \\\"llvm\\\"), not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(all(target_arch = \\\"x86_64\\\", target_env = \\\"msvc\\\", not(windows_raw_dylib)))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(any(target_os = \\\"macos\\\", target_os = \\\"ios\\\", target_os = \\\"freebsd\\\"))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\"],\n \"cfg(any(windows, target_os = \\\"cygwin\\\"))\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"cfg(not(all(windows, target_env = \\\"msvc\\\", not(target_vendor = \\\"uwp\\\"))))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(not(windows))\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:wasm32-unknown-unknown\",\"@rules_rust//rust/platform:wasm32-wasip1\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(target_os = \\\"hermit\\\")\": [],\n \"cfg(target_os = \\\"wasi\\\")\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"cfg(tokio_taskdump)\": [],\n \"cfg(unix)\": [\"@rules_rust//rust/platform:aarch64-apple-darwin\",\"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"cfg(windows)\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"i686-pc-windows-gnullvm\": [],\n \"wasm32-unknown-unknown\": [\"@rules_rust//rust/platform:wasm32-unknown-unknown\"],\n \"wasm32-wasip1\": [\"@rules_rust//rust/platform:wasm32-wasip1\"],\n \"x86_64-pc-windows-gnullvm\": [],\n \"x86_64-pc-windows-msvc\": [\"@rules_rust//rust/platform:x86_64-pc-windows-msvc\"],\n \"x86_64-unknown-linux-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\",\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n \"x86_64-unknown-nixos-gnu\": [\"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\"],\n}\n\n###############################################################################\n\ndef crate_repositories():\n \"\"\"A macro for defining repositories for all generated crates.\n\n Returns:\n A list of repos visible to the module through the module extension.\n \"\"\"\n maybe(\n http_archive,\n name = \"crates__addr2line-0.24.2\",\n sha256 = \"dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/addr2line/0.24.2/download\"],\n strip_prefix = \"addr2line-0.24.2\",\n build_file = Label(\"@crates//crates:BUILD.addr2line-0.24.2.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__adler2-2.0.0\",\n sha256 = \"512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/adler2/2.0.0/download\"],\n strip_prefix = \"adler2-2.0.0\",\n build_file = Label(\"@crates//crates:BUILD.adler2-2.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__anyhow-1.0.98\",\n sha256 = \"e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/anyhow/1.0.98/download\"],\n strip_prefix = \"anyhow-1.0.98\",\n build_file = Label(\"@crates//crates:BUILD.anyhow-1.0.98.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__backtrace-0.3.75\",\n sha256 = \"6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/backtrace/0.3.75/download\"],\n strip_prefix = \"backtrace-0.3.75\",\n build_file = Label(\"@crates//crates:BUILD.backtrace-0.3.75.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__bytes-1.10.1\",\n sha256 = \"d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/bytes/1.10.1/download\"],\n strip_prefix = \"bytes-1.10.1\",\n build_file = Label(\"@crates//crates:BUILD.bytes-1.10.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__cfg-if-1.0.0\",\n sha256 = \"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/cfg-if/1.0.0/download\"],\n strip_prefix = \"cfg-if-1.0.0\",\n build_file = Label(\"@crates//crates:BUILD.cfg-if-1.0.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__colored-2.2.0\",\n sha256 = \"117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/colored/2.2.0/download\"],\n strip_prefix = \"colored-2.2.0\",\n build_file = Label(\"@crates//crates:BUILD.colored-2.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-channel-0.5.15\",\n sha256 = \"82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-channel/0.5.15/download\"],\n strip_prefix = \"crossbeam-channel-0.5.15\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-channel-0.5.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__crossbeam-utils-0.8.21\",\n sha256 = \"d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/crossbeam-utils/0.8.21/download\"],\n strip_prefix = \"crossbeam-utils-0.8.21\",\n build_file = Label(\"@crates//crates:BUILD.crossbeam-utils-0.8.21.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__deranged-0.4.0\",\n sha256 = \"9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/deranged/0.4.0/download\"],\n strip_prefix = \"deranged-0.4.0\",\n build_file = Label(\"@crates//crates:BUILD.deranged-0.4.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__either-1.15.0\",\n sha256 = \"48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/either/1.15.0/download\"],\n strip_prefix = \"either-1.15.0\",\n build_file = Label(\"@crates//crates:BUILD.either-1.15.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__gimli-0.31.1\",\n sha256 = \"07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/gimli/0.31.1/download\"],\n strip_prefix = \"gimli-0.31.1\",\n build_file = Label(\"@crates//crates:BUILD.gimli-0.31.1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__hermit-abi-0.3.9\",\n sha256 = \"d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/hermit-abi/0.3.9/download\"],\n strip_prefix = \"hermit-abi-0.3.9\",\n build_file = Label(\"@crates//crates:BUILD.hermit-abi-0.3.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itertools-0.14.0\",\n sha256 = \"2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itertools/0.14.0/download\"],\n strip_prefix = \"itertools-0.14.0\",\n build_file = Label(\"@crates//crates:BUILD.itertools-0.14.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__itoa-1.0.15\",\n sha256 = \"4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/itoa/1.0.15/download\"],\n strip_prefix = \"itoa-1.0.15\",\n build_file = Label(\"@crates//crates:BUILD.itoa-1.0.15.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__lazy_static-1.5.0\",\n sha256 = \"bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/lazy_static/1.5.0/download\"],\n strip_prefix = \"lazy_static-1.5.0\",\n build_file = Label(\"@crates//crates:BUILD.lazy_static-1.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__libc-0.2.172\",\n sha256 = \"d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/libc/0.2.172/download\"],\n strip_prefix = \"libc-0.2.172\",\n build_file = Label(\"@crates//crates:BUILD.libc-0.2.172.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__log-0.4.27\",\n sha256 = \"13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/log/0.4.27/download\"],\n strip_prefix = \"log-0.4.27\",\n build_file = Label(\"@crates//crates:BUILD.log-0.4.27.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__memchr-2.7.4\",\n sha256 = \"78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/memchr/2.7.4/download\"],\n strip_prefix = \"memchr-2.7.4\",\n build_file = Label(\"@crates//crates:BUILD.memchr-2.7.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__miniz_oxide-0.8.8\",\n sha256 = \"3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/miniz_oxide/0.8.8/download\"],\n strip_prefix = \"miniz_oxide-0.8.8\",\n build_file = Label(\"@crates//crates:BUILD.miniz_oxide-0.8.8.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__mio-1.0.3\",\n sha256 = \"2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/mio/1.0.3/download\"],\n strip_prefix = \"mio-1.0.3\",\n build_file = Label(\"@crates//crates:BUILD.mio-1.0.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num-conv-0.1.0\",\n sha256 = \"51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num-conv/0.1.0/download\"],\n strip_prefix = \"num-conv-0.1.0\",\n build_file = Label(\"@crates//crates:BUILD.num-conv-0.1.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_cpus-1.16.0\",\n sha256 = \"4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_cpus/1.16.0/download\"],\n strip_prefix = \"num_cpus-1.16.0\",\n build_file = Label(\"@crates//crates:BUILD.num_cpus-1.16.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__num_threads-0.1.7\",\n sha256 = \"5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/num_threads/0.1.7/download\"],\n strip_prefix = \"num_threads-0.1.7\",\n build_file = Label(\"@crates//crates:BUILD.num_threads-0.1.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__object-0.36.7\",\n sha256 = \"62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/object/0.36.7/download\"],\n strip_prefix = \"object-0.36.7\",\n build_file = Label(\"@crates//crates:BUILD.object-0.36.7.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__pin-project-lite-0.2.16\",\n sha256 = \"3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/pin-project-lite/0.2.16/download\"],\n strip_prefix = \"pin-project-lite-0.2.16\",\n build_file = Label(\"@crates//crates:BUILD.pin-project-lite-0.2.16.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__powerfmt-0.2.0\",\n sha256 = \"439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/powerfmt/0.2.0/download\"],\n strip_prefix = \"powerfmt-0.2.0\",\n build_file = Label(\"@crates//crates:BUILD.powerfmt-0.2.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__proc-macro2-1.0.95\",\n sha256 = \"02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/proc-macro2/1.0.95/download\"],\n strip_prefix = \"proc-macro2-1.0.95\",\n build_file = Label(\"@crates//crates:BUILD.proc-macro2-1.0.95.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-0.13.5\",\n sha256 = \"2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost/0.13.5/download\"],\n strip_prefix = \"prost-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-derive-0.13.5\",\n sha256 = \"8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-derive/0.13.5/download\"],\n strip_prefix = \"prost-derive-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-derive-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__prost-types-0.13.5\",\n sha256 = \"52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/prost-types/0.13.5/download\"],\n strip_prefix = \"prost-types-0.13.5\",\n build_file = Label(\"@crates//crates:BUILD.prost-types-0.13.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__quote-1.0.40\",\n sha256 = \"1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/quote/1.0.40/download\"],\n strip_prefix = \"quote-1.0.40\",\n build_file = Label(\"@crates//crates:BUILD.quote-1.0.40.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__rustc-demangle-0.1.24\",\n sha256 = \"719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/rustc-demangle/0.1.24/download\"],\n strip_prefix = \"rustc-demangle-0.1.24\",\n build_file = Label(\"@crates//crates:BUILD.rustc-demangle-0.1.24.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__ryu-1.0.20\",\n sha256 = \"28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/ryu/1.0.20/download\"],\n strip_prefix = \"ryu-1.0.20\",\n build_file = Label(\"@crates//crates:BUILD.ryu-1.0.20.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde-1.0.219\",\n sha256 = \"5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde/1.0.219/download\"],\n strip_prefix = \"serde-1.0.219\",\n build_file = Label(\"@crates//crates:BUILD.serde-1.0.219.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_derive-1.0.219\",\n sha256 = \"5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_derive/1.0.219/download\"],\n strip_prefix = \"serde_derive-1.0.219\",\n build_file = Label(\"@crates//crates:BUILD.serde_derive-1.0.219.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__serde_json-1.0.140\",\n sha256 = \"20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/serde_json/1.0.140/download\"],\n strip_prefix = \"serde_json-1.0.140\",\n build_file = Label(\"@crates//crates:BUILD.serde_json-1.0.140.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__simple_logger-4.3.3\",\n sha256 = \"8e7e46c8c90251d47d08b28b8a419ffb4aede0f87c2eea95e17d1d5bacbf3ef1\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/simple_logger/4.3.3/download\"],\n strip_prefix = \"simple_logger-4.3.3\",\n build_file = Label(\"@crates//crates:BUILD.simple_logger-4.3.3.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__socket2-0.5.9\",\n sha256 = \"4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/socket2/0.5.9/download\"],\n strip_prefix = \"socket2-0.5.9\",\n build_file = Label(\"@crates//crates:BUILD.socket2-0.5.9.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__syn-2.0.101\",\n sha256 = \"8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/syn/2.0.101/download\"],\n strip_prefix = \"syn-2.0.101\",\n build_file = Label(\"@crates//crates:BUILD.syn-2.0.101.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-0.3.41\",\n sha256 = \"8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time/0.3.41/download\"],\n strip_prefix = \"time-0.3.41\",\n build_file = Label(\"@crates//crates:BUILD.time-0.3.41.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-core-0.1.4\",\n sha256 = \"c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-core/0.1.4/download\"],\n strip_prefix = \"time-core-0.1.4\",\n build_file = Label(\"@crates//crates:BUILD.time-core-0.1.4.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__time-macros-0.2.22\",\n sha256 = \"3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/time-macros/0.2.22/download\"],\n strip_prefix = \"time-macros-0.2.22\",\n build_file = Label(\"@crates//crates:BUILD.time-macros-0.2.22.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-1.45.0\",\n sha256 = \"2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio/1.45.0/download\"],\n strip_prefix = \"tokio-1.45.0\",\n build_file = Label(\"@crates//crates:BUILD.tokio-1.45.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__tokio-macros-2.5.0\",\n sha256 = \"6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/tokio-macros/2.5.0/download\"],\n strip_prefix = \"tokio-macros-2.5.0\",\n build_file = Label(\"@crates//crates:BUILD.tokio-macros-2.5.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__unicode-ident-1.0.18\",\n sha256 = \"5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/unicode-ident/1.0.18/download\"],\n strip_prefix = \"unicode-ident-1.0.18\",\n build_file = Label(\"@crates//crates:BUILD.unicode-ident-1.0.18.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__wasi-0.11.0-wasi-snapshot-preview1\",\n sha256 = \"9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/wasi/0.11.0+wasi-snapshot-preview1/download\"],\n strip_prefix = \"wasi-0.11.0+wasi-snapshot-preview1\",\n build_file = Label(\"@crates//crates:BUILD.wasi-0.11.0+wasi-snapshot-preview1.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.48.0\",\n sha256 = \"677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.48.0/download\"],\n strip_prefix = \"windows-sys-0.48.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.48.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.52.0\",\n sha256 = \"282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.52.0/download\"],\n strip_prefix = \"windows-sys-0.52.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.52.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-sys-0.59.0\",\n sha256 = \"1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-sys/0.59.0/download\"],\n strip_prefix = \"windows-sys-0.59.0\",\n build_file = Label(\"@crates//crates:BUILD.windows-sys-0.59.0.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.48.5\",\n sha256 = \"9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.48.5/download\"],\n strip_prefix = \"windows-targets-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows-targets-0.52.6\",\n sha256 = \"9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows-targets/0.52.6/download\"],\n strip_prefix = \"windows-targets-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows-targets-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.48.5\",\n sha256 = \"2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_gnullvm-0.52.6\",\n sha256 = \"32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.48.5\",\n sha256 = \"dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_aarch64_msvc-0.52.6\",\n sha256 = \"09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_aarch64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_aarch64_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.48.5\",\n sha256 = \"a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.48.5/download\"],\n strip_prefix = \"windows_i686_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnu-0.52.6\",\n sha256 = \"8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnu/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_gnullvm-0.52.6\",\n sha256 = \"0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_i686_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.48.5\",\n sha256 = \"8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.48.5/download\"],\n strip_prefix = \"windows_i686_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_i686_msvc-0.52.6\",\n sha256 = \"240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_i686_msvc/0.52.6/download\"],\n strip_prefix = \"windows_i686_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_i686_msvc-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.48.5\",\n sha256 = \"53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnu-0.52.6\",\n sha256 = \"147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnu-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnu-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.48.5\",\n sha256 = \"0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_gnullvm-0.52.6\",\n sha256 = \"24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_gnullvm-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.48.5\",\n sha256 = \"ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.48.5/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.48.5\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.48.5.bazel\"),\n )\n\n maybe(\n http_archive,\n name = \"crates__windows_x86_64_msvc-0.52.6\",\n sha256 = \"589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec\",\n type = \"tar.gz\",\n urls = [\"https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download\"],\n strip_prefix = \"windows_x86_64_msvc-0.52.6\",\n build_file = Label(\"@crates//crates:BUILD.windows_x86_64_msvc-0.52.6.bazel\"),\n )\n\n return [\n struct(repo=\"crates__crossbeam-channel-0.5.15\", is_dev_dep = False),\n struct(repo=\"crates__log-0.4.27\", is_dev_dep = False),\n struct(repo=\"crates__num_cpus-1.16.0\", is_dev_dep = False),\n struct(repo=\"crates__prost-0.13.5\", is_dev_dep = False),\n struct(repo=\"crates__prost-types-0.13.5\", is_dev_dep = False),\n struct(repo=\"crates__serde-1.0.219\", is_dev_dep = False),\n struct(repo=\"crates__serde_json-1.0.140\", is_dev_dep = False),\n struct(repo=\"crates__simple_logger-4.3.3\", is_dev_dep = False),\n struct(repo=\"crates__tokio-1.45.0\", is_dev_dep = False),\n ]\n" } } }, @@ -3444,20 +3444,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\n \"@rules_rust//cargo:defs.bzl\",\n \"cargo_build_script\",\n \"cargo_toml_env_vars\",\n)\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"anyhow\",\n deps = [\n \"@crates__anyhow-1.0.98//:build_script_build\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anyhow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.0.98\",\n)\n\ncargo_build_script(\n name = \"_bs\",\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \"**/*.rs\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"default\",\n \"std\",\n ],\n crate_name = \"build_script_build\",\n crate_root = \"build.rs\",\n data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n edition = \"2018\",\n pkg_name = \"anyhow\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=anyhow\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n version = \"1.0.98\",\n visibility = [\"//visibility:private\"],\n)\n\nalias(\n name = \"build_script_build\",\n actual = \":_bs\",\n tags = [\"manual\"],\n)\n" } }, - "crates__backtrace-0.3.74": { + "crates__backtrace-0.3.75": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a", + "sha256": "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/backtrace/0.3.74/download" + "https://static.crates.io/crates/backtrace/0.3.75/download" ], - "strip_prefix": "backtrace-0.3.74", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"backtrace\",\n deps = [\n \"@crates__cfg-if-1.0.0//:cfg_if\",\n \"@crates__rustc-demangle-0.1.24//:rustc_demangle\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-targets-0.52.6//:windows_targets\", # cfg(windows)\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=backtrace\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.74\",\n)\n" + "strip_prefix": "backtrace-0.3.75", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"backtrace\",\n deps = [\n \"@crates__cfg-if-1.0.0//:cfg_if\",\n \"@crates__rustc-demangle-0.1.24//:rustc_demangle\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-targets-0.52.6//:windows_targets\", # cfg(any(windows, target_os = \"cygwin\"))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__addr2line-0.24.2//:addr2line\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__libc-0.2.172//:libc\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__miniz_oxide-0.8.8//:miniz_oxide\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n \"@crates__object-0.36.7//:object\", # cfg(not(all(windows, target_env = \"msvc\", not(target_vendor = \"uwp\"))))\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=backtrace\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.3.75\",\n)\n" } }, "crates__bytes-1.10.1": { @@ -4001,7 +4001,7 @@ "https://static.crates.io/crates/simple_logger/4.3.3/download" ], "strip_prefix": "simple_logger-4.3.3", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"simple_logger\",\n deps = [\n \"@crates__colored-2.2.0//:colored\",\n \"@crates__log-0.4.27//:log\",\n \"@crates__time-0.3.41//:time\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.48.0//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"colored\",\n \"colors\",\n \"default\",\n \"time\",\n \"timestamps\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=simple_logger\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.3.3\",\n)\n" + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"simple_logger\",\n deps = [\n \"@crates__colored-2.2.0//:colored\",\n \"@crates__log-0.4.27//:log\",\n \"@crates__time-0.3.41//:time\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__windows-sys-0.48.0//:windows_sys\", # cfg(windows)\n ],\n \"//conditions:default\": [],\n }),\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"colored\",\n \"colors\",\n \"default\",\n \"stderr\",\n \"time\",\n \"timestamps\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2018\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=simple_logger\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"4.3.3\",\n)\n" } }, "crates__socket2-0.5.9": { @@ -4084,20 +4084,20 @@ "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_proc_macro\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_proc_macro(\n name = \"time_macros\",\n deps = [\n \"@crates__num-conv-0.1.0//:num_conv\",\n \"@crates__time-core-0.1.4//:time_core\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"formatting\",\n ],\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=time-macros\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"0.2.22\",\n)\n" } }, - "crates__tokio-1.44.2": { + "crates__tokio-1.45.0": { "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", "attributes": { "patch_args": [], "patch_tool": "", "patches": [], "remote_patch_strip": 1, - "sha256": "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48", + "sha256": "2513ca694ef9ede0fb23fe71a4ee4107cb102b9dc1930f6d0fd77aae068ae165", "type": "tar.gz", "urls": [ - "https://static.crates.io/crates/tokio/1.44.2/download" + "https://static.crates.io/crates/tokio/1.45.0/download" ], - "strip_prefix": "tokio-1.44.2", - "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio\",\n deps = [\n \"@crates__mio-1.0.3//:mio\",\n \"@crates__pin-project-lite-0.2.16//:pin_project_lite\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.172//:libc\", # aarch64-apple-darwin\n \"@crates__socket2-0.5.9//:socket2\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # aarch64-unknown-linux-gnu\n \"@crates__socket2-0.5.9//:socket2\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-pc-windows-msvc\n \"@crates__windows-sys-0.52.0//:windows_sys\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # x86_64-unknown-linux-gnu\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__tokio-macros-2.5.0//:tokio_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"libc\",\n \"macros\",\n \"mio\",\n \"net\",\n \"rt\",\n \"rt-multi-thread\",\n \"socket2\",\n \"tokio-macros\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"windows-sys\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.44.2\",\n)\n" + "strip_prefix": "tokio-1.45.0", + "build_file_content": "###############################################################################\n# @generated\n# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To \n# regenerate this file, run the following:\n#\n# bazel mod show_repo 'databuild'\n###############################################################################\n\nload(\"@rules_rust//cargo:defs.bzl\", \"cargo_toml_env_vars\")\n\nload(\"@rules_rust//rust:defs.bzl\", \"rust_library\")\n\n# buildifier: disable=bzl-visibility\nload(\"@rules_rust//crate_universe/private:selects.bzl\", \"selects\")\n\npackage(default_visibility = [\"//visibility:public\"])\n\ncargo_toml_env_vars(\n name = \"cargo_toml_env_vars\",\n src = \"Cargo.toml\",\n)\n\nrust_library(\n name = \"tokio\",\n deps = [\n \"@crates__mio-1.0.3//:mio\",\n \"@crates__pin-project-lite-0.2.16//:pin_project_lite\",\n ] + select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [\n \"@crates__libc-0.2.172//:libc\", # aarch64-apple-darwin\n \"@crates__socket2-0.5.9//:socket2\", # aarch64-apple-darwin\n ],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # aarch64-unknown-linux-gnu\n \"@crates__socket2-0.5.9//:socket2\", # aarch64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-pc-windows-msvc\n \"@crates__windows-sys-0.52.0//:windows_sys\", # x86_64-pc-windows-msvc\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # x86_64-unknown-linux-gnu\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-unknown-linux-gnu\n ],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [\n \"@crates__libc-0.2.172//:libc\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n \"@crates__socket2-0.5.9//:socket2\", # x86_64-unknown-linux-gnu, x86_64-unknown-nixos-gnu\n ],\n \"//conditions:default\": [],\n }),\n proc_macro_deps = [\n \"@crates__tokio-macros-2.5.0//:tokio_macros\",\n ],\n compile_data = glob(\n allow_empty = True,\n include = [\"**\"],\n exclude = [\n \"**/* *\",\n \".tmp_git_root/**/*\",\n \"BUILD\",\n \"BUILD.bazel\",\n \"WORKSPACE\",\n \"WORKSPACE.bazel\",\n ],\n ),\n crate_features = [\n \"libc\",\n \"macros\",\n \"mio\",\n \"net\",\n \"rt\",\n \"rt-multi-thread\",\n \"socket2\",\n \"tokio-macros\",\n ] + select({\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [\n \"windows-sys\", # x86_64-pc-windows-msvc\n ],\n \"//conditions:default\": [],\n }),\n crate_root = \"src/lib.rs\",\n edition = \"2021\",\n rustc_env_files = [\n \":cargo_toml_env_vars\",\n ],\n rustc_flags = [\n \"--cap-lints=allow\",\n ],\n srcs = glob(\n allow_empty = True,\n include = [\"**/*.rs\"],\n ),\n tags = [\n \"cargo-bazel\",\n \"crate-name=tokio\",\n \"manual\",\n \"noclippy\",\n \"norustfmt\",\n ],\n target_compatible_with = select({\n \"@rules_rust//rust/platform:aarch64-apple-darwin\": [],\n \"@rules_rust//rust/platform:aarch64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:wasm32-unknown-unknown\": [],\n \"@rules_rust//rust/platform:wasm32-wasip1\": [],\n \"@rules_rust//rust/platform:x86_64-pc-windows-msvc\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-linux-gnu\": [],\n \"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu\": [],\n \"//conditions:default\": [\"@platforms//:incompatible\"],\n }),\n version = \"1.45.0\",\n)\n" } }, "crates__tokio-macros-2.5.0": { diff --git a/examples/basic_graph/test/BUILD.bazel b/examples/basic_graph/test/BUILD.bazel index 2cd3852..fd556fe 100644 --- a/examples/basic_graph/test/BUILD.bazel +++ b/examples/basic_graph/test/BUILD.bazel @@ -24,3 +24,13 @@ sh_test( "//:basic_graph.analyze", ], ) + +sh_test( + name = "exec_test", + srcs = ["exec_test.sh"], + data = [ + "//:basic_graph.exec", + "//:basic_graph.build", + "//:basic_graph.analyze", + ], +) diff --git a/examples/basic_graph/test/exec_test.sh b/examples/basic_graph/test/exec_test.sh old mode 100644 new mode 100755 diff --git a/graph/BUILD.bazel b/graph/BUILD.bazel index 1c91636..33dce06 100644 --- a/graph/BUILD.bazel +++ b/graph/BUILD.bazel @@ -7,12 +7,6 @@ exports_files([ "rust_analyze_wrapper.sh.tpl", ]) -go_binary( - name = "analyze_go", - srcs = ["analyze.go"], - visibility = ["//visibility:public"], -) - go_binary( name = "execute", srcs = ["execute.go"], diff --git a/graph/analyze.go b/graph/analyze.go deleted file mode 100644 index d18c538..0000000 --- a/graph/analyze.go +++ /dev/null @@ -1,495 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "os" - "os/exec" - "strings" - "log" - "sync" - "runtime" - "strconv" -) - -// DataDepType represents the type of data dependency -type DataDepType string - -const ( - Query DataDepType = "query" - Materialize DataDepType = "materialize" -) - -// DataDep represents a data dependency -type DataDep struct { - DepType DataDepType `json:"depType"` - Ref string `json:"ref"` -} - -// JobConfig represents the configuration for a job -type JobConfig struct { - Inputs []DataDep `json:"inputs"` - Outputs []string `json:"outputs"` - Args []string `json:"args"` - Env map[string]string `json:"env"` -} - -// Task represents a job task -type Task struct { - JobLabel string `json:"jobLabel"` - Config JobConfig `json:"config"` -} - -// JobGraph represents a graph of jobs -type JobGraph struct { - Outputs []string `json:"outputs"` - Nodes []Task `json:"nodes"` -} - -// PartitionManifest represents a partition manifest -type PartitionManifest struct { - Outputs string `json:"outputs"` - Inputs []DataDep `json:"inputs"` - StartTime int `json:"startTime"` - EndTime int `json:"endTime"` - Config JobConfig `json:"config"` -} - -// jobLabelToCfgPath converts a job label to a configuration path -func jobLabelToCfgPath(jobLabel string) string { - return "." + strings.Replace(strings.Replace(jobLabel, "//", "", -1), ":", "/", -1) + ".cfg" -} - -// configure configures the specified job to produce the desired outputs -func configure(jobLabel string, outputRefs []string) ([]Task, error) { - candidateJobsStr := os.Getenv("DATABUILD_CANDIDATE_JOBS") - var jobPathMap map[string]string - if err := json.Unmarshal([]byte(candidateJobsStr), &jobPathMap); err != nil { - return nil, fmt.Errorf("failed to parse DATABUILD_CANDIDATE_JOBS: %v", err) - } - - // Look up the executable path for this job - execPath, ok := jobPathMap[jobLabel] - if !ok { - return nil, fmt.Errorf("job %s is not a candidate job", jobLabel) - } - - // Check if executable exists - if _, err := os.Stat(execPath); err != nil { - if os.IsNotExist(err) { - return nil, fmt.Errorf("executable not found at path: %s", execPath) - } - return nil, fmt.Errorf("error checking executable: %v", err) - } - - log.Printf("Executing job configuration: %s %v", execPath, outputRefs) - cmd := exec.Command(execPath, outputRefs...) - - var stdout, stderr strings.Builder - cmd.Stdout = &stdout - cmd.Stderr = &stderr - err := cmd.Run() - if err != nil { - log.Printf("Job configuration failed: %s", stderr.String()) - return nil, fmt.Errorf("Failed to run job config: %s", stderr.String()) - } - log.Printf("Job configuration succeeded for %s", jobLabel) - - // Parse the job configurations - var jobConfigs []JobConfig - err = json.Unmarshal([]byte(stdout.String()), &jobConfigs) - if err != nil { - log.Printf("Error parsing job configs for %s: %s. `%s`", jobLabel, err, stdout.String()) - return nil, fmt.Errorf("Failed to parse job configs: %s", err) - } - - // Create tasks - tasks := make([]Task, len(jobConfigs)) - for i, cfg := range jobConfigs { - tasks[i] = Task{ - JobLabel: jobLabel, - Config: cfg, - } - } - - log.Printf("Created %d tasks for job %s", len(tasks), jobLabel) - return tasks, nil -} - -// resolve produces a mapping of required job refs to the partitions it produces -func resolve(outputRefs []string) (map[string][]string, error) { - lookupPath := os.Getenv("DATABUILD_JOB_LOOKUP_PATH") - - // Run the job lookup - log.Printf("Executing job lookup: %s %v", lookupPath, outputRefs) - cmd := exec.Command(lookupPath, outputRefs...) - var stdout, stderr strings.Builder - cmd.Stdout = &stdout - cmd.Stderr = &stderr - err := cmd.Run() - if err != nil { - log.Printf("Job lookup failed: %s", stderr.String()) - return nil, fmt.Errorf("Failed to run job lookup: %s", stderr.String()) - } - log.Printf("Job lookup succeeded for %d output refs", len(outputRefs)) - - // Parse the result - var result map[string][]string - err = json.Unmarshal([]byte(stdout.String()), &result) - if err != nil { - log.Printf("Error parsing job lookup result: %s", err) - return nil, fmt.Errorf("Failed to parse job lookup result: %s", err) - } - - log.Printf("Job lookup found %d job mappings", len(result)) - for job, refs := range result { - log.Printf(" Job %s produces %d refs", job, len(refs)) - } - - return result, nil -} - -// configureParallel configures multiple jobs in parallel -func configureParallel(jobRefs map[string][]string, numWorkers int) ([]Task, error) { - var wg sync.WaitGroup - tasksChan := make(chan []Task, len(jobRefs)) - errorChan := make(chan error, len(jobRefs)) - jobsChan := make(chan struct { - jobLabel string - producedRefs []string - }, len(jobRefs)) - - // Use a mutex to protect access to the error variable - var mu sync.Mutex - var firstErr error - - // Fill the jobs channel - for jobLabel, producedRefs := range jobRefs { - jobsChan <- struct { - jobLabel string - producedRefs []string - }{jobLabel, producedRefs} - } - close(jobsChan) - - // Start workers - for i := 0; i < numWorkers; i++ { - wg.Add(1) - go func() { - defer wg.Done() - for job := range jobsChan { - // Check if an error has already occurred - mu.Lock() - if firstErr != nil { - mu.Unlock() - return - } - mu.Unlock() - - tasks, err := configure(job.jobLabel, job.producedRefs) - if err != nil { - mu.Lock() - if firstErr == nil { - firstErr = err - errorChan <- err - } - mu.Unlock() - return - } - tasksChan <- tasks - } - }() - } - - // Wait for all workers to finish - go func() { - wg.Wait() - close(tasksChan) - close(errorChan) - }() - - // Collect results - var allTasks []Task - for tasks := range tasksChan { - allTasks = append(allTasks, tasks...) - } - - // Check for errors - select { - case err := <-errorChan: - if err != nil { - return nil, err - } - default: - } - - return allTasks, nil -} - -// plan creates a job graph for given output references -func plan(outputRefs []string) (*JobGraph, error) { - log.Printf("Starting planning for %d output refs: %v", len(outputRefs), outputRefs) - unhandledRefs := make(map[string]bool) - for _, ref := range outputRefs { - unhandledRefs[ref] = true - } - epoch := 0 - var nodes []Task - - // Determine the number of workers based on available CPU cores or environment variable - numWorkers := runtime.NumCPU() - if workerEnv := os.Getenv("DATABUILD_PARALLEL_WORKERS"); workerEnv != "" { - if parsedWorkers, err := strconv.Atoi(workerEnv); err != nil { - log.Printf("Warning: Invalid DATABUILD_PARALLEL_WORKERS value '%s', using default: %d", workerEnv, numWorkers) - } else if parsedWorkers < 1 { - numWorkers = 1 - log.Printf("Warning: DATABUILD_PARALLEL_WORKERS must be at least 1, using: %d", numWorkers) - } else { - numWorkers = parsedWorkers - } - } - log.Printf("Using %d workers for parallel execution", numWorkers) - - for len(unhandledRefs) > 0 { - if epoch >= 1000 { - log.Printf("Planning timeout: still planning after %d epochs, giving up", epoch) - return nil, fmt.Errorf("Still planning after %d epochs, giving up", epoch) - } - - log.Printf("Planning epoch %d with %d unhandled refs", epoch, len(unhandledRefs)) - // Resolve jobs for all unhandled refs - unhandledRefsList := make([]string, 0, len(unhandledRefs)) - for ref := range unhandledRefs { - unhandledRefsList = append(unhandledRefsList, ref) - } - jobRefs, err := resolve(unhandledRefsList) - if err != nil { - return nil, err - } - - // Configure jobs in parallel - newNodes, err := configureParallel(jobRefs, numWorkers) - if err != nil { - return nil, err - } - - // Remove handled refs - for _, producedRefs := range jobRefs { - for _, ref := range producedRefs { - delete(unhandledRefs, ref) - } - } - - if len(unhandledRefs) > 0 { - log.Printf("Error: Still have unhandled refs after configuration phase: %v", unhandledRefs) - return nil, fmt.Errorf("Should have no unhandled refs after configuration phase, but had: %v", unhandledRefs) - } - epoch++ - - // Add new nodes to the graph - nodes = append(nodes, newNodes...) - log.Printf("Planning epoch %d completed: added %d new nodes, total nodes: %d", epoch, len(newNodes), len(nodes)) - - // Plan next epoch - newUnhandledCount := 0 - for _, task := range newNodes { - for _, input := range task.Config.Inputs { - if input.DepType == Materialize { - if !unhandledRefs[input.Ref] { - newUnhandledCount++ - } - unhandledRefs[input.Ref] = true - } - } - } - if newUnhandledCount > 0 { - log.Printf("Added %d new unhandled refs for next planning epoch", newUnhandledCount) - } - } - - if len(nodes) > 0 { - log.Printf("Planning complete: created graph with %d nodes for %d output refs", len(nodes), len(outputRefs)) - return &JobGraph{ - Outputs: outputRefs, - Nodes: nodes, - }, nil - } else { - log.Printf("Planning failed: no nodes created for output refs %v", outputRefs) - return nil, fmt.Errorf("Unknown failure in graph planning") - } -} - -// generateMermaidDiagram generates a Mermaid flowchart diagram from a job graph -func generateMermaidDiagram(graph *JobGraph) string { - // Start the mermaid flowchart - mermaid := "flowchart TD\n" - - // Track nodes we've already added to avoid duplicates - addedNodes := make(map[string]bool) - addedRefs := make(map[string]bool) - - // Map to track which refs are outputs (to highlight them) - isOutputRef := make(map[string]bool) - for _, ref := range graph.Outputs { - isOutputRef[ref] = true - } - - // Process each task in the graph - for _, task := range graph.Nodes { - // Create a unique ID for this job+outputs combination - outputsKey := strings.Join(task.Config.Outputs, "_") - jobNodeId := "job_" + strings.Replace(task.JobLabel, "//", "_", -1) - jobNodeId = strings.Replace(jobNodeId, ":", "_", -1) - jobNodeId = jobNodeId + "_" + strings.Replace(outputsKey, "/", "_", -1) - - // Create a descriptive label that includes both job label and outputs - jobLabel := task.JobLabel - outputsLabel := "" - if len(task.Config.Outputs) > 0 { - if len(task.Config.Outputs) == 1 { - outputsLabel = " [" + task.Config.Outputs[0] + "]" - } else { - outputsLabel = " [" + task.Config.Outputs[0] + ", ...]" - } - } - - // Add the job node if not already added - if !addedNodes[jobNodeId] { - // Represent job as a process shape with escaped label - mermaid += fmt.Sprintf(" %s[\"`**%s** %s`\"]:::job\n", - jobNodeId, - jobLabel, - outputsLabel) - addedNodes[jobNodeId] = true - } - - // Process inputs (dependencies) - for _, input := range task.Config.Inputs { - refNodeId := "ref_" + strings.Replace(input.Ref, "/", "_", -1) - - // Add the partition ref node if not already added - if !addedRefs[refNodeId] { - node_class := "partition" - // Apply output styling immediately if this is an output ref - if isOutputRef[input.Ref] { - //mermaid += fmt.Sprintf(" class %s outputPartition;\n", refNodeId) - node_class = "outputPartition" - } - - // Represent partition as a cylinder - mermaid += fmt.Sprintf(" %s[(\"%s\")]:::%s\n", - refNodeId, - input.Ref, - node_class, - ) - addedRefs[refNodeId] = true - } - - // Add the edge from input to job - if input.DepType == Materialize { - // Solid line for materialize dependencies - mermaid += fmt.Sprintf(" %s --> %s\n", refNodeId, jobNodeId) - } else { - // Dashed line for query dependencies - mermaid += fmt.Sprintf(" %s -.-> %s\n", refNodeId, jobNodeId) - } - } - - // Process outputs - for _, output := range task.Config.Outputs { - refNodeId := "ref_" + strings.Replace(output, "/", "_", -1) - - // Add the partition ref node if not already added - if !addedRefs[refNodeId] { - node_class := "partition" - // Apply output styling immediately if this is an output ref - if isOutputRef[output] { - //mermaid += fmt.Sprintf(" class %s outputPartition;\n", refNodeId) - node_class = "outputPartition" - } - - // Represent partition as a cylinder - mermaid += fmt.Sprintf(" %s[(\"Partition: %s\")]:::%s\n", - refNodeId, - output, - node_class) - addedRefs[refNodeId] = true - } - - // Add the edge from job to output - mermaid += fmt.Sprintf(" %s --> %s\n", jobNodeId, refNodeId) - } - } - - // Add styling - mermaid += "\n %% Styling\n" - mermaid += " classDef job fill:#f9f,stroke:#333,stroke-width:1px;\n" - mermaid += " classDef partition fill:#bbf,stroke:#333,stroke-width:1px;\n" - mermaid += " classDef outputPartition fill:#bfb,stroke:#333,stroke-width:2px;\n" - - return mermaid -} - -func main() { - mode := os.Getenv("DATABUILD_MODE") - log.Printf("Starting analyze.go in mode: %s", mode) - - if mode == "plan" { - // Get output refs from command line arguments - outputRefs := os.Args[1:] - graph, err := plan(outputRefs) - if err != nil { - fmt.Fprintf(os.Stderr, "Error: %s\n", err) - os.Exit(1) - } - - // Output the job graph as JSON - jsonData, err := json.Marshal(graph) - if err != nil { - log.Printf("Error marshaling job graph: %s", err) - fmt.Fprintf(os.Stderr, "Error marshaling job graph: %s\n", err) - os.Exit(1) - } - log.Printf("Successfully generated job graph with %d nodes", len(graph.Nodes)) - fmt.Println(string(jsonData)) - } else if mode == "lookup" { - // Get output refs from command line arguments - outputRefs := os.Args[1:] - result, err := resolve(outputRefs) - if err != nil { - fmt.Fprintf(os.Stderr, "Error: %s\n", err) - os.Exit(1) - } - - // Output the result as JSON - jsonData, err := json.Marshal(result) - if err != nil { - log.Printf("Error marshaling lookup result: %s", err) - fmt.Fprintf(os.Stderr, "Error marshaling lookup result: %s\n", err) - os.Exit(1) - } - log.Printf("Successfully completed lookup for %d output refs with %d job mappings", len(outputRefs), len(result)) - fmt.Println(string(jsonData)) - } else if mode == "mermaid" { - // Get output refs from command line arguments - outputRefs := os.Args[1:] - graph, err := plan(outputRefs) - if err != nil { - fmt.Fprintf(os.Stderr, "Error: %s\n", err) - os.Exit(1) - } - - // Generate and output the mermaid diagram - mermaidDiagram := generateMermaidDiagram(graph) - fmt.Println(mermaidDiagram) - log.Printf("Successfully generated mermaid diagram for %d nodes", len(graph.Nodes)) - } else if mode == "import_test" { - log.Printf("Running in import_test mode") - fmt.Println("ok :)") - log.Printf("Import test completed successfully") - } else { - log.Printf("Error: Unknown mode '%s'", mode) - fmt.Fprintf(os.Stderr, "Unknown MODE `%s`\n", mode) - os.Exit(1) - } -}