helloadhavan/github_issues huggingface dataset:
Repository: facebook/react
Pull request: Add test for throttling suspended siblings

# Overview

Adds a test to show the combination of the new throttling behavior and not pre-rendering siblings results in pushing out content that could have rendered much faster.

- Without the new throttling, the sibling content would render in 30ms.
- Without removing pre-rendering, the sibling content would render in 0ms.
- With both, the sibling content takes 600ms.

## Example

https://github.com/facebook/react/assets/2440089/abd62dc4-93f9-4b7b-a5aa-b795827c1a3a



Changed files:
filename: packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
patch: @@ -289,6 +289,59 @@ describe('ReactSuspense', () => {
     expect(container.textContent).toEqual('AB');
   });
 
+  it('pushes out siblings that render faster than throttle', async () => {
+    function Foo() {
+      Scheduler.log('Foo');
+      return (
+        <Suspense fallback={<Text text="Loading..." />}>
+          <AsyncText text="A" ms={290} />
+          <Suspense fallback={<Text text="Loading more..." />}>
+            <AsyncText text="B" ms={30} />
+          </Suspense>
+        </Suspense>
+      );
+    }
+
+    setTimeout(async () => {
+      // TODO: this is dumb, but AsyncText isn't timer based after the act changes.
+      // Pretend that this is the start of the sibling suspending.
+      // In a real test, the timer would start when we render B.
+      setTimeout(async () => {
+        resolveText('B');
+      }, 30);
+
+      resolveText('A');
+    }, 290);
+
+    // Render an empty shell
+    const root = ReactTestRenderer.create(<Foo />, {
+      isConcurrent: true,
+    });
+
+    await waitForAll(['Foo', 'Suspend! [A]', 'Loading...']);
+    expect(root).toMatchRenderedOutput('Loading...');
+
+    // Now resolve A
+    jest.advanceTimersByTime(290);
+    await waitFor(['A']);
+    expect(root).toMatchRenderedOutput('Loading...');
+
+    // B starts loading. Parent boundary is in throttle.
+    // Still shows parent loading under throttle
+    jest.advanceTimersByTime(10);
+    await waitForAll(['Suspend! [B]', 'Loading more...']);
+    expect(root).toMatchRenderedOutput('Loading...');
+
+    // !! B could have finished before the throttle, but we show a fallback.
+    // !! Pushing out the 30ms fetch for B to 300ms.
+    jest.advanceTimersByTime(300);
+    await waitFor(['B']);
+    expect(root).toMatchRenderedOutput('ALoading more...');
+
+    await act(() => {});
+    expect(root).toMatchRenderedOutput('AB');
+  });
+
   it('does not throttle fallback committing for too long', async () => {
     function Foo() {
       Scheduler.log('Foo');
Repository: electron/electron
Pull request: build: make it clearer when cookie auth runs

#### Description of Change

Make it clearer when cookie authentication scripts run and fix missing cookie in publish jobs.

#### 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
- [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: none


Changed files:
filename: .github/actions/set-chromium-cookie/action.yml
patch: @@ -4,9 +4,14 @@ runs:
   using: "composite"
   steps:
   - name: Set the git cookie from chromium.googlesource.com (Unix)
-    if: ${{ runner.os != 'Windows' && env.CHROMIUM_GIT_COOKIE }}
+    if: ${{ runner.os != 'Windows' }}
     shell: bash
     run: |
+      if [[ -z "${{ env.CHROMIUM_GIT_COOKIE }}" ]]; then
+        echo "CHROMIUM_GIT_COOKIE is not set - cannot authenticate."
+        exit 0
+      fi
+
       eval 'set +o history' 2>/dev/null || setopt HIST_IGNORE_SPACE 2>/dev/null
       touch ~/.gitcookies
       chmod 0600 ~/.gitcookies
@@ -28,9 +33,14 @@ runs:
         echo $RESPONSE
       fi
   - name: Set the git cookie from chromium.googlesource.com (Windows)
-    if: ${{ runner.os == 'Windows' && env.CHROMIUM_GIT_COOKIE_WINDOWS_STRING }}
+    if: ${{ runner.os == 'Windows' }}
     shell: cmd
     run: |
+      if "%CHROMIUM_GIT_COOKIE_WINDOWS_STRING%"=="" (
+        echo CHROMIUM_GIT_COOKIE_WINDOWS_STRING is not set - cannot authenticate.
+        exit /b 0
+      )
+
       git config --global http.cookiefile "%USERPROFILE%\.gitcookies"
       powershell -noprofile -nologo -command Write-Output "${{ env.CHROMIUM_GIT_COOKIE_WINDOWS_STRING }}" >>"%USERPROFILE%\.gitcookies"
 

filename: .github/workflows/linux-publish.yml
patch: @@ -27,6 +27,7 @@ jobs:
         - /mnt/cross-instance-cache:/mnt/cross-instance-cache
         - /var/run/sas:/var/run/sas
     env:
+      CHROMIUM_GIT_COOKIE: ${{ secrets.CHROMIUM_GIT_COOKIE }}
       GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
     steps:
     - name: Checkout Electron

filename: .github/workflows/macos-publish.yml
patch: @@ -28,6 +28,7 @@ jobs:
         - /mnt/cross-instance-cache:/mnt/cross-instance-cache
         - /var/run/sas:/var/run/sas
     env:
+      CHROMIUM_GIT_COOKIE: ${{ secrets.CHROMIUM_GIT_COOKIE }}
       GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
     steps:
     - name: Checkout Electron

filename: .github/workflows/windows-publish.yml
patch: @@ -28,6 +28,7 @@ jobs:
         - /mnt/win-cache:/mnt/win-cache
         - /var/run/sas:/var/run/sas
     env:
+      CHROMIUM_GIT_COOKIE_WINDOWS_STRING: ${{ secrets.CHROMIUM_GIT_COOKIE_WINDOWS_STRING }}
       GCLIENT_EXTRA_ARGS: '--custom-var=checkout_win=True'
       TARGET_OS: 'win'
       ELECTRON_DEPOT_TOOLS_WIN_TOOLCHAIN: '1'
Repository: denoland/deno
Pull request: fix(ext/node): handle `null` keypair in tls connect


Changed files:
filename: ext/node/polyfills/_tls_wrap.js
patch: @@ -87,8 +87,8 @@ export class TLSSocket extends net.Socket {
 
     const cert = tlsOptions?.secureContext?.cert;
     const key = tlsOptions?.secureContext?.key;
-    const hasTlsKey = key !== undefined &&
-      cert !== undefined;
+    const hasTlsKey = key != undefined &&
+      cert != undefined;
     const keyPair = hasTlsKey
       ? op_tls_key_static(cert, key)
       : op_tls_key_null();

filename: tests/unit_node/tls_test.ts
patch: @@ -159,6 +159,8 @@ Deno.test("tls.connect after-read tls upgrade", async () => {
       socket,
       secureContext: {
         ca: rootCaCert,
+        key: null,
+        cert: null,
         // deno-lint-ignore no-explicit-any
       } as any,
     });
Repository: ggml-org/llama.cpp
Pull request: llama-context: only warn on pooling_type when user specified

The unexpected pooling_type warning was incorrectly shown when users did not specify the --pooling-type parameter. In this case, the parameter defaults to `LLAMA_POOLING_TYPE_UNSPECIFIED (-1)`, and the code automatically applies the model's default pooling type.

Example of spurious warning:
```console
$ llama-embedding -hf ggml-org/bge-m3-Q8_0-GGUF -p "hello"
...
llama_init_from_model: model default pooling_type is [2], but [-1] was specified
...
```

This fix ensures the warning only appears when users explicitly specify a pooling type that differs from the model's default (e.g., using --pooling-type mean on a model that expects CLS pooling).

Changed files:
filename: src/llama-context.cpp
patch: @@ -2346,7 +2346,8 @@ llama_context * llama_init_from_model(
         return nullptr;
     }
 
-    if (params.pooling_type != model->hparams.pooling_type) {
+    if (params.pooling_type != LLAMA_POOLING_TYPE_UNSPECIFIED &&
+        params.pooling_type != model->hparams.pooling_type) {
         //user-specified pooling-type is different from the model default
         LLAMA_LOG_WARN("%s: model default pooling_type is [%d], but [%d] was specified\n", __func__,
                        model->hparams.pooling_type, params.pooling_type);
Repository: nodejs/node
Pull request: async_hooks: move `asyncResource` property on bound function to EOL

Attaching the `asyncResource` property to a bound function has been deprecated for several years now. It's time.

Changed files:
filename: doc/api/deprecations.md
patch: @@ -3583,15 +3583,18 @@ In a future version of Node.js, [`message.headers`][],
 
 <!-- YAML
 changes:
+  - version: REPLACEME
+    pr-url: https://github.com/nodejs/node/pull/58618
+    description: End-of-Life.
   - version: v20.0.0
     pr-url: https://github.com/nodejs/node/pull/46432
     description: Runtime-deprecation.
 -->
 
-Type: Runtime
+Type: End-of-Life
 
-In a future version of Node.js, the `asyncResource` property will no longer
-be added when a function is bound to an `AsyncResource`.
+Older versions of Node.js would add the `asyncResource` when a function is
+bound to an `AsyncResource`. It no longer does.
 
 ### DEP0173: the `assert.CallTracker` class
 

filename: lib/async_hooks.js
patch: @@ -20,7 +20,6 @@ const {
   ERR_INVALID_ASYNC_ID,
 } = require('internal/errors').codes;
 const {
-  deprecate,
   kEmptyObject,
 } = require('internal/util');
 const {
@@ -247,7 +246,6 @@ class AsyncResource {
     } else {
       bound = FunctionPrototypeBind(this.runInAsyncScope, this, fn, thisArg);
     }
-    let self = this;
     ObjectDefineProperties(bound, {
       'length': {
         __proto__: null,
@@ -256,17 +254,6 @@ class AsyncResource {
         value: fn.length,
         writable: false,
       },
-      'asyncResource': {
-        __proto__: null,
-        configurable: true,
-        enumerable: true,
-        get: deprecate(function() {
-          return self;
-        }, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
-        set: deprecate(function(val) {
-          self = val;
-        }, 'The asyncResource property on bound functions is deprecated', 'DEP0172'),
-      },
     });
     return bound;
   }

filename: test/parallel/test-asyncresource-bind.js
patch: @@ -25,7 +25,6 @@ const fn2 = asyncResource.bind((a, b) => {
   return executionAsyncId();
 });
 
-assert.strictEqual(fn2.asyncResource, asyncResource);
 assert.strictEqual(fn2.length, 2);
 
 setImmediate(() => {
Repository: ollama/ollama
Pull request: update dockerfile

```
docker build -t ollama .
docker run -d -p 11434:11434 -v $HOME/.ollama:/home/ollama/.ollama ollama
```

This container image does not build GPU. That'll come later, after #454 

Changed files:
filename: .dockerignore
patch: @@ -1,8 +1,4 @@
-build
-llama/build
-.venv
 .vscode
 ollama
 app
-web
-.env
+llm/llama.cpp/ggml

filename: Dockerfile
patch: @@ -1,15 +1,21 @@
-FROM golang:1.20
+FROM golang:alpine
+
 WORKDIR /go/src/github.com/jmorganca/ollama
+RUN apk add --no-cache git build-base cmake
+
 COPY . .
-RUN CGO_ENABLED=1 go build -ldflags '-linkmode external -extldflags "-static"' .
+RUN go generate ./... && go build -ldflags '-linkmode external -extldflags "-static"' .
 
 FROM alpine
-COPY --from=0 /go/src/github.com/jmorganca/ollama/ollama /bin/ollama
-EXPOSE 11434
+ENV OLLAMA_HOST 0.0.0.0
+RUN apk add --no-cache libstdc++
+
 ARG USER=ollama
 ARG GROUP=ollama
-RUN addgroup -g 1000 $GROUP && adduser -u 1000 -DG $GROUP $USER
+RUN addgroup $GROUP && adduser -D -G $GROUP $USER
+
+COPY --from=0 /go/src/github.com/jmorganca/ollama/ollama /bin/ollama
+
 USER $USER:$GROUP
 ENTRYPOINT ["/bin/ollama"]
-ENV OLLAMA_HOST 0.0.0.0
 CMD ["serve"]
Repository: electron/electron
Pull request: perf: cache the return value of `IsX11()`

Backport of #46391

See that PR for details.


Notes: none.

Changed files:
filename: shell/browser/native_window_views.cc
patch: @@ -162,10 +162,11 @@ gfx::Size WindowSizeToContentSizeBuggy(HWND hwnd, const gfx::Size& size) {
 
 #endif
 
-[[maybe_unused]] bool IsX11() {
-  return ui::OzonePlatform::GetInstance()
-      ->GetPlatformProperties()
-      .electron_can_call_x11;
+[[maybe_unused, nodiscard]] bool IsX11() {
+  static const bool is_x11 = ui::OzonePlatform::GetInstance()
+                                 ->GetPlatformProperties()
+                                 .electron_can_call_x11;
+  return is_x11;
 }
 
 class NativeWindowClientView : public views::ClientView {
Repository: huggingface/transformers
Pull request: Fix: correct `k_proj` weight and bias slicing in D-FINE

This PR fixes the slicing of the `k_proj` weight and bias during checkpoint conversion for D-FINE.

Fixes #40253 

**Changes:**

* Corrected `k_proj.weight` from `in_proj_weight[256:384, :]` → `in_proj_weight[128:256, :]`.
* Corrected `k_proj.bias` from `in_proj_bias[256:384]` → `in_proj_bias[128:256]`.

**Impact:**
Ensures the attention mechanism in D-FINE correctly loads the original PyTorch checkpoint without misaligned projections.

Changed files:
filename: src/transformers/models/d_fine/convert_d_fine_original_pytorch_checkpoint_to_hf.py
patch: @@ -364,8 +364,8 @@ def read_in_q_k_v(state_dict, config, model_name):
         if model_name in ["dfine_n_coco", "dfine_n_obj2coco_e25", "dfine_n_obj365"]:
             state_dict[f"model.decoder.layers.{i}.self_attn.q_proj.weight"] = in_proj_weight[:128, :]
             state_dict[f"model.decoder.layers.{i}.self_attn.q_proj.bias"] = in_proj_bias[:128]
-            state_dict[f"model.decoder.layers.{i}.self_attn.k_proj.weight"] = in_proj_weight[256:384, :]
-            state_dict[f"model.decoder.layers.{i}.self_attn.k_proj.bias"] = in_proj_bias[256:384]
+            state_dict[f"model.decoder.layers.{i}.self_attn.k_proj.weight"] = in_proj_weight[128:256, :]
+            state_dict[f"model.decoder.layers.{i}.self_attn.k_proj.bias"] = in_proj_bias[128:256]
             state_dict[f"model.decoder.layers.{i}.self_attn.v_proj.weight"] = in_proj_weight[-128:, :]
             state_dict[f"model.decoder.layers.{i}.self_attn.v_proj.bias"] = in_proj_bias[-128:]
         else:
Repository: ggml-org/llama.cpp
Pull request: readme: add yzma Go bindings to list

*Make sure to read the [contributing guidelines](https://github.com/ggml-org/llama.cpp/blob/master/CONTRIBUTING.md) before submitting a PR*

This PR adds the `yzma` Go bindings to the list of bindings in the README. Since it is based on FFI, `yzma` is up to date with the very latest `llama.cpp`.

Thank you!

Changed files:
filename: README.md
patch: @@ -187,6 +187,7 @@ Instructions for adding support for new models: [HOWTO-add-model.md](docs/develo
 - Swift [srgtuszy/llama-cpp-swift](https://github.com/srgtuszy/llama-cpp-swift)
 - Swift [ShenghaiWang/SwiftLlama](https://github.com/ShenghaiWang/SwiftLlama)
 - Delphi [Embarcadero/llama-cpp-delphi](https://github.com/Embarcadero/llama-cpp-delphi)
+- Go (no CGo needed): [hybridgroup/yzma](https://github.com/hybridgroup/yzma)
 
 </details>
Repository: denoland/deno
Pull request: fix(ext/node): http.server.listen to handle signal option

Closes #30508

Changed files:
filename: ext/node/polyfills/http.ts
patch: @@ -28,6 +28,7 @@ import { ERR_SERVER_NOT_RUNNING } from "ext:deno_node/internal/errors.ts";
 import { EventEmitter } from "node:events";
 import { nextTick } from "ext:deno_node/_next_tick.ts";
 import {
+  validateAbortSignal,
   validateBoolean,
   validateInteger,
   validateObject,
@@ -1913,6 +1914,26 @@ export function Server(opts, requestListener?: ServerHandler): ServerImpl {
   return new ServerImpl(opts, requestListener);
 }
 
+function _addAbortSignalOption(server: ServerImpl, options: ListenOptions) {
+  if (options?.signal === undefined) {
+    return;
+  }
+
+  validateAbortSignal(options.signal, "options.signal");
+  const { signal } = options;
+
+  const onAborted = () => {
+    server.close();
+  };
+
+  if (signal.aborted) {
+    nextTick(onAborted);
+  } else {
+    signal.addEventListener("abort", onAborted);
+    server.once("close", () => signal.removeEventListener("abort", onAborted));
+  }
+}
+
 export class ServerImpl extends EventEmitter {
   #addr: Deno.NetAddr | null = null;
   #hasClosed = false;
@@ -1960,6 +1981,8 @@ export class ServerImpl extends EventEmitter {
       port = options.port | 0;
     }
 
+    _addAbortSignalOption(this, options);
+
     // TODO(bnoordhuis) Node prefers [::] when host is omitted,
     // we on the other hand default to 0.0.0.0.
     let hostname = options.host ?? "0.0.0.0";

filename: tests/unit_node/http_test.ts
patch: @@ -2141,3 +2141,28 @@ Deno.test("[node/https] null ca, key and cert req options", {
   }).end();
   await promise;
 });
+
+Deno.test("[node/http] server.listen respects signal option", async () => {
+  const [exitCode, _output] = await execCode(`
+    import { createServer } from 'node:http';
+
+    const abortController = new AbortController();
+
+    const server = createServer((_req, res) => {
+      res.writeHead(404).end();
+    }).on('listening', () => {
+      // Precedes setTimeout and exits with 0
+      abortController.abort();
+      setTimeout(() => process.exit(1), 1000);
+    }).on('close', () => {
+      process.exit(0);
+    });
+
+    server.listen({
+      host: 'localhost',
+      port: 0,
+      signal: abortController.signal
+    });
+  `);
+  assertEquals(exitCode, 0);
+});
Repository: nodejs/node
Pull request: src: replace V8 Fast API todo comment with note comment

As you can see in https://github.com/nodejs/node/pull/58544 adding a FAST V8 API version for the `Blob::RevokeObjectURL` function does not produce a performance benefit, so I am replacing the code
todo comment with a note mentioning that using the FAST API for such function is not benficial


<!--
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: src/node_blob.cc
patch: @@ -450,7 +450,8 @@ void Blob::StoreDataObject(const FunctionCallbackInfo<Value>& args) {
         std::string(*type, type.length())));
 }
 
-// TODO(@anonrig): Add V8 Fast API to the following function
+// Note: applying the V8 Fast API to the following function does not produce
+//       performance benefits (ref: https://github.com/nodejs/node/pull/58544)
 void Blob::RevokeObjectURL(const FunctionCallbackInfo<Value>& args) {
   CHECK_GE(args.Length(), 1);
   CHECK(args[0]->IsString());
Repository: facebook/react
Pull request: Set disableModulePatternComponents flag to __NEXT_MAJOR__


Changed files:
filename: packages/shared/ReactFeatureFlags.js
patch: @@ -214,7 +214,7 @@ export const enableNewBooleanProps = __NEXT_MAJOR__;
 // when we plan to enable them.
 // -----------------------------------------------------------------------------
 
-export const disableModulePatternComponents = false;
+export const disableModulePatternComponents = __NEXT_MAJOR__;
 
 export const enableUseRefAccessWarning = false;
 

filename: packages/shared/forks/ReactFeatureFlags.test-renderer.js
patch: @@ -35,7 +35,6 @@ export const enableCreateEventHandleAPI = false;
 export const enableSuspenseCallback = false;
 export const enableTrustedTypesIntegration = false;
 export const disableTextareaChildren = false;
-export const disableModulePatternComponents = false;
 export const enableSuspenseAvoidThisFallback = false;
 export const enableSuspenseAvoidThisFallbackFizz = false;
 export const enableCPUSuspense = false;
@@ -101,6 +100,7 @@ export const enableBigIntSupport = __NEXT_MAJOR__;
 export const disableLegacyMode = __NEXT_MAJOR__;
 export const disableLegacyContext = __NEXT_MAJOR__;
 export const enableNewBooleanProps = __NEXT_MAJOR__;
+export const disableModulePatternComponents = __NEXT_MAJOR__;
 
 // Flow magic to verify the exports of this file match the original version.
 ((((null: any): ExportsType): FeatureFlagsType): ExportsType);
Repository: huggingface/transformers
Pull request: Fix setting attention for multimodal models

# What does this PR do?

Fixes setting attention implementation in multimodals as a dict. Currently it fails because `self._attn_implementation` is not defined at the point when we try to `get` it. We need to set attention to `None` if the key is not found in dict, which is the default attention 


Changed files:
filename: src/transformers/configuration_utils.py
patch: @@ -410,15 +410,17 @@ def _attn_implementation(self):
     def _attn_implementation(self, value: Optional[Union[str, dict]]):
         """We set it recursively on the sub-configs as well"""
         # Set if for current config
-        attn_implementation = value if not isinstance(value, dict) else value.get("", self._attn_implementation)
+        current_attn = getattr(self, "_attn_implementation", None)
+        attn_implementation = value if not isinstance(value, dict) else value.get("", current_attn)
         self._attn_implementation_internal = attn_implementation
 
         # Set it recursively on the subconfigs
         for subconfig_key in self.sub_configs:
             subconfig = getattr(self, subconfig_key, None)
             if subconfig is not None:
+                current_subconfig_attn = getattr(subconfig, "_attn_implementation", None)
                 sub_implementation = (
-                    value if not isinstance(value, dict) else value.get(subconfig_key, subconfig._attn_implementation)
+                    value if not isinstance(value, dict) else value.get(subconfig_key, current_subconfig_attn)
                 )
                 subconfig._attn_implementation = sub_implementation
 

filename: tests/test_modeling_common.py
patch: @@ -3680,6 +3680,20 @@ def test_attn_implementation_composite_models(self):
             model = model_class(config)
             self.assertTrue(model.config.get_text_config(decoder=True)._attn_implementation == "eager")
 
+            # Test that using `dict` atttention implementation works with `from_pretrained`
+            #  Set all backbones to "eager" because "eager" attention is always available
+            with tempfile.TemporaryDirectory() as tmpdirname:
+                model.save_pretrained(tmpdirname)
+                new_model = model.from_pretrained(tmpdirname, attn_implementation=attn_implementation_per_subconfig)
+                self.assertTrue(new_model.config._attn_implementation == "eager")
+                for submodule in new_model.modules():
+                    if (
+                        submodule is not new_model
+                        and isinstance(submodule, PreTrainedModel)
+                        and submodule.config.__class__ != new_model.config.__class__
+                    ):
+                        self.assertTrue(submodule.config._attn_implementation == "eager")
+
     @require_torch_sdpa
     def test_sdpa_can_dispatch_non_composite_models(self):
         """