* A few different types of validation
* Rename
* Fix test
* Updating validation framework
* Update lockfile
* Ensure validators can be None
* Reworking the API a little
* Convert Input.Changed to dataclass
* Add utility for getting failures as strings
* Update an example in Validator docstring
* Remove some redundant `pass`es
* Renaming variables
* Validating Input on submit, attaching result to Submitted event
* Testing various validation features
* Update snapshots and deps
* Styling unfocused -invalid Input differently
* Add snapshot test around input validation and associated styles
* Validation docs
* Tidying validation docs in Input widget reference
* Fix mypy issues
* Remove __bool__ from Failure, make validator field required
* Code review changes
* Improving error messages in Validators
In doing so this removes the file similarity value, and as such the key that
the failure report was sorted on. This was done because, given how many
snapshot tests we have now, if lots failed, it would take a long time (often
many minutes) to compile the report.
The report is now sorted on the test name.
Now, no matter how many snapshots fail, the report should be produced pretty
much instantly.
* First prototype of PB.
* Repurpose UnderlineBar.
* Factor out 'Bar' widget.
* Revert "Factor out 'Bar' widget."
This reverts commit 0bb4871adf.
* Add Bar widget.
* Cap progress at 100%.
* Add skeleton for the ETA label.
[skip ci]
* Add ETA display.
* Improve docstrings.
* Directly compute percentage.
* Watch percentage changes directly.
[skip ci]
* Documentation.
* Make reactive percentage private.
Instead, we create a public read-only percentage property.
* Update griffe to fix documentation issue.
Related issues: #1572, https://github.com/mkdocstrings/griffe/issues/128.
Related PRs: https://github.com/mkdocstrings/griffe/pull/135.
* Add example and docs.
* Address review feedback.
[skip ci]
* More documentation.
* Add tests.
* Changelog.
* More tests.
* Fix/fake tests.
* Final tweaks.
This keeps randomly failing in Windows in CI; multiple subsequent runs gets
it going in the end, normally one further fail at a time. So let's throw a
wee wait on the end and see if that helps.
Initially we went with a RadioSet being a simple container of RadioButtons,
with the user navigating the RadioButtons like you would any other set of
widgets. This was fine but it became pretty clear pretty quickly that having
to tab through a non-trivial collection of buttons in a set to get to the
next widget wasn't ideal.
This commit, satisfying #2368, takes over the navigation of the buttons
within the container, makes the container itself a focusable widget, and
sets up some new bindings to allow a more natural and efficient interaction
with the set.
* Remove hanging lines from docstrings.
Deleted hanging blank lines at the end of docstrings.
Regex pattern:
- find `\n\n( *)"""`
- replace with `\n$1"""`
* Add regression test for #2229.
* Fix potential reactive-watch loop.
* Simplify regression test.
Labels are cheaper to use and the final visual result of the test won't depend on the directory it runs from.
* Simplify solution.
Turns out I didn't need a descriptor. :(
* Fail on empty tab.
* Checking in remove_row progress
* Ensuring structures updated correctly when row deleted
* Clamping index
* Failed attempt
* Removing rows
* Update a type hint in DataTable
* Remove some code that wasnt required
* Use index syntax instead of get
* Add DataTable remove row test
* Snapshot tests for removing rows
* Add a docstring for DataTable.remove_row method
* Update changelog regarding DataTable.remove_row
* Add check_idle call to remove_row