All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
This release adds support for the 0.4 version of the Beneficial Ownership Data Standard
- Update to handle new jsonschema version (Draft202012Validator)
- Adapt infrastructure to handle BODS 0.4 (structure, statement types etc.)
- Default config value for bods_additional_checks_person_birthdate_min_year has been increase from 1 to 1800
- Include the BODS 0.4 schema
- Include BODS 0.4 specific additional checks
- Include BODS 0.4 specific statistics
- Add tests for BODS 0.4 schema validation
- Add tests for BODS 0.4 specific additional checks
This Release marks a very big refactoring to use with new cove and new libcove2 library.
- DataReader class
- Sample mode
- Flag to DataReader classes
- libcovebods/run_tasks.py has TASK_CLASSES and TASK_CLASSES_IN_SAMPLE_MODE
- Classes for python checks have new method get_additional_check_types_possible so Cove can get more info
- CLI interface
- libcovebods/additionalfields.py has AdditionalFields class for additional fields checks
- libcovebods/jsonschemavalidate.py has JSONSchemaValidator for JSON schema checks
- libcovebods/run_tasks.py has process_additional_checks for Python checks that produce statistics and additional checks
- legacy Task classes have been split and new classes created:
- StatisticAddress
- StatisticsCurrentOwnershipOrControlStatementsAndReplacesStatementsMissing
- LegacyChecksNeedingHistory
- classes for each task - does_apply_to_schema method becomes static so can be called without setting up any complex things that init may do
- legacy Task classes have been split and new classes created:
- Support for Python 3.6 as that is end of life
- Support for Python 3.7 as that is end of life in a few months
- All old API's
- requirements: Update Django to 3.2 LTS
- Schema version 0.3
- Schema class has new method is_schema_version_equal_to_or_greater_than()
- New statistic: count of interest objects with different directOrIndirect values. For 0.3+
- Schema class has new method get_ownership_or_control_statement_interest_direct_or_indirect_list() for this
- New check: has public listing information but has public listing is false. For 0.3+
- New check: statement entityType and entitySubtype.generalCategory do not align. For 0.3+
- New check: marketIdentifierCode / operatingMarketIdentifierCode - check one not missing. For 0.3+
- New statistic: count ownership or control statement with at least one interest beneficial
- New statistic: count person statements have pep status statuses
- New check: has pep details without missing info but incorrect pep status. For 0.2 only
- New check: has pep details but incorrect pep status. For 0.3+
- New check: has pep details with missing info but incorrect pep status. Different rules are used for 0.2 only and 0.3+
- Updated included schema files, and added instructions on how to do that to the README
- Refactored libcovebods/lib/common_checks.py
- Classes RunAdditionalChecks and GetStatistics are gone, refactored to LegacyChecks and LegacyStatistics
- New abstract class AdditionalCheck - can be extended by other classes to have better seperation in the future
- New function process_additional_checks available to do work
- Removed statistic: count person statements have pep status and reason missing info
- New additional check type, "statement_is_beneficialOwnershipOrControl_but_no_person_specified" #47
- New additional check type, "unknown_schema_version_used" openownership/cove-bods#56 -- Used if some other type than a string given (eg a dict, list) -- Used if a string is given but it's a version we don't know about -- Used if a blank string is given -- Used if a version with patch number is given (eg 0.2.0 instead of 0.2)
- If a version is specified in "bodsVersion" that does not exist, then it will assume the latest version (previously it assumed the default version)
- Checking for inconsistent schema versions works against the schema the data tries to use in the first statement (previously it worked against the version that was assumed)
- A crash when statementID is not a string openownership/cove-bods#67
- Update to latest lib-cove and lib-cove-web, and make some changes to the tests for compatibility with these
- Update to latest lib-cove and lib-cove-web, and make some changes for compatibility with these
- Catch error when
statementDate
isnull
- Rename schema object attributes to remove word "release", as in latest lib-cove
- requirements: Update Django to 2.2 LTS and lib-cove to latest
Changes to packaging only;
- Removed all requirements files and moved to setup.py
- Require latest version of lib-cove, so that optional flatten-tool dependencies are pulled in #54
- Moved data underneath main folder where it can be included in package
- Support for schema version 0.2.
If no meta information is in the data, 0.1 is assumed and work happens as before.
- Add new schema_version key for reporting #28
- The options in count_ownership_or_control_statement_interest_statement_types are different in schema 0.1 and 0.2
- Statistic: Count of current ownership/control statements
- Statistic: Count of ownership-or-control statements by year
- Statistic: Count of subjects of ownership-or-control statements by year
- Statistic: Count of different kinds of interested parties by year
- Improve validation error messages (including oneOf)
- openownership/cove-bods#16
- #5
- This adds translation issues, human messages and a requirement for Django; it was not intended that these should be in this library but as discussed in the pull request we added it hopefully temporarily.
- Statistic: hasPepStatus (0.2 only) #29
- Statistic: pepStatusDetails.missingInfoReason (0.2 only) #30
- Additional Check: inconsistent bodsVersion #27
- Additional Check: address types (0.2 only) #22
- Additional Check: ownership_or_control_statement has is_compontent and component_statement_ids (0.2 only) #26
- Additional Check: component_statement_id not in package (0.2 only) #25
- Additional Check: statement_is_component_but_not_used_in_component_statement_ids and statement_is_component_but_is_after_use_in_component_statement_id (0.2 only)
- Statistic: Addresses, with country, with postcode, with postcode in address #16
- get_statistics() function becomes GetStatistics class, like the RunAdditionalChecks class
- Statistic: Entity Statements with one or more identifiers, by statement type
- Statistic: Entity Statements with one or more identifiers with scheme and id, by statement type
- Statistic: Statements referenced in replacesStatements, but have not appeared in the file yet
- Use lib-cove version 0.5.0, which includes schema validation message changes
- scheme is not required in identifier object so if it's not there, that should not trigger an error
- Statistic: % of Persons of each type
- Statistic: % of type of interest statement in ownership-or-control statement
- Statistic: % of ownership-or-control statements with unspecified interestedParty
- Statistic: % of Entities of each type
- Additional Checks: Each statement must have an entirely unique identifier
- Additional Checks: Check Birth Date is in acceptable range
- Require jsonschema version before 2.7
- Updated standard Schema to V0.1
- Additional Checks: All relevant statements are present
- Additional Checks: All relevant statements are in correct order
- Additional Checks: Person or entity statements should be used in an ownership-or-control statement
- Additional Checks: scheme should be an org-id code (This requires lib-cove 0.2.0 or higher)
- Statistic: % of Interests of each type
- Upgrades lib-cove needed to 0.3.1
First Release