Changelog¶
Unreleased¶
Added¶
New CLI options:
erd:
--no-inheritance,--only-inheritanceAdd support for Python 3.13.
1.6.0 (2026-03-25)¶
Added¶
schema-report: Support
$defs, in addition todefinitions.set-closed-codelist-enums: Support
$defs, in addition todefinitions.
New CLI commands:
New CLI option:
schema-report:
--field-count
New library methods:
Changed¶
schema-report: Reports are opt-in, instead of opt-out.
1.5.0 (2025-08-28)¶
Added¶
Add support for Python 3.13.
Changed¶
ocdskit.packager.Packager:ocdskit.packager.AbstractBackend.add_release()raisesNonObjectReleaseErrorif a release is not an object.
Removed¶
Drop support for Python 3.9.
1.4.0 (2025-07-03)¶
Changed¶
ocdskit.util.detect_format(): Add anadditional_prefixesargument.
Removed¶
Remove
ocdskit.combine.compile_release_packages, deprecated in 0.2.0.
1.3.2 (2024-12-17)¶
Added¶
ocdskit.schema.get_schema_fields(): Add support foritemsas array.
1.3.1 (2024-12-16)¶
Added¶
ocdskit.schema.Field: Addcodelist,open_codelist.
1.3.0 (2024-12-15)¶
Added¶
ocdskit.schema.Field: Addname,deprecated_self,pattern,merge_by_id.ocdskit.schema.get_schema_fields():Add support for
allOf,anyOf,oneOf,then,else,$defs.Add support for
itemswithindefinitions.Add support for
patternPropertiesanditemswithinitems.Add support for
properties,patternPropertiesanditemswithinpatternProperties.
Changed¶
ocdskit.schema.Field: Renamedefinition_pathtodefinition.
Removed¶
ocdskit.schema.get_schema_fields(): Remove support fornullschema, which is invalid.-
Remove
definition_pointer,definition_pointer_components,definition_path_components.Remove support for adding fields to
__dict__.
1.2.0 (2024-09-15)¶
Changed¶
Some arguments must be keyword arguments in:
Removed¶
Drop support for Python 3.8.
1.1.13 (2024-05-08)¶
Added¶
ocdskit.combine.merge()accepts aconvert_exceptions_to_warningsargument.
1.1.12 (2024-05-07)¶
Added¶
ocdskit.combine.merge()accepts aforce_versionargument.
1.1.11 (2024-05-01)¶
Added¶
ocdskit.combine.merge()accepts aignore_versionargument.
1.1.10 (2024-04-15)¶
Added¶
ocdskit.util.Formatenumeration
Changed¶
ocdskit.util.detect_format(): Detect empty packages that set metadata fields but not areleasesorrecordsfield.
1.1.9 (2024-01-05)¶
Added¶
ocdskit.util.is_linked_release()accepts amaximum_propertiesargument (default 3).
Removed¶
Drop support for Python 3.7.
1.1.8 (2023-06-26)¶
Changed¶
schema-strict: Add
minItemslast, to match existing schema.
1.1.7 (2023-06-13)¶
Changed¶
compile: Prefix the
ocidto a warning.
1.1.6 (2023-06-08)¶
Changed¶
compile: Skip
nullentries in thereleasesarray of a release package.
1.1.5 (2023-04-20)¶
Changed¶
Update documentation on PyPI.
1.1.4 (2023-02-07)¶
Added¶
New CLI option:
mapping-sheet:
--no-inherit-extension
Removed¶
Drop support for Python 3.6.
Fixed¶
ocdskit.mapping_sheet.mapping_sheet()works if a schema contains"deprecated": null.ocdskit.mapping_sheet.mapping_sheet()works if--extension-fieldis set to a value other than “extension”.
1.1.3 (2022-10-20)¶
Fixed¶
ocdskit.mapping_sheet.mapping_sheet()works ifinclude_definitions=Falsebutbase_uriis not provided.
1.1.2 (2022-10-06)¶
Changed¶
Move
ocdskit/cli/__main__.pytoocdskit/__main__.py, to support thepython -m ocdskitinterface.Move
ocdskit.cli.commandstoocdskit.commands.
1.1.1 (2022-08-17)¶
Changed¶
ocdskit.mapping_sheet.mapping_sheet()resolves$refproperties ifinclude_definitions=False.
1.1.0 (2022-08-16)¶
Changed¶
ocdskit.mapping_sheet.mapping_sheet()returns columns and rows instead of writing to a file-like object.
1.0.4 (2022-02-10)¶
Added¶
New CLI option:
mapping-sheet:
--codelist
1.0.3 (2021-12-18)¶
Added¶
Changed¶
compile omits
packagesfrom a record package for OCDS 1.2+.
Fixed¶
1.0.2 (2021-06-29)¶
Fixed¶
mapping-sheet correctly populates the
extensioncolumn for extension fields on OCDS objects withitemsproperties that$ref’erence OCDS definitions.
1.0.1 (2021-06-16)¶
Changed¶
ocdskit.util.detect_format()accepts areaderkeyword argument: for example,gzip.openinstead ofopen.
1.0.0 (2021-05-19)¶
Changed¶
validate: Remove command. Instead, use lib-cove-ocds.tabulate: Remove command. Instead, convert the JSON data to CSV format using Spoonbill or Flatten Tool, and then load the CSV files into your preferred database. See:SQLite’s .import command (see also sqlite-utils)
PostgreSQL’s COPY command
MySQL’s LOAD DATA command
csvkit’s csvsql command
convert-to-oc4ids: Remove command. Instead, use oc4idskit’s convert-from-ocds.ocdskit.oc4ids: Remove module. Instead, use oc4idskit’s transforms.
0.2.23 (2021-05-06)¶
Fixed¶
mapping-sheet: Set
deprecatedon the extra rows for arrays.
0.2.22 (2021-04-23)¶
Fixed¶
schema-strict: Don’t add
"uniqueItems": trueto coordinates fields.
0.2.21 (2021-04-10)¶
Added¶
Add Python wheels distribution.
0.2.20 (2021-02-19)¶
Added¶
New CLI option:
mapping-sheet:
--language
0.2.19 (2021-02-16)¶
Fixed¶
0.2.18 (2020-12-15)¶
Added¶
New library method:
0.2.17 (2020-12-11)¶
Changed¶
tabulate: Supports linked releases and compiled releases.
0.2.16 (2020-10-06)¶
Fixed¶
upgrade: If a party’s
rolesfield isn’t a list of strings, no error occurs.
Added¶
New CLI command:
split-project-packages
0.2.15 (2020-09-30)¶
Changed¶
upgrade: If a party’s
rolesfield is a string, it is coerced to an array.
Added¶
New CLI options:
mapping-sheet:
--no-deprecated,--no-replace-refs
0.2.14 (2020-09-16)¶
Added¶
New CLI option:
schema-strict:
--check
New library method:
0.2.13 (2020-09-16)¶
Fixed¶
convert-to-oc4idsno longer errors if a party’sidfield isn’t set.
0.2.12 (2020-08-19)¶
Changed¶
ocdskit.util.get_ocds_minor_version()now supports records.
Fixed¶
mapping-sheet correctly populates the
extensioncolumn for extension fields on OCDS objects that$ref’erence OCDS definitions.
0.2.11 (2020-08-12)¶
Changed¶
mapping-sheet: The
extensioncolumn is now the name of the extension that introduced the JSON path, not the name of the extension that defined the field.
0.2.10 (2020-07-28)¶
Changed¶
indent respects
--ascii.tabulatesupports any OCDS data.
Fixed¶
compile no longer errors on Windows when using the SQLite backend.
0.2.9 (2020-07-08)¶
Fixed¶
detect-format respects
--root-path.convert-to-oc4idsomitssectoranddocumentsif empty.
0.2.8 (2020-04-29)¶
Changed¶
schema-strict accepts a filename as a positional argument, instead of a schema as standard input.
schema-strict adds constraints to all fields, not only required fields.
0.2.7 (2020-04-23)¶
Added¶
New CLI options:
combine-record-packages:
--versioncombine-release-packages:
--versioncompile:
--versionconvert-to-oc4ids:--versionpackage-records:
--versionpackage-releases:
--version
New library method:
Changed¶
compile sets
"version": "1.1"even on OCDS 1.0 data (seeocdskit.combine.merge()).package-releases and package-records omit the
extensionsfield if empty (seeocdskit.combine.package_releases()andocdskit.combine.package_records()).
Fixed¶
convert-to-oc4idssets thepublishedDatefield, not thepublished_datefield.
0.2.6 (2020-04-15)¶
Added¶
New library method:
Changed¶
combine-release-packages and combine-record-packages warn if the
"releases"and"records"fields aren’t set (seeocdskit.combine.combine_release_packages()andocdskit.combine.combine_record_packages()).
0.2.5 (2020-04-14)¶
Fixed¶
combine-release-packages and combine-record-packages no longer error if the
"releases"and"records"fields aren’t set (seeocdskit.combine.combine_release_packages()andocdskit.combine.combine_record_packages()).
0.2.4 (2020-03-19)¶
Fixed¶
convert-to-oc4idsno longer errors.
0.2.3 (2020-03-19)¶
Added¶
New CLI command:
convert-to-oc4ids
New library module:
ocdskit.oc4ids
Changed¶
compile errors if an
ocidfield is missing from a release (seeocdskit.packager.AbstractBackend.add_release()).upgrade upgrades records (see
ocdskit.upgrade.upgrade_10_11()).
0.2.2 (2020-01-07)¶
Changed¶
Avoid exception when piping output to tools like
head.package-releases, package-records: Use fast writer if
--sizeis set.echo: Use fast writer (assuming
--root-pathis set anytime input is too large).
0.2.1 (2020-01-06)¶
Added¶
New CLI options:
package-records:
--sizepackage-releases:
--size
New CLI command:
Changed¶
Implement iterative JSON writer.
Use
orjsonif available to improve performance of dumping/loading JSON, especially to/from SQL in compile command (seeocdskit.packager).
Fixed¶
combine-record-packages no longer duplicates release package URLs in
packagesfield (seeocdskit.combine.combine_record_packages()).
0.2.0 (2019-12-31)¶
Added¶
New library module:
Changed¶
CLI:
compile accepts either release packages or individual releases (see
ocdskit.combine.merge()).compile is memory efficient if given a long list of inputs (see
ocdskit.combine.merge()).
Library:
Deprecate
ocdskit.combine.compile_release_packagesin favor ofocdskit.combine.merge().
Fixed¶
--linked-releasesno longer uses the same linked releases for all records (seeocdskit.packager.Packager.output_records()).
0.1.5 (2019-12-18)¶
Added¶
New library methods:
The internal methods ocdskit.util.json_load and ocdskit.util.json_loads are removed.
0.1.4 (2019-11-28)¶
Added¶
New CLI options:
combine-record-packages:
--fakecombine-release-packages:
--fakecompile:
--fakepackage-records:
--fakepackage-releases:
--fake
New CLI command:
New library method:
Changed¶
mapping-sheet: Improve documentation of
--extensionand--extension-field.
Fixed¶
detect-format correctly detects concatenated JSON, even if subsequent JSON values are non-OCDS values.
0.1.3 (2019-09-26)¶
Changed¶
Set missing package metadata to
""instead ofnullin CLI commands, to mirror library methods.
0.1.2 (2019-09-25)¶
Changed¶
Align the library methods
ocdskit.util.json_dump()andocdskit.util.json_dumps().
0.1.1 (2019-09-19)¶
Fixed¶
0.1.0 (2019-09-17)¶
Command-line inputs can now be concatenated JSON or JSON arrays, not only line-delimited JSON.
Added¶
New CLI command:
New CLI options:
-
--uri--published-date--publisher-name--publisher-uri--publisher-scheme--publisher-uid
-
--publisher-name--publisher-uri--publisher-scheme--publisher-uid
-
--publisher-name--publisher-uri--publisher-scheme--publisher-uid
-
--publisher-name--publisher-uri--publisher-scheme--publisher-uid
-
--order-by--infer-required--extension--extension-field
The --root-path option is added to all OCDS commands.
New library methods:
Changed¶
Backwards-incompatible:
ocdskit.upgrade.upgrade_10_10(),ocdskit.upgrade.upgrade_11_11()andocdskit.upgrade.upgrade_10_11()now return data, instead of only editing in-place.Backwards-incompatible: mapping-sheet and schema-report now read a file argument instead of standard input, to support schema that
$refother schema.mapping-sheet and schema-report support schema from: Open Contracting for Infrastructure Data Standard (OC4IDS), Beneficial Ownership Data Standard (BODS), and Social Investment Data Lab Specification (SEDL).
mapping-sheet outputs:
enumvalues ofitemsenumas “Enum:” instead of “Codelist:”patternas “Pattern:”
schema-strict adds
"uniqueItems": trueto all arrays, unless--no-unique-itemsis set.Use
https://instead ofhttp://forstandard.open-contracting.org.
Fixed¶
compile merges extensions’ schema into the release schema before merging releases.
mapping-sheet fills in the deprecated column if an object field uses
$ref.schema-strict no longer errors if a required field uses
$ref.upgrade no longer errors if
awardsorcontractsisnull.
0.0.5 (2019-01-11)¶
Added¶
New CLI option:
-
--schema: You can create compiled releases and versioned releases using a specific release schema.--linked-releases: You can have the record package use linked releases instead of full releases.--uri,--published-date: You can set theuriandpublishedDateof the record package.If not set, these will be
nullinstead of theuriandpublishedDateof the last package.
combine-record-packages:
--uri,--published-datecombine-release-packages:
--uri,--published-date
New CLI command:
Changed¶
compile raises an error if the release packages use different versions.
compile determines the version of the release schema to use if
--schemaisn’t set.compile, combine-release-packages and combine-record-packages have a predictable field order.
measureis removed.
Fixed¶
indent prints an error if a path doesn’t exist.
compile, combine-release-packages and combine-record-packages succeed if the required
publisherfield is missing.
0.0.4 (2018-11-23)¶
Added¶
New CLI options:
schema-report:
--no-codelists,--no-definitions,--min-occurrences
Changed¶
schema-report reports definitions that can use a common
$refin the versioned release schema.schema-report reports open and closed codelists in CSV format.
0.0.3 (2018-11-01)¶
Added¶
New CLI options:
compile:
--package,--versioned
New CLI commands:
Changed¶
Add helpful error messages if:
the input is not line-delimited JSON data.
the input to the indent command is not valid JSON.
Change default behavior to print UTF-8 characters instead of escape sequences.
Add
--asciioption to print escape sequences instead of UTF-8 characters.Rename base exception class from
ReportErrortoOCDSKitError.
0.0.2 (2018-03-14)¶
Added¶
New CLI options:
validate:--check-urls,--timeout
New CLI commands:
0.0.1 (2017-12-25)¶
Added¶
New CLI commands:
measuretabulatevalidate