helloadhavan/github_issues huggingface dataset:
Repository: ggml-org/llama.cpp
Pull request: ggml: backward pass for split swiglu

Fixes https://github.com/ggml-org/llama.cpp/issues/14424 .

The training example is currently broken for LLaMA 3 1b due to the SwiGLU changes, this PR adds an unfused backward pass so that the example works again.

Changed files:
filename: ggml/src/ggml.c
patch: @@ -6050,13 +6050,28 @@ static void ggml_compute_backward(
             }
             GGML_ASSERT(!src1_needs_grads && "backward pass for labels not implemented");
         } break;
+        case GGML_OP_GLU: {
+            switch (ggml_get_glu_op(tensor)) {
+                case GGML_GLU_OP_SWIGLU: {
+                    if (src0_needs_grads) {
+                        GGML_ASSERT(src1 && "backward pass only implemented for split swiglu");
+                        ggml_add_or_set(ctx, cgraph, isrc0, ggml_silu_back(ctx, ggml_mul(ctx, grad, src1), src0));
+                    }
+                    if (src1_needs_grads) {
+                        ggml_add_or_set(ctx, cgraph, isrc1, ggml_mul(ctx, ggml_silu(ctx, src0), grad));
+                    }
+                } break;
+                default: {
+                    GGML_ABORT("unsupported glu op for backward pass: %s", ggml_glu_op_name(ggml_get_glu_op(tensor)));
+                } //break;
+            }
+        } break;
         case GGML_OP_NONE: {
             // noop
         } break;
         case GGML_OP_COUNT:
         default: {
-            fprintf(stderr, "%s: unsupported ggml op for backward pass: %s\n", __func__, ggml_op_name(tensor->op));
-            GGML_ABORT("fatal error");
+            GGML_ABORT("%s: unsupported ggml op for backward pass: %s\n", __func__, ggml_op_name(tensor->op));
         } //break;
     }
 

filename: tests/test-backend-ops.cpp
patch: @@ -1175,21 +1175,25 @@ struct test_glu_split : public test_case {
         if (v & 1) {
             auto ne = ne_a; ne[0] *= 3;
             a = ggml_new_tensor(ctx, type, 4, ne.data());
+            ggml_set_param(a);
             ggml_set_name(a, "a");
 
             a = ggml_view_4d(ctx, a, ne_a[0], ne_a[1], ne_a[2], ne_a[3], a->nb[1], a->nb[2], a->nb[3], 0);
             ggml_set_name(a, "view_of_a");
 
             b = ggml_new_tensor(ctx, type, 4, ne.data());
+            ggml_set_param(b);
             ggml_set_name(b, "b");
 
             b = ggml_view_4d(ctx, b, ne_a[0], ne_a[1], ne_a[2], ne_a[3], b->nb[1], b->nb[2], b->nb[3], 0);
             ggml_set_name(a, "view_of_b");
         } else {
             a = ggml_new_tensor(ctx, type, 4, ne_a.data());
+            ggml_set_param(a);
             ggml_set_name(a, "a");
 
             b = ggml_new_tensor(ctx, type, 4, ne_a.data());
+            ggml_set_param(b);
             ggml_set_name(b, "b");
         }
Repository: denoland/deno
Pull request: fix: support watch flag to enable watching other files than the main module on serve subcommand

closes #26618 

**Changes**
- Supported watch flag in order to take files and dirs specified when pairing it with serve subcommand.
- Added a test to practice the change.



Changed files:
filename: cli/args/mod.rs
patch: @@ -1672,6 +1672,10 @@ impl CliOptions {
     if let DenoSubcommand::Run(RunFlags {
       watch: Some(WatchFlagsWithPaths { paths, .. }),
       ..
+    })
+    | DenoSubcommand::Serve(ServeFlags {
+      watch: Some(WatchFlagsWithPaths { paths, .. }),
+      ..
     }) = &self.flags.subcommand
     {
       full_paths.extend(paths.iter().map(|path| self.initial_cwd.join(path)));

filename: tests/integration/watcher_tests.rs
patch: @@ -566,6 +566,76 @@ async fn run_watch_no_dynamic() {
   check_alive_then_kill(child);
 }
 
+#[flaky_test(tokio)]
+async fn serve_watch_all() {
+  let t = TempDir::new();
+  let main_file_to_watch = t.path().join("main_file_to_watch.js");
+  main_file_to_watch.write(
+    "export default {
+      fetch(_request: Request) {
+        return new Response(\"aaaaaaqqq!\");
+      },
+    };",
+  );
+
+  let mut child = util::deno_cmd()
+    .current_dir(t.path())
+    .arg("serve")
+    .arg("--watch=another_file.js")
+    .arg("-L")
+    .arg("debug")
+    .arg(&main_file_to_watch)
+    .env("NO_COLOR", "1")
+    .piped_output()
+    .spawn()
+    .unwrap();
+  let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
+
+  wait_for_watcher("main_file_to_watch.js", &mut stderr_lines).await;
+
+  // Change content of the file
+  main_file_to_watch.write(
+    "export default {
+      fetch(_request: Request) {
+        return new Response(\"aaaaaaqqq123!\");
+      },
+    };",
+  );
+  wait_contains("Restarting", &mut stderr_lines).await;
+  wait_for_watcher("main_file_to_watch.js", &mut stderr_lines).await;
+
+  let another_file = t.path().join("another_file.js");
+  another_file.write("export const foo = 0;");
+  // Confirm that the added file is watched as well
+  wait_contains("Restarting", &mut stderr_lines).await;
+
+  main_file_to_watch
+    .write("import { foo } from './another_file.js'; console.log(foo);");
+  wait_contains("Restarting", &mut stderr_lines).await;
+  wait_contains("0", &mut stdout_lines).await;
+
+  another_file.write("export const foo = 42;");
+  wait_contains("Restarting", &mut stderr_lines).await;
+  wait_contains("42", &mut stdout_lines).await;
+
+  // Confirm that watch continues even with wrong syntax error
+  another_file.write("syntax error ^^");
+
+  wait_contains("Restarting", &mut stderr_lines).await;
+  wait_contains("error:", &mut stderr_lines).await;
+
+  main_file_to_watch.write(
+    "export default {
+      fetch(_request: Request) {
+        return new Response(\"aaaaaaqqq!\");
+      },
+    };",
+  );
+  wait_contains("Restarting", &mut stderr_lines).await;
+  wait_for_watcher("main_file_to_watch.js", &mut stderr_lines).await;
+  check_alive_then_kill(child);
+}
+
 #[flaky_test(tokio)]
 async fn run_watch_npm_specifier() {
   let _g = util::http_server();
Repository: ggml-org/llama.cpp
Pull request: sycl: Fix conditional enabling following arch checks for ggml-sycl

PR #13973 wanted to enable optimization for intel devices by default. Due to a small boolean bug it was always disabled even with `GGML_SYCL_DISABLE_OPT=0`. This PR fixes it.

### Performance comparison on Intel B580

| model                    |        size |  params | backend | ngl |   sm |  test |      master t/s |   9edb916c9 t/s |
| ------------------------ | ----------: | ------: | ------- | --: | ---: | ----: | --------------: | --------------: |
| qwen2 1.5B Q4_0          | 1013.62 MiB |  1.78 B | SYCL    |  99 | none | pp512 | 8545.67 ± 41.26 | 8559.06 ± 39.47 |
| qwen2 1.5B Q4_0          | 1013.62 MiB |  1.78 B | SYCL    |  99 | none | tg128 |   110.97 ± 0.14 |   157.52 ± 0.53 |
| qwen2 1.5B Q4_K - Medium |    1.04 GiB |  1.78 B | SYCL    |  99 | none | pp512 | 8653.84 ± 31.87 | 8675.45 ± 75.79 |
| qwen2 1.5B Q4_K - Medium |    1.04 GiB |  1.78 B | SYCL    |  99 | none | tg128 |   100.36 ± 0.11 |   137.52 ± 0.20 |
| llama 7B Q4_0            |    3.57 GiB |  6.74 B | SYCL    |  99 | none | pp512 |  2249.87 ± 3.22 |  2261.56 ± 4.04 |
| llama 7B Q4_0            |    3.57 GiB |  6.74 B | SYCL    |  99 | none | tg128 |    41.60 ± 0.17 |    73.40 ± 0.26 |
| llama 7B Q4_K - Medium   |    3.80 GiB |  6.74 B | SYCL    |  99 | none | pp512 |  2291.22 ± 1.64 |  2310.27 ± 4.83 |
| llama 7B Q4_K - Medium   |    3.80 GiB |  6.74 B | SYCL    |  99 | none | tg128 |    33.19 ± 0.14 |    59.42 ± 0.54 |
| gemma2 2B Q4_K - Medium  |    1.59 GiB |  2.61 B | SYCL    |  99 | none | pp512 | 6306.60 ± 17.54 | 6306.17 ± 23.65 |
| gemma2 2B Q4_K - Medium  |    1.59 GiB |  2.61 B | SYCL    |  99 | none | tg128 |    70.01 ± 0.77 |   103.74 ± 0.12 |
| phi3 3B Q4_0             |    2.03 GiB |  3.82 B | SYCL    |  99 | none | pp512 |  3389.80 ± 2.88 |  3412.82 ± 7.16 |
| phi3 3B Q4_0             |    2.03 GiB |  3.82 B | SYCL    |  99 | none | tg128 |    66.12 ± 0.43 |   107.76 ± 0.30 |
| phi3 3B Q4_K - Medium    |    2.23 GiB |  3.82 B | SYCL    |  99 | none | pp512 |  3527.64 ± 7.33 |  3540.96 ± 9.11 |
| phi3 3B Q4_K - Medium    |    2.23 GiB |  3.82 B | SYCL    |  99 | none | tg128 |    53.77 ± 0.37 |    79.59 ± 0.36 |
| llama 34B Q6_K           |    8.20 GiB | 10.73 B | SYCL    |  99 | none | pp512 |  1573.21 ± 2.19 |  1575.07 ± 1.99 |
| llama 34B Q6_K           |    8.20 GiB | 10.73 B | SYCL    |  99 | none | tg128 |    21.06 ± 0.04 |    23.74 ± 0.06 |

Changed files:
filename: ggml/src/ggml-sycl/ggml-sycl.cpp
patch: @@ -83,7 +83,7 @@ static ggml_sycl_device_info ggml_sycl_init() {
 
         info.devices[i].cc =
             100 * prop.get_major_version() + 10 * prop.get_minor_version();
-        info.devices[i].opt_feature.reorder = !device.ext_oneapi_architecture_is(syclex::arch_category::intel_gpu);
+        info.devices[i].opt_feature.reorder = device.ext_oneapi_architecture_is(syclex::arch_category::intel_gpu);
         info.max_work_group_sizes[i] = prop.get_max_work_group_size();
     }
Repository: electron/electron
Pull request: fix: crash on netlog connection error

#### Description of Change

fixes https://github.com/electron/electron/issues/44395

1. `std::move(*pending_start_promise_)` was called in `NetLog::NetLogStarted`
2. `pending_start_promise_` was then accessed to reject in `NetLog::OnConnectionError`

Due to move semantics, the promise was cleared out and `raw_ptr<v8::Isolate>` was set to nullptr. The fix is to reset the std::optional holding the promise after its been moved.

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [x] PR description included and stakeholders cc'd
- [x] `npm test` passes
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/main/docs/development/testing.md)
- [ ] relevant documentation, tutorials, templates and examples are changed or added
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: Fix crash when network process terminates while a net log is running.


Changed files:
filename: shell/browser/api/electron_api_net_log.cc
patch: @@ -166,6 +166,7 @@ void NetLog::StartNetLogAfterCreateFile(net::NetLogCaptureMode capture_mode,
     std::move(*pending_start_promise_)
         .RejectWithErrorMessage(
             base::File::ErrorToString(output_file.error_details()));
+    pending_start_promise_.reset();
     net_log_exporter_.reset();
     return;
   }
@@ -178,13 +179,15 @@ void NetLog::StartNetLogAfterCreateFile(net::NetLogCaptureMode capture_mode,
 void NetLog::NetLogStarted(int32_t error) {
   DCHECK(pending_start_promise_);
   ResolvePromiseWithNetError(std::move(*pending_start_promise_), error);
+  pending_start_promise_.reset();
 }
 
 void NetLog::OnConnectionError() {
   net_log_exporter_.reset();
   if (pending_start_promise_) {
     std::move(*pending_start_promise_)
         .RejectWithErrorMessage("Failed to start net log exporter");
+    pending_start_promise_.reset();
   }
 }
Repository: huggingface/transformers
Pull request: Fix CircleCI not triggered when PR is opened from a branch of `huggingface/transformers`

# What does this PR do?

This happens when a PR is opened by a team member (using a branch within `huggingface/transformers`). An empty commit could fix the issue. It's from a work of `converting PR to draft automatically`. 

However, we stop doing so for now, so let's remove irrelevant code and fix this seeming strange behavior.

Changed files:
filename: .circleci/config.yml
patch: @@ -43,16 +43,6 @@ jobs:
         parallelism: 1
         steps:
             - checkout
-            - run: python3 utils/extract_pr_number_from_circleci.py > pr_number.txt
-            - run: echo $(cat pr_number.txt)
-            - run: if [[ "$(cat pr_number.txt)" == "" && "$CIRCLE_BRANCH" != "main" && "$CIRCLE_BRANCH" != *-release ]]; then echo "Not a PR, not the main branch and not a release branch, skip test!"; circleci-agent step halt; fi
-            - run: 'curl -L -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/pulls/$(cat pr_number.txt) >> github.txt'
-            - run: cat github.txt
-            - run: (python3 -c 'import json; from datetime import datetime; fp = open("github.txt"); data = json.load(fp); fp.close(); f = "%Y-%m-%dT%H:%M:%SZ"; created = datetime.strptime(data["created_at"], f); updated = datetime.strptime(data["updated_at"], f); s = (updated - created).total_seconds(); print(int(s))' || true) > elapsed.txt
-            - run: if [ "$(cat elapsed.txt)" == "" ]; then echo 60 > elapsed.txt; fi
-            - run: cat elapsed.txt
-            - run: if [ "$(cat elapsed.txt)" -lt "30" ]; then echo "PR is just opened, wait some actions from GitHub"; sleep 30; fi
-            - run: 'if grep -q "\"draft\": true," github.txt; then echo "draft mode, skip test!"; circleci-agent step halt; fi'
             - run: uv pip install -U -e .
             - run: echo 'export "GIT_COMMIT_MESSAGE=$(git show -s --format=%s)"' >> "$BASH_ENV" && source "$BASH_ENV"
             - run: mkdir -p test_preparation
Repository: facebook/react
Pull request: Change stalebot messages

Rewrite to encourage people to "bump" issues and PRs they care about. 
Explain it's not because we don't care, but because we haven't been able to prioritize yet.

Changed files:
filename: .github/stale.yml
patch: @@ -17,16 +17,18 @@ staleLabel: "Resolution: Stale"
 issues:
   # Comment to post when marking an issue as stale.
   markComment: >
-    This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
-    Thank you for your contribution.
+    This issue has been automatically marked as stale.
+    **If this issue is still affecting you, please leave any comment** (for example, "bump"), and we'll keep it open.
+    We are sorry that we haven't been able to prioritize it yet. If you have any additional information, please include with in your comment!
   # Comment to post when closing a stale issue.
   closeComment: >
     Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please create a new issue with up-to-date information. Thank you!
 pulls:
   # Comment to post when marking a pull request as stale.
   markComment: >
-    This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
-    Thank you for your contribution.
+    This pull request has been automatically marked as stale.
+    **If this pull request is still relevant, please leave any comment** (for example, "bump"), and we'll keep it open.
+    We are sorry that we haven't been able to prioritize reviewing it yet. Your contribution is very much appreciated.
   # Comment to post when closing a stale pull request.
   closeComment: >
     Closing this pull request after a prolonged period of inactivity. If this issue is still present in the latest release, please ask for this pull request to be reopened. Thank you!
Repository: ggml-org/llama.cpp
Pull request: convert : correct gemma 3n conversion

Address problem reported by @danielhanchen : https://huggingface.co/unsloth/gemma-3n-E4B-it-GGUF/discussions/6#6860763b91da860136961b2b


Changed files:
filename: gguf-py/gguf/gguf_writer.py
patch: @@ -714,8 +714,8 @@ def add_max_alibi_bias(self, bias: float) -> None:
     def add_clamp_kqv(self, value: float) -> None:
         self.add_float32(Keys.Attention.CLAMP_KQV.format(arch=self.arch), value)
 
-    def add_shared_kv_layers(self, value: float) -> None:
-        self.add_float32(Keys.Attention.SHARED_KV_LAYERS.format(arch=self.arch), value)
+    def add_shared_kv_layers(self, value: int) -> None:
+        self.add_uint32(Keys.Attention.SHARED_KV_LAYERS.format(arch=self.arch), value)
 
     def add_sliding_window_pattern(self, value: Sequence[bool]) -> None:
         self.add_array(Keys.Attention.SLIDING_WINDOW_PATTERN.format(arch=self.arch), value)
Repository: nodejs/node
Pull request: tools: do not run major-release workflow on forks

Prevent issues like https://github.com/Trott/io.js/issues/8 from opening on forks like that.

<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: .github/workflows/major-release.yml
patch: @@ -9,6 +9,7 @@ permissions:
 
 jobs:
   create-issue:
+    if: github.repository == 'nodejs/node'
     runs-on: ubuntu-latest
     permissions:
       issues: write
Repository: facebook/react
Pull request: Revert "Fix email cursor jump (#18379)"

This reverts commit 9b88b78b3d61e8fe81968d59b74592d5a53540b7.

I've changed my mind. This is too scary to change because there are other unknowns around this whole area. Like we could be introducing more regressions like https://github.com/facebook/react/issues/17609. If we can't sit down and fix this holistically, the best we can do is to reduce changes to avoid churn in the workarounds.

Should we fix it eventually? Yes. With an approach that is well-thought out for all input types and doesn't cause other issues. Such as maybe disabling syncing would help here. We'll likely slate this for after 17.

Changed files:
filename: packages/react-dom/src/client/ReactDOMInput.js
patch: @@ -410,8 +410,8 @@ export function setDefaultValue(
   value: *,
 ) {
   if (
-    // Focused number and email inputs synchronize on blur. See ChangeEventPlugin.js
-    (type !== 'number' && type !== 'email') ||
+    // Focused number inputs synchronize on blur. See ChangeEventPlugin.js
+    type !== 'number' ||
     node.ownerDocument.activeElement !== node
   ) {
     if (value == null) {

filename: packages/react-dom/src/events/ChangeEventPlugin.js
patch: @@ -236,17 +236,13 @@ function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {
 function handleControlledInputBlur(node) {
   const state = node._wrapperState;
 
-  if (
-    !state ||
-    !state.controlled ||
-    (node.type !== 'number' && node.type !== 'email')
-  ) {
+  if (!state || !state.controlled || node.type !== 'number') {
     return;
   }
 
   if (!disableInputAttributeSyncing) {
     // If controlled, assign the value attribute to the current value on blur
-    setDefaultValue(node, node.type, node.value);
+    setDefaultValue(node, 'number', node.value);
   }
 }
Repository: denoland/deno
Pull request: feat(ext/napi): Export dynamic symbols list for {Free,Open}BSD

The two BSD ports are reusing the Linux code here.

Changed files:
filename: ext/napi/lib.rs
patch: @@ -662,7 +662,11 @@ pub fn print_linker_flags(name: &str) {
     symbols_path,
   );
 
-  #[cfg(target_os = "linux")]
+  #[cfg(any(
+    target_os = "linux",
+    target_os = "freebsd",
+    target_os = "openbsd"
+  ))]
   println!(
     "cargo:rustc-link-arg-bin={name}=-Wl,--export-dynamic-symbol-list={}",
     symbols_path,
Repository: huggingface/transformers
Pull request: Update error when using additional and/or masks

# What does this PR do?

The version was correctly fixed before, but the error was not correctly updated

Changed files:
filename: src/transformers/masking_utils.py
patch: @@ -706,12 +706,12 @@ def create_causal_mask(
     # Allow slight deviations from causal mask
     if or_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = or_masks(mask_factory_function, or_mask_function)
         allow_is_causal_skip = False
     if and_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = and_masks(mask_factory_function, and_mask_function)
         allow_is_causal_skip = False
 
@@ -792,12 +792,12 @@ def create_sliding_window_causal_mask(
     # Allow slight deviations from sliding causal mask
     if or_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = or_masks(mask_factory_function, or_mask_function)
         allow_is_causal_skip = False
     if and_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = and_masks(mask_factory_function, and_mask_function)
         allow_is_causal_skip = False
 
@@ -886,12 +886,12 @@ def create_chunked_causal_mask(
     # Allow slight deviations from chunked causal mask
     if or_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = or_masks(mask_factory_function, or_mask_function)
         allow_is_causal_skip = False
     if and_mask_function is not None:
         if not _is_torch_greater_or_equal_than_2_6:
-            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.5")
+            raise ValueError("Using `or_mask_function` or `and_mask_function` arguments require torch>=2.6")
         mask_factory_function = and_masks(mask_factory_function, and_mask_function)
         allow_is_causal_skip = False