Files
bracket/backend
dependabot[bot] c5be5378bf Bump pyrefly from 0.60.0 to 0.61.1 in /backend (#1690)
Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.60.0 to
0.61.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/facebook/pyrefly/releases">pyrefly's
releases</a>.</em></p>
<blockquote>
<h2>Pyrefly v0.61.1</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/pyrefly/compare/0.61.0...0.61.1">https://github.com/facebook/pyrefly/compare/0.61.0...0.61.1</a></p>
<h2>Pyrefly v0.61.0</h2>
<p><strong>Status : BETA</strong>
<em>Release date: April 13, 2026</em></p>
<p>Pyrefly v0.61.0 bundles <strong>85 commits</strong> from <strong>21
contributors</strong>.</p>
<hr />
<h2> New &amp; Improved</h2>
<table>
<thead>
<tr>
<th>Area</th>
<th>What's new</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type Checking</strong></td>
<td>- Division, floor division, and modulo operations with a literal
zero divisor (e.g., <code>x / 0</code>, <code>y // 0</code>, <code>z %
0</code>) are flagged as errors, catching runtime
<code>ZeroDivisionError</code> before execution. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- Multiple inheritance with conflicting
<code>__slots__</code> definitions is detected and reported as an error,
matching CPython's runtime behavior and preventing layout conflicts.
<!-- raw HTML omitted --><!-- raw HTML omitted -->- Protocol members
assigned a value without an explicit type annotation (e.g., <code>x =
None</code> in a <code>Protocol</code> class body) are flagged as
errors, ensuring protocol members have declared types as required by the
typing specification.</td>
</tr>
<tr>
<td><strong>Language Server</strong></td>
<td>- Variables used exclusively within f-string format specifiers
(e.g., <code>f&quot;{key:&lt;{max_len}}&quot;</code>) are correctly
recognized as used, eliminating false positive unused-variable warnings.
<!-- raw HTML omitted --><!-- raw HTML omitted -->- The VS Code
extension explicitly declares workspace trust capabilities, requiring
trusted workspaces to run and allowing machine-overridable scope for
<code>lspPath</code> and <code>lspArguments</code> settings for improved
security.</td>
</tr>
<tr>
<td><strong>Coverage Reporting</strong></td>
<td>- The <code>pyrefly report</code> command now excludes some dunder
methods and typing-only constructs from coverage metrics. <!-- raw HTML
omitted --><!-- raw HTML omitted -->- Per-module JSON output includes
entity counts (n_functions, n_methods, n_function_params,
n_method_params, n_classes, n_attrs, n_properties, n_type_ignores) for
downstream consumers. <!-- raw HTML omitted --><!-- raw HTML omitted
-->- A new <code>--module &lt;name&gt;</code> CLI flag allows overriding
the module name in JSON output, supporting callers that need canonical
package names instead of filesystem-derived names.</td>
</tr>
<tr>
<td><strong>Pydantic</strong></td>
<td>- Pydantic lax conversion special-cases regex patterns, fixing false
positives when passing compiled patterns to Pydantic models.</td>
</tr>
<tr>
<td><strong>Performance</strong></td>
<td>- Fixed a bug in overload evaluation that caused exponential memory
consumption and indefinite hangs on code with many overloaded
calls.</td>
</tr>
</tbody>
</table>
<hr />
<h2>🐛 bug fixes</h2>
<p>We closed <strong>9</strong> bug issues this release 👏</p>
<ul>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3031">#3031</a>:
Fixed a crash in mypy_primer caused by a variable leak in
<code>LitEnum</code> — types are now deep-forced before storage to
prevent leaking vars into the solver.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2915">#2915</a>:
Division, floor division, and modulo by literal <code>0</code> are now
flagged as errors, catching <code>ZeroDivisionError</code> at static
analysis time instead of runtime.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3009">#3009</a>:
Fixed false positive unused-variable warnings for variables used
exclusively within f-string format specifiers (e.g.,
<code>f&quot;{key:&lt;{max_len}}&quot;</code>). The AST visitor now
correctly descends into <code>format_spec</code> nodes.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2799">#2799</a>:
Fixed false positive <code>[missing-attribute]</code> errors for
<code>dict.setdefault(key, []).append(val)</code> on unannotated dicts.
Overload resolution now creates fresh partial variables for each
overload, preventing incorrect pinning.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2991">#2991</a>:
Fixed Pydantic lax-mode rewriting <code>re.Pattern[str]</code> to
<code>Pattern[LaxStr]</code> and rejecting <code>re.Pattern[str]</code>.
Regex patterns now expand to <code>re.Pattern[T] | T</code> instead of
recursively widening the inner type.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2916">#2916</a>:
Fixed runtime <code>TypeError</code> from multiple inheritance with
conflicting <code>__slots__</code> (same slot names). Pyrefly now
detects and reports this layout conflict during class metadata
computation.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2917">#2917</a>:
Fixed runtime <code>TypeError</code> from multiple inheritance with
conflicting <code>__slots__</code> (different slot names). Pyrefly now
detects non-empty <code>__slots__</code> in multiple bases and reports
the conflict.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3064">#3064</a>:
Fixed false positive when using <code>issubclass()</code> after
<code>isinstance()</code> narrowing with custom metaclasses (e.g.,
Django's <code>ModelBase</code>). Metaclass instances are now correctly
accepted as valid class objects.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3030">#3030</a>:
Fixed false positive <code>LiteralString</code> type error in
<code>map(str.strip, ...)</code>. Overloads with narrower
<code>self</code>-type annotations are now filtered out during unbound
method resolution.</li>
</ul>
<p>Thank-you to all our contributors who found these bugs and reported
them! Did you know this is one of the most helpful contributions you can
make to an open-source project? If you find any bugs in Pyrefly we want
to know about them! Please open a bug report issue <a
href="https://github.com/facebook/pyrefly/issues">here</a></p>
<hr />
<h2>📦 Upgrade</h2>
<pre lang="bash"><code>pip install --upgrade pyrefly==0.61.0
</code></pre>
<h3>How to safely upgrade your codebase</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="582ad83313"><code>582ad83</code></a>
Bump Pyrefly version to 0.61.1</li>
<li><a
href="b71ef04355"><code>b71ef04</code></a>
Bump icu_decimal 2.1.1 -&gt; 2.2.0</li>
<li><a
href="526415af45"><code>526415a</code></a>
Update vendored wasm-bindgen to 0.2.118</li>
<li><a
href="23356019e2"><code>2335601</code></a>
Keep specialization errors arising from hints to overloaded calls</li>
<li><a
href="73b8f638d8"><code>73b8f63</code></a>
Use <code>with_snapshot</code> for is_subset_eq on unions</li>
<li><a
href="ce37688f12"><code>ce37688</code></a>
Take instantiation errors into account in
<code>Subset::with_snapshot</code></li>
<li><a
href="e2e3874cc3"><code>e2e3874</code></a>
Add <code>Solver::has_new_instantiation_errors</code></li>
<li><a
href="251ccae6c2"><code>251ccae</code></a>
Check for key in <code>instantiation_errors</code> before removing
it</li>
<li><a
href="2d69b92125"><code>2d69b92</code></a>
Reduce code repetition in <code>is_subset_eq</code> union case</li>
<li><a
href="2f6fa7a80f"><code>2f6fa7a</code></a>
Restore var state after failed Quantified checks in is_subset_eq</li>
<li>Additional commits viewable in <a
href="https://github.com/facebook/pyrefly/compare/0.60.0...0.61.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyrefly&package-manager=uv&previous-version=0.60.0&new-version=0.61.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-19 16:29:17 +00:00
..
2025-11-14 10:47:23 +00:00
2023-01-12 21:04:51 +01:00
2022-12-24 14:33:51 +01:00
2022-12-27 12:49:44 +01:00
2025-12-21 16:15:51 +00:00
2025-12-20 19:32:33 +01:00