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.
- Incorrect href for MAGIC Discovery profile schema #258
- Adopting new
metadata-resources.data.bas.ac.uk
site for schemas #256
- Incorrect href for MAGIC Discovery profile schema #254
- Inconsistent naming for uploaded MAGIC Discovery profile schema #253
- Minimum length requirements for mandatory fields in the ISO 19115 schema #248
- MAGIC Discovery Metadata profile v1 #250
- Profile validation for ISO 19115 #247
- Incompatibilities in the ISO 19115 JSON Schema between JavaScript and Python validation libraries #243
- Inconsistencies in function names for generating test records #249
- Upgrading
get_record_response
test fixture to account for profiles #251
- Incomplete addition of 'physicalReverseOf' custom aggregation association type code list value #239
- 'physicalReverseOf' custom aggregation association type code list item for two side map products #239
- Re-adding domain conformance data quality element #238
- Relaxing requirements for non-mandatory ISO config properties #236
- Changing constraint composition rule in ISO config from 'oneOf' to 'anyOf' as multiple options may match #237
- Version 2 configurations for ISO 19115-0 and ISO 19115-2 #230
- Temporal extents did not allow an end to be omitted, despite being permitted by the ISO 19115 schema #234
- Version 4 configurations for ISO 19115-1 and ISO 19115-2 to support backwards incompatible schema changes #228
- Series (identification) element #69
- Process step element #75
- Source element element #73
- Empty date values now correctly fail validation #213
- Addressing file size of resolved ISO 19115 schemas #231
- Renaming
iso_19115_1
toiso_19115_0
#229 - Fixing character set value error (
utf-8
should beutf8
) #232
- Minimum Python version updated to 3.9 #211
- Version 2 configurations for ISO 19115-1 and ISO 19115-2 #199
- Pre-commit hook #222
- ISBN identifier example to complete ISO 19115 test record #219
- Documentation on how to remove a retired configuration version for an existing standard #196
- Updating README examples to reflect V3 config changes #215
- JSON indenting when dumping record configurations for ISO 19115 standards #214
- Including static schemas without making a Python module #226
- Missing timezones from datetimes used in test record configurations #221
- Upgraded project dependencies #211
- Updated
pytest
configuration (fast fail, retry failed test first, randomise tests by default) #223 - Refactored internal / testing Flask app
- Updated project documentation #225
- Unused
requests
,tomlkit
andpytest-flask
dependencies #211
- Assumption that existing records would have extent identifiers #209
- Version 3 configurations for ISO 19115-1 and ISO 19115-2 to support backwards incompatible schema changes #182
- Documentation on how to add a new configuration version for an existing standard #196
- Permissions configuration property within resource constraints element #191
- Resource format element #66
- Other Citation Details element #184
- XML ID attribute (bounding extent) added to geographic extent for consistency with temporal extent #189
- Adopting extended ISO 19115-3 keyword type list in ISO 19115 V3 configuration schema #71
- Updating Poetry install method and location in CI/CD image #208
- Order of keys in ISO 19115 decoded configuration dictionaries #200
- Removing required citation usage constraint in test record configurations #187
- Removing the need to run Flask app separately when capturing test records #197
- Workaround for loading schema path for test standard #179
- Outdated reference to 'master' branch in CI config #198
- Adjusting lineage configuration property from string to an object in preparation for adding lineage sources #73
- Switching to new GCMD keywords URL #186
- Metadata (title, description) updated in existing schemas made clearer #194
- Refactoring distribution format to use a new common format element alongside #66 #180
- Retiring 'safe' test record configurations (all configurations are now safe) #193
- Improving consistency of ISO 19115 schema properties using definitions #192
- JSON Schema
$schema
property now required in metadata configurations #129 - Distribution options now incorporate distributor element to create a flat config structure #181
- Project path (to
metadata-library
) and branch updated (tomain
) #142 - Project dependencies updated - now requires 3.6.2 as a minimum runtime #122
- Switching from Docker to Poetry managed virtual environments for local development #148
- Removed option to disable XML declaration when encoding a record into XML #140
- Partial dates should be expressed directly in JSON encodings of configuration files, not using
date_precision
#137
- Removing support for deprecated ISO 19115 V1 record configuration #116
- GitLab issue template #177
- Flake8 Python linting, with various extensions #168
- Internal Flask command to capture all test configurations as JSON files for testing load/dump methods #169
- Basic linting for JSON Schema source files #170
- Basic package vulnerability checks #166
- Schema validation for ISO 19115 standards #61
- Base methods for XML schema validation #61
- Protocol element #68
- Spatial representation (scale) element used incorrect ISO elements #155
- Spatial extent element used incorrect structure where multiple type of spatial extent where used #156
- Order of ISO elements to match sequence proscribed by XML schema #157
- Element used for browse graphic IDs #158
- XML IDs for distribution format and transfer option elements #159
- Element used for aggregation identifier #160
- Disabling PyPi testing releases to avoid version clashes when merging into master branch #153
- Missing scope code options in ISO 19115 JSON config #162
- Missing JSON dump method for 19115-2 standard #163
- Internal API responses used the wrong return type (Exception instead of String) #165
- Path to configuration schemas in Continuous Deployment #167
- Indentation inconsistency between JSON dump and dumps in MetadataRecordConfig class #174
- Package builds for branches and
main
branch are correctly unversioned #178
- Adopting new
limportlib.files
method #173 - Refactoring commands from
manage.py
toapp.py
#146 - Relocating library under a source (
src/
) directory #147 - Relocating Terraform provisioning to support directory #164
- Incorrect namespace for IEC 61174:2015 standard #150
- Added logic to prevent RTZP test files being updated necessarily #151
- Splitting IEC 61174 standards into separate modules (61174-0, 61174-1) #144
- Incorrect casting of IEC 61174 waypoint position lat/lon values to integers instead of floats #143
- Initial support for IEC PAS 61174 standards (RTZ route planning) #139
- Adding missing JSON dump/dumps methods to configuration classes #135
- Temporal extents in V1 record configurations may not have been date objects but direct values #134
- Python package version inconsistency #133
- Parsing year only dates in a JSON record configuration #132
- JSON Schema inheritance fixed (
iso-19115-2-v2.json
inheritediso-19115-2-v1.json
rather thaniso-19115-1-v2.json
) #131
$schema
property was inadvertently blocked in configuration objects #128- Errors in README quick-start example #127
- Switched to direct package versioning to avoid errors parsing pre-release versions #124
- Unnecessary GitLab CD job for releases #125
- Re-licencing project under the MIT licence #121
- Dates refactored to use properties for each date type, rather than an array of objects containing a date type #99
- Distributors, Formats and Transfer Options refactored to per-distributor versions #87
- Modules for standards no longer include a version (e.g.
bas_metadata_library.standards.iso_19115_2
rather thanbas_metadata_library.standards.iso_19115_2_v1
) #102 MetadataRecordConfiguration
classes renamed to include version (e.g.MetadataRecordConfigurationV1
) #102
- Support for generating DOI citations automatically from DataCite API (to remove external dependencies) #117
- Support for INSPIRE and PoC UK-PDC profiles #103
- INSPIRE specific data quality measures from JSON schema #107
- Geographic extent descriptions/identifiers #89
- Resource purpose element #70
- Resource graphic overview element #72
- Support for loading record configurations from JSON files or strings #95
- Support for disabling the XML declaration in encoded documents (needed for CSW transactions) #76
- ID attributes for distribution Format and Transfer Option elements #108
- Resource credit element #65
- Title, description and example meta elements to JSON schemas #80
- Version 2 configurations for ISO 19115-1 and ISO 19115-2 to support backwards incompatible schema changes #102
- Resource identification status element #77
- Resource identification aggregation element #106
- Updated project Python dependencies #119
- Adding missing position property for responsible parties #63
- Correct Python typing for MetadataRecord.record property #120
- Adding missing tests for code coverage #111
- Configuration schema for temporal extent structure to allow date precision qualifier to be set #99
- Corrected
gco:nillReason
for missing data transfer formats (fromunknown
tomissing
) #64 - Configuration schema for datestamp changed to require date values rather than date-time #82
- Configuration schema for DOIs changed to require URI values rather than free-text #82
- Adding missing rust/cargo dependencies to Docker container to enable cryptography package to be built #113
- Addressing test coverage exemptions #111
- Identifiers structure changed in v2 record configuration (
title
property is nownamespace
) #105 - Constraints structure changed in v2 record configuration #81
- Root level properties changed in v2 record configuration (resource -> identification, new metadata) #109
- Using definitions property consistently in configuration schemas #115
- Configuration schemas relocated to
schemas
module and split into source and distribution versions to avoid relying on remote schemas during development #101 - README documentation improvements #112
- README whitespace
- Docker Compose command
- Scope code, code list changed to ISO 19115-3 source
- Updating copyright dates
- XPaths that select elements by their index position (e.g. 2nd instance)
- Datestamps being incorrectly encoded as datetimes rather than dates
- Distribution format versions are decoded using the correct key (
version
instead ofvalue
) - Incorrect character encoding term for UTF-8 (
utf-8
instead ofutf8
)
- Updated minimal usage example
- Namespace for ISO 19115(-0) changed from
bas_metadata_library.standards.iso_19115_v1
tobas_metadata_library.standards.iso_19115_1_v1
- Including PyCharm setting in version control, including run/debug/test configurations
- CD job to create a GitLab release for each tag with link to Python package
- Ability to generate configuration objects from existing metadata records
- Support for Research Organisation Registry (ROR) identifiers
- Support for ISO 19115-2 standard
- incorrect DOI used in tests
- incorrect minimal record configuration for ISO 19115 standards family
- Python dependencies updated (notably
lxml
) - Switching to a multi-stage Dockerfile using a virtual environment and non-root user
- Switching from Pip, SetupTools and Twine to Poetry
- Using scoped API tokens to upload packages to PyPi in CD
- Updating project licence years
- Switching from Flake8 to Black
- Switching from UnitTest to PyTest and refactoring tests
- Extracted metadata configuration JSON Schemas to standalone files
- Synk monitoring
- Recording missing requests dependency
- Removed 'funder' contact from examples as per Metadata Standards project decision not to include these for awards
- updated configuration schema references to use production metadata standards website
- correcting CD to generate configuration schemas for tagged releases as well as master branch commits
- support for
gmd:UseConstraints
elements
- support for UK PDC Discovery profile for ISO 19115 and Inspire
- support for custom access and use constraints
- support for
gmd:useLimitation
elements - CrossRef support for DOI citations
- documenting not to use HTML entities in input
- documenting how to use this project to generate an ISO 19115 record
- test case to ensure unicode entities are encoded correctly in XML
capture-test-records
command to streamline updating static test records- documentation on how tests are used for this library
- custom Flask command to output internal configuration JSON schemas
- copying internal configuration JSON schemas to Metadata Standards website as part of CD
- correcting support for ISO distribution info elements that only contain distributors
- correcting ISO 19115 service namespace to use ISO hosted schema rather an Inspire draft
- correcting ISO 19115 namespaces to use HTTPS endpoints
- correcting test for non-Anchor copyright elements
- replaced Gemini typical record configuration with minimal Inspire configuration (validated against Inspire validator)
- Adding missing ID to
InspireLimitationsOnPublicAccess
access constraint elements - The wrong code list was checked for ResponsibleParty roles
- Roles were not correctly outputted in cited ResponsibleParty elements
- Incorrect namespace used for OnlineResource FunctionCode test
- OnlineResources were incorrectly placed in ResponsibleParties, rather than inside a ContentInfo element [#33]
- Controlled titles in responsible parties (ISNI and ORCID) following [uk-pdc/metadata-infrastructure/metadata-standards#92]
- Adding better URL for netCDF MIME type
- Adding missing change log header
- Initial version with support for ISO 19115