Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test filter #174

Closed
wants to merge 134 commits into from
Closed

Test filter #174

wants to merge 134 commits into from

Conversation

jcadam14
Copy link
Contributor

@jcadam14 jcadam14 commented May 3, 2024

Closes #160

This was a rewrite of the git history using the following:

git filter-repo --replace-refs delete-no-add --invert-paths --path="data/census/raw/" --force
Which wipes out all references of the two census zip files which were causing it to take (relatively) a long time to clone the repo. I've done this on previous programs where repos contained zips, exes, dlls, etc that were horking up git's history.

Since poetry, using verbose debug output, does a git clone for each git dependency defined in a project, this was what was causing the poetry lock updates to take a long time (again, relatively) for such a small source repo. Poetry also does not allow extra commands to be added to the git dependency definition. It strips them off to prevent unwanted code from running.

It is generally highly discourage to put large binary files like zips in git, it doesn't handle it well. And since the README for the census code gives the link for the zips, maintaining them in here seems excessive.

However, you can't simply delete the zips, because of the way git maintains binary files in the git commit history. You have to rewrite the history to truly slim down the repo and speed up cloning. Since the git history is rewritten, that's why this PR looks the way it does. It's essentially all the commits recommited, sans the zip files.

If this approach isn't desired, we could just go with removing the zips files and commit that, and just deal with the history having them up until the delete.

Also, there is a forked poetry core a guy made that does a shallow clone. We could use that, but then that's deviating from the standard. Or we could as part of our process just edit the git.py and system.py in poetry ourselves to something similar.

Y'alls call. I've done the whack-a-mole thing without issue, but I understand hesitancy. So I can go either way.

lchen-2101 and others added 30 commits July 13, 2023 09:49
565: add census_tract_adr_type and census_tract_number validations except invalid_geoid
fix pricing_var_index_name, action_taken and ct_loan_term data
Co-authored-by: Aldrian Harjati <[email protected]>
Co-authored-by: Aldrian Harjati <[email protected]>
fix pricing_mca_addcost and naics description
add census_tract_number id validation and  function to parse/validate tract ids
add uid format and length validations
* add uid duplicates_in_dataset validation

* changed check function to return series

* update 2-phase schema

* add count_limit parameter

* add more unit tests

* removed a duplicated unit test

---------

Co-authored-by: Aldrian Harjati <[email protected]>
* Created a new branch to resolve merge conflicts

* Addressed Le's and Aldrian's comments. In the meantime, working on black formatting.

* Modified the comments to reflect the changes

* Fixed formatting issues

* Fixed data for po_1_ethnicity

* Fixed data

* Fixed GoodData file issues

* Changed format

* Modified comments

* Addressed the comments

* Addressed the comment for line 981 for schema.py

* Fixed format in phase_validations.py

* cleaned up the comments

* Removed the fucntions that the new function "has_valid_fiedlset_pair" is replacing: _is_fieldset_equal_to_helper, _is_fieldset_not_equal_to_helper,is_fieldset_equal_to, is_fieldset_not_equal_to. Also, removed the unit tests for thses.

* Fixing merge conflict

---------

Co-authored-by: Nargis Sultani <[email protected]>
…ed schema; modified unit test, removed denial_reasons_conditional_enum_value function and its unit tests
dependabot bot and others added 24 commits April 3, 2024 15:24
Bumps [typer](https://github.com/tiangolo/typer) from 0.11.1 to 0.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/releases">typer's
releases</a>.</em></p>
<blockquote>
<h2>0.12.0</h2>
<h3>Features</h3>
<ul>
<li>✨ Add <code>typer-slim</code> package without extras, make
<code>typer</code> include <code>typer-slim[default]</code> and
integrate Typer CLI (<code>typer</code> command) into Typer. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/780">#780</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Temporarily disable social plugin while a MkDocs issue is handled.
PR <a
href="https://redirect.github.com/tiangolo/typer/pull/779">#779</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>👷 Fix install MkDocs Insiders only when available. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/778">#778</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/blob/master/docs/release-notes.md">typer's
changelog</a>.</em></p>
<blockquote>
<h2>0.12.0</h2>
<h3>Features</h3>
<ul>
<li>✨ Add <code>typer-slim</code> package without extras, make
<code>typer</code> include <code>typer-slim[default]</code> and
integrate Typer CLI (<code>typer</code> command) into Typer. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/780">#780</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Internal</h3>
<ul>
<li>🔧 Temporarily disable social plugin while a MkDocs issue is handled.
PR <a
href="https://redirect.github.com/tiangolo/typer/pull/779">#779</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
<li>👷 Fix install MkDocs Insiders only when available. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/778">#778</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tiangolo/typer/commit/ef9beaf521047d44b0588f9f6927aa128d6b3f72"><code>ef9beaf</code></a>
🔖 Release version 0.12.0</li>
<li><a
href="https://github.com/tiangolo/typer/commit/8b02247c937643504a0025a94abc2a0d3a8d0136"><code>8b02247</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/7d5d6bb9e6eed6ef53271e78727b467f362504c9"><code>7d5d6bb</code></a>
✨ Add <code>typer-slim</code> package without extras, make
<code>typer</code> include `typer-slim[d...</li>
<li><a
href="https://github.com/tiangolo/typer/commit/62988dfa00b8e0778fda697768f8a9e5e5715eed"><code>62988df</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/2ab3c262dfa5b241c80cee97a1784fe65c21d079"><code>2ab3c26</code></a>
🔧 Temporarily disable social plugin while a MkDocs issue is handled (<a
href="https://redirect.github.com/tiangolo/typer/issues/779">#779</a>)</li>
<li><a
href="https://github.com/tiangolo/typer/commit/db27196d0dcd6ff67fd9a4c1562869d3867d4116"><code>db27196</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/19efa77bc390a5510bc52d83e6330c00c51c01bb"><code>19efa77</code></a>
👷 Fix install MkDocs Insiders only when available (<a
href="https://redirect.github.com/tiangolo/typer/issues/778">#778</a>)</li>
<li>See full diff in <a
href="https://github.com/tiangolo/typer/compare/0.11.1...0.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typer&package-manager=pip&previous-version=0.11.1&new-version=0.12.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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Adam <[email protected]>
Closes #127
Closes #121 
Closes #119 

- Created df_to_download function which returns csv formatted data
- Added UID to results
- Adjusted the record_no index to start at 1 instead of 0
- Updated pytests
- Added --download to cli.py
Bumps [typer](https://github.com/tiangolo/typer) from 0.12.0 to 0.12.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/releases">typer's
releases</a>.</em></p>
<blockquote>
<h2>0.12.1</h2>
<p>Now you don't need to install <code>typer[all]</code>. When you
install <code>typer</code> it comes with the default optional
dependencies and the <code>typer</code> command.</p>
<p>If you don't want the extra optional dependencies (<code>rich</code>
and <code>shellingham</code>), you can install <code>typer-slim</code>
instead.</p>
<p>You can also install <code>typer-slim[standard]</code>, which
includes the default optional dependencies, but not the
<code>typer</code> command.</p>
<p>Now the package <code>typer-cli</code> doesn't add anything on top of
what <code>typer</code> has, it only depends on <code>typer</code>, and
is there only for backwards compatibility, so that projects that depend
on <code>typer-cli</code> can get the latest features of the
<code>typer</code> command while they upgrade their dependencies to
require <code>typer</code> directly.</p>
<h3>Features</h3>
<ul>
<li>✨ Add support for <code>typer ./someprogram.py utils docs
--title</code>. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/782">#782</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>🐛 Fix broken installation when upgrading from <code>typer
&lt;0.12.0</code> to <code>typer &gt;=0.12.0</code>, make
<code>typer</code> independent of <code>typer-slim</code>, include
<code>typer</code> command in <code>typer</code> package. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/791">#791</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<p>This fixes a problem that would break the <code>typer</code>
installation directory when upgrading from <code>typer &lt;0.12.0</code>
to <code>typer &gt;=0.12.0</code>, see issue <a
href="https://redirect.github.com/tiangolo/typer/issues/790">#790</a>.</p>
<p>By installing the latest version (<code>0.12.1</code>) it fixes it,
for any previous version, even if the installation directory was already
broken by the previous upgrade.</p>
<h3>Internal</h3>
<ul>
<li>👷 Add cron to run test once a week on monday. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/783">#783</a> by
<a
href="https://github.com/estebanx64"><code>@​estebanx64</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/blob/master/docs/release-notes.md">typer's
changelog</a>.</em></p>
<blockquote>
<h2>0.12.1</h2>
<p>Now you don't need to install <code>typer[all]</code>. When you
install <code>typer</code> it comes with the default optional
dependencies and the <code>typer</code> command.</p>
<p>If you don't want the extra optional dependencies (<code>rich</code>
and <code>shellingham</code>), you can install <code>typer-slim</code>
instead.</p>
<p>You can also install <code>typer-slim[standard]</code>, which
includes the default optional dependencies, but not the
<code>typer</code> command.</p>
<p>Now the package <code>typer-cli</code> doesn't add anything on top of
what <code>typer</code> has, it only depends on <code>typer</code>, and
is there only for backwards compatibility, so that projects that depend
on <code>typer-cli</code> can get the latest features of the
<code>typer</code> command while they upgrade their dependencies to
require <code>typer</code> directly.</p>
<h3>Features</h3>
<ul>
<li>✨ Add support for <code>typer ./someprogram.py utils docs
--title</code>. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/782">#782</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>🐛 Fix broken installation when upgrading from <code>typer
&lt;0.12.0</code> to <code>typer &gt;=0.12.0</code>, make
<code>typer</code> independent of <code>typer-slim</code>, include
<code>typer</code> command in <code>typer</code> package. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/791">#791</a> by
<a href="https://github.com/tiangolo"><code>@​tiangolo</code></a>.</li>
</ul>
<p>This fixes a problem that would break the <code>typer</code>
installation directory when upgrading from <code>typer &lt;0.12.0</code>
to <code>typer &gt;=0.12.0</code>, see issue <a
href="https://redirect.github.com/tiangolo/typer/issues/790">#790</a>.</p>
<p>By installing the latest version (<code>0.12.1</code>) it fixes it,
for any previous version, even if the installation directory was already
broken by the previous upgrade.</p>
<h3>Internal</h3>
<ul>
<li>👷 Add cron to run test once a week on monday. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/783">#783</a> by
<a
href="https://github.com/estebanx64"><code>@​estebanx64</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tiangolo/typer/commit/f94b484450393f6a5cd064000ccc5b05e3bab10d"><code>f94b484</code></a>
🔖 Release version 0.12.1</li>
<li><a
href="https://github.com/tiangolo/typer/commit/3d1c32bf93214b0ac9c6b8d04a3daae2bbf2f74c"><code>3d1c32b</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/87384b3f68c844387702f6864093d85ac2e1a81a"><code>87384b3</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/05ffb24386cfa6cd23fa5f18b9eb233cd363e309"><code>05ffb24</code></a>
🐛 Fix broken installation when upgrading from <code>typer
\&lt;0.12.0</code> to `typer &gt;=0.1...</li>
<li><a
href="https://github.com/tiangolo/typer/commit/8bac8213aab544442b4f59ecc5eac45f4c208c63"><code>8bac821</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/2a19c0c1d52669e03282e63eb35b09a9cddc73d4"><code>2a19c0c</code></a>
👷 Add cron to run test once a week on monday (<a
href="https://redirect.github.com/tiangolo/typer/issues/783">#783</a>)</li>
<li><a
href="https://github.com/tiangolo/typer/commit/968d81df54997fa0219ca2de2aeacbab54daa003"><code>968d81d</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/bdaa5c69467249daf2a2ee324aab942e54bbc715"><code>bdaa5c6</code></a>
✨ Add support for <code>typer ./someprogram.py utils docs --title</code>
(<a
href="https://redirect.github.com/tiangolo/typer/issues/782">#782</a>)</li>
<li>See full diff in <a
href="https://github.com/tiangolo/typer/compare/0.12.0...0.12.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typer&package-manager=pip&previous-version=0.12.0&new-version=0.12.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 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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
closes [#134
](#134)

Co-authored-by: Nargis Sultani <[email protected]>
Closes #135 

I did this so the filing-api will always have a report to upload. There
will be no confusion if someone looks in the S3, or tries to download a
report. The report will always be there, it's just a successfully
validated submission that has no errors or warning will be empty
(essentially like an empty json being stored in the submission object).

If we don't like this approach, I'll need to update the /report endpoint
story to only call df_to_download if there are errors/warnings, and then
on that /report endpoint GET, check that a report exists in the S3 first
before trying to read it. Right now the assumption is a report will
always be there, even if empty.
Closes #142 

Had to pull in the index story #137 because adding the phase wasn't
testing correctly. So if this is approved before PR #138 then we can
ignore that one.

---------

Co-authored-by: Hans Keeler <[email protected]>
Bumps [typer](https://github.com/tiangolo/typer) from 0.12.1 to 0.12.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/releases">typer's
releases</a>.</em></p>
<blockquote>
<h2>0.12.3</h2>
<h3>Fixes</h3>
<ul>
<li>🐛 Fix Rich formatting with no commands. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/796">#796</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h2>0.12.2</h2>
<h3>Features</h3>
<ul>
<li>✨ Improve column help display, ensure commands column width is the
same on all panels. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/567">#567</a> by
<a href="https://github.com/ssbarnea"><code>@​ssbarnea</code></a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>🐛 Add support for an argument of type <code>Optional[Tuple]</code>
and default value <code>None</code>. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/757">#757</a> by
<a
href="https://github.com/Asthestarsfalll"><code>@​Asthestarsfalll</code></a>.</li>
</ul>
<h3>Docs</h3>
<ul>
<li>🔧 Fix typo in Github template. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/793">#793</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Fix typos in documentation. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/761">#761</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Update console output with Click 8 messages. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/789">#789</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Remove references to a .rst README generated by poetry new. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/632">#632</a> by
<a
href="https://github.com/jonasmmiguel"><code>@​jonasmmiguel</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tiangolo/typer/blob/master/docs/release-notes.md">typer's
changelog</a>.</em></p>
<blockquote>
<h2>0.12.3</h2>
<h3>Fixes</h3>
<ul>
<li>🐛 Fix Rich formatting with no commands. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/796">#796</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
</ul>
<h2>0.12.2</h2>
<h3>Features</h3>
<ul>
<li>✨ Improve column help display, ensure commands column width is the
same on all panels. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/567">#567</a> by
<a href="https://github.com/ssbarnea"><code>@​ssbarnea</code></a>.</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>🐛 Add support for an argument of type <code>Optional[Tuple]</code>
and default value <code>None</code>. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/757">#757</a> by
<a
href="https://github.com/Asthestarsfalll"><code>@​Asthestarsfalll</code></a>.</li>
</ul>
<h3>Docs</h3>
<ul>
<li>🔧 Fix typo in Github template. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/793">#793</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Fix typos in documentation. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/761">#761</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Update console output with Click 8 messages. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/789">#789</a> by
<a href="https://github.com/svlandeg"><code>@​svlandeg</code></a>.</li>
<li>📝 Remove references to a .rst README generated by poetry new. PR <a
href="https://redirect.github.com/tiangolo/typer/pull/632">#632</a> by
<a
href="https://github.com/jonasmmiguel"><code>@​jonasmmiguel</code></a>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tiangolo/typer/commit/525c7779ba8914b3950b26ffa21decdfd3eec6ec"><code>525c777</code></a>
🔖 Release version 0.12.3</li>
<li><a
href="https://github.com/tiangolo/typer/commit/718a899b1895cb4abf1da8518de8f3bf6fdaac56"><code>718a899</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/3bc7d2560f4c8f86e058c9ea1d1e682d14c5107c"><code>3bc7d25</code></a>
🐛 Fix Rich formatting with no commands (<a
href="https://redirect.github.com/tiangolo/typer/issues/796">#796</a>)</li>
<li><a
href="https://github.com/tiangolo/typer/commit/c9bc93c2592e36e449354dea9b8d64b26cf6bdc1"><code>c9bc93c</code></a>
🔖 Release version 0.12.2</li>
<li><a
href="https://github.com/tiangolo/typer/commit/c99a9501eea30967e82e6d77bf7ac0466b17993e"><code>c99a950</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/cfae1d2ba37a84789a1d8f112dde74cbf5a00d1e"><code>cfae1d2</code></a>
✨ Improve column help display, ensure commands column width is the same
on al...</li>
<li><a
href="https://github.com/tiangolo/typer/commit/475359f31a010f36c17408570048f0c9d46eb619"><code>475359f</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/a0209aa969f08b39438e04c6280dbe723782636a"><code>a0209aa</code></a>
🐛 Add support for an argument of type <code>Optional[Tuple]</code> and
default value `No...</li>
<li><a
href="https://github.com/tiangolo/typer/commit/5cee0af07312d7077614c702ba60444eb2ea4e7c"><code>5cee0af</code></a>
📝 Update release notes</li>
<li><a
href="https://github.com/tiangolo/typer/commit/cb7811380f03881d7690c987613c37b6890d1a69"><code>cb78113</code></a>
📝 Update release notes</li>
<li>Additional commits viewable in <a
href="https://github.com/tiangolo/typer/compare/0.12.1...0.12.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typer&package-manager=pip&previous-version=0.12.1&new-version=0.12.3)](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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.2.1 to
2.2.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pandas-dev/pandas/releases">pandas's
releases</a>.</em></p>
<blockquote>
<h2>Pandas 2.2.2</h2>
<p>We are pleased to announce the release of pandas 2.2.2.
This release includes some new features, bug fixes, and performance
improvements. We recommend that all users upgrade to this version.</p>
<p>See the <a
href="https://pandas.pydata.org/pandas-docs/version/2.2.2/whatsnew/v2.2.2.html">full
whatsnew</a> for a list of all the changes.
Pandas 2.2.2 supports Python 3.9 and higher.</p>
<p>The release will be available on the defaults and conda-forge
channels:</p>
<pre><code>conda install pandas
</code></pre>
<p>Or via PyPI:</p>
<pre><code>python3 -m pip install --upgrade pandas
</code></pre>
<p>Please report any issues with the release on the <a
href="https://github.com/pandas-dev/pandas/issues">pandas issue
tracker</a>.</p>
<p>Thanks to all the contributors who made this release possible.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pandas-dev/pandas/commit/d9cdd2ee5a58015ef6f4d15c7226110c9aab8140"><code>d9cdd2e</code></a>
RLS: 2.2.2</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/98aeac9b1b559178ef4f6a0a112a09b1741d11d1"><code>98aeac9</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58209">#58209</a>:
CI: Pin blosc to fix pytables (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/58211">#58211</a>)</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/5466f15462784eaa26e7ac43fc382f3802ab3ed1"><code>5466f15</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58202">#58202</a>:
DOC/TST: Document numpy 2.0 support and add tests… (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/58208">#58208</a>)</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/45b0b32af03e65f8d9547c127f8694fb7c3e994f"><code>45b0b32</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58203">#58203</a>
on branch 2.2.x (DOC: Add release date/contributors for 2....</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/c7ec5663b3a5f041d7e8c93fa3d75a1314477e27"><code>c7ec566</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58087">#58087</a>
on branch 2.2.x (BLD: Build wheels using numpy 2.0rc1) (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/5">#5</a>...</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/691fc88fbd7b570017bbc05fa77754b24c1fa997"><code>691fc88</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58181">#58181</a>
on branch 2.2.x (CI: correct error msg in test_view_index)...</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/a947587c8ad419e9cf8f6cce1fd5ad80c32d759f"><code>a947587</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58138">#58138</a>
on branch 2.2.x (BLD: Fix nightlies not building) (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/58140">#58140</a>)</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/b56842d93dc76dc2a83b7ab640af6a419697decb"><code>b56842d</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58100">#58100</a>
on branch 2.2.x (MNT: fix compatibility with beautifulsoup...</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/0f83d50c477f8aafb61a3db1d310d0b5fd261adc"><code>0f83d50</code></a>
Revert &quot;BLD: Pin numpy on 2.2.x&quot; (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/58093">#58093</a>)</li>
<li><a
href="https://github.com/pandas-dev/pandas/commit/e9b81ee3ecca2720f59e21091528e1e1e7eafe9a"><code>e9b81ee</code></a>
Backport PR <a
href="https://redirect.github.com/pandas-dev/pandas/issues/58126">#58126</a>:
BLD: Build wheels with numpy 2.0rc1 (<a
href="https://redirect.github.com/pandas-dev/pandas/issues/58127">#58127</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pandas-dev/pandas/compare/v2.2.1...v2.2.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pandas&package-manager=pip&previous-version=2.2.1&new-version=2.2.2)](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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [idna](https://github.com/kjd/idna) from 3.6 to 3.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/kjd/idna/releases">idna's
releases</a>.</em></p>
<blockquote>
<h2>v3.7</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix issue where specially crafted inputs to encode() could take
exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/kjd/idna/compare/v3.6...v3.7">https://github.com/kjd/idna/compare/v3.6...v3.7</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/kjd/idna/blob/master/HISTORY.rst">idna's
changelog</a>.</em></p>
<blockquote>
<p>3.7 (2024-04-11)
++++++++++++++++</p>
<ul>
<li>Fix issue where specially crafted inputs to encode() could
take exceptionally long amount of time to process. [CVE-2024-3651]</li>
</ul>
<p>Thanks to Guido Vranken for reporting the issue.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/kjd/idna/commit/1d365e17e10d72d0b7876316fc7b9ca0eebdd38d"><code>1d365e1</code></a>
Release v3.7</li>
<li><a
href="https://github.com/kjd/idna/commit/c1b3154939907fab67c5754346afaebe165ce8e6"><code>c1b3154</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/172">#172</a> from
kjd/optimize-contextj</li>
<li><a
href="https://github.com/kjd/idna/commit/0394ec76ff022813e770ba1fd89658790ea35623"><code>0394ec7</code></a>
Merge branch 'master' into optimize-contextj</li>
<li><a
href="https://github.com/kjd/idna/commit/cd58a23173d2b0a40b95ee680baf3e59e8d33966"><code>cd58a23</code></a>
Merge pull request <a
href="https://redirect.github.com/kjd/idna/issues/152">#152</a> from
elliotwutingfeng/dev</li>
<li><a
href="https://github.com/kjd/idna/commit/5beb28b9dd77912c0dd656d8b0fdba3eb80222e7"><code>5beb28b</code></a>
More efficient resolution of joiner contexts</li>
<li><a
href="https://github.com/kjd/idna/commit/1b121483ed04d9576a1291758f537e1318cddc8b"><code>1b12148</code></a>
Update ossf/scorecard-action to v2.3.1</li>
<li><a
href="https://github.com/kjd/idna/commit/d516b874c3388047934938a500c7488d52c4e067"><code>d516b87</code></a>
Update Github actions/checkout to v4</li>
<li><a
href="https://github.com/kjd/idna/commit/c095c75943413c75ebf8ac74179757031b7f80b7"><code>c095c75</code></a>
Merge branch 'master' into dev</li>
<li><a
href="https://github.com/kjd/idna/commit/60a0a4cb61ec6834d74306bd8a1fa46daac94c98"><code>60a0a4c</code></a>
Fix typo in GitHub Actions workflow key</li>
<li><a
href="https://github.com/kjd/idna/commit/5918a0ef8034379c2e409ae93ee11d24295bb201"><code>5918a0e</code></a>
Merge branch 'master' into dev</li>
<li>Additional commits viewable in <a
href="https://github.com/kjd/idna/compare/v3.6...v3.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=idna&package-manager=pip&previous-version=3.6&new-version=3.7)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/cfpb/regtech-data-validator/network/alerts).

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jcadam14 <[email protected]>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.3.5 to 0.3.7.
<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>v0.3.7</h2>
<h2>Changes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Implement
<code>loop-iterator-mutation</code> (<code>B909</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9578">#9578</a>)</li>
<li>[<code>pylint</code>] Implement rule to prefer augmented assignment
(<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9932">#9932</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid TOCTOU errors in cache initialization (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10884">#10884</a>)</li>
<li>[<code>pylint</code>] Recode <code>nan-comparison</code> rule to
<code>W0177</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10894">#10894</a>)</li>
<li>[<code>pylint</code>] Reverse min-max logic in
<code>if-stmt-min-max</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10890">#10890</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a href="https://github.com/lshi18"><code>@​lshi18</code></a></li>
<li><a href="https://github.com/mimre25"><code>@​mimre25</code></a></li>
</ul>
<h2>v0.3.6</h2>
<h2>Changes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>pylint</code>] Implement
<code>bad-staticmethod-argument</code> (<code>PLW0211</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10781">#10781</a>)</li>
<li>[<code>pylint</code>] Implement <code>if-stmt-min-max</code>
(<code>PLR1730</code>, <code>PLR1731</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10002">#10002</a>)</li>
<li>[<code>pyupgrade</code>] Replace <code>str,Enum</code> multiple
inheritance with <code>StrEnum</code> <code>UP042</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10713">#10713</a>)</li>
<li>[<code>refurb</code>] Implement
<code>if-expr-instead-of-or-operator</code> (<code>FURB110</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10687">#10687</a>)</li>
<li>[<code>refurb</code>] Implement <code>int-on-sliced-str</code>
(<code>FURB166</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10650">#10650</a>)</li>
<li>[<code>refurb</code>] Implement <code>write-whole-file</code>
(<code>FURB103</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10802">#10802</a>)</li>
<li>[<code>refurb</code>] Support <code>itemgetter</code> in
<code>reimplemented-operator</code> (<code>FURB118</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10526">#10526</a>)</li>
<li>[<code>flake8_comprehensions</code>] Add
<code>sum</code>/<code>min</code>/<code>max</code> to unnecessary
comprehension check (<code>C419</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10759">#10759</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>pydocstyle</code>] Require capitalizing docstrings where the
first sentence is a single word (<code>D403</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10776">#10776</a>)</li>
<li>[<code>pycodestyle</code>] Ignore annotated lambdas in class scopes
(<code>E731</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10720">#10720</a>)</li>
<li>[<code>flake8-pyi</code>] Various improvements to PYI034 (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10807">#10807</a>)</li>
<li>[<code>flake8-slots</code>] Flag subclasses of call-based
<code>typing.NamedTuple</code>s as well as subclasses of
<code>collections.namedtuple()</code> (<code>SLOT002</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10808">#10808</a>)</li>
<li>[<code>pyflakes</code>] Allow forward references in class bases in
stub files (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10779">#10779</a>)</li>
<li>[<code>pygrep-hooks</code>] Improve <code>blanket-noqa</code> error
message (<code>PGH004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10851">#10851</a>)</li>
</ul>
<h3>CLI</h3>
<ul>
<li>Support <code>FORCE_COLOR</code> env var (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10839">#10839</a>)</li>
</ul>
<h3>Configuration</h3>
<ul>
<li>Support negated patterns in <code>[extend-]per-file-ignores</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/10852">#10852</a>)</li>
</ul>
<!-- raw HTML omitted -->
</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.3.7</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Implement
<code>loop-iterator-mutation</code> (<code>B909</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9578">#9578</a>)</li>
<li>[<code>pylint</code>] Implement rule to prefer augmented assignment
(<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9932">#9932</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Avoid TOCTOU errors in cache initialization (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10884">#10884</a>)</li>
<li>[<code>pylint</code>] Recode <code>nan-comparison</code> rule to
<code>W0177</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10894">#10894</a>)</li>
<li>[<code>pylint</code>] Reverse min-max logic in
<code>if-stmt-min-max</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10890">#10890</a>)</li>
</ul>
<h2>0.3.6</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>pylint</code>] Implement
<code>bad-staticmethod-argument</code> (<code>PLW0211</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10781">#10781</a>)</li>
<li>[<code>pylint</code>] Implement <code>if-stmt-min-max</code>
(<code>PLR1730</code>, <code>PLR1731</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10002">#10002</a>)</li>
<li>[<code>pyupgrade</code>] Replace <code>str,Enum</code> multiple
inheritance with <code>StrEnum</code> <code>UP042</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10713">#10713</a>)</li>
<li>[<code>refurb</code>] Implement
<code>if-expr-instead-of-or-operator</code> (<code>FURB110</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10687">#10687</a>)</li>
<li>[<code>refurb</code>] Implement <code>int-on-sliced-str</code>
(<code>FURB166</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10650">#10650</a>)</li>
<li>[<code>refurb</code>] Implement <code>write-whole-file</code>
(<code>FURB103</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10802">#10802</a>)</li>
<li>[<code>refurb</code>] Support <code>itemgetter</code> in
<code>reimplemented-operator</code> (<code>FURB118</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10526">#10526</a>)</li>
<li>[<code>flake8_comprehensions</code>] Add
<code>sum</code>/<code>min</code>/<code>max</code> to unnecessary
comprehension check (<code>C419</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10759">#10759</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>pydocstyle</code>] Require capitalizing docstrings where the
first sentence is a single word (<code>D403</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10776">#10776</a>)</li>
<li>[<code>pycodestyle</code>] Ignore annotated lambdas in class scopes
(<code>E731</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10720">#10720</a>)</li>
<li>[<code>flake8-pyi</code>] Various improvements to PYI034 (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10807">#10807</a>)</li>
<li>[<code>flake8-slots</code>] Flag subclasses of call-based
<code>typing.NamedTuple</code>s as well as subclasses of
<code>collections.namedtuple()</code> (<code>SLOT002</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10808">#10808</a>)</li>
<li>[<code>pyflakes</code>] Allow forward references in class bases in
stub files (<code>F821</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10779">#10779</a>)</li>
<li>[<code>pygrep-hooks</code>] Improve <code>blanket-noqa</code> error
message (<code>PGH004</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10851">#10851</a>)</li>
</ul>
<h3>CLI</h3>
<ul>
<li>Support <code>FORCE_COLOR</code> env var (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10839">#10839</a>)</li>
</ul>
<h3>Configuration</h3>
<ul>
<li>Support negated patterns in <code>[extend-]per-file-ignores</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/10852">#10852</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Accept non-aliased (but
correct) import in <code>unconventional-import-alias</code>
(<code>ICN001</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10729">#10729</a>)</li>
<li>[<code>flake8-quotes</code>] Add semantic model flag when inside
f-string replacement field (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10766">#10766</a>)</li>
<li>[<code>pep8-naming</code>] Recursively resolve
<code>TypeDicts</code> for N815 violations (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10719">#10719</a>)</li>
<li>[<code>flake8-quotes</code>] Respect <code>Q00*</code> ignores in
<code>flake8-quotes</code> rules (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10728">#10728</a>)</li>
<li>[<code>flake8-simplify</code>] Show negated condition in
<code>needless-bool</code> diagnostics (<code>SIM103</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10854">#10854</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/2e37cf6b3b4b873ad9ffe9728bccdf134862b768"><code>2e37cf6</code></a>
Bump version to v0.3.7 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10895">#10895</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/a9e43930086af3ae3c974e4ecec2ed1b328fa8e6"><code>a9e4393</code></a>
[<code>pylint</code>] Implement rule to prefer augmented assignment
(<code>PLR6104</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/9932">#9932</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/312f43475f14cc723c8935e4c909b17510382bb8"><code>312f434</code></a>
[<code>pylint</code>] Recode <code>nan-comparison</code> rule to
<code>W0177</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10894">#10894</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/563daa8a86e5fe38dcdcfba5cc7a93a84bc2d550"><code>563daa8</code></a>
Fix docs and add overlap test for negated per-file-ignores (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10863">#10863</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/7ae15c6e0a127ebc7c8fa899dbd821b546abeb41"><code>7ae15c6</code></a>
Fix comment copy/paste typo in newtype_index (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10892">#10892</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/03899dcba37c7429084486600ed7f3b12bea20dc"><code>03899dc</code></a>
[<code>flake8-bugbear</code>] Implement
<code>loop-iterator-mutation</code> (<code>B909</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/9578">#9578</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/25f5a8b2019260eba3889d9800a60950a810a43e"><code>25f5a8b</code></a>
Struct not tuple for compiled per-file ignores (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10864">#10864</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e7d1d43f39ebb7258713edad9aae190c868d5ea2"><code>e7d1d43</code></a>
[<code>pylint</code>] Reverse min-max logic in
<code>if-stmt-min-max</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10890">#10890</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/9b9098c3dca7475cbe10fd8d8f7152c392a25924"><code>9b9098c</code></a>
Downgrade ESLint to v8 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10888">#10888</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/0cc154c2a9ab08568a232f0c67b756c97976332d"><code>0cc154c</code></a>
Avoid TOCTOU errors in cache initialization (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10884">#10884</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/v0.3.5...v0.3.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.3.5&new-version=0.3.7)](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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jcadam14 <[email protected]>
…ons (#152)

Closes #146 

Turns out our is_less_than, is_greater_than and
is_greater_than_or_equals all had the same issue. So I created a
comparison_helper function that uses python eval() to convert the value
to its type (so we're not beholden to int, float, etc in the functions)
and then uses eval again with the passed in comparison sign to evaluate
the value and the limit.

Also beefed up the pytests for all three functions to use values that
would actually cause the error. Simple strings like "1" and "2" won't
cut it.
Closes #151 

Updated areas of code called out in the story.

Attached a before and after csv to show what was happening. We don't
have any pytests that are this verbose to find those errors/warnings
that were causing the reordering. Can add those if desired.

[logical_errors_example.csv](https://github.com/cfpb/regtech-data-validator/files/14961898/logical_errors_example.csv)

[old_order_logical_errors_example.csv](https://github.com/cfpb/regtech-data-validator/files/14961899/old_order_logical_errors_example.csv)

Notice the ordering of the fieds for E2014 and W2035. The old format had
them reordered lexicographically, whereas the new order maintains what
is in the FIG and in the groupby order of the Checks.
Bumps [black](https://github.com/psf/black) from 24.3.0 to 24.4.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/releases">black's
releases</a>.</em></p>
<blockquote>
<h2>24.4.0</h2>
<h3>Stable style</h3>
<ul>
<li>Fix unwanted crashes caused by AST equivalency check (<a
href="https://redirect.github.com/psf/black/issues/4290">#4290</a>)</li>
</ul>
<h3>Preview style</h3>
<ul>
<li><code>if</code> guards in <code>case</code> blocks are now wrapped
in parentheses when the line is too long.
(<a
href="https://redirect.github.com/psf/black/issues/4269">#4269</a>)</li>
<li>Stop moving multiline strings to a new line unless inside brackets
(<a
href="https://redirect.github.com/psf/black/issues/4289">#4289</a>)</li>
</ul>
<h3>Integrations</h3>
<ul>
<li>Add a new option <code>use_pyproject</code> to the GitHub Action
<code>psf/black</code>. This will read the
Black version from <code>pyproject.toml</code>. (<a
href="https://redirect.github.com/psf/black/issues/4294">#4294</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/blob/main/CHANGES.md">black's
changelog</a>.</em></p>
<blockquote>
<h2>24.4.0</h2>
<h3>Stable style</h3>
<ul>
<li>Fix unwanted crashes caused by AST equivalency check (<a
href="https://redirect.github.com/psf/black/issues/4290">#4290</a>)</li>
</ul>
<h3>Preview style</h3>
<ul>
<li><code>if</code> guards in <code>case</code> blocks are now wrapped
in parentheses when the line is too long.
(<a
href="https://redirect.github.com/psf/black/issues/4269">#4269</a>)</li>
<li>Stop moving multiline strings to a new line unless inside brackets
(<a
href="https://redirect.github.com/psf/black/issues/4289">#4289</a>)</li>
</ul>
<h3>Integrations</h3>
<ul>
<li>Add a new option <code>use_pyproject</code> to the GitHub Action
<code>psf/black</code>. This will read the
Black version from <code>pyproject.toml</code>. (<a
href="https://redirect.github.com/psf/black/issues/4294">#4294</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/black/commit/8fe627072f15ff2e3d380887b92f7868efaf6d05"><code>8fe6270</code></a>
Prepare release 24.4.0 (<a
href="https://redirect.github.com/psf/black/issues/4307">#4307</a>)</li>
<li><a
href="https://github.com/psf/black/commit/6b25e7cdabe2cd0dc2ec9d0009668af085b1e732"><code>6b25e7c</code></a>
Bump peter-evans/find-comment from 3.0.0 to 3.1.0 (<a
href="https://redirect.github.com/psf/black/issues/4304">#4304</a>)</li>
<li><a
href="https://github.com/psf/black/commit/07fe1ca88abee9a0c88efb6b4213ea04d3fe2eae"><code>07fe1ca</code></a>
docs: remove repetitive word (<a
href="https://redirect.github.com/psf/black/issues/4303">#4303</a>)</li>
<li><a
href="https://github.com/psf/black/commit/3383f531bc25955eebb2644ba5b389413bd10219"><code>3383f53</code></a>
GitHub Action: Allow reading version from pyproject.toml (<a
href="https://redirect.github.com/psf/black/issues/4294">#4294</a>)</li>
<li><a
href="https://github.com/psf/black/commit/c8f1a5542c257491e1e093b1404481ece7f7e02c"><code>c8f1a55</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/psf/black/issues/4297">#4297</a>)</li>
<li><a
href="https://github.com/psf/black/commit/836acad86371578527408a4c8f968cde1302e130"><code>836acad</code></a>
Improve AST safety check (<a
href="https://redirect.github.com/psf/black/issues/4290">#4290</a>)</li>
<li><a
href="https://github.com/psf/black/commit/13bd0925eb347926399a5bcb8b70853549f3da07"><code>13bd092</code></a>
fix: Stop moving multiline strings to a new line unless inside brackets
(<a
href="https://redirect.github.com/psf/black/issues/4289">#4289</a>)</li>
<li><a
href="https://github.com/psf/black/commit/c9d2635b55d03cd125465cd6d7477e6c3cb8fba3"><code>c9d2635</code></a>
Remove mocking from tests (<a
href="https://redirect.github.com/psf/black/issues/4287">#4287</a>)</li>
<li><a
href="https://github.com/psf/black/commit/bf1195612c00b008ea67ea0472ae527956eb66fe"><code>bf11956</code></a>
Fix two logging calls in the test helper (<a
href="https://redirect.github.com/psf/black/issues/4286">#4286</a>)</li>
<li><a
href="https://github.com/psf/black/commit/97993f997fe01cf565924072e4915126cdb86ed2"><code>97993f9</code></a>
Bump pypa/cibuildwheel from 2.16.5 to 2.17.0 (<a
href="https://redirect.github.com/psf/black/issues/4283">#4283</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/black/compare/24.3.0...24.4.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=24.3.0&new-version=24.4.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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Closes #164 
Closes #150 
Closes #157 
Closes #161 
Closes #158 

See story for results of improvements

I had to add in changes from PR #156 and #159 since they all touch the
same code. So depending which ones are reviewed first and merged in,
might be able to close the others or deal with merge conflicts.
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.3.7 to 0.4.1.
<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>v0.4.1</h2>
<h2>Changes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>pylint</code>] Implement <code>invalid-hash-returned</code>
(<code>PLE0309</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10961">#10961</a>)</li>
<li>[<code>pylint</code>] Implement <code>invalid-index-returned</code>
(<code>PLE0305</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10962">#10962</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pylint</code>] Allow <code>NoReturn</code>-like functions for
<code>__str__</code>, <code>__len__</code>, etc. (<code>PLE0307</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11017">#11017</a>)</li>
<li>Parser: Use empty range when there's &quot;gap&quot; in token source
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11032">#11032</a>)</li>
<li>[<code>ruff</code>] Ignore stub functions in
<code>unused-async</code> (<code>RUF029</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11026">#11026</a>)</li>
<li>Parser: Expect indented case block instead of match stmt (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11033">#11033</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/HenryAsa"><code>@​HenryAsa</code></a></li>
<li><a
href="https://github.com/MithicSpirit"><code>@​MithicSpirit</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a
href="https://github.com/tibor-reiss"><code>@​tibor-reiss</code></a></li>
</ul>
<h2>v0.4.0</h2>
<h2>Changes</h2>
<h3>A new, hand-written parser</h3>
<p>Ruff's new parser is <strong>&gt;2x faster</strong>, which translates
to a <strong>20-40% speedup</strong> for all linting and formatting
invocations. There's a lot to say about this exciting change, so check
out the <a href="https://astral.sh/blog/ruff-v0.4.0">blog post</a> for
more details!</p>
<p>See <a
href="https://redirect.github.com/astral-sh/ruff/pull/10036">#10036</a>
for implementation details.</p>
<h3>A new language server in Rust</h3>
<p>With this release, we also want to highlight our new language server.
<code>ruff server</code> is a Rust-powered language server that comes
built-in with Ruff. It can be used with any editor that supports the <a
href="https://microsoft.github.io/language-server-protocol/">Language
Server Protocol</a> (LSP). It uses a multi-threaded, lock-free
architecture inspired by <code>rust-analyzer</code> and it will open the
door for a lot of exciting features. It’s also faster than our previous
<a href="https://github.com/astral-sh/ruff-lsp">Python-based language
server</a> -- but you probably guessed that already.</p>
<p><code>ruff server</code> is only in alpha, but it has a lot of
features that you can try out today:</p>
<ul>
<li>Lints Python files automatically and shows quick-fixes when
available</li>
<li>Formats Python files, with support for range formatting</li>
<li>Comes with commands for quickly performing actions:
<code>ruff.applyAutofix</code>, <code>ruff.applyFormat</code>, and
<code>ruff.applyOrganizeImports</code></li>
<li>Supports <code>source.fixAll</code> and
<code>source.organizeImports</code> source actions</li>
<li>Automatically reloads your project configuration when you change
it</li>
</ul>
<p>To setup <code>ruff server</code> with your editor, refer to the <a
href="https://github.com/astral-sh/ruff/blob/main/crates/ruff_server/README.md">README.md</a>.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Do not trigger <code>E3</code> rules on
<code>def</code>s following a function/method with a dummy body (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10704">#10704</a>)</li>
<li>[<code>pylint</code>] Implement <code>invalid-bytes-returned</code>
(<code>E0308</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10959">#10959</a>)</li>
</ul>
<!-- raw HTML omitted -->
</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.4.1</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>pylint</code>] Implement <code>invalid-hash-returned</code>
(<code>PLE0309</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10961">#10961</a>)</li>
<li>[<code>pylint</code>] Implement <code>invalid-index-returned</code>
(<code>PLE0305</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10962">#10962</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>pylint</code>] Allow <code>NoReturn</code>-like functions for
<code>__str__</code>, <code>__len__</code>, etc. (<code>PLE0307</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11017">#11017</a>)</li>
<li>Parser: Use empty range when there's &quot;gap&quot; in token source
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11032">#11032</a>)</li>
<li>[<code>ruff</code>] Ignore stub functions in
<code>unused-async</code> (<code>RUF029</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11026">#11026</a>)</li>
<li>Parser: Expect indented case block instead of match stmt (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11033">#11033</a>)</li>
</ul>
<h2>0.4.0</h2>
<h3>A new, hand-written parser</h3>
<p>Ruff's new parser is <strong>&gt;2x faster</strong>, which translates
to a <strong>20-40% speedup</strong> for all linting and formatting
invocations.
There's a lot to say about this exciting change, so check out the <a
href="https://astral.sh/blog/ruff-v0.4.0">blog post</a> for more
details!</p>
<p>See <a
href="https://redirect.github.com/astral-sh/ruff/pull/10036">#10036</a>
for implementation details.</p>
<h3>A new language server in Rust</h3>
<p>With this release, we also want to highlight our new language server.
<code>ruff server</code> is a Rust-powered language
server that comes built-in with Ruff. It can be used with any editor
that supports the <a
href="https://microsoft.github.io/language-server-protocol/">Language
Server Protocol</a> (LSP).
It uses a multi-threaded, lock-free architecture inspired by
<code>rust-analyzer</code> and it will open the door for a lot
of exciting features. It’s also faster than our previous <a
href="https://github.com/astral-sh/ruff-lsp">Python-based language
server</a>
-- but you probably guessed that already.</p>
<p><code>ruff server</code> is only in alpha, but it has a lot of
features that you can try out today:</p>
<ul>
<li>Lints Python files automatically and shows quick-fixes when
available</li>
<li>Formats Python files, with support for range formatting</li>
<li>Comes with commands for quickly performing actions:
<code>ruff.applyAutofix</code>, <code>ruff.applyFormat</code>, and
<code>ruff.applyOrganizeImports</code></li>
<li>Supports <code>source.fixAll</code> and
<code>source.organizeImports</code> source actions</li>
<li>Automatically reloads your project configuration when you change
it</li>
</ul>
<p>To setup <code>ruff server</code> with your editor, refer to the <a
href="https://github.com/astral-sh/ruff/blob/main/crates/ruff_server/README.md">README.md</a>.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Do not trigger <code>E3</code> rules on
<code>def</code>s following a function/method with a dummy body (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10704">#10704</a>)</li>
<li>[<code>pylint</code>] Implement <code>invalid-bytes-returned</code>
(<code>E0308</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10959">#10959</a>)</li>
<li>[<code>pylint</code>] Implement <code>invalid-length-returned</code>
(<code>E0303</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10963">#10963</a>)</li>
<li>[<code>pylint</code>] Implement <code>self-cls-assignment</code>
(<code>W0642</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9267">#9267</a>)</li>
<li>[<code>pylint</code>] Omit stubs from <code>invalid-bool</code> and
<code>invalid-str-return-type</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11008">#11008</a>)</li>
<li>[<code>ruff</code>] New rule <code>unused-async</code>
(<code>RUF029</code>) to detect unneeded <code>async</code> keywords on
functions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/9966">#9966</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/0ff25a540c550d8d2f562844354f84eb292b9c4b"><code>0ff25a5</code></a>
Bump version to 0.4.1 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11035">#11035</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/34873ec009952f74b6248e10222690364f65c9ac"><code>34873ec</code></a>
Add a script to fuzz the parser (courtesy of
<code>pysource-codegen</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11015">#11015</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/d3cd61f804bae7428c8bd3ac8d4a2b8bb3640e4c"><code>d3cd61f</code></a>
Use empty range when there's &quot;gap&quot; in token source (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11032">#11032</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/9b80cc09ee4f91c378308844d80106d201539e46"><code>9b80cc0</code></a>
Select fewer ruff rules when linting Python files in
<code>scripts/</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11034">#11034</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/9bb23b0a38bd0532dc70c018b99a1ad30774f31c"><code>9bb23b0</code></a>
Expect indented case block instead of match stmt (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11033">#11033</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/06c248a126b403caa088f3fa6546f85b0ba2b1d5"><code>06c248a</code></a>
[<code>ruff]</code> Ignore stub functions in <code>unused-async</code>
(<code>RUF029</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11026">#11026</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/27902b7130afed05c2d4c653592ff90db88e27dc"><code>27902b7</code></a>
[<code>pylint</code>] Implement <code>invalid-index-returned</code>
(<code>PLE0305</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10962">#10962</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/97acf1d59bd9f1ec4d842549921452aafc0229cc"><code>97acf1d</code></a>
ENH: Bump <code>ruff</code> dependency versions to support the latest
release of `v0.4.0...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/adf63d90139b9412edc65986b5b4b7a7e667301c"><code>adf63d9</code></a>
[<code>pylint</code>] Implement <code>invalid-hash-returned</code>
(<code>PLE0309</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/10961">#10961</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/5d3c9f2637c4ec0c32cad22eae6c2fa39be74c6c"><code>5d3c9f2</code></a>
<code>ruff server</code>: fix Neovim setup guide command (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11021">#11021</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/v0.3.7...v0.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.3.7&new-version=0.4.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 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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jcadam14 <[email protected]>
Bumps [black](https://github.com/psf/black) from 24.4.0 to 24.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/releases">black's
releases</a>.</em></p>
<blockquote>
<h2>24.4.1</h2>
<h3>Highlights</h3>
<ul>
<li>Add support for the new Python 3.12 f-string syntax introduced by
PEP 701 (<a
href="https://redirect.github.com/psf/black/issues/3822">#3822</a>)</li>
</ul>
<h3>Stable style</h3>
<ul>
<li>Fix crash involving indented dummy functions containing newlines (<a
href="https://redirect.github.com/psf/black/issues/4318">#4318</a>)</li>
</ul>
<h3>Parser</h3>
<ul>
<li>Add support for type parameter defaults, a new syntactic feature
added to Python 3.13
by PEP 696 (<a
href="https://redirect.github.com/psf/black/issues/4327">#4327</a>)</li>
</ul>
<h3>Integrations</h3>
<ul>
<li>Github Action now works even when <code>git archive</code> is
skipped (<a
href="https://redirect.github.com/psf/black/issues/4313">#4313</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/blob/main/CHANGES.md">black's
changelog</a>.</em></p>
<blockquote>
<h2>24.4.1</h2>
<h3>Highlights</h3>
<ul>
<li>Add support for the new Python 3.12 f-string syntax introduced by
PEP 701 (<a
href="https://redirect.github.com/psf/black/issues/3822">#3822</a>)</li>
</ul>
<h3>Stable style</h3>
<ul>
<li>Fix crash involving indented dummy functions containing newlines (<a
href="https://redirect.github.com/psf/black/issues/4318">#4318</a>)</li>
</ul>
<h3>Parser</h3>
<ul>
<li>Add support for type parameter defaults, a new syntactic feature
added to Python 3.13
by PEP 696 (<a
href="https://redirect.github.com/psf/black/issues/4327">#4327</a>)</li>
</ul>
<h3>Integrations</h3>
<ul>
<li>Github Action now works even when <code>git archive</code> is
skipped (<a
href="https://redirect.github.com/psf/black/issues/4313">#4313</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/black/commit/e7fb048281a83733f0b162fc7fa85e48044ea9ec"><code>e7fb048</code></a>
Prepare release 24.4.1 (<a
href="https://redirect.github.com/psf/black/issues/4328">#4328</a>)</li>
<li><a
href="https://github.com/psf/black/commit/3f0f8f1956646fd9f6fc47e133364c1352a478d1"><code>3f0f8f1</code></a>
Support PEP 696 (<a
href="https://redirect.github.com/psf/black/issues/4327">#4327</a>)</li>
<li><a
href="https://github.com/psf/black/commit/2f88085da588d34286bc9a24e288de204f141243"><code>2f88085</code></a>
Github Action: Directly install from repo if <code>export-subst</code>
is skipped (<a
href="https://redirect.github.com/psf/black/issues/4313">#4313</a>)</li>
<li><a
href="https://github.com/psf/black/commit/12ce3db077780ab01cc5ad1f92d5c85fcca3f54c"><code>12ce3db</code></a>
Move changelog entry to right section (<a
href="https://redirect.github.com/psf/black/issues/4326">#4326</a>)</li>
<li><a
href="https://github.com/psf/black/commit/1354be2525e4910b8a0d7c46242eae76963db5d2"><code>1354be2</code></a>
Add support to style function definitions with newlines before function
stubs...</li>
<li><a
href="https://github.com/psf/black/commit/f4b644b82f64d5aa2b8959277c9eb9ebcb16affe"><code>f4b644b</code></a>
Prevent wrapping of multiline fstrings in parens (<a
href="https://redirect.github.com/psf/black/issues/4325">#4325</a>)</li>
<li><a
href="https://github.com/psf/black/commit/551ede2825e4a92e9880b90ef517cce333a5cbfc"><code>551ede2</code></a>
Add PEP 701 support (<a
href="https://redirect.github.com/psf/black/issues/3822">#3822</a>)</li>
<li><a
href="https://github.com/psf/black/commit/944b99aa91f0a5afadf48b3a90cacdb5c8e9f858"><code>944b99a</code></a>
Bump sphinx from 7.2.6 to 7.3.7 in /docs (<a
href="https://redirect.github.com/psf/black/issues/4322">#4322</a>)</li>
<li><a
href="https://github.com/psf/black/commit/7134754ef45078b032039ad858bdaaef146233b2"><code>7134754</code></a>
Remove node-specific logic from visit_default (<a
href="https://redirect.github.com/psf/black/issues/4321">#4321</a>)</li>
<li><a
href="https://github.com/psf/black/commit/76693814204bb64fbac48b5c7096ddbd9c978518"><code>7669381</code></a>
Pin to old flake8-bugbear (<a
href="https://redirect.github.com/psf/black/issues/4319">#4319</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/psf/black/compare/24.4.0...24.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=24.4.0&new-version=24.4.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 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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [black](https://github.com/psf/black) from 24.4.1 to 24.4.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/releases">black's
releases</a>.</em></p>
<blockquote>
<h2>24.4.2</h2>
<p>This is a bugfix release to fix two regressions in the new f-string
parser introduced in
24.4.1.</p>
<h3>Parser</h3>
<ul>
<li>Fix regression where certain complex f-strings failed to parse (<a
href="https://redirect.github.com/psf/black/issues/4332">#4332</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Fix bad performance on certain complex string literals (<a
href="https://redirect.github.com/psf/black/issues/4331">#4331</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/psf/black/blob/main/CHANGES.md">black's
changelog</a>.</em></p>
<blockquote>
<h2>24.4.2</h2>
<p>This is a bugfix release to fix two regressions in the new f-string
parser introduced in
24.4.1.</p>
<h3>Parser</h3>
<ul>
<li>Fix regression where certain complex f-strings failed to parse (<a
href="https://redirect.github.com/psf/black/issues/4332">#4332</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Fix bad performance on certain complex string literals (<a
href="https://redirect.github.com/psf/black/issues/4331">#4331</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/psf/black/commit/3702ba224ecffbcec30af640c149f231d90aebdb"><code>3702ba2</code></a>
Prepare release 24.4.2 (<a
href="https://redirect.github.com/psf/black/issues/4335">#4335</a>)</li>
<li><a
href="https://github.com/psf/black/commit/e4aaa8a9947d951eb1e69979c3c58e197adbe40f"><code>e4aaa8a</code></a>
Fix incorrect f-string tokenization (<a
href="https://redirect.github.com/psf/black/issues/4332">#4332</a>)</li>
<li><a
href="https://github.com/psf/black/commit/ba88fc372eaed34abb33ea02d6860b185388d928"><code>ba88fc3</code></a>
Simplify string tokenization regexes (<a
href="https://redirect.github.com/psf/black/issues/4331">#4331</a>)</li>
<li><a
href="https://github.com/psf/black/commit/5683242fd432d93c9c37540948a39afd06ea4f7d"><code>5683242</code></a>
New release template</li>
<li>See full diff in <a
href="https://github.com/psf/black/compare/24.4.1...24.4.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=black&package-manager=pip&previous-version=24.4.1&new-version=24.4.2)](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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.4.1 to 0.4.2.
<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>v0.4.2</h2>
<h2>Changes</h2>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pyi</code>] Allow for overloaded <code>__exit__</code>
and <code>__aexit__</code> definitions (<code>PYI036</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11057">#11057</a>)</li>
<li>[<code>pyupgrade</code>] Catch usages of <code>&quot;%s&quot; %
var</code> and provide an unsafe fix (<code>UP031</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11019">#11019</a>)</li>
<li>[<code>refurb</code>] Implement new rule that suggests min/max over
<code>sorted()</code> (<code>FURB192</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10868">#10868</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix an issue with missing diagnostics for Neovim and Helix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11092">#11092</a>)</li>
<li>Implement hover documentation for <code>noqa</code> codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11096">#11096</a>)</li>
<li>Introduce common Ruff configuration options with new server settings
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11062">#11062</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Use <code>macos-12</code> for building release wheels to enable
macOS 11 compatibility (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11146">#11146</a>)</li>
<li>[<code>flake8-blind-expect</code>] Allow raise from in
<code>BLE001</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11131">#11131</a>)</li>
<li>[<code>flake8-pyi</code>] Allow simple assignments to
<code>None</code> in enum class scopes (<code>PYI026</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11128">#11128</a>)</li>
<li>[<code>flake8-simplify</code>] Avoid raising <code>SIM911</code> for
non-<code>zip</code> attribute calls (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11126">#11126</a>)</li>
<li>[<code>refurb</code>] Avoid <code>operator.itemgetter</code>
suggestion for single-item tuple (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11095">#11095</a>)</li>
<li>[<code>ruff</code>] Respect per-file-ignores for <code>RUF100</code>
with no other diagnostics (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11058">#11058</a>)</li>
<li>[<code>ruff</code>] Fix async comprehension false positive
(<code>RUF029</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11070">#11070</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Document explicitly disabling strict
zip (<code>B905</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11040">#11040</a>)</li>
<li>[<code>flake8-type-checking</code>] Mention
<code>lint.typing-modules</code> in <code>TCH001</code>,
<code>TCH002</code>, and <code>TCH003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11144">#11144</a>)</li>
<li>[<code>isort</code>] Improve documentation around custom
<code>isort</code> sections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11050">#11050</a>)</li>
<li>[<code>pylint</code>] Fix documentation oversight for
<code>invalid-X-returns</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11094">#11094</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Use <code>matchit</code> to resolve per-file settings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11111">#11111</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/JonathanPlasse"><code>@​JonathanPlasse</code></a></li>
<li><a href="https://github.com/KPCOFGS"><code>@​KPCOFGS</code></a></li>
<li><a
href="https://github.com/KotlinIsland"><code>@​KotlinIsland</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/augustelalande"><code>@​augustelalande</code></a></li>
<li><a
href="https://github.com/autinerd"><code>@​autinerd</code></a></li>
<li><a
href="https://github.com/bersbersbers"><code>@​bersbersbers</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/charliermarsh"><code>@​charliermarsh</code></a></li>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a
href="https://github.com/ibraheemdev"><code>@​ibraheemdev</code></a></li>
<li><a
href="https://github.com/jfrost-mo"><code>@​jfrost-mo</code></a></li>
</ul>
<!-- raw HTML omitted -->
</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.4.2</h2>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-pyi</code>] Allow for overloaded <code>__exit__</code>
and <code>__aexit__</code> definitions (<code>PYI036</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11057">#11057</a>)</li>
<li>[<code>pyupgrade</code>] Catch usages of <code>&quot;%s&quot; %
var</code> and provide an unsafe fix (<code>UP031</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11019">#11019</a>)</li>
<li>[<code>refurb</code>] Implement new rule that suggests min/max over
<code>sorted()</code> (<code>FURB192</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/10868">#10868</a>)</li>
</ul>
<h3>Server</h3>
<ul>
<li>Fix an issue with missing diagnostics for Neovim and Helix (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11092">#11092</a>)</li>
<li>Implement hover documentation for <code>noqa</code> codes (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11096">#11096</a>)</li>
<li>Introduce common Ruff configuration options with new server settings
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/11062">#11062</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Use <code>macos-12</code> for building release wheels to enable
macOS 11 compatibility (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11146">#11146</a>)</li>
<li>[<code>flake8-blind-expect</code>] Allow raise from in
<code>BLE001</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11131">#11131</a>)</li>
<li>[<code>flake8-pyi</code>] Allow simple assignments to
<code>None</code> in enum class scopes (<code>PYI026</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11128">#11128</a>)</li>
<li>[<code>flake8-simplify</code>] Avoid raising <code>SIM911</code> for
non-<code>zip</code> attribute calls (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11126">#11126</a>)</li>
<li>[<code>refurb</code>] Avoid <code>operator.itemgetter</code>
suggestion for single-item tuple (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11095">#11095</a>)</li>
<li>[<code>ruff</code>] Respect per-file-ignores for <code>RUF100</code>
with no other diagnostics (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11058">#11058</a>)</li>
<li>[<code>ruff</code>] Fix async comprehension false positive
(<code>RUF029</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11070">#11070</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Document explicitly disabling strict
zip (<code>B905</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11040">#11040</a>)</li>
<li>[<code>flake8-type-checking</code>] Mention
<code>lint.typing-modules</code> in <code>TCH001</code>,
<code>TCH002</code>, and <code>TCH003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11144">#11144</a>)</li>
<li>[<code>isort</code>] Improve documentation around custom
<code>isort</code> sections (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11050">#11050</a>)</li>
<li>[<code>pylint</code>] Fix documentation oversight for
<code>invalid-X-returns</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11094">#11094</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Use <code>matchit</code> to resolve per-file settings (<a
href="https://redirect.github.com/astral-sh/ruff/pull/11111">#11111</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/77c93fd63c1c072501d297082aa59c741b2d5466"><code>77c93fd</code></a>
Bump version to 0.4.2 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11151">#11151</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1c9f5e3001da83a7e48aef21ef72d155c8928035"><code>1c9f5e3</code></a>
Display the AST even with syntax errors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11147">#11147</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/263a0d25edf0e56358a6132158d96f06bf94701b"><code>263a0d2</code></a>
Use <code>macos-12</code> to build release wheels (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11146">#11146</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4738e199747cdfb7dd82d45b3bd23b715ad0d526"><code>4738e19</code></a>
Remove unused lexical error types (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11145">#11145</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/f428bd5052b9729cb25be4dd74c703308695edab"><code>f428bd5</code></a>
Docs: mention <code>lint.typing-modules</code> in <code>TCH001</code>,
<code>TCH002</code>, <code>TCH003</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11144">#11144</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/4690890e9fc880489007ea557a0c7fcb190d9c73"><code>4690890</code></a>
<code>ruff server</code>: In 'publish diagnostics' mode, document
diagnostics are cleare...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/19baabba58c55d8c280b701dc5fb346ce19477bd"><code>19baabb</code></a>
README: add Apache Superset to project list (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11136">#11136</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/cee38f39dfb7eaca22eda3c19a4d81adc4097105"><code>cee38f3</code></a>
[<code>flake8-blind-expect</code>] Allow raise from in
<code>BLE001</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11131">#11131</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e3fde2814655dd315683833c772d10e6cd55ba08"><code>e3fde28</code></a>
[<code>flake8-pyi</code>] Allow overloaded <code>__exit__</code> and
<code>__aexit__</code> definitions (`PYI0...</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/1c8849f9a8a2e2dcc0849f35fd5c39049a1e4a6e"><code>1c8849f</code></a>
Use Matchit to Resolve Per-File Settings (<a
href="https://redirect.github.com/astral-sh/ruff/issues/11111">#11111</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/v0.4.1...v0.4.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.4.1&new-version=0.4.2)](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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.1.1 to
8.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest/releases">pytest's
releases</a>.</em></p>
<blockquote>
<h2>8.2.0</h2>
<h1>pytest 8.2.0 (2024-04-27)</h1>
<h2>Deprecations</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12069">#12069</a>:
A deprecation warning is now raised when implementations of one of the
following hooks request a deprecated <code>py.path.local</code>
parameter instead of the <code>pathlib.Path</code> parameter which
replaced it:</p>
<ul>
<li><code>pytest_ignore_collect</code>{.interpreted-text
role=&quot;hook&quot;} - the <code>path</code> parameter - use
<code>collection_path</code> instead.</li>
<li><code>pytest_collect_file</code>{.interpreted-text
role=&quot;hook&quot;} - the <code>path</code> parameter - use
<code>file_path</code> instead.</li>
<li><code>pytest_pycollect_makemodule</code>{.interpreted-text
role=&quot;hook&quot;} - the <code>path</code> parameter - use
<code>module_path</code> instead.</li>
<li><code>pytest_report_header</code>{.interpreted-text
role=&quot;hook&quot;} - the <code>startdir</code> parameter - use
<code>start_path</code> instead.</li>
<li><code>pytest_report_collectionfinish</code>{.interpreted-text
role=&quot;hook&quot;} - the <code>startdir</code> parameter - use
<code>start_path</code> instead.</li>
</ul>
<p>The replacement parameters are available since pytest 7.0.0.
The old parameters will be removed in pytest 9.0.0.</p>
<p>See <code>legacy-path-hooks-deprecated</code>{.interpreted-text
role=&quot;ref&quot;} for more details.</p>
</li>
</ul>
<h2>Features</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/11871">#11871</a>:
Added support for reading command line arguments from a file using the
prefix character <code>@</code>, like e.g.: <code>pytest
@tests.txt</code>. The file must have one argument per line.</p>
<p>See <code>Read arguments from file
&lt;args-from-file&gt;</code>{.interpreted-text role=&quot;ref&quot;}
for details.</p>
</li>
</ul>
<h2>Improvements</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/11523">#11523</a>:
<code>pytest.importorskip</code>{.interpreted-text
role=&quot;func&quot;} will now issue a warning if the module could be
found, but raised <code>ImportError</code>{.interpreted-text
role=&quot;class&quot;} instead of
<code>ModuleNotFoundError</code>{.interpreted-text
role=&quot;class&quot;}.</p>
<p>The warning can be suppressed by passing
<code>exc_type=ImportError</code> to
<code>pytest.importorskip</code>{.interpreted-text
role=&quot;func&quot;}.</p>
<p>See <code>import-or-skip-import-error</code>{.interpreted-text
role=&quot;ref&quot;} for details.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/11728">#11728</a>:
For <code>unittest</code>-based tests, exceptions during class cleanup
(as raised by functions registered with <code>TestCase.addClassCleanup
&lt;unittest.TestCase.addClassCleanup&gt;</code>{.interpreted-text
role=&quot;meth&quot;}) are now reported instead of silently
failing.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/11777">#11777</a>:
Text is no longer truncated in the <code>short test summary info</code>
section when <code>-vv</code> is given.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12112">#12112</a>:
Improved namespace packages detection when
<code>consider_namespace_packages</code>{.interpreted-text
role=&quot;confval&quot;} is enabled, covering more situations (like
editable installs).</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/9502">#9502</a>:
Added <code>PYTEST_VERSION</code>{.interpreted-text
role=&quot;envvar&quot;} environment variable which is defined at the
start of the pytest session and undefined afterwards. It contains the
value of <code>pytest.__version__</code>, and among other things can be
used to easily check if code is running from within a pytest run.</p>
</li>
</ul>
<h2>Bug Fixes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12065">#12065</a>:
Fixed a regression in pytest 8.0.0 where test classes containing
<code>setup_method</code> and tests using <code>@staticmethod</code> or
<code>@classmethod</code> would crash with <code>AttributeError:
'NoneType' object has no attribute 'setup_method'</code>.</p>
<p>Now the <code>request.instance
&lt;pytest.FixtureRequest.instance&gt;</code>{.interpreted-text
role=&quot;attr&quot;} attribute of tests using
<code>@staticmethod</code> and <code>@classmethod</code> is no longer
<code>None</code>, but a fresh instance of the class, like in non-static
methods.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest/commit/6bd3f313447290380cbc2db30fb9ee5cca7eb941"><code>6bd3f31</code></a>
Tweak changelog for 8.2.0</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/9b6219b5e89af237e5bc80354d405d2b5c2fc8a0"><code>9b6219b</code></a>
Prepare release version 8.2.0</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/835765c9d31e0a86c6028f983b28d32c82a759c4"><code>835765c</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12130">#12130</a>
from bluetech/fixtures-inline</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/7e7503c0b015f61d9d21d3b5f55990b7fcd683f7"><code>7e7503c</code></a>
unittest: report class cleanup exceptions (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12250">#12250</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/882c4da2f37702b00bdbd3b6c74e9821d33e0204"><code>882c4da</code></a>
fixtures: inline <code>fail_fixturefunc</code></li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/2e8fb9f1401d727e20f004326752fd1922f9c601"><code>2e8fb9f</code></a>
fixtures: extract a <code>_check_fixturedef</code> method</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/acf2971f46a9518b3552d48ea9541a1951c2b207"><code>acf2971</code></a>
fixtures: inline <code>_getnextfixturedef</code> into
<code>_get_active_fixturedef</code></li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/3c77aec1dac0894ec4ca774b71ec91c85cf91dd1"><code>3c77aec</code></a>
fixtures: move &quot;request&quot; check early</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/d217d68cde0c34d619862f15c773ecc02ecdaabe"><code>d217d68</code></a>
fixtures: inline <code>_compute_fixture_value</code></li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/530be285751143febe54b8974b234eed5eb8b079"><code>530be28</code></a>
fixtures: use early return in <code>_get_active_fixturedef</code></li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/8.1.1...8.2.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest&package-manager=pip&previous-version=8.1.1&new-version=8.2.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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Closes #166 

Changed the df_to_download to use pivot tables to generate the csv. This
greatly improves the processing time of this function to just a few
seconds for very large files, and consistently stays there as size
increases.

Also used QUOTE_NONNUMERIC instead of specifically escaping just the
description column.
…to the df to download (#170)

Closes #168 

Wasn't able to use pivot tables, but in looking at the df.to_json()
output and understanding that structure, found a much quicker way to
translate it to the json we want using just python dict references
instead of the dataframes. Significant improvement in processing time,
especially as the dataset grows.
@jcadam14 jcadam14 self-assigned this May 3, 2024
Copy link

github-actions bot commented May 3, 2024

Coverage report

This PR does not seem to contain any modification to coverable code.

@jcadam14 jcadam14 closed this May 6, 2024
@jcadam14 jcadam14 deleted the test_filter branch May 6, 2024 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Restructure data-validator project to reduce dependency import time
7 participants