# assertr development version

* Added the ability to check non-numeric classes with `within_bounds()`
  (fix #89)

# assertr 3.0

* Finally removed deprecated underscore functions

* Fixed a bug wherein single row data.frames were not handled properly

# assertr 2.9

* New function `has_only_names` requires that a data.frame or list
  have only the names requested.

* more graceful handling non-vectorized predicates

* some documentation/vignette updates

# assertr 2.8

* allows for custom success/error callbacks
  even if in an assertr chain

* ability to store success information

* introduction of obligatory rules, which
  marks data as defective and can use
  a custom callback

* support for a custom description of a rule

* support for appending warnings

* support for checking if a row contains a
  duplicated value across columns
  (`duplicates_across_cols` [a row_redux])

* support for checking if passed data has a
  particular class (`has_class` [a verify utility])

* support for assertion IDs

# assertr 2.7

* `assert()`: remove dead code (closes #103)

# assertr 2.6

* bugs due to changes in rlang 0.3.0 fixed.

# assertr 2.5

* `is_uniq` predicate now accepts multiple vectors and evaluates
  uniqueness on the combination of them.

* Breaking change: the `allow.na` argument to `is_uniq` must be named.
  Code like `is_uniq(x, TRUE)` will no longer work.
  Instead write `is_uniq(x, allow.na = TRUE)`.

# assertr 2.4

* errors from all assertr verbs now contain a data.frame holding the
  verb used, row reduction function (if any), the predicate, the column
  (or select formula), index, and offending value for each error

* the `error_report` (and new `error_df_return`) will bind the rows of
  all error data.frames in a list of errors. This is useful for assertr
  chains that contain multiple different verbs and allows all the errors
  to be viewed at a glance and, if so desired, computed upon

* switched to using the tidyeval framework and deprecated underscore functions

* bug fixes and performance enhancements

# assertr 2.0.0

* redesigned error and error handling mechanism

* assertr errors are now an S3 class and have some methods defined for them

* created some useful 'success' and 'error' functions

* added `chain_start` and `chain_end` that directs assertr to check all
  assertions (powering through failed ones instead of halting) and
  accumulating all the errors

* added 'is_uniq' predicate

* added 'has_all_names' utility function

* added 'col_concat' row reduction function

# assertr 1.0.0

* added row reduction functions like mahalanobis distnace

* added assert_rows and insist_rows assert verbs

* bug fixes

# assertr 0.5.7

* added within_n_mads predicate generator

# assertr 0.5.5

* added support for parameterized error functions

# assertr 0.5

* improved performance by adding support for vectorized predicates
* counts number of violations instead of short circuiting

# assertr 0.4.9

* provided standard evaluation versions of assert and insist

# assertr 0.4.2

* not_na and within_bounds are now vectorized and tagged

# assertr 0.4.1

* fixed automated tests to success with R 3.0.3

# assertr 0.4

* added `insist` and `within_n_sds` functions and updated vignette
  and documentations

# assertr 0.2

* initial release