frictionless 1.2.1
- frictionless now relies on R version 3.6.0 or
higher. Originally it stated version 3.5.0 or higher, but this
was not tested and likely not true (#238).
 
read_package() now returns a warning rather than an
error when a datapackage.json contains no resources. This
allows use to create the JSON and then add resources with frictionless
(#265). 
example_package() now has a version
parameter, allowing to load the example Data Package following the Data
Package v1 or v2 specification (#249). 
frictionless 1.2.0
Changes for users
add_resource() now allows to replace an existing
resource (#227). 
read_resource() now returns an error if both
path and data are provided (#143). 
write_package() no longer writes to "." by
default, since this is not allowed by CRAN policies. The user needs to
explicitly define a directory (#205). 
null values in a read datapackage.json are
now retained by write_package(), rather than being changed
to empty lists. Properties assigned by the user to NA and
NULL remain being written as null and removed
respectively (#203). 
- New vignettes 
vignette("data-package"),
vignette("data-resource"),
vignette("table-dialect") and
vignette("table-schema") describe how frictionless
implements the Data Package standard. The (verbose) function
documentation of read_resource() and
create_schema() has been moved to these vignettes,
improving readability and maintenance (#208, #246). 
- The included dataset 
example_package is removed in
favour of the function example_package(). This function
allows to reproducibly provide a local Data Package, without the need
for an internet connection. The observations resource was
also changed from a remote to a local resource and from CSV to TSV.
This change affects the use of example_package in
older versions of frictionless. We recommend to update
frictionless to the latest version (#114, #253). 
Changes for developers
read_resource() is now more modular under the hood,
which should make it easier to extend (#210). 
- checklist tooling
was removed, in favour of 
CITATION.cff for citation and
Zenodo deposit (#206). 
Other changes
frictionless 1.1.0
Changes for users
- New function 
print() prints a human-readable summary of
the Data Package, rather than a (long) list (#155). 
read_package() no longer returns a message regarding
rights and credit (#121). If package$id is a URL (e.g. a
DOI) it will be mentioned in print(). 
add_resource() accepts additional arguments via
.... These are added as (custom) properties to the resource
and are retained in write_package() (#195). 
read_resource() now supports column selection via the
col_select argument from readr::read_delim().
This can vastly improve reading speed (#123). Tidy
selection is not supported. 
write_package() no longer adds
"profile": "tabular-data-package" to
datapackage.json. It is also removed from the example
dataset (#188). 
- Error and warning messages use semantic colours for variables,
parameters, fields, etc.
 
readr::problems() is included in NAMESPACE so you don’t
have to load readr to inspect parsing issues. The function is mentioned
in the documentation of read_resource() (#129). 
Changes for developers
- A Data Package object (
package) now has a
datapackage class (#184). This enables a custom
print() function (see above). check_package()
will warn if the class is missing, so previously saved Data
Package objects (without the class) will generate a
warning. 
check_package() is now a public function, so it can be
used in your package (#185). This and the other check_
functions return the first argument silently (rather than
TRUE), so they can be chained. 
create_package() now accepts a descriptor
argument so that a Data Package object can be created from an existing
object (#184). It will always validate the created object with
check_package(). 
cli::cli_abort(), cli::cli_warn() and
cli::cli_inform() are used for all errors, warnings, and
messages (#163). This has several advantages:
- Messages use semantic colours for variables, parameters, fields,
etc.
 
- Messages and warnings can be silenced with a global or local option,
see this
blog post.
 
- Each call has an rlang class,
e.g. 
frictionless_error_fields_without_name, making it
easier to test for specific errors. 
 
- glue and assertthat are
removed as dependencies (#163). The functionality of glue is replaced by
cli, while 
assertthat::assert() calls are now
if () statements. 
- rlang is
added as dependency (#192). It is already used by other
dependencies.
 
- frictionless now depends on R >= 3.5.0.
 
Other changes
- The package now adheres to the requirements of checklist, so that
.zenodo.json can be created with
checklist::update_citation(). 
- Add Pieter
Huybrechts as author and Kyle Husmann as
contributor. Welcome both!
 
frictionless 1.0.3
- Add stringi
to 
Suggests. It was removed as a dependency from rmarkdown 2.26,
resulting in “stringi package required for encoding operations” build
errors on CRAN (#176). 
frictionless 1.0.2
- Add 
skip_if_offline() to selected tests and verbosely
include output in vignette examples, to avoid CRAN errors caused by
timeouts (#116). 
frictionless 1.0.1
- Rebuild documentation for compatibility with HTML5 on request of
CRAN.
 
- Add funder information.
 
frictionless 1.0.0
frictionless 0.11.0
add_resource() now sets format,
mediatype and encoding for added CSV file(s)
(#78). 
add_resource() now supports adding schema
via path or URL. 
write_package() now supports added data to be gzip
compressed before being written to disk (#98). 
read_resource() will now warn rather than error on
unknown encoding (#86). 
package objects no longer have or require the custom
attribute resource_names, use new function
resources() instead (#97). 
package objects no longer have or require the custom
attribute datapackage, making it easier to edit them as
lists (with e.g. append()). 
frictionless 0.10.0
add_resource() now supports adding CSV file(s) directly
as a resource. This skips reading/handling by R and gives users control
over path (#74). 
- CSV files in a remotely read package (like
example_package) are now downloaded when writing with
write_package(), rather than being skipped. This is more
consistent with locally read packages. The behaviour for resources with
a path containing URLs (only) and resources with
data remains the same (no files are written). The write
behaviour is better explained in the documentation (#77). 
write_package() now silently returns the output rather
than input package. 
create_package() will set
"profile" = "tabular-data-package" since packages created
by frictionless meet those requirements (#81). 
create_schema() interprets empty columns as
string not boolean (#79). 
read_package() can now read from a
datapackage.yaml file. 
read_resource() now accepts YAML Table Schemas and CSV
dialects. 
add_resource()/create_schema()’s
df argument is renamed to data. 
example_package’s observations resource
now has URLs as path to serve as an example for that. 
frictionless 0.9.0
- Add vignette with overview of functionality (#60).
 
- Prepare frictionless for rOpenSci submission.