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

Add codespell pre-commit hook #2855

Merged
merged 7 commits into from
Aug 23, 2023
Merged

Add codespell pre-commit hook #2855

merged 7 commits into from
Aug 23, 2023

Conversation

sarayourfriend
Copy link
Collaborator

@sarayourfriend sarayourfriend commented Aug 22, 2023

Fixes

Fixes #378 by @dhruvkb

Description

This PR does the following:

  1. Consolidates Python-based tool configuration into a single pyproject.toml. This file is auto-detected by all the relevant tools. Using it reduces the number of disparate files with varying naming conventions (dictated by the tools) at the repository root.
  2. Adds and configures codespell, including additional documentation to assist with ongoing maintenance of the configuration.

Codespell seems fine enough and works pretty well. However, I would like to also explore using cspell. It has far greater flexibility in terms of the supported dictionaries and its configuration is significantly less obscure than Codespells. I'm going to leave this PR as a draft until I've tried cspell. If I decide to go with cspell, I'll open a new PR and keep the configuration consolidation I did for other Python-based tools in this PR. That seems useful regardless of which spell checker we choose. I tried out cspell and while it probably works great if you have a small project with little prose, it complains about every unknown word. At a glance I could not find anything in cspell's documentation about how to ignore unknown words, I suspect because its strategy for matching words is very different. Codespell is going to be much easier to maintain in the long run. It isn't perfect and will probably miss some things that cspell would catch, but it isn't worth the tremendous task of configuration and maintenance to use cspell. Keep in mind that "unknown words" includes most Vue related terms, all maintainer GitHub usernames (referenced frequently in project documentation), and so on and so on. In any case, Codespell is a good start. If we want to switch tools in the future we can do so. For now this gets us at least catching basic misspellings.

Testing Instructions

Checkout the branch and run just lint codespell. Confirm there are no errors. Add a misspelling to a relevant file (one that isn't ignored) and confirm that codespell catches it when running just lint codespell. Also, review the list of ignored files and confirm that it's comprehensive and does not accidentally include files that should be checked.

Look through the spelling changes and confirm that there are no problems with the fixes I've applied. There is a mix of automatically applied fixes that codespell generated as well as fixes I had to do manually (for when there were multiple suggestions for a misspelled word).

Finally, read through the configuration documentation and confirm that it makes sense, is clear, and can be used effectively to maintain the configuration moving forward.

Checklist

  • My pull request has a descriptive title (not a vague title likeUpdate index.md).
  • My pull request targets the default branch of the repository (main) or a parent feature branch.
  • My commit messages follow best practices.
  • My code follows the established code style of the repository.
  • [N/A] I added or updated tests for the changes I made (if applicable).
  • I added or updated documentation (if applicable).
  • I tried running the project locally and verified that there are no visible errors.
  • I ran the DAG documentation generator (if applicable).

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.


Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

@github-actions github-actions bot added 🧱 stack: api Related to the Django API 🧱 stack: catalog Related to the catalog and Airflow DAGs 🧱 stack: documentation Related to Sphinx documentation 🧱 stack: frontend Related to the Nuxt frontend 🧱 stack: mgmt Related to repo management and automations labels Aug 22, 2023
@openverse-bot openverse-bot added 🟩 priority: low Low priority and doesn't need to be rushed ✨ goal: improvement Improvement to an existing user-facing feature 📄 aspect: text Concerns the textual material in the repository labels Aug 22, 2023
@github-actions
Copy link

github-actions bot commented Aug 22, 2023

Size Change: 0 B

Total Size: 877 kB

ℹ️ View Unchanged
Filename Size
./frontend/.nuxt/dist/client/237.js 273 B
./frontend/.nuxt/dist/client/237.modern.js 277 B
./frontend/.nuxt/dist/client/238.js 1.85 kB
./frontend/.nuxt/dist/client/app.js 123 kB
./frontend/.nuxt/dist/client/app.modern.js 114 kB
./frontend/.nuxt/dist/client/commons/app.js 90.5 kB
./frontend/.nuxt/dist/client/commons/app.modern.js 81.1 kB
./frontend/.nuxt/dist/client/commons/components/v-external-search-form/components/v-external-source-list/components/v-no-results/f323c204.js 5.18 kB
./frontend/.nuxt/dist/client/commons/components/v-external-search-form/components/v-external-source-list/components/v-no-results/f323c204.modern.js 5.62 kB
./frontend/.nuxt/dist/client/components/loading-icon.js 729 B
./frontend/.nuxt/dist/client/components/loading-icon.modern.js 733 B
./frontend/.nuxt/dist/client/components/table-sort-icon.js 515 B
./frontend/.nuxt/dist/client/components/table-sort-icon.modern.js 519 B
./frontend/.nuxt/dist/client/components/v-all-results-grid.js 6.62 kB
./frontend/.nuxt/dist/client/components/v-all-results-grid.modern.js 6.46 kB
./frontend/.nuxt/dist/client/components/v-audio-collection.js 4.39 kB
./frontend/.nuxt/dist/client/components/v-audio-collection.modern.js 4.27 kB
./frontend/.nuxt/dist/client/components/v-audio-details.js 1.79 kB
./frontend/.nuxt/dist/client/components/v-audio-details.modern.js 1.77 kB
./frontend/.nuxt/dist/client/components/v-audio-list.js 1.32 kB
./frontend/.nuxt/dist/client/components/v-audio-list.modern.js 1.31 kB
./frontend/.nuxt/dist/client/components/v-audio-result.js 1 kB
./frontend/.nuxt/dist/client/components/v-audio-result.modern.js 995 B
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.js 956 B
./frontend/.nuxt/dist/client/components/v-audio-track-skeleton.modern.js 961 B
./frontend/.nuxt/dist/client/components/v-audio-track.js 5.67 kB
./frontend/.nuxt/dist/client/components/v-audio-track.modern.js 5.63 kB
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.js 634 B
./frontend/.nuxt/dist/client/components/v-back-to-search-results-link.modern.js 643 B
./frontend/.nuxt/dist/client/components/v-bone.js 632 B
./frontend/.nuxt/dist/client/components/v-bone.modern.js 636 B
./frontend/.nuxt/dist/client/components/v-box-layout.js 1.33 kB
./frontend/.nuxt/dist/client/components/v-box-layout.modern.js 1.33 kB
./frontend/.nuxt/dist/client/components/v-content-link.js 1.06 kB
./frontend/.nuxt/dist/client/components/v-content-link.modern.js 1.06 kB
./frontend/.nuxt/dist/client/components/v-content-page.js 531 B
./frontend/.nuxt/dist/client/components/v-content-page.modern.js 535 B
./frontend/.nuxt/dist/client/components/v-content-report-button.js 493 B
./frontend/.nuxt/dist/client/components/v-content-report-button.modern.js 497 B
./frontend/.nuxt/dist/client/components/v-content-report-form.js 3.33 kB
./frontend/.nuxt/dist/client/components/v-content-report-form.modern.js 3.21 kB
./frontend/.nuxt/dist/client/components/v-content-report-popover.js 3.8 kB
./frontend/.nuxt/dist/client/components/v-content-report-popover.modern.js 3.67 kB
./frontend/.nuxt/dist/client/components/v-copy-button.js 3.99 kB
./frontend/.nuxt/dist/client/components/v-copy-button.modern.js 4 kB
./frontend/.nuxt/dist/client/components/v-copy-license.js 2.33 kB
./frontend/.nuxt/dist/client/components/v-copy-license.modern.js 2.31 kB
./frontend/.nuxt/dist/client/components/v-dmca-notice.js 792 B
./frontend/.nuxt/dist/client/components/v-dmca-notice.modern.js 798 B
./frontend/.nuxt/dist/client/components/v-error-image.js 2.47 kB
./frontend/.nuxt/dist/client/components/v-error-image.modern.js 2.44 kB
./frontend/.nuxt/dist/client/components/v-error-section.js 372 B
./frontend/.nuxt/dist/client/components/v-error-section.modern.js 377 B
./frontend/.nuxt/dist/client/components/v-external-search-form.js 3.76 kB
./frontend/.nuxt/dist/client/components/v-external-search-form.modern.js 3.12 kB
./frontend/.nuxt/dist/client/components/v-external-source-list.js 2.71 kB
./frontend/.nuxt/dist/client/components/v-external-source-list.modern.js 2.07 kB
./frontend/.nuxt/dist/client/components/v-full-layout.js 1.57 kB
./frontend/.nuxt/dist/client/components/v-full-layout.modern.js 1.58 kB
./frontend/.nuxt/dist/client/components/v-grid-skeleton.js 1.53 kB
./frontend/.nuxt/dist/client/components/v-grid-skeleton.modern.js 1.53 kB
./frontend/.nuxt/dist/client/components/v-hide-button.js 577 B
./frontend/.nuxt/dist/client/components/v-hide-button.modern.js 576 B
./frontend/.nuxt/dist/client/components/v-home-gallery.js 4.28 kB
./frontend/.nuxt/dist/client/components/v-home-gallery.modern.js 4.26 kB
./frontend/.nuxt/dist/client/components/v-homepage-content.js 1.8 kB
./frontend/.nuxt/dist/client/components/v-homepage-content.modern.js 1.77 kB
./frontend/.nuxt/dist/client/components/v-image-cell.js 1.95 kB
./frontend/.nuxt/dist/client/components/v-image-cell.modern.js 1.94 kB
./frontend/.nuxt/dist/client/components/v-image-details.js 1.44 kB
./frontend/.nuxt/dist/client/components/v-image-details.modern.js 1.43 kB
./frontend/.nuxt/dist/client/components/v-image-grid.js 4.42 kB
./frontend/.nuxt/dist/client/components/v-image-grid.modern.js 4.3 kB
./frontend/.nuxt/dist/client/components/v-license-tab-panel.js 641 B
./frontend/.nuxt/dist/client/components/v-license-tab-panel.modern.js 650 B
./frontend/.nuxt/dist/client/components/v-load-more.js 1.18 kB
./frontend/.nuxt/dist/client/components/v-load-more.modern.js 1.07 kB
./frontend/.nuxt/dist/client/components/v-media-license.js 933 B
./frontend/.nuxt/dist/client/components/v-media-license.modern.js 940 B
./frontend/.nuxt/dist/client/components/v-media-reuse.js 2.99 kB
./frontend/.nuxt/dist/client/components/v-media-reuse.modern.js 2.97 kB
./frontend/.nuxt/dist/client/components/v-media-tag.js 416 B
./frontend/.nuxt/dist/client/components/v-media-tag.modern.js 420 B
./frontend/.nuxt/dist/client/components/v-modal.js 1.01 kB
./frontend/.nuxt/dist/client/components/v-modal.modern.js 996 B
./frontend/.nuxt/dist/client/components/v-no-results.js 2.67 kB
./frontend/.nuxt/dist/client/components/v-no-results.modern.js 2.03 kB
./frontend/.nuxt/dist/client/components/v-radio.js 1 kB
./frontend/.nuxt/dist/client/components/v-radio.modern.js 1.01 kB
./frontend/.nuxt/dist/client/components/v-related-audio.js 824 B
./frontend/.nuxt/dist/client/components/v-related-audio.modern.js 742 B
./frontend/.nuxt/dist/client/components/v-related-audio/pages/search/audio.js 4.38 kB
./frontend/.nuxt/dist/client/components/v-related-audio/pages/search/audio.modern.js 4.26 kB
./frontend/.nuxt/dist/client/components/v-related-images.js 803 B
./frontend/.nuxt/dist/client/components/v-related-images.modern.js 720 B
./frontend/.nuxt/dist/client/components/v-report-desc-form.js 976 B
./frontend/.nuxt/dist/client/components/v-report-desc-form.modern.js 981 B
./frontend/.nuxt/dist/client/components/v-row-layout.js 1.72 kB
./frontend/.nuxt/dist/client/components/v-row-layout.modern.js 1.73 kB
./frontend/.nuxt/dist/client/components/v-safety-wall.js 1.32 kB
./frontend/.nuxt/dist/client/components/v-safety-wall.modern.js 1.32 kB
./frontend/.nuxt/dist/client/components/v-scroll-button.js 891 B
./frontend/.nuxt/dist/client/components/v-scroll-button.modern.js 891 B
./frontend/.nuxt/dist/client/components/v-search-grid.js 6.89 kB
./frontend/.nuxt/dist/client/components/v-search-grid.modern.js 6.24 kB
./frontend/.nuxt/dist/client/components/v-search-results-title.js 618 B
./frontend/.nuxt/dist/client/components/v-search-results-title.modern.js 622 B
./frontend/.nuxt/dist/client/components/v-server-timeout.js 302 B
./frontend/.nuxt/dist/client/components/v-server-timeout.modern.js 307 B
./frontend/.nuxt/dist/client/components/v-single-result-controls.js 1.17 kB
./frontend/.nuxt/dist/client/components/v-single-result-controls.modern.js 1.17 kB
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.js 1.01 kB
./frontend/.nuxt/dist/client/components/v-sketch-fab-viewer.modern.js 915 B
./frontend/.nuxt/dist/client/components/v-snackbar.js 1.07 kB
./frontend/.nuxt/dist/client/components/v-snackbar.modern.js 1.07 kB
./frontend/.nuxt/dist/client/components/v-sources-table.js 14.4 kB
./frontend/.nuxt/dist/client/components/v-sources-table.modern.js 14.4 kB
./frontend/.nuxt/dist/client/components/v-warning-suppressor.js 307 B
./frontend/.nuxt/dist/client/components/v-warning-suppressor.modern.js 311 B
./frontend/.nuxt/dist/client/pages/about.js 1.42 kB
./frontend/.nuxt/dist/client/pages/about.modern.js 1.42 kB
./frontend/.nuxt/dist/client/pages/audio/_id/index.js 10.6 kB
./frontend/.nuxt/dist/client/pages/audio/_id/index.modern.js 10.3 kB
./frontend/.nuxt/dist/client/pages/feedback.js 1.36 kB
./frontend/.nuxt/dist/client/pages/feedback.modern.js 1.36 kB
./frontend/.nuxt/dist/client/pages/image/_id/index.js 8.13 kB
./frontend/.nuxt/dist/client/pages/image/_id/index.modern.js 7.94 kB
./frontend/.nuxt/dist/client/pages/image/_id/report.js 4.95 kB
./frontend/.nuxt/dist/client/pages/image/_id/report.modern.js 4.72 kB
./frontend/.nuxt/dist/client/pages/index.js 6.34 kB
./frontend/.nuxt/dist/client/pages/index.modern.js 6.3 kB
./frontend/.nuxt/dist/client/pages/preferences.js 1.32 kB
./frontend/.nuxt/dist/client/pages/preferences.modern.js 1.31 kB
./frontend/.nuxt/dist/client/pages/privacy.js 1.26 kB
./frontend/.nuxt/dist/client/pages/privacy.modern.js 1.26 kB
./frontend/.nuxt/dist/client/pages/search-help.js 1.62 kB
./frontend/.nuxt/dist/client/pages/search-help.modern.js 1.61 kB
./frontend/.nuxt/dist/client/pages/search.js 2.27 kB
./frontend/.nuxt/dist/client/pages/search.modern.js 2.09 kB
./frontend/.nuxt/dist/client/pages/search/audio.js 503 B
./frontend/.nuxt/dist/client/pages/search/audio.modern.js 505 B
./frontend/.nuxt/dist/client/pages/search/image.js 460 B
./frontend/.nuxt/dist/client/pages/search/image.modern.js 463 B
./frontend/.nuxt/dist/client/pages/search/index.js 316 B
./frontend/.nuxt/dist/client/pages/search/index.modern.js 320 B
./frontend/.nuxt/dist/client/pages/search/model-3d.js 242 B
./frontend/.nuxt/dist/client/pages/search/model-3d.modern.js 245 B
./frontend/.nuxt/dist/client/pages/search/video.js 239 B
./frontend/.nuxt/dist/client/pages/search/video.modern.js 243 B
./frontend/.nuxt/dist/client/pages/sources.js 1.53 kB
./frontend/.nuxt/dist/client/pages/sources.modern.js 1.54 kB
./frontend/.nuxt/dist/client/runtime.js 2.75 kB
./frontend/.nuxt/dist/client/runtime.modern.js 2.76 kB
./frontend/.nuxt/dist/client/vendors/app.js 68.5 kB
./frontend/.nuxt/dist/client/vendors/app.modern.js 68.1 kB

compressed-size-action

@sarayourfriend sarayourfriend marked this pull request as ready for review August 22, 2023 03:16
@sarayourfriend sarayourfriend requested review from a team as code owners August 22, 2023 03:16
@sarayourfriend sarayourfriend changed the title Add/spell checker Add codespell pre-commit hook Aug 22, 2023
Copy link
Member

@dhruvkb dhruvkb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, but I have a number of suggestions so I think blocking merge to have these discussions, is justified. Also, I'm quite shocked at how many spelling mistakes we've committed!

@sarayourfriend
Copy link
Collaborator Author

Thank you for the careful review, Dhruv. I'll make updates to this tomorrow!

@sarayourfriend sarayourfriend marked this pull request as draft August 22, 2023 05:11
@sarayourfriend sarayourfriend marked this pull request as ready for review August 23, 2023 01:39
@github-actions
Copy link

Full-stack documentation: https://docs.openverse.org/_preview/2855

Please note that GitHub pages takes a little time to deploy newly pushed code, if the links above don't work or you see old versions, wait 5 minutes and try again.

You can check the GitHub pages deployment action list to see the current status of the deployments.

New files ➕:

Changed files 🔄:

View full list (24)

Copy link
Contributor

@obulat obulat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really nice clean up, both in terms of combining the configuration into a single toml file, and fixing all of the spelling errors. Thank you for detailed documentation, too!

Copy link
Member

@dhruvkb dhruvkb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like all my suggestions have been addressed, thank you! LGTM, LGTM!

@sarayourfriend sarayourfriend merged commit 5678bdc into main Aug 23, 2023
53 checks passed
@sarayourfriend sarayourfriend deleted the add/spell-checker branch August 23, 2023 21:36
obulat pushed a commit that referenced this pull request Aug 25, 2023
* Add minimal codespell config

* Flesh out codespell configuration and consolidate python tool configs

* Correct codespell errors

* Undo bad spelling switch and add ignore for the line

* Move codespell docs to docs site

* Remove unnecessary custom dictionary entries

* Undo errant corrections
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📄 aspect: text Concerns the textual material in the repository ✨ goal: improvement Improvement to an existing user-facing feature 🟩 priority: low Low priority and doesn't need to be rushed 🧱 stack: api Related to the Django API 🧱 stack: catalog Related to the catalog and Airflow DAGs 🧱 stack: documentation Related to Sphinx documentation 🧱 stack: frontend Related to the Nuxt frontend 🧱 stack: mgmt Related to repo management and automations
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

Add pre-commit hooks for spell checking
4 participants