tib_*() functions now use .fill when a field is NULL or otherwise has length 0 (e.g., list() or character()), treating it the same as an absent field (#231)..fill arguments now accept values that can be losslessly coerced to the expected type, such as "1" when an integer or double is expected (#337, #340).tibblify() now accepts values that can be losslessly coerced to the expected type, such as "1" when an integer or double is expected, and "false lists" that trivially unlist() to the expected type (such as list(list("a"))) (#330).... are now prefixed with . to minimize conflicts with column and object names in .... The un-dotted versions of the arguments are still accepted, but calling functions directly with un-dotted arguments will produce a warning once per session (see ?lifecycle::deprecate_soft()). Un-dotted arguments will be phased out in a future version of this package, so we recommend switching to the dot-prefixed versions. See ?tspec_df and ?tib_scalar() for details (#228).guess_tspec() variants guess_tspec_list() and guess_tspec_object_list() are now exported (along with guess_tspec_df() and guess_tspec_object(), which were already exported). guess_tspec() should correctly guess the format in most cases, but you can call the variant directly if you think guess_tspec() is dispatching incorrectly (#249).untibblify() now automatically uses the tib_spec attribute when present, so tibblified objects can be round-tripped without explicitly passing the spec (#235).parse_openapi_spec() supports many more fields and works for many more APIs (#170, #186, #190, #200, @jonthegeek and @mgirlich).New parse_openapi_spec() and parse_openapi_schema() to convert an
OpenAPI specification to a tibblify specification.
Fix ptype of a tib_vector() inside a tib_df().
New unpack_tspec() to unpack the elements of tib_row() fields (#165).
Improved printing of lists parsed with tspec_object().
Improved performance of the tspec() family.
Improved guessing.
In column major format all fields are required.
Fixed a memory leak.
tib_vector() is now uses less memory and is faster.
tspec_*(), tib_df(), and tib_row() now discard NULL in .... This
makes it easier to add a field conditionally with, for example
tspec_df(if (x) tib_int("a")).
tib_variant() and tib_vector() give you more control for transforming:
transform is now applied to the whole vector.
There is a new elt_transform argument that is applied to every element.
New tspec_recursive() and tib_recursive() to parse tree like structure,
e.g. a directory structure with its children.
Major rewrite of the tibblify package with lots of benefits:
tibblify() is now implemented in C and therefore way faster.
Support of column major format.
Support for vectors as scalar lists and objects.
Specification functions have been renamed
lcols() to tspec_df()tspec_object() and tspec_row()lcol_int() to tib_int() etctspec_df() gains an argument .names_to to store the names of a recordlist
in a column.
Added untibblify() to turn a tibble into a nested list, i.e. to reverse the action of tibblify().
Added spec_combine() to combine multiple specifications.
Added argument unspecified to tibblify() to control how to handle unspecified
fields.
Many bugfixes.