Bump pyrefly from 0.63.1 to 0.64.1 in /backend (#1710)

Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.63.1 to
0.64.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.64.1</h2>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1">https://github.com/facebook/pyrefly/compare/0.64.0...0.64.1</a></p>
<h2>Pyrefly v0.64.0</h2>
<p><strong>Status : BETA</strong>
<em>Release date: May 05, 2026</em></p>
<p>Pyrefly v0.64.0 bundles <strong>190 commits</strong> from <strong>20
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>- You can now pass generic or overloaded callables to higher-order
functions and Pyrefly will preserve their structure in the return type.
For example, <code>identity(identity)</code> now correctly returns a
generic callable instead of degrading to <code>Unknown</code>. <!-- raw
HTML omitted --><!-- raw HTML omitted -->- Same-scope class rebinds
(like <code>Real = Dummy</code> after <code>class Real</code>) are now
checked against the original class as if it were an implicit
<code>type[Real]</code> annotation, preventing silent type changes and
fixing spurious constructor-call errors. <!-- raw HTML omitted --><!--
raw HTML omitted -->- Generic classes with missing type arguments in lax
mode now default to <code>Any</code> instead of raising variance errors,
improving consistency with how we handle other incomplete types. <!--
raw HTML omitted --><!-- raw HTML omitted -->- Pydantic
<code>field_validator</code> decorators with <code>mode='before'</code>
and <code>mode='plain'</code> are now supported, allowing validators to
accept broader input types before coercion. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- Spurious unpack diagnostics are no longer
emitted when the right-hand side involves <code>Never</code> (e.g.
<code>a, b, c = never()</code> or <code>a, b = (never(), 1)</code>). The
unpack solver is now <code>Never</code>-aware, recognizing that the
producing expression cannot complete and any error message at the unpack
site would be misleading. <!-- raw HTML omitted --><!-- raw HTML omitted
-->- <code>assert</code> statements now check that <code>__bool__</code>
is callable on the test expression, matching the behavior already in
place for <code>if</code>, <code>while</code>, and ternary expressions
(and aligning with mypy and pyright).</td>
</tr>
<tr>
<td><strong>Language Server</strong></td>
<td>- The language server now advertises both <code>source.fixAll</code>
and <code>source.fixAll.pyrefly</code> code action kinds, enabling
selective fix-on-save configuration across editors that implement the
LSP protocol. <!-- raw HTML omitted --><!-- raw HTML omitted -->-
Document highlights now correctly distinguish between read and write
references, setting <code>DocumentHighlightKind::WRITE</code> for
assignments and declarations. <!-- raw HTML omitted --><!-- raw HTML
omitted -->- Go-to-definition on relative imports in site-packages files
now correctly resolves to the package source instead of returning null
when a <code>pyproject.toml</code> exists at the project root. <!-- raw
HTML omitted --><!-- raw HTML omitted -->- Notebook cell index
resolution has been fixed to prevent mismatches between code cells and
markdown cells, eliminating panics and incorrect byte offset
calculations in Jupyter notebooks. <!-- raw HTML omitted --><!-- raw
HTML omitted -->- Cross-module &quot;find references&quot; (external
references) is now enabled by default, returning references across the
entire project rather than just the current file. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- A new quick fix turns the existing
&quot;Did you mean <code>Foo.BAR</code>?&quot; diagnostic note for
missing enum members into a code action that replaces the offending
string literal with the proper enum member access. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- A new <code># pyrefly: ignore</code> quick
fix inserts a suppression comment for the diagnostic at the cursor,
automatically merging into an existing pyrefly-ignore directive on the
same line or on a comment-only line above when present. <!-- raw HTML
omitted --><!-- raw HTML omitted -->- Numeric parameter defaults now
preserve their source spelling (e.g. <code>0o777</code>,
<code>0xFF</code>, <code>0b101</code>) in hover and signature display
rather than being normalized to decimal. <!-- raw HTML omitted --><!--
raw HTML omitted -->- Code actions documentation has been added to the
IDE Supported Features page, covering quick fixes and
<code>source.fixAll.pyrefly</code> configuration.</td>
</tr>
<tr>
<td><strong>Onboarding &amp; VS Code Extension</strong></td>
<td>- A redesigned unconfigured-project experience: when no
<code>pyrefly.toml</code> is found, Pyrefly auto-detects nearby
<code>mypy.ini</code>, <code>pyrightconfig.json</code>, or
<code>[tool.mypy]</code>/<code>[tool.pyright]</code> sections in
<code>pyproject.toml</code> and synthesizes an in-memory configuration
migrated from those settings (using the <code>legacy</code> or
<code>default</code> preset respectively). With no detectable
configuration, the new <code>basic</code> preset is used. <!-- raw HTML
omitted --><!-- raw HTML omitted -->- A new
<code>python.pyrefly.typeCheckingMode</code> workspace setting (auto /
off / basic / legacy / default / strict, default <code>auto</code>) lets
users pick a preset for files not covered by an explicit Pyrefly
configuration, directly from the VS Code settings UI. The legacy
<code>python.pyrefly.displayTypeErrors</code> setting is now deprecated,
with values transparently mapped to the new model. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- A new
<code>python.pyrefly.disableTypeErrors</code> workspace setting provides
a clean per-workspace kill switch for diagnostics, independent of the
type-checking mode. <!-- raw HTML omitted --><!-- raw HTML omitted -->-
The VS Code status bar has been redesigned: it now shows the active
preset (e.g. &quot;Pyrefly (Legacy)&quot;, &quot;Pyrefly (Basic)&quot;)
and the tooltip explains why that preset was chosen and links to the
relevant docs. <!-- raw HTML omitted --><!-- raw HTML omitted -->- After
a <code>pyrefly check</code> on an unconfigured project, the CLI now
prints a short upsell to <strong>stderr</strong> explaining what
configuration was synthesized and pointing at <code>pyrefly init</code>.
The message is routed to stderr so machine-readable stdout formats (e.g.
<code>--output-format json</code>) remain untouched.</td>
</tr>
<tr>
<td><strong>Configuration</strong></td>
<td>- Configuration presets (<code>off</code>, <code>basic</code>,
<code>legacy</code>, <code>default</code>, <code>strict</code>) are now
available via the <code>preset</code> option, providing named
collections of error severities and behavior settings as a base
configuration that user settings can override. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- The <code>legacy</code> preset is now used
by <code>pyrefly init</code> for mypy migration, disabling checks mypy
doesn't have and setting looser inference defaults. <!-- raw HTML
omitted --><!-- raw HTML omitted -->- The <code>implicit-any</code>
error code has been split into sub-kinds
(<code>implicit-any-attribute</code>,
<code>implicit-any-empty-container</code>,
<code>implicit-any-parameter</code>,
<code>implicit-any-type-argument</code>) with <code>implicit-any</code>
as the parent, allowing finer-grained control over where implicit
<code>Any</code> is flagged. <!-- raw HTML omitted --><!-- raw HTML
omitted -->- The <code>unbound-name</code> error is now disabled in the
<code>legacy</code> preset to match mypy's default behavior, which does
not flag possibly-undefined variables.</td>
</tr>
<tr>
<td><strong>Error Reporting</strong></td>
<td>- A new <code>incompatible-overload-residual</code> error kind has
been introduced for cases where all branches of an overloaded callable
are pruned during higher-order function analysis, making it easier to
configure these errors independently. <!-- raw HTML omitted --><!-- raw
HTML omitted -->- Error messages for all-pruned overload residuals now
describe the incompatibility in terms of &quot;solved type
variables&quot; rather than &quot;solved type constraints&quot; for
better clarity. <!-- raw HTML omitted --><!-- raw HTML omitted -->- The
<code>pyrefly suppress</code> command now correctly handles removal of
unused ignores via the <code>--remove-unused</code> flag, which was
previously broken.</td>
</tr>
<tr>
<td><strong>Factory Boy Support</strong></td>
<td>- Pyrefly now infers the correct model return types for
<code>create()</code>, <code>build()</code>,
<code>create_batch()</code>, and <code>build_batch()</code> methods on
<code>DjangoModelFactory</code> subclasses by reading the inner
<code>Meta.model</code> attribute. <!-- raw HTML omitted --><!-- raw
HTML omitted -->- False-positive <code>bad-override</code> errors on the
inner <code>Meta</code> class in factory-boy factories are now
suppressed, matching how we handle Django and Marshmallow.</td>
</tr>
<tr>
<td><strong>Reporting</strong></td>
<td>- The <code>pyrefly report</code> JSON output now includes a
<code>path</code> field on each <code>ModuleReport</code>, for
compatibility with typestats and similar tooling.</td>
</tr>
<tr>
<td><strong>Performance</strong></td>
<td>- Deeply-nested dict literals no longer cause exponential memory
growth during type inference. A depth-25 dict literal that previously
consumed ~7.7 GB now uses ~239 MB by computing the union of field types
on demand instead of storing it redundantly. <!-- raw HTML omitted
--><!-- raw HTML omitted -->- Callable residual finalization has been
optimized to avoid redundant type cloning and traversals, reducing
memory churn in attribute-heavy code. <!-- raw HTML omitted --><!-- raw
HTML omitted -->- Eliminated some bugs that caused Pyrefly to
unnecessarily analyze dependencies, improving latency and memory use,
especially in the IDE.</td>
</tr>
</tbody>
</table>
<hr />
<h2>🐛 bug fixes</h2>
<p>We closed <strong>15</strong> bug issues this release 👏</p>
<ul>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3057">#3057</a>:
Fixed an issue where string concatenation with the <code>+</code>
operator was incorrectly flagging <code>str</code> as not assignable to
<code>LiteralString</code> attributes. Pyrefly now preserves
<code>LiteralString</code> style when adding two explicit string
literals and uses implicit style otherwise.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/105">#105</a>:
Fixed premature type pinning in function calls where arguments were
incorrectly narrowed before all constraints were solved. For example,
<code>foo(x, y)</code> with <code>x: int | None</code> and <code>y: int
| None</code> no longer incorrectly narrows <code>x</code> to
<code>None</code> when passed to a generic
<code>foo[T](https://github.com/facebook/pyrefly/blob/HEAD/a: T, b:
T)</code>.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3198">#3198</a>:
Fixed <code>pyrefly suppress --remove-unused</code> which was not
actually removing unused error suppressions. The command now correctly
processes the <code>--remove-unused</code> flag.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3024">#3024</a>:
The language server now advertises <code>source.fixAll.pyrefly</code> in
addition to <code>source.fixAll</code>, allowing users to selectively
enable or disable Pyrefly's fix-all actions in editors that support LSP
code action kinds.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2819">#2819</a>:
Fixed incorrect variance errors when using generic classes like
Pydantic's <code>RootModel</code> in lax mode. Missing type arguments
now degrade to <code>Any</code> instead of raising errors, matching our
handling of other incomplete types.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3000">#3000</a>:
Fixed &quot;find references&quot; failures in Cursor and other editors
caused by relative imports in site-packages not resolving correctly when
a <code>pyproject.toml</code> existed at the project root.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2563">#2563</a>:
Fixed go-to-definition on relative imports in virtual environment
site-packages, which was returning null because the project root's
import path was matching before the more specific site-package
prefix.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3193">#3193</a>:
Fixed an error where <code>list[&quot;A|B&quot;]</code> was incorrectly
rejected as <code>not-a-type</code>. Type argument subscripts are now
bound as type expressions even in value context, allowing forward-ref
strings to be parsed.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3286">#3286</a>:
Fixed exponential memory blowup when type-checking deeply-nested dict
literals, which could cause VSCode to be killed by the OS. Memory usage
for a depth-25 dict dropped from ~7.7 GB to ~239 MB.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3261">#3261</a>:
Fixed a false positive <code>bad-class-definition</code> when a
dataclass field was assigned inside a <code>@classmethod</code> or
<code>__init_subclass__</code>. Pyrefly was incorrectly extracting these
as dataclass fields, even though Python's
<code>dataclasses.dataclass</code> ignores them at runtime.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2914">#2914</a>:
<code>assert</code> statements now flag a non-callable
<code>__bool__</code> on the test expression, closing a gap that
previously only caught the issue inside <code>if</code>,
<code>while</code>, and ternary expressions.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/2867">#2867</a>:
Fixed <code>urlunparse</code> being inferred as returning
<code>Literal[b'']</code> instead of <code>str</code>. The fix reworks
<code>as_superclass</code> so tuple-like <code>NamedTuple</code>
subclasses are upcast through their erased tuple element types, which
stops <code>ParseResult</code> from spuriously matching
<code>Iterable[None]</code> and selecting the bytes overload.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3266">#3266</a>:
Added a quick fix for the existing &quot;Did you mean
<code>Foo.BAR</code>?&quot; diagnostic note for missing enum members,
turning the suggestion into a code action that rewrites the surrounding
string literal.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3230">#3230</a>:
Numeric parameter defaults now preserve their original spelling (e.g.
<code>0o777</code>) in hover and signature display rather than being
normalized to a decimal value.</li>
<li><a
href="https://redirect.github.com/facebook/pyrefly/issues/3302">#3302</a>:
Added a <code>path</code> field to the <code>pyrefly report</code> JSON
<code>ModuleReport</code>, restoring compatibility with typestats.</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 />
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="71ff2a5cbc"><code>71ff2a5</code></a>
upgrade</li>
<li><a
href="b3d41027a2"><code>b3d4102</code></a>
Strip debuginfo from release binaries to reduce binary size</li>
<li><a
href="ccb904d472"><code>ccb904d</code></a>
Fix Pyrefly regression with imported TypeVars via attribute access (<a
href="https://redirect.github.com/facebook/pyrefly/issues/3333">#3333</a>)</li>
<li><a
href="fb2ef608a2"><code>fb2ef60</code></a>
support vscode-python-environments extension (<a
href="https://redirect.github.com/facebook/pyrefly/issues/3327">#3327</a>)</li>
<li><a
href="e63fa8d7d9"><code>e63fa8d</code></a>
remove extensionDependency on ms-python.python (<a
href="https://redirect.github.com/facebook/pyrefly/issues/3326">#3326</a>)</li>
<li><a
href="15b8f81792"><code>15b8f81</code></a>
abstract away python-environment from extension (<a
href="https://redirect.github.com/facebook/pyrefly/issues/3325">#3325</a>)</li>
<li><a
href="e267ba6974"><code>e267ba6</code></a>
Fix provide_type race condition with config recheck cancellation (<a
href="https://redirect.github.com/facebook/pyrefly/issues/3316">#3316</a>)</li>
<li><a
href="fe26ba3ace"><code>fe26ba3</code></a>
Fix failing quick fix test</li>
<li><a
href="6d9611de43"><code>6d9611d</code></a>
Use <code>FuncMetadata::def</code> to reduce code duplication</li>
<li><a
href="a545b3a13c"><code>a545b3a</code></a>
Add a more general <code>FuncMetadata::def</code> helper</li>
<li>Additional commits viewable in <a
href="https://github.com/facebook/pyrefly/compare/0.63.1...0.64.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.63.1&new-version=0.64.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>
This commit is contained in:
dependabot[bot]
2026-06-09 04:12:28 +00:00
committed by GitHub
parent 9a47d9cf6a
commit 4f1dc6ae80
2 changed files with 13 additions and 13 deletions

View File

@@ -55,7 +55,7 @@ dev = [
"mypy==1.20.0",
"pluggy==1.6.0",
"pylint==4.0.2",
"pyrefly==0.63.1",
"pyrefly==0.64.1",
"pytest-asyncio==1.3.0",
"pytest-cov==7.1.0",
"pytest-xdist==3.8.0",

24
backend/uv.lock generated
View File

@@ -408,7 +408,7 @@ dev = [
{ name = "mypy", specifier = "==1.20.0" },
{ name = "pluggy", specifier = "==1.6.0" },
{ name = "pylint", specifier = "==4.0.2" },
{ name = "pyrefly", specifier = "==0.63.1" },
{ name = "pyrefly", specifier = "==0.64.1" },
{ name = "pytest", specifier = "==9.0.3" },
{ name = "pytest-asyncio", specifier = "==1.3.0" },
{ name = "pytest-cov", specifier = "==7.1.0" },
@@ -1450,19 +1450,19 @@ wheels = [
[[package]]
name = "pyrefly"
version = "0.63.1"
version = "0.64.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/6c/66/c3e6c3963fe6bb40b0199745ce6cd5772253ec0a4edfe6db63a646f9d007/pyrefly-0.63.1.tar.gz", hash = "sha256:6819eb0857f5fcaef463ad58778e4121cb8c7c5a974a4739c8aa867e1ef16980", size = 5574619, upload-time = "2026-04-29T05:59:52.521Z" }
sdist = { url = "https://files.pythonhosted.org/packages/a7/13/7f824fa240a7c6b5595defc749d7e0e41c1c7fa2a889f55d5bd7d5cca28c/pyrefly-0.64.1.tar.gz", hash = "sha256:6303095afeedf4a93c7cf5e273ad0ada3d76f3a66b8769e06a6b96f0b2b22a39", size = 5678602, upload-time = "2026-05-08T03:37:53.334Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/e5/7b/52a34bd3dde4c1b6cf8e8cf8bcbb0fa52b868df2ab07220e130c87877376/pyrefly-0.63.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1bc37f4fe8c3e50f6718bcb1c6cae475e5e24197f6fe8042c3d6ca3d8f2e10da", size = 13102494, upload-time = "2026-04-29T05:59:27.558Z" },
{ url = "https://files.pythonhosted.org/packages/60/e0/2ac0c3e003ba6c855e4775536485c75b18e1aaf5e18e966a033751436416/pyrefly-0.63.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:712733b7c4344644eafa827de88a36e697a1aa282f913da89d3ad26e7dcc2dc2", size = 12597372, upload-time = "2026-04-29T05:59:30.434Z" },
{ url = "https://files.pythonhosted.org/packages/5f/07/1bb6354ccd7ccca2706fc00cfde952c2e18383a47f0cb5417347df836b7f/pyrefly-0.63.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6cbba7aedc266be0e6a69305e9caa53b3b4bab190bde046ce37a895af5c20a0", size = 36494119, upload-time = "2026-04-29T05:59:33.813Z" },
{ url = "https://files.pythonhosted.org/packages/cc/f5/9c243090872ad3c1f690c782df900468630ad139a0fb309a1185e6838dc7/pyrefly-0.63.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6a99c4acd7ff8418a15f39dd402d8f9bf7d640a8a2536f7a1b34ef7e1b1167c", size = 39262905, upload-time = "2026-04-29T05:59:36.609Z" },
{ url = "https://files.pythonhosted.org/packages/b1/ef/33918f3b5d04e34f8ad7a5d0de493c5d32a93b183b58c7e785571854b608/pyrefly-0.63.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b6490de58b1ec9fe99aa1fbaf0759079a916c0fb75d345439ba2a427aaebc1a", size = 37446668, upload-time = "2026-04-29T05:59:39.549Z" },
{ url = "https://files.pythonhosted.org/packages/15/d5/f0c9e6938c3f1231405ee77045b2b51c349d1a6aa84ba8717f4829f64bbc/pyrefly-0.63.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d53ec1f8711b24b1e992309b978b219daf2335201f26acafa86f14fbb81804ec", size = 42061281, upload-time = "2026-04-29T05:59:42.56Z" },
{ url = "https://files.pythonhosted.org/packages/9c/0c/ca7d4f2bc3c17dac9c3da9956d8baa5c4fe4c4e4996ead9b55273b0ee20a/pyrefly-0.63.1-py3-none-win32.whl", hash = "sha256:a9a45d3fc563f02cdca4681e899a775561bd71e923d6ac4a8979d93d7c2aff2a", size = 12086212, upload-time = "2026-04-29T05:59:45.021Z" },
{ url = "https://files.pythonhosted.org/packages/97/b5/1f6373e1fcefca3414baeed4209ecab2f4beb7849a2508517d73e78034ce/pyrefly-0.63.1-py3-none-win_amd64.whl", hash = "sha256:c6470a8eedae0e46d94667fd958cd008f9c2599aa3e6f2f43b6f4e6e87863cc3", size = 12934616, upload-time = "2026-04-29T05:59:48.146Z" },
{ url = "https://files.pythonhosted.org/packages/e9/ab/116efd46872f88cec697133d0430ce28affcc7247ebdff71429422a3a42b/pyrefly-0.63.1-py3-none-win_arm64.whl", hash = "sha256:b54b068a77341bc50604fb9bd4d0cf37fb74c09fb92344645c596813cc53950a", size = 12434930, upload-time = "2026-04-29T05:59:50.462Z" },
{ url = "https://files.pythonhosted.org/packages/a4/1a/2a26e0b87942830bb3cdf21e89a6772efadd07ebf1d4f25a05ffc00ab71a/pyrefly-0.64.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:df5c1a8edc83483b8fcc662a188ac09a129e1d051c676794ca9ac1005373ae0a", size = 13112175, upload-time = "2026-05-08T03:37:30.448Z" },
{ url = "https://files.pythonhosted.org/packages/5e/c8/625ad5ef423d425498eef4f350fe0a788d3d5403960dac6ff660b5a8edad/pyrefly-0.64.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e0388c486816043c745744c7cc7f1215005c3c2d9506c5ee89ebaee013cd62f3", size = 12593929, upload-time = "2026-05-08T03:37:33.23Z" },
{ url = "https://files.pythonhosted.org/packages/9a/9e/0b11aa0d0310f274f41394884d57775d5ac7d36cdb57ba8f030b7dcfae50/pyrefly-0.64.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da4d384a6466c59ba6bfa46b20f9a9f6b73922aeee43d96c9f89480d5edd3ad9", size = 12986439, upload-time = "2026-05-08T03:37:35.779Z" },
{ url = "https://files.pythonhosted.org/packages/20/be/3f774b450415fffe6ef13d0fcf4e22c733bad7c3d826a54693e17c9ab302/pyrefly-0.64.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52fad756a47c9fc1d912f8564f2afdb816c4d057dfd8f90f07adce52314a5b56", size = 13936843, upload-time = "2026-05-08T03:37:38.203Z" },
{ url = "https://files.pythonhosted.org/packages/c2/ee/e551c0ce512f01ddc09ed4258856ed4513bf49f3749c8c814a5b94ae59a3/pyrefly-0.64.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970a888b37eea53136a364b43e1466179ff8bb383e894c0afec3a3055e15cd9e", size = 13915094, upload-time = "2026-05-08T03:37:40.698Z" },
{ url = "https://files.pythonhosted.org/packages/48/c3/3aed3ff905f82833de7c48d8f9788e8ce9fed57c95bf876eef3cd02c4d29/pyrefly-0.64.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92ac7078f174a79d489a0d0c43d858523f8e5b95f4981269f2f75c4aaa66be3d", size = 13459840, upload-time = "2026-05-08T03:37:43.245Z" },
{ url = "https://files.pythonhosted.org/packages/b4/ed/aa1dc8b913d416a3c8bffc5485b1efe23c6039ead0dc5a9ad5505bf161ce/pyrefly-0.64.1-py3-none-win32.whl", hash = "sha256:3d16c90365af2f424c6e6a5c87d85ca94e8618ebcb4bf4c910634fd65d32b2e6", size = 12208564, upload-time = "2026-05-08T03:37:45.988Z" },
{ url = "https://files.pythonhosted.org/packages/8c/0c/29dfe1cbcf3b1907558e67a3e4b304af3992933f05e22a596333489d5950/pyrefly-0.64.1-py3-none-win_amd64.whl", hash = "sha256:1fda307ecf414274445108a5df5b58c6fa1702a51b4ee6c1df87efeeb97dec59", size = 13134553, upload-time = "2026-05-08T03:37:48.459Z" },
{ url = "https://files.pythonhosted.org/packages/c2/7c/449407653fe95e3f3a65dd8a54d8729ac0451247489d79d4e07808d73917/pyrefly-0.64.1-py3-none-win_arm64.whl", hash = "sha256:8f83a74c1463842d486d6578a000feccf47cd54d6d7d6628ffe73b1055ca9dce", size = 12528438, upload-time = "2026-05-08T03:37:50.923Z" },
]
[[package]]