81 Commits

Author SHA1 Message Date
Erik Vroon
016ce4d9fe Use hey api tournament types (#1481) 2025-12-21 16:15:51 +00:00
Erik Vroon
a548ff6d61 Use hey-api (#1479)
Store the `openapi.json` of the backend in the repo and import it using
https://heyapi.dev/ to generate TypeScript types for the backend API
query params, responses, bodies.
2025-12-20 19:32:33 +01:00
dependabot[bot]
c0e2a1b738 Bump pyrefly from 0.44.0 to 0.45.0 in /backend (#1461)
Bumps [pyrefly](https://github.com/facebook/pyrefly) from 0.44.0 to
0.45.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="93cacf99df"><code>93cacf9</code></a>
Update pyrefly version]</li>
<li><a
href="9ed447ce33"><code>9ed447c</code></a>
special-case numba.jit and numba.njit to preserve decorated function
signatures</li>
<li><a
href="495e7dcfaf"><code>495e7dc</code></a>
Remove Arc from HeavyTaskQueue</li>
<li><a
href="e34715c8b9"><code>e34715c</code></a>
Remove Arc from connection and lsp_queue</li>
<li><a
href="361ad739f1"><code>361ad73</code></a>
Borrow in server threads</li>
<li><a
href="f2482475e5"><code>f248247</code></a>
Run server threads in a thread scope</li>
<li><a
href="87cfca7e60"><code>87cfca7</code></a>
Stop listening for LSP requests after Exit notification</li>
<li><a
href="7f485246d8"><code>7f48524</code></a>
Move Pydantic lax mode into its own file</li>
<li><a
href="40759d7b44"><code>40759d7</code></a>
regression test for lazy class attr init</li>
<li><a
href="3f263a0470"><code>3f263a0</code></a>
Move suggest.rs into the pyrefly_util crate</li>
<li>Additional commits viewable in <a
href="https://github.com/facebook/pyrefly/compare/0.44.0...0.45.0">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.44.0&new-version=0.45.0)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Co-authored-by: Erik Vroon <erik.vroon@channable.com>
2025-12-09 12:24:57 +00:00
Erik Vroon
2e00bb20c5 Update pyrefly to 0.44 (#1457) 2025-12-04 08:32:30 +00:00
Erik Vroon
c8cab54286 Add pyrefly type checking (#1434)
Prefly is much faster than mypy and a bit stricter
Mypy will also still be checked on CI for now
2025-11-14 10:47:23 +00:00
dependabot[bot]
cc41d79759 Bump uvicorn from 0.35.0 to 0.38.0 in /backend (#1428)
Bumps [uvicorn](https://github.com/Kludex/uvicorn) from 0.35.0 to
0.38.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/uvicorn/releases">uvicorn's
releases</a>.</em></p>
<blockquote>
<h2>Version 0.38.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Support Python 3.14 by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2723">Kludex/uvicorn#2723</a></li>
</ul>
<hr />
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/NGANAMODEIJunior"><code>@​NGANAMODEIJunior</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2713">Kludex/uvicorn#2713</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0">https://github.com/Kludex/uvicorn/compare/0.37.0...0.38.0</a></p>
<h2>Version 0.37.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add <code>--timeout-worker-healthcheck</code> setting by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2711">Kludex/uvicorn#2711</a></li>
<li>Add <code>os.PathLike[str]</code> type to <code>ssl_ca_certs</code>
by <a href="https://github.com/rnv812"><code>@​rnv812</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2676">Kludex/uvicorn#2676</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/LincolnPuzey"><code>@​LincolnPuzey</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2669">Kludex/uvicorn#2669</a></li>
<li><a href="https://github.com/rnv812"><code>@​rnv812</code></a> made
their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2676">Kludex/uvicorn#2676</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0">https://github.com/Kludex/uvicorn/compare/0.36.1...0.37.0</a></p>
<h2>Version 0.36.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Raise an exception when calling removed
<code>Config.setup_event_loop()</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2709">Kludex/uvicorn#2709</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1">https://github.com/Kludex/uvicorn/compare/0.36.0...0.36.1</a></p>
<h2>Version 0.36.0</h2>
<h2>Added</h2>
<ul>
<li>Support custom IOLOOPs by <a
href="https://github.com/gnir-work"><code>@​gnir-work</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2435">Kludex/uvicorn#2435</a></li>
<li>Allow to provide importable string in <code>--http</code>,
<code>--ws</code> and <code>--loop</code> by <a
href="https://github.com/Kludex"><code>@​Kludex</code></a> in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2658">Kludex/uvicorn#2658</a></li>
</ul>
<hr />
<h3>New Contributors</h3>
<ul>
<li><a href="https://github.com/gnir-work"><code>@​gnir-work</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2435">Kludex/uvicorn#2435</a></li>
<li><a
href="https://github.com/musicinmybrain"><code>@​musicinmybrain</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2659">Kludex/uvicorn#2659</a></li>
<li><a
href="https://github.com/secrett2633"><code>@​secrett2633</code></a>
made their first contribution in <a
href="https://redirect.github.com/Kludex/uvicorn/pull/2684">Kludex/uvicorn#2684</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/Kludex/uvicorn/compare/0.35.0...0.36.0">https://github.com/Kludex/uvicorn/compare/0.35.0...0.36.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md">uvicorn's
changelog</a>.</em></p>
<blockquote>
<h2>0.38.0 (October 18, 2025)</h2>
<h3>Added</h3>
<ul>
<li>Support Python 3.14 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2723">#2723</a>)</li>
</ul>
<h2>0.37.0 (September 23, 2025)</h2>
<h3>Added</h3>
<ul>
<li>Add <code>--timeout-worker-healthcheck</code> option (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2711">#2711</a>)</li>
<li>Add <code>os.PathLike[str]</code> type to <code>ssl_ca_certs</code>
(<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2676">#2676</a>)</li>
</ul>
<h2>0.36.1 (September 23, 2025)</h2>
<h3>Fixed</h3>
<ul>
<li>Raise an exception when calling removed
<code>Config.setup_event_loop()</code> (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2709">#2709</a>)</li>
</ul>
<h2>0.36.0 (September 20, 2025)</h2>
<h3>Added</h3>
<ul>
<li>Support custom IOLOOPs (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2435">#2435</a>)</li>
<li>Allow to provide importable string in <code>--http</code>,
<code>--ws</code> and <code>--loop</code> (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2658">#2658</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3850ad6520"><code>3850ad6</code></a>
Version 0.38.0 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2733">#2733</a>)</li>
<li><a
href="9b3f17a549"><code>9b3f17a</code></a>
Support Python 3.14 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2723">#2723</a>)</li>
<li><a
href="ce79f95d06"><code>ce79f95</code></a>
Revert &quot;Add Marcelo Trylesinski to the license (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2699">#2699</a>)&quot;
(<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2730">#2730</a>)</li>
<li><a
href="dbf8797b47"><code>dbf8797</code></a>
docs: add social icons (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2728">#2728</a>)</li>
<li><a
href="58f28be98e"><code>58f28be</code></a>
Add section about event loop (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2725">#2725</a>)</li>
<li><a
href="93d9510749"><code>93d9510</code></a>
Bump docs dependencies (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2724">#2724</a>)</li>
<li><a
href="9b1c6c45ed"><code>9b1c6c4</code></a>
Move Marcelo Trylesinski to maintainers in <code>pyproject.toml</code>
(<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2719">#2719</a>)</li>
<li><a
href="57a61d86f2"><code>57a61d8</code></a>
Add discord to README (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2718">#2718</a>)</li>
<li><a
href="7ef5f9f5e7"><code>7ef5f9f</code></a>
chore(deps): bump astral-sh/setup-uv from 6.7.0 to 6.8.0 (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2717">#2717</a>)</li>
<li><a
href="6d26d88970"><code>6d26d88</code></a>
Update pyproject.toml for PEP639 compliance (<a
href="https://redirect.github.com/Kludex/uvicorn/issues/2713">#2713</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Kludex/uvicorn/compare/0.35.0...0.38.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=uvicorn&package-manager=uv&previous-version=0.35.0&new-version=0.38.0)](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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Co-authored-by: Erik Vroon <erik.vroon@channable.com>
2025-11-14 08:57:18 +00:00
dependabot[bot]
52c1d77c04 Update ruff requirement from 0.9.1 to 0.11.0 in /backend (#1155)
Updates the requirements on [ruff](https://github.com/astral-sh/ruff) to
permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.11.0</h2>
<h2>Release Notes</h2>
<p>This is a follow-up to <a
href="https://github.com/astral-sh/ruff/releases/tag/0.10.0">release
0.10.0</a>. The <code>requires-python</code> inference changes were
unintentionally omitted from 0.10.0, and have been included here. This
release also includes stabilization of the preview behavior for
<code>PGH004</code>.</p>
<h3>Breaking changes</h3>
<ul>
<li>
<p><strong>Changes to how the Python version is inferred when a
<code>target-version</code> is not specified</strong> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/16319">#16319</a>)</p>
<p>In previous versions of Ruff, you could specify your Python version
with:</p>
<ul>
<li>The <code>target-version</code> option in a <code>ruff.toml</code>
file or the <code>[tool.ruff]</code> section of a pyproject.toml
file.</li>
<li>The <code>project.requires-python</code> field in a
<code>pyproject.toml</code> file with a <code>[tool.ruff]</code>
section.</li>
</ul>
<p>These options worked well in most cases, and are still recommended
for fine control of the Python version. However, because of the way Ruff
discovers config files, <code>pyproject.toml</code> files without a
<code>[tool.ruff]</code> section would be ignored, including the
<code>requires-python</code> setting. Ruff would then use the default
Python version (3.9 as of this writing) instead, which is surprising
when you've attempted to request another version.</p>
<p>In v0.10, config discovery has been updated to address this
issue:</p>
<ul>
<li>If Ruff finds a <code>ruff.toml</code> file without a
<code>target-version</code>, it will check
for a <code>pyproject.toml</code> file in the same directory and respect
its
<code>requires-python</code> version, even if it does not contain a
<code>[tool.ruff]</code>
section.</li>
<li>If Ruff finds a user-level configuration, the
<code>requires-python</code> field of the closest
<code>pyproject.toml</code> in a parent directory will take
precedence.</li>
<li>If there is no config file (<code>ruff.toml</code>or
<code>pyproject.toml</code> with a
<code>[tool.ruff]</code> section) in the directory of the file being
checked, Ruff will
search for the closest <code>pyproject.toml</code> in the parent
directories and use its
<code>requires-python</code> setting.</li>
</ul>
</li>
</ul>
<h3>Stabilization</h3>
<p>The following behaviors have been stabilized:</p>
<ul>
<li><a
href="https://docs.astral.sh/ruff/rules/blanket-noqa/"><code>blanket-noqa</code></a>
(<code>PGH004</code>): Also detect blanked file-level noqa comments (and
not just line level comments).</li>
</ul>
<h3>Preview features</h3>
<ul>
<li>[syntax-errors] Tuple unpacking in <code>for</code> statement
iterator clause before Python 3.9 (<a
href="https://redirect.github.com/astral-sh/ruff/pull/16558">#16558</a>)</li>
</ul>
<h2>Install ruff 0.11.0</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf
https://github.com/astral-sh/ruff/releases/download/0.11.0/ruff-installer.sh
| sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy ByPass -c &quot;irm
https://github.com/astral-sh/ruff/releases/download/0.11.0/ruff-installer.ps1
| iex&quot;
&lt;/tr&gt;&lt;/table&gt; 
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.11.0</h2>
<p>This is a follow-up to release 0.10.0. Because of a mistake in the
release process, the <code>requires-python</code> inference changes were
not included in that release. Ruff 0.11.0 now includes this change as
well as the stabilization of the preview behavior for
<code>PGH004</code>.</p>
<h3>Breaking changes</h3>
<ul>
<li>
<p><strong>Changes to how the Python version is inferred when a
<code>target-version</code> is not specified</strong> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/16319">#16319</a>)</p>
<p>In previous versions of Ruff, you could specify your Python version
with:</p>
<ul>
<li>The <code>target-version</code> option in a <code>ruff.toml</code>
file or the <code>[tool.ruff]</code> section of a pyproject.toml
file.</li>
<li>The <code>project.requires-python</code> field in a
<code>pyproject.toml</code> file with a <code>[tool.ruff]</code>
section.</li>
</ul>
<p>These options worked well in most cases, and are still recommended
for fine control of the Python version. However, because of the way Ruff
discovers config files, <code>pyproject.toml</code> files without a
<code>[tool.ruff]</code> section would be ignored, including the
<code>requires-python</code> setting. Ruff would then use the default
Python version (3.9 as of this writing) instead, which is surprising
when you've attempted to request another version.</p>
<p>In v0.10, config discovery has been updated to address this
issue:</p>
<ul>
<li>If Ruff finds a <code>ruff.toml</code> file without a
<code>target-version</code>, it will check
for a <code>pyproject.toml</code> file in the same directory and respect
its
<code>requires-python</code> version, even if it does not contain a
<code>[tool.ruff]</code>
section.</li>
<li>If Ruff finds a user-level configuration, the
<code>requires-python</code> field of the closest
<code>pyproject.toml</code> in a parent directory will take
precedence.</li>
<li>If there is no config file (<code>ruff.toml</code>or
<code>pyproject.toml</code> with a
<code>[tool.ruff]</code> section) in the directory of the file being
checked, Ruff will
search for the closest <code>pyproject.toml</code> in the parent
directories and use its
<code>requires-python</code> setting.</li>
</ul>
</li>
</ul>
<h3>Stabilization</h3>
<p>The following behaviors have been stabilized:</p>
<ul>
<li><a
href="https://docs.astral.sh/ruff/rules/blanket-noqa/"><code>blanket-noqa</code></a>
(<code>PGH004</code>): Also detect blanked file-level noqa comments (and
not just line level comments).</li>
</ul>
<h3>Preview features</h3>
<ul>
<li>[syntax-errors] Tuple unpacking in <code>for</code> statement
iterator clause before Python 3.9 (<a
href="https://redirect.github.com/astral-sh/ruff/pull/16558">#16558</a>)</li>
</ul>
<h2>0.10.0</h2>
<p>Check out the <a href="https://astral.sh/blog/ruff-v0.10.0">blog
post</a> for a migration guide and overview of the changes!</p>
<h3>Breaking changes</h3>
<p>See also, the &quot;Remapped rules&quot; section which may result in
disabled rules.</p>
<ul>
<li>
<p><strong>Changes to how the Python version is inferred when a
<code>target-version</code> is not specified</strong> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/16319">#16319</a>)</p>
<p>Because of a mistake in the release process, the
<code>requires-python</code> inference changes are not included in this
release and instead shipped as part of 0.11.0.
You can find a description of this change in the 0.11.0 section.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2cd25ef641"><code>2cd25ef</code></a>
Ruff 0.11.0 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16723">#16723</a>)</li>
<li><a
href="a22d206db2"><code>a22d206</code></a>
[red-knot] Preliminary tests for typing.Final (<a
href="https://redirect.github.com/astral-sh/ruff/issues/15917">#15917</a>)</li>
<li><a
href="270318c2e0"><code>270318c</code></a>
[red-knot] fix: improve type inference for binary ops on tuples (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16725">#16725</a>)</li>
<li><a
href="d03b12e711"><code>d03b12e</code></a>
[red-knot] Assignments to attributes (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16705">#16705</a>)</li>
<li><a
href="14c5ed5d7d"><code>14c5ed5</code></a>
[<code>pygrep-hooks</code>]: Detect file-level suppressions comments
without rul… (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16720">#16720</a>)</li>
<li><a
href="595565015b"><code>5955650</code></a>
Fallback to requires-python in certain cases when target-version is not
found...</li>
<li><a
href="2382fe1f25"><code>2382fe1</code></a>
[syntax-errors] Tuple unpacking in <code>for</code> statement iterator
clause before Pyt...</li>
<li><a
href="27e9d1fe3e"><code>27e9d1f</code></a>
Ruff v0.10 Release (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16708">#16708</a>)</li>
<li><a
href="acf35c55f8"><code>acf35c5</code></a>
Add new <code>noqa</code> specification to the docs (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16703">#16703</a>)</li>
<li><a
href="b9b256209b"><code>b9b2562</code></a>
describe requires-python fallback in docs (<a
href="https://redirect.github.com/astral-sh/ruff/issues/16704">#16704</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.9.1...0.11.0">compare
view</a></li>
</ul>
</details>
<br />


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 merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@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>
Co-authored-by: Erik Vroon <erik.vroon@channable.com>
2025-03-17 06:40:10 +00:00
Erik Vroon
3b6cd73d65 Add more integration tests (#1126) 2025-02-16 16:26:30 +01:00
Erik Vroon
05090b4efa Add tests for swiss rescheduling (#1125) 2025-02-16 10:49:51 +01:00
Erik Vroon
d06a797725 Add tests for conflict logic (#1124) 2025-02-15 15:19:05 +00:00
Erik Vroon
24bb16400f Fix number of elimination teams (#1123) 2025-02-15 14:17:21 +00:00
Erik Vroon
4450f76e4e Filter empty player names out of multi team creation (#1122) 2025-02-15 14:00:41 +00:00
Erik Vroon
2fa8c08da3 Add teams with players (#1118)
fixes https://github.com/evroon/bracket/issues/978
2025-02-12 11:27:14 +00:00
Erik Vroon
489fc2ba64 Feature: archived tournaments (#1112)
fixes https://github.com/evroon/bracket/issues/690
2025-02-09 18:00:52 +01:00
Erik Vroon
558c3163d1 Update pytest asyncio to 0.25.3 (#1110)
Updates the requirements on
[pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit
the latest version.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](pytest-dev/pytest-asyncio@v0.21.2...v0.25.3)
2025-02-08 11:12:32 +00:00
Erik Vroon
cdde8c1fd3 Swiss scheduling improvements (#1019) 2024-11-21 19:59:02 +01:00
Erik Vroon
9f123babc2 Update elimination matches when updating rankings (#1002) 2024-11-08 17:51:41 +01:00
Erik Vroon
6aa2c51f89 Assign teams to subsequent elimination rounds (#1001)
fixes https://github.com/evroon/bracket/issues/998
2024-11-08 17:34:12 +01:00
Erik Vroon
ed659ff686 Fix bugs in presentation dashboard (#999) 2024-11-08 14:37:14 +01:00
Erik Vroon
932e5a245d Show updates to stage item inputs when going to next stage (#966) 2024-11-06 14:52:42 +01:00
Erik Vroon
538b4e145c Show conflicts (#967) 2024-10-27 20:29:36 +01:00
Erik Vroon
d32c36080e Allow changing inputs after creating stage item (#962) 2024-10-26 19:34:08 +02:00
Erik Vroon
52890fadb2 Use stage item inputs instead of teams (#909)
A match should contain two stage item inputs that oppose each other,
instead of two teams. This simplifies a lot and is more logical.
2024-10-21 18:44:25 +02:00
Erik Vroon
66c9251348 Small readability fixes (#905) 2024-09-10 20:37:42 +02:00
Erik Vroon
388afa585a Make primary key typing stricter (#904) 2024-09-10 20:32:59 +02:00
Erik Vroon
b3073c0fa6 Fix paths of swiss endpoints (#903) 2024-09-10 19:21:24 +02:00
Erik Vroon
d6449e8d05 Customize rankings (#797)
Allows you to add rankings that specify how the ranking per stage item
is calculated.
Points are now stored per stage item input.
2024-09-07 12:03:16 +02:00
robigan
208936fefc Fix backend to recalculate start time on match update (#587) 2024-09-01 19:13:07 +02:00
Erik Vroon
fe458771fc UX improvements (#722) 2024-05-14 19:43:42 +02:00
robigan
e3fa10e2a9 Team logos (#529) 2024-02-28 08:41:19 +01:00
Erik Vroon
d016e50537 Check foreign keys belong to tournament (#516)
Handles a security vulnerability where it's possible to link to columns
of other tournaments, such as add players from another tournament to a
team
2024-02-23 21:11:13 +01:00
Erik Vroon
b395d148f0 Add newtypes for primary keys (#512)
Adds type safety
2024-02-23 20:41:55 +01:00
Erik Vroon
880d212ce9 Use uuids for logos (#488)
Otherwise uploads can replace current files with the same name.
Also fixes and adds more tests for logo uploads.
2024-02-18 11:24:35 +01:00
Erik Vroon
0c0d99f8fe Write files async (non-blocking) (#485)
Also remove unused files and reload image in frontend when uploading a
new image.
2024-02-17 18:20:01 +01:00
Erik Vroon
7666e3a22b Handle foreign key constraint errors (#483) 2024-02-17 14:03:32 +01:00
Erik Vroon
f4c8bcdd65 Improve ui when there is no content (#473)
Adds more skeletons, fixes user page, fixes bug in modal for stage item
creation, etc.
2024-02-13 18:57:41 +01:00
Erik Vroon
f834fab2de Add pagination (#472)
Adds pagination (backend and frontend) to teams and players GET
endpoints
2024-02-12 19:08:50 +01:00
Erik Vroon
9479c92c97 Increase code coverage (#466)
Remove unused code and add some tests
Also fix detection of running pytest
2024-02-10 20:59:36 +01:00
Erik Vroon
14728a62bb Make dashboard endpoint unique (#454) 2024-02-10 16:15:27 +01:00
Erik Vroon
b42fce38ab Fix demo account deletion (#450)
Fixes error due to `._mapping` invalid return type
2024-02-09 16:52:14 +01:00
Erik Vroon
61611066cd Pydantic v2 migration (#252)
Upgrade Pydantic to V2.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-09 11:51:14 +01:00
Erik Vroon
31818c374e Fix db initialisation (#427)
fixes https://github.com/evroon/bracket/issues/426
2024-02-04 11:52:18 +01:00
Erik Vroon
469316efd4 Use Ruff format instead of Black (#420) 2024-02-03 14:29:33 +01:00
Erik Vroon
5659cd7344 Add demo functionality (#413)
Lets users create a temporary demo account to test the tool
2024-02-03 14:18:57 +01:00
Erik Vroon
b2a2dd1ea1 Implement hcaptcha (#410) 2024-01-17 16:31:38 +01:00
Erik Vroon
b21840ee2d Add Prometheus metrics (#372) 2023-12-03 16:45:35 +01:00
Erik Vroon
ac53331590 Add statistics columns to teams (#365) 2023-12-02 12:12:53 +01:00
Erik Vroon
f13c91d30f Prefer teams who have played much less (#351) 2023-11-25 17:05:29 +01:00
Erik Vroon
4b3dfb9b20 Implement custom time per match (#337) 2023-11-21 21:11:25 +01:00
Erik Vroon
4e616d8d97 Multi users and teams creation (#342)
fixes https://github.com/evroon/bracket/issues/292
2023-11-21 20:07:35 +01:00