-
Notifications
You must be signed in to change notification settings - Fork 71
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
Implement systems for flavor, pointwise extensions, default bound and rounding mode #271
Closed
Closed
Changes from all commits
Commits
Show all changes
94 commits
Select commit
Hold shift + click to select a range
c8ff400
Implement flavors with abstract union supertype
Kolaru 595af4d
Split special.jl between common and flavor dependant
Kolaru 13068ab
Reviewed macros.jl
Kolaru 2bfdc2a
Review rounding.jl
Kolaru e0a47c4
Review convert.jl (incomplete)
Kolaru 97f5a03
Fix compilation errors
Kolaru 39b86fa
Review precision.jl
Kolaru eabd93b
Review set_operations.jl
Kolaru 86594e4
Work on comparisons
Kolaru 2819ec8
Continue review of arithmetic operations
Kolaru c67a0f3
Create file for 9.2 numeric functions
Kolaru ebde437
Separate basic arithmetic functions (9.1)
Kolaru de2f573
Review trigonometric.jl
Kolaru c3eb5fb
Review hyperbolic.jl
Kolaru 4609669
Split power functions into power.jl
Kolaru 74686d4
Document generated functions
Kolaru 4c2b6d2
Rename midrad and mid(a, alpha)
Kolaru 4ae53b7
Review integer.jl
Kolaru 8bcab47
Review absmax functions
Kolaru 33c21b0
Review cancellative functions
Kolaru bf18a2f
Review set operations and booleans
Kolaru 036a1d8
Rename entireinterval to RR
Kolaru 12cfc39
Separate boolean and set operation
Kolaru 53e4866
Fix typos in precision.jl
Kolaru ab8fd8b
Split constants in a separate file and document it
Kolaru 89358e6
Document requirement for set-based flavor
Kolaru 80bbaca
Add ref to set-based requirements
Kolaru 7dfb3f5
Review what was left in arithmetic.jl
Kolaru 474f026
Review power.jl
Kolaru 933a89b
Change include statements
Kolaru cabfeb7
Fix loading bugs
Kolaru 88491f3
Fix several bugs
Kolaru 9c0ee5c
Remove global precision test from test suite
Kolaru 31409c3
Adapt bare interval parsing
Kolaru 9b48379
Fix some bugs erroring/failing construction tests
Kolaru f932c61
Temporary TODO and changelog files
Kolaru d6c1e08
Finish fixing "constructing interval" test suite
Kolaru fb76b31
Delete commented precision test and comment complex tests
Kolaru 09632e8
Fix and complete .. tests
Kolaru 584aba0
Fix "conversion to interval" test suite
Kolaru dce76b4
Finish replacing == by isidentical for intervals in concstruction tests
Kolaru cc5694f
Finish fixing test in construction.jl
Kolaru 78980f0
Fix tests
Kolaru 91b9250
Fix most problems in numeric.jl tests
Kolaru b3091de
Remove setprecision from tests
Kolaru 34568d8
Fix tests for trig functions
Kolaru 3eefa4d
Use scaled_mid in biscet
Kolaru 4661780
Fix multidim tests
Kolaru 63cb3b8
Ignore broken tests
Kolaru 67a1fb2
Refix construction.jl test following rebase
Kolaru a75eabe
Small test fix
Kolaru 18b3fe2
Fix first tests after rebase
Kolaru d1dde57
Reintroduce signbit
Kolaru 2fcb8ca
Negative int power fix
Kolaru 9b46da7
Finish fixing tests
Kolaru 766749f
Rename isless to isweaklyless to avoid confusion
Kolaru 1cbdc9b
Fix setrounding and associated tests
Kolaru 8206d52
More consistent notation
Kolaru 7cee9c9
Remove unused file
Kolaru 7435671
Use stareq for more readable tests
Kolaru 6a0dcba
Fix cosh
Kolaru 9a65cb1
Fix more broken tests
Kolaru 43571ba
Clean inline todos and docstrings
Kolaru bb65c89
Fix eltype according to #397
Kolaru 87781c1
Misc
Kolaru 25110b2
Use generic constructor [unfinished]
Kolaru 9f44928
Fix weird notation in cot
Kolaru a8b7d5a
Clean up a bit
Kolaru ac3c35b
Overhaul and constructor simplification
Kolaru 8f6e905
Massive rounding.jl cleanup
Kolaru 0c26577
Make consistency tests pass
Kolaru f02282e
Power tests pass
Kolaru 15c2c3c
trig.jl tests
Kolaru 1765225
Fix all tests up to rounding.jl
Kolaru a6eb8ab
Finalize all none IEEE tests
Kolaru 8554f66
Merge branch 'master' into interval_flavors
Kolaru fc69f93
Merge 2
Kolaru ef69cc3
New parser
Kolaru a08cae5
Update the todo file
Kolaru 727aae8
Make all tests pass
Kolaru 3cd5790
Hotfix test erroring on CI
Kolaru 1c51825
Clean up a bit
Kolaru 2fd86c2
Remove manifest
Kolaru 96b090b
Clean up and remove conversion.jl
Kolaru a993ef8
Remove force_interval
Kolaru 8709e1f
Fix arithmetic bug with irrational
Kolaru ebb2307
Remove @round_up and @round_down macro
Kolaru df715e2
Finalize pointwise politic
Kolaru 83d76e9
Go through TODO
Kolaru 2c718e4
Revert RR for entireinterval
Kolaru d58dfae
Go through inline TODOs
Kolaru c2b09f9
Update changelog
Kolaru a9d5acb
First pass on lbenet review
Kolaru d8e71bb
Merge branch 'master' into interval_flavors
lucaferranti File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
docs/build/ | ||
Manifest.toml | ||
Manifest.toml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,233 @@ | ||
Review intervals folder: | ||
General: | ||
✔ Choose whether to use x == zero(T) or x == 0 across files @done(20-08-09 16:05) | ||
✔ Use iszero everywhere @done(21-12-29 23:30) | ||
✔ Check that default flavor always return safe result @done(21-12-29 23:30) | ||
✔ {F <: Type} -> {F<:Type} (remove spaces) @done(20-08-09 16:05) | ||
✔ Replace "IEEE standard" -> "IEEE Std 1788-2015" @done(19-08-22 16:13) | ||
✔ "Corresponds to" -> "Implement" in doc @done(19-08-22 16:13) | ||
✔ Investigate compile time warnings @done(21-12-29 23:30) | ||
✔ Check if intervals of different flavor type can/should be equal in the sense of `isidentical` @done(19-12-08 01:12) | ||
✔ Operation on different flavors of interval should always error. @done(21-12-29 23:29) | ||
✔ Check if `signbit` is in the standard @done(22-01-16 17:24) | ||
It is not. | ||
✔ Distribute functions from `special.jl` and `misc.jl` somewhere more informative @done(22-01-10 02:12) | ||
☐ Check the display of all docstrings | ||
Discussion: | ||
✔ Do we want to keep `@floatinterval` and `@biginteral` or use `@interval(F, expr1, expr2)` instead ? @done(22-01-10 00:55) | ||
✔ It is fine actually @done(22-01-10 00:55) | ||
✔ Decide if `inf` and `sup` should be used as default or rather `x.lo` and `x.hi` @done(21-12-29 23:29) | ||
✔ `inf` and `sup` should be strict equivalent to `x.lo` and `x.hi` @done(21-12-29 23:29) | ||
✘ Deprecate `interval` in favor of `checked_interval`? @cancelled(22-01-16 18:13) | ||
|
||
Global precision: | ||
✔ Get rid of it @done(19-08-20 16:49) | ||
✔ Replace pi_interval(T) by Interval{T}(π) everywhere @done(19-12-18 22:59) | ||
✔ Be sure it is done in compliance with #338 @done(19-12-18 22:59) | ||
|
||
Flavors: | ||
lbenet marked this conversation as resolved.
Show resolved
Hide resolved
|
||
✔ Add documentations for flavors @done(22-01-16 17:58) | ||
Implement set based flavor: | ||
✔ Check all requested stuff 10.5. @done(22-01-16 18:00) | ||
✔ Error on undefined @done(22-01-16 18:00) | ||
✘ Implement cset flavor @cancelled(22-01-16 18:13) | ||
✘ Make cset default ? @cancelled(22-01-16 18:13) | ||
✔ Define the flavor dependent symbols like ==, <, <= @done(21-12-29 23:28) | ||
✘ Deal with the fact flavor interact with pointwise politic for `isfinite` and `isinf` @cancelled(22-01-16 17:58) | ||
Not a problem for set-based. Dealing with it for cset or other can be dealt with later. | ||
|
||
intervals.jl: | ||
✔ Split constructors from the includes @done(22-01-15 19:26) | ||
✔ Put helper, utils function (e.g. `eltype`) somewhere else @done(22-01-15 19:26) | ||
|
||
macros.jl: | ||
✔ Review @done(19-08-23 01:57) | ||
✔ Clean or open issue for cleaning of the file @done(22-01-15 21:25) | ||
|
||
precision.jl: | ||
✔ Review @done(19-08-19 01:49) | ||
|
||
rounding.jl: | ||
✔ Review @done(19-08-19 01:50) | ||
✔ Decide how to define the setrounding function with multiple interval types @done(21-12-29 23:28) | ||
✔ Use a global function `current_interval_rounding` @done(21-12-29 23:28) | ||
✔ Check with latest discussion if everything is up to date @done(22-01-10 00:56) | ||
✔ Remove default round method once it is not needed anymore @done(21-12-29 23:34) | ||
✔ Test new mechanism @done(22-01-10 01:18) | ||
✔ Remove `@round_up` and `@round_down` @done(22-01-16 04:51) | ||
|
||
conversion.jl: | ||
✔ Review @done(19-08-23 03:25) | ||
✔ Fix ambiguity errors @done(21-12-29 23:27) | ||
✔ Simplify `atomic` @done(22-01-10 00:56) | ||
✔ Accept the fact we have two eps for floating points inputs @done(22-01-09 21:20) | ||
✔ Test the new `atomic` @done(22-01-10 01:18) | ||
|
||
complex.jl: | ||
Should we even bother ? | ||
✔ Drop support for now @done(22-01-10 00:57) | ||
✔ Document the support drop @done(22-01-16 18:01) | ||
See changelog | ||
|
||
9.1. Arithmetic functions: | ||
✔ Distribute everything from arithmetic.jl in other files @done(20-08-13 00:27) | ||
basic.jl: | ||
✔ Split @done(19-08-19 01:14) | ||
✔ Verify all requested functions are there @done(19-08-19 02:01) | ||
✔ Common @done(19-08-19 01:11) | ||
✔ Adapt for the removal of promotion @done(21-12-29 23:27) | ||
✘ Flavor dependent * @cancelled(22-01-16 18:01) | ||
✘ Flavor dependent / @cancelled(22-01-16 18:01) | ||
✘ Flavor dependent inv @cancelled(22-01-16 18:01) | ||
✘ Flavor dependent fma @cancelled(22-01-16 18:01) | ||
power.jl: | ||
✔ Split @done(19-08-19 01:14) | ||
✔ Verify all requested functions are there @done(19-08-19 04:29) | ||
✔ Common @done(19-08-22 16:25) | ||
✘ Flavor dependent power (for negative power) @cancelled(22-01-16 18:02) | ||
✘ Flavor dependant log @cancelled(22-01-16 18:02) | ||
✔ zero(T) or 0 ? @done(20-08-13 00:28) | ||
trigonometric.jl: | ||
✔ Split @done(19-08-19 02:00) | ||
✔ Verify all requested functions are there @done(19-08-19 02:00) | ||
✔ Clean constants @done(19-08-19 14:13) | ||
✔ Common @done(19-08-19 15:19) | ||
✔ zero(T) or 0 ? @done(20-08-13 00:28) | ||
hyperbolic.jl: | ||
✔ Split @done(19-08-19 15:23) | ||
✔ Verify all requested functions are there @done(19-08-19 15:23) | ||
✔ Common @done(19-08-19 15:31) | ||
✔ Add docstring to generated funcs @done(19-08-19 16:45) | ||
✘ Flavor dependent atanh @cancelled(22-01-16 18:02) | ||
integer.jl: | ||
✔ Split @done(19-08-19 17:31) | ||
✔ Verify all requested functions are there @done(19-08-19 17:35) | ||
✔ Common @done(19-08-19 17:43) | ||
absmax.jl: | ||
✔ Split @done(19-08-19 17:46) | ||
✔ Verify all requested functions are there @done(19-08-19 17:46) | ||
✔ Common @done(19-08-19 17:48) | ||
|
||
9.2. Cancellative: | ||
✔ Split @done(19-08-19 19:14) | ||
✔ Verify all requested functions are there @done(19-08-19 19:14) | ||
✔ Common @done(19-08-19 19:14) | ||
✔ Check if cancelminus has flavor dependent edge cases @done(22-01-16 18:02) | ||
Doesn't seem like it does. | ||
|
||
9.3 Set operations: | ||
✔ Split @done(19-08-19 19:31) | ||
✔ Verify all requested functions are there @done(19-08-19 19:31) | ||
✔ Common @done(19-08-19 19:31) | ||
|
||
9.4. Numeric functions: | ||
✔ Split @done(19-08-19 01:26) | ||
✔ Common @done(19-08-19 01:11) | ||
✔ Solve mid(a, 0.5) != mid(a) discrepency @done(20-08-09 15:42) | ||
✘ Flavor dependent mid @cancelled(22-01-16 18:02) | ||
|
||
9.5. Boolean functions: | ||
These are in the set_operations.jl file | ||
✔ Split @done(19-08-19 19:30) | ||
✔ Verify all requested functions are there @done(19-08-19 19:31) | ||
✔ Common @done(19-08-19 19:36) | ||
✔ equal is not the same as == @done(19-08-19 19:36) | ||
✔ Check `isweaklylessprime` @done(22-01-16 18:03) | ||
✘ Flavor dependent issubset/isinterior ? @cancelled(22-01-16 18:02) | ||
✔ Choose infix operator for `isidentical` ? e.g. ∼ \sim<TAB> (not currently parsed by julia) or ∽ \backsim<TAB> or ≛ \stareq<TAB> or whatever @done(21-12-29 23:31) | ||
This is mainly used for tests and don't necessarily need to be exported | ||
|
||
9.6. Operatons on/with decoration: | ||
✘ Split @cancelled(22-01-16 18:16) | ||
✘ Verify all requested functions are there @cancelled(22-01-16 18:16) | ||
✘ Review @cancelled(22-01-16 18:16) | ||
|
||
9.7. Literals: | ||
✘ Review @cancelled(22-01-16 18:16) | ||
|
||
9.8. Constructor: | ||
✔ Review @done(22-01-16 18:14) | ||
✔ Check correctness and tightness for Interval{T}(x) @done(22-01-16 18:14) | ||
✔ Document constructors @done(22-01-16 18:14) | ||
✔ Make `..` work correctly for all input types @done(21-12-29 23:31) | ||
✔ Choose a mechanism for the default bound @done(21-12-29 23:31) | ||
✔ Add Interval{T}(π) @done(19-08-19 01:58) | ||
✔ Check performance @done(19-12-18 23:00) | ||
|
||
10.5. Required operations in set-based flavor: | ||
10.5.1. Literals: | ||
✘ No idea, but do it @cancelled(22-01-16 18:16) | ||
10.5.2. Constants: | ||
✔ Add ref to doc @done(19-08-21 00:09) | ||
✘ Move deprecation warning to a separated file ? @cancelled(22-01-16 18:16) | ||
10.5.3. Forward mode elementary functions: | ||
✔ Add ref to doc @done(19-08-21 00:20) | ||
10.5.4. Reverse mode elementary functions: | ||
✔ Open issue about their absence @done(19-08-20 03:16) | ||
They are in IntervalConstraint.jl | ||
10.5.5. Two output division: | ||
✔ Add ref to doc @done(19-08-21 00:23) | ||
✘ Flavor dependent edge case @cancelled(22-01-16 18:16) | ||
✘ Recent GH issue @cancelled(22-01-16 18:16) | ||
10.5.6. Cancellative: | ||
✔ Add ref to doc @done(19-08-22 15:51) | ||
✘ Check that the set-based follow the required behavior for undbounded intervals @cancelled(22-01-16 18:16) | ||
10.5.7. Set opeations: | ||
✔ Add ref to doc @done(19-08-22 15:55) | ||
10.5.8. Constructors: | ||
✔ Review I guess @done(22-01-16 18:15) | ||
10.5.9. Numeric functions: | ||
✔ Add ref to doc @done(19-08-22 15:55) | ||
10.5.10. Boolean: | ||
✔ Check everything required is present @done(19-08-22 16:07) | ||
✔ Add ref to doc @done(19-08-22 16:07) | ||
10.6. Recommended operations: | ||
✘ Check all that stuff @cancelled(22-01-16 18:15) | ||
|
||
|
||
Other: | ||
bisect.jl: | ||
✘ Review @cancelled(22-01-16 18:14) | ||
display.jl: | ||
✘ Review @cancelled(22-01-16 18:14) | ||
InteralArithmetic.jl: | ||
✔ Review @done(22-01-16 18:15) | ||
✔ Make sure everything is exported correctly @done(22-01-16 18:15) | ||
✔ Check renamed/new functions are exported @done(22-01-16 18:15) | ||
parsing.jl: | ||
✔ parsing of bare interval @done(21-12-29 23:27) | ||
✔ parsing of decorated interval @done(21-12-31 02:05) | ||
✔ Change `"3.16?1"` to be parsed as `"[3.15, 3.17]"` @done(21-12-31 02:16) | ||
☐ Restore parsing of special forms e.g. `"entire"`, `[,]` (tests are marked as broken) | ||
rand.jl: | ||
✘ Review @cancelled(22-01-16 18:14) | ||
symbols.jl: | ||
✘ Make sure everything is here @cancelled(22-01-16 18:15) | ||
|
||
|
||
Review other folders: | ||
Check PR #271 for details | ||
✘ Do it @cancelled(22-01-16 18:14) | ||
multidim: | ||
arithmetic.jl: | ||
StaticArray.jl v1.0 wants to promote the array eltype to interval | ||
|
||
Bugs: | ||
✔ `Int` times `Interval` errors (e.g. `2*a`) @done(19-12-14 23:50) | ||
✔ `(1..1) * pi` is not equal to `Interval(pi)` @done(22-01-15 20:49) | ||
✘ Find why 5 of the hyperb tests are failing only when put within the same testset as the others @cancelled(22-01-16 18:14) | ||
|
||
Documentation: | ||
✘ Put docstrings inside `@eval` blocks @cancelled(22-01-10 01:00) | ||
Not needed anymore since we don't use eval as much | ||
✔ Document flavors @done(22-01-16 18:14) | ||
☐ Document all the changes. | ||
|
||
Tests: | ||
✘ Uncomment complex tests in `construction.jl` @cancelled(22-01-10 01:00) | ||
Dropped support for Complex for now | ||
✔ Use `===` or `≛` instead of `==` @done(21-12-29 23:26) | ||
✘ Test all flavors @cancelled(22-01-16 18:15) | ||
☐ Test switching the default bound | ||
☐ Test switching the interval rounding | ||
✔ Test switchign the pointwise politic @done(22-01-16 04:51) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# Changelog | ||
|
||
## Structure | ||
Changed to match the IEEE standard, with corresponding docstring to every function when it is in the standard. | ||
|
||
Overall restructuring of the files to try to be more organized. | ||
|
||
Symbols that alias another function moved to `symbols.jl` | ||
|
||
Only minimal changes to `multdim/`. | ||
|
||
## Global precision | ||
Removed. It was causing problems and was agreed upon at some point. | ||
|
||
## Rounding | ||
Removed `setrounding(Interval, mode)` and redefinition of function to change the rounding mode. | ||
|
||
Instead the default rounding is given by the (not exported) function `IntervalArithmetic.rounding_mode()` and can be changed by redefining the function. | ||
|
||
This allow to simplify the management of the rounding mode. | ||
|
||
`@round` now take the interval type of the returned interval as first argument. The old fallback to the default bound still exists. | ||
|
||
## Flavors | ||
Only Cset flavor is available. | ||
|
||
The mechanism for more flavor is however introduced, in a similar way to the new rounding mechanism. The current flavor is given by the (not exported) `IntervalArithmetic.current_flavor()` and can be overwritten to change flavor. | ||
|
||
## Default bound | ||
Introduced the same mechanism as rounding and flavor, with the default bound given and possible changed through the not exported `IntervalArithmetic.default_bound()`. | ||
|
||
## Pointwise politic | ||
Introduced the concept of pointwise politic, that is what to do with the pointwise extension of boolean function like `==` to intervals. | ||
|
||
Uses the same mechanism as rounding, flavor and default bounds, using the function `IntervalArithmetic.pointwise_politic()` to define the current mode. | ||
|
||
By default uses ternary logic, similar to what is done in `NumberIntervals.jl`. | ||
|
||
Also implemented boolean intervals (always erroring in conditional) and the old behavior (often silently breaking `if .. else` clauses). | ||
|
||
Identity of intervals now use the `\stareq` infix operator, `==` being reserved for pointwise equality test. | ||
|
||
## Promotion and conversion | ||
Removed all promotion and conversion involving intervals. | ||
|
||
This makes the tracking of correctness easier as generic `Number` or `Real` methods now errors with intervals if they are not redefined in the package. | ||
|
||
## Construction | ||
The constructors definitions have been overall and, to an extend, redesigned. | ||
|
||
Now only `@interval` is trying to be smart and widen decimal inputs to guarantee their inclusion, leading to 2 eps wide interval built from single decimal literals. Guaranteeing inclusion is still better done by using either the `I""` string macro or `parse(Interval, str)`. | ||
|
||
All others constructors take floating point at face value. | ||
|
||
Consequently, `atomic` has been massively simplified. | ||
|
||
Introduced the alias `checked_interval` to be more specific than just lowercase `interval`. Both are now equivalent to `..`. | ||
|
||
`Interval(::Irrational)` works with generated function and is tight and correct. | ||
|
||
## Complex and Rational | ||
Support drop as it caused problems. It could be restored. | ||
|
||
## Parser | ||
Rewritten using `CombinedParsers.jl`. | ||
|
||
It is now much simpler and also slightly tighter. | ||
|
||
Unfortunately the new dependency seems to error on nightly, which is what causes the CI to fail. | ||
|
||
Some extension of parsing that are not in the standard still need to be restored. | ||
|
||
## Docstrings | ||
Added a ton of docstrings. | ||
|
||
## Others | ||
- Removed `widen` and `wideinterval`. | ||
- Removed `interval_from_midpoint_radius`. It is implemented by `±`. | ||
- Removed `force_interval` | ||
- Removed `find_quadrants_tan` as it was a duplicate of `find_quadrants` | ||
- `make_interval` renamed `wrap_literals` | ||
- Removed `pi_interval(T)` in favor of `Interval{T}(π)` | ||
- Renamed `multiply_by_positive_constant` to `scale` | ||
- Renamed `mid(a, α)` -> `scaled_mid(a, α)` to avoid discrepancy with default parameter. | ||
- Tests that seemed to have been tailored to the behavior of the old `@interval` have been modified or marked as `@test_broken` when the expected value can not be easily derived | ||
- `@interval` changed to `Interval` in tests as much as possible. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
could you please gitignore this and the changelog? It adds a lot of noise when browsing the PR from github.