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).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).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).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).read_resource()
is now more modular under the hood, which should make it easier to extend (#210).CITATION.cff
for citation and Zenodo deposit (#206).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).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).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:frictionless_error_fields_without_name
, making it easier to test for specific errors.assertthat::assert()
calls are now if ()
statements..zenodo.json
can be created with checklist::update_citation()
.Suggests
. It was removed as a dependency from rmarkdown 2.26, resulting in "stringi package required for encoding operations" build errors on CRAN (#176).skip_if_offline()
to selected tests and verbosely include output in vignette examples, to avoid CRAN errors caused by timeouts (#116).datapackage.json
, resource files, schemas) can now be read from (s)ftp://
URLs (#102).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()
).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).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.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.