Changelog
Here described only the breaking and most significant changes. The full changelog and documentation for all released versions could be found in nicely formatted commit history.
#
v4.32.0- Added to_markdown() feature to metadata (#1052)
#
v4.31.0- Added a feature that allows to export table schema as excel (#1040)
- Added nontabular note to validation results to indicate nontabular file (#1046)
- Excel stats now shows bytes and hash (#1045)
- Added pprint feature which displays metadata in a readable and pretty way (#1039)
- Improved error message if resource.data is not a string (#1036)
#
v4.29.0- Made Detector's private properties public and writable (#1025)
#
v4.28.0- Improved an order of the metadata in YAML representation
#
v4.27.0- Exposed Dialect options via CLI such as
sheet
,table
,keys
, andkeyed
(#886)
#
v4.26.0- Validate 'schema.fields[].example' (#998)
#
v4.25.0- Allows descriptors that subclass collections.abc.Mapping (#985)
#
v4.24.0- Added support for
SqlDialect.basepath
(#982) (https://framework.frictionlessdata.io/docs/tutorials/formats/sql-tutorial)
#
v4.23.0- Added table dimensions check (#985)
#
v4.22.0- Added "extract --trusted" flag
#
v4.21.0- Added "--json/yaml" CLI options for transform
#
v4.20.0- Improved layout/schema detection algorithms (#945)
#
v4.19.0- Renamed
inlineDialect.keys
toinlineDialect.data_keys
due to a conflict withdict.keys
property
#
v4.18.0- Normalized metadata properties (increased type safety)
#
v4.17.0- Add fields, limit, sort and filter options to CkanDialect (#912)
#
v4.16.0- Implemented
system/plugin.create_candidates
(#893)
#
v4.15.0- Implemented
system.get/use_http_session
(#892)
#
v4.14.0- SQL Where Clause (#882)
#
v4.13.0- Implemented descriptor type detection for
extract/validate
(#881)
#
v4.12.0- Support external profiles for data package (#864)
#
v4.11.0- Added
json
argument toresource.to_snap
#
v4.10.0- Support resource/field renaming in transform (#843)
#
v4.9.0- Support
--path
CLI argument (#829)
#
v4.8.0- Added support for
Package(innerpath)
argument for unzipping a data package's descriptor
#
v4.7.0- Support control/dialect as JSON in CLI (#806)
#
v4.6.0- Implemented
describe_dialect
anddescribe(path, type="dialect")
- Support
--dialect
argument in CLI
#
v4.5.0- Implemented
Schema.from_jsonschema
(#797)
#
v4.4.0- Use
field.constraints.maxLength
for SQL's VARCHAR (#795)
#
v4.3.0- Implemented
resource.to_view()
(#781)
#
v4.2.0- Make
fields[].arrayItem
errors more granular (#767)
#
v4.1.0- Added support for
fields[].arrayItem
(#750)
#
v4.0.0- Released
frictionless@4
๐
#
v4.0.0a15- Updated loaders (#658) (BREAKING)
- Renamed
filelike
loader tostream
loader - Migrated from
text
loader tobuffer
loader
- Renamed
#
v4.0.0a14- Improve transform API (#657) (BREAKING)
- Swithed to the
transform_resource(resource)
signature - Swithed to the
transform_package(package)
signature
- Swithed to the
#
v4.0.0a13- Improved resource/package import/export (#655) (BREAKING)
- Reworked
parser.write_row_stream
API - Reworked
resource.from/to
API - Reworked
package.from/to
API - Reworked
Storage
API - Reworked
system.create_storage
API - Merged
PandasStorage
intoPandasParser
- Merged
SpssStorage
intoSpssParser
- Reworked
#
v4.0.0a12- Improved transformation steps (#650) (BREAKING)
- Split value/formula/function concepts
- Renamed a few minor step arguments
#
v4.0.0a11- Improved layout and data streams concepts (#648) (BREAKING)
- Renamed
data_stream
tolist_stream
- Renamed
readData
toreadLists
- Renamed
sample
tofragment
(sample
now is raw lists) - Implemented loader.buffer
- Implemented parser.sample
- Added support for function based checks
- Added support for function based steps
- Renamed
#
v4.0.0a10- Reworked Error.tags (BREAKING)
- Reworked Check API and split labels/header (BREAKING)
#
v4.0.0a9- Rebased on
Detector
class (BREAKING)- Migrated all infer_*, sync/patch_schema and detect_encoding parameters to
Detector
- Made
resource.infer
omit empty objects - Added
resource.read_*(size)
argument - Added
resource.labels
property
- Migrated all infer_*, sync/patch_schema and detect_encoding parameters to
#
v4.0.0a8- Improved checks/steps API (#621) (BREAKING)
- Updated
validate(extra_checks=[...])
tovalidate(checks=[{"code": 'code', ...}])
- Updated
#
v4.0.0a7- Updated describe/extract/transform/validate APIs (BREAKING)
- Removed
validate_table
(usevalidate_resource
) - Removed legacy
Table
andFile
classes - Removed
dataflows
plugin - Replaced
nopool
byparallel
(not parallel by default) - Renamed
report.tables
toreport.tasks
- Rebased on
report.tasks[].resource
(instead of plain path/scheme/format/etc) - Flatten Pipeline steps signature
- Removed
#
v4.0.0a6- Introduced Layout class (BREAKING)
- Renamed
Query
class and arguments/properties toLayout
- Moved
header
options fromDialect
toLayout
- Renamed
#
v4.0.0a5- Updated transform API
- Added
transform(type)
argument
- Added
#
v4.0.0a4- Updated describe API (BREAKING)
- Renamed
describe(source_type)
argument totype
- Renamed
#
v4.0.0a3- Updated extract API (BREAKING)
- Removed
extract_table
(useextract_resource
with the same API) - Renamed
extract(source_type)
argument totype
- Removed
#
v4.0.0a1- Initial API/codebase improvements for v4 (BREAKING)
- Allow
Package/Resource(source)
notation (guess descriptor/path/etc) - Renamed
schema.infer
->Schema.from_sample
- Renamed
resource.inline
->resource.memory
- Renamed
compression_path
->innerpath
- Renamed
compression: no
->compression: ""
- Updated
Package/Resource.infer
not to infer stats (usestats=True
) - Removed
Package/Resource.infer(only_sample)
argument - Removed
Resouce.from/to_zip
(usePackage.from/to_zip
) - Removed
Resouce.source
(useResource.data
orResource.fullpath
) - Removed
package/resource.infer(source)
argument (use constructors) - Added some new API (will be covered in the updated docs after the v4 release)
- Allow
#
v3.48- Make Resource independent from Table/File (#607) (BREAKING)
- Resource can be opened like Table (it's recommended to use Resource instead of Table)
- Renamed
resource.read_sample()
toresource.sample
- Renamed
resource.read_header()
toresource.header
- Renamed
resource.read_stats()
toresource.stats
- Removed
resource.to_table()
- Removed
resource.to_file()
#
v3.47- Optimize Row/Header/Table and rename header errors (#601) (BREAKING)
- Row object is now lazy; it casts data on-demand preserving the same API
- Method
resource/table.read_data(_stream)
now includes a header row if present - Renamed
errors.ExtraHeaderError->ExtraLabelError
(extra-label-error
) - Renamed
errors.MissingHeaderError->MissingLabelError
(missing-label-error
) - Renamed
errors.BlankHeaderError->BlankLabelError
(blank-label-error
) - Renamed
errors.DuplicateHeaderError->DuplicateLabelError
(duplicate-label-error
) - Renamed
errors.NonMatchingHeaderError->IncorrectLabelError
(incorrect-label-error
) - Renamed
schema.read/write_data->read/write_cells
#
v3.46- Renamed aws plugin to s3 (#594) (BREAKING)
#
v3.45- Drafted support for writing Multipart Data (#583)
#
v3.44- Added support for writing to Remote Data (#582)
#
v3.43- Add support to writing to Google Sheets (#581)
- Renamed
gsheet
plugin/format togsheets
(BREAKING: minor)
#
v3.42- Added support for writing to S3 (#580)
#
v3.41- Update Loader/Parser API to write to different targets (#579) (BREAKING: minor)
#
v3.40- Implemented a standalone multipart loader (#573)
#
v3.39- Fixed Header not being an original one (#572)
- Fix bad format validation (#571)
- Added default errors limit equals to 1000 (#570)
- Added support for field.float_number (#569)
#
v3.38- Improved ckan plugin (#560)
#
v3.37- Remove not working elastic plugin draft (#558)
#
v3.36- Support custom types (#557)
#
v3.35- Added "resolve" option to "resource/package.to_zip" (#556)
#
v3.34- Moved
frictionless.controls
tofrictionless.plugins.*
(BREAKING) - Moved
frictionless.dialects
tofrictionless.plugins.*
(BREAKING) - Moved
frictionless.exceptions.FrictionlessException
tofrictionless.FrictionlessException
(BREAKING) - Moved
excel
dependencies tofrictionless[excel]
extras (BREAKING) - Moved
json
dependencies tofrictionless[json]
extras (BREAKING) - Consider
json
files to be a metadata by default (BREAKING)
Code example:
#
v3.33- Implemented resource.write (#537)
#
v3.32- Added url parameter to SQL import/export (#535)
#
v3.31- Made tables with header and no data rows valid (#534) (BREAKING: minor)
#
v3.30- Various CLI improvements (#532)
- Added autocompletion
- Added stdin support
- Added "extract --csv"
- Exposed more options
#
v3.29- Added experimental CKAN support (#528)
#
v3.28- Add a "nopool" argument to validate (#527)
#
v3.27- Stop sorting keyed sources as the order is now guaranteed by Python (#512) (BREAKING)
#
v3.26- Added "nolookup" argument for validate_package (#515)
#
v3.25- Add transform functionality (#505)
- Methods
schema.get/remove_field
now raise if not found (#505) (BREAKING) - Methods
package.get/remove_resource
now raise if not found (#505) (BREAKING)
#
v3.24- Lower case resource.scheme/format/hashing/encoding/compression (#499) (BREAKING)
#
v3.23- Support "header_case" option for dialects (#488)
#
v3.22- Added suppport for DB2 format (#485)
#
v3.21- Improved SPSS plugin (#483)
- Improved BigQuery plugin (#470)
#
v3.20- Added support for SQL Views (#466)
#
v3.19- Rebased AwsLoader on streaming (#460)
#
v3.18- Added
hashing
parameter todescribe/describe_package
- Removed
table.onerror
property (BREAKING)
#
v3.17- Added timezone for datetime/time parsing (#457) (BREAKING)
#
v3.16- Fixed metadata.to_yaml (#455)
- Removed the
expand
argument frommetadata.to_dict
(BREAKING)
#
v3.15- Added native schema support to SqlParser (#452)
#
v3.14- Make Resource the main internal interface (#446) (BREAKING: for plugin authors)
- Move Resource's stats to
resource.stats
(BREAKING) - Rename
on_error
toonerror
(BREAKING) - Added
resource.stats.fields
#
v3.13- Add an
on_error
argument to Table/Resource/Package (#445)
#
v3.12- Added streaming to the extract functions (#442)
#
v3.11- Added experimental BigQuery support (#424)
#
v3.10- Added experimental SPSS support (#421)
#
v3.9- Rebased on a
goodtables
successor versioning
#
v3.8- Add support SQL/Pandas import/export (#31)
#
v3.7- Add support for custom JSONEncoder classes (#24)
#
v3.6- Normalize header terminology
#
v3.5- Initial public version