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.
- update mex-common to 0.48.0
- remove backend settings that were just duplicating common settings
- removed BackendIdentityProvider enum, because it is now included in common
- use
create_merged_item
function from mex-common
- add support for full text queries on nested models to find extracted/rule/merged items
- optimize extracted/rule/merged search queries by applying sorting and pagination before pulling in nested models as well as identifiers from referenced merged items and by replacing subqueries with cypher "pattern comprehension" syntax
- prefix
components
in merged queries with_
, to be more harmonious with_refs
- add email fields to
SEARCHABLE_FIELDS
andSEARCHABLE_CLASSES
(stop-gap MX-1766)
- add
extracted_or_rule_labels
to query builder globals - add two matched organizations to the test dummy data
- rename short and obscure cypher query variables to more expressive and verbose ones
- rename
stable_target_id
to more appropriateidentifier
argument for merged queries
- avoid recursive retries in
GraphConnector._check_connectivity_and_authentication
- fix integration tests not properly marked as integration tests
- configure backoff rules for graph commits
- validate that the number of merged edges is as intended
- implement graph flushing connector method
- add endpoint for flushing the neo4j database (when running in debug)
- remove open-api schema customization, not needed anymore by the current editor
- remove purge-script, this is an HTTP endpoint now
- added an endpoint for getting a person by name from LDAP
- updated to mex-common 0.45.0 and mex-model 3.4.0
- allow item merging functions to ignore cardinality and output preview items
- harmonize error handling for transforming raw rule-sets to responses
- return 404 on GET rule-set endpoint, when no rules are found
- create new endpoint for fetching previews of merged items
- replaced
mex.backend.fields
withmex.common
counterpart
- removed not needed
mex.backend.constants
module - removed over-engineered
reraising
function
- clean up non-functional cypher query style issues
- do not raise server error when search query is not found
- improve error handling by returning validation issues for InconsistentGraphErrors
- pin mex-release to 0.3.0
- upgrade mex-common and mex-model dependencies to metadata model v3
- apply additional linters in prep for
all
ruff linters - mute warnings about labels used in queries but missing in graph
- split up search_merged_items_in_graph for better readability
- update cypher queries to use
CALL
clauses with correct variable scope - BREAKING: drop support for neo4j server version 5.6 and lower
- upgrade mex-common and mex-model dependencies to metadata model v3
- apply additional linters in prep for
all
ruff linters
- silence neo4j missing label warnings, because we will likely never need all labels
- sort search results by
identifier
andentityType
to ensure a more stable order - improve handling of pydantic validation errors and uncaught errors
- remove already obsolete module
mex.backend.serialization
this is not needed any more with the new mex-common version
- fix how merged edges are counted (currently only used for debugging)
- pin jinja as explicit dependency
- add
GraphConnector.fetch_rule_items
to get rule items - add
GET /rule-set/{stableTargetId}
endpoint to get rule-sets - add a rule-set response to the
create_rule_set
endpoint - implement merging logic as a triple of functions corresponding to our rule types
- add a preview endpoint to perform merge with a submitted rule-set and all found items
- add GraphConnector.exists_merged_item to verify stableTargetIds exist
- add PUT endpoint to update rule-sets for existing merged items
- BREAKING: move
to_primitive
to a more fittingly namedmex.backend.serialization
- BREAKING: swap
INDEXABLE_MODEL_CLASSES_BY_NAME
forALL_MODEL_CLASSES_BY_NAME
to also include non-indexable models (namely: merged models) - BREAKING: rename
fetch_extracted_data
to a more consistentfetch_extracted_items
- harmonize PagedAuxiliaryResponse with Merged- and ExtractedItemSearchResponse
- move searching and fetching of extracted and merged items to
helpers
module so they can be reused more easily outside of the endpoint code - use starlette status code constants instead of plain integers for readability
- BREAKING: rework
create_rule
connector method and endpoint to use RuleSets - merged endpoint returns actual merged items. was: extracted items presented as merged items
- improved test coverage for graph connector and wikidata endpoint
- remove redundant
status_code=200
config on endpoints - drop unused
UnprefixedType
support forentityType
parameters
- fix empty graph search results not returning empty lists but raising errors
- move
purge-db
from entrypoints to pdm scripts, because it's not part of the module
- make merged-items facade endpoint more lenient towards validation errors
- BulkIngestRequest contains now one single list "items"
- tests for ingestion adapted to BulkIngestRequest-Model
- remove stop-gaps for MX-1596
- removed class _BaseBulkIngestRequest for ingestion model
- BREAKING: use
items
instead ofresults
in paged wiki response - downgrade query logging to log level
debug
- fix endpoint serializing not working with
mex.common.types
/wikidata
endpoint to fetch all matching organizations from wikidata- add support for computed fields in graph queries
- BREAKING: make
MEX_EXTRACTED_PRIMARY_SOURCE
an instance of its own class instead of ExtractedPrimarySource in order to set static provenance identifiers
- add
INDEXABLE_MODEL_CLASSES_BY_NAME
lookup to fields module - add
render_constraints
jinja filter - implement new
POST /rule-item
endpoint - db purge script
- update connector and queries to support creating rules (analogous to extracted items)
- re-implemented queries as templated cql files
- updated graph connector for new queries
- improved isolation of neo4j dependency
- improved documentation and code-readability
- move exception handling middleware to new module
- change
identity_provider
default toMEMORY
- add stop-gap code waiting to be resolved by mx-1596
- migrate to latest
mex-common
- trashed hydration module
- pull request template
- sphinx documentation
- publish cve results
- CHANGELOG file
- cruft template link
- open-code workflow
- graph identity provider that assigns ids to extracted data
- generalize type enums into DynamicStrEnum superclass
- seed primary source for mex on connector init
- test fixture that makes Identifiers deterministic
- harmonized boilerplate
- assign name to uniqueness constraint
- use graph identity provider in identity endpoints
- add module name to dynamic models for better debugging
- allow 'MergedThing' as well as 'Thing' as entityType query parameter
- remove dynamic extracted model classes and use those from mex-common
- don't allow identifierInPrimarySource changes on node updates