wikimedia/mediawiki-extensions-Wikibase

View on GitHub
lib/packages/wikibase/data-model-services/RELEASE-NOTES.md

Summary

Maintainability
Test Coverage
# Wikibase DataModel Services release notes

## Version 5.4.0 (2021-04-23)
* Added `EntityRedirectLookup::FOR_UPDATE` constant
* Added `EntityRedirectTargetLookup` (extracted from `EntityRedirectLookup`)

## Version 5.3.0 (2020-03-10)
* Allow installing with data-values/data-values 3.0.0

## Version 5.2.0 (2020-03-10)
* Allow installing with wikimedia/assert 0.5.0

## Version 5.1.0 (2020-02-13)
* Added the `ItemTermStoreWriter` and `PropertyTermStoreWriter` interfaces.

## Version 5.0.0 (2020-01-24)
* Stopped accepting null for term type or language in TermBuffer::prefetchTerms()

## Version 4.0.0 (2020-01-06)

* Added `FallbackLabelDescriptionLookup` interface
* Stopped supporting hhvm and added support for php 7.3 and 7.4
* Dropped support for diff 2.3 and added support for 3.2

## Version 3.15.0 (2019-04-24)

* Added `ItemLookup` implementations
  * `LegacyAdapterItemLookup` which is an adapter to `EntityLookup`
  * `InMemoryEntityLookup` which is a test double
* Added `PropertyLookup` implementations
  * `LegacyAdapterPropertyLookup` which is an adapter to `EntityLookup`
  * `InMemoryEntityLookup` which is a test double
* Added constructor to `InMemoryEntityLookup`

## Version 3.14.0 (2019-04-16)

* Added `SeekableEntityIdPager`
* Added `InMemoryEntityIdPager`

## Version 3.13.0 (2019-02-05)

* Added `ExceptionIgnoringEntityLookup`
* Bumped minimum PHP requirement to 7.x or HHVM

## Version 3.12.0 (2018-11-06)

* Added compatibility with Wikibase DataModel 9.x
* Removed compatibility with Diff 1.x
* `UnresolvedEntityRedirectException`: Mention source entity id in message (#200)

## Version 3.11.0 (2018-08-07)

* Added compatibility with Wikibase DataModel 8.x
* Added compatibility with DataValues 2.x
* Raised minimum PHP version to 5.6

## Version 3.10.0 (2018-05-31)

* Added `ReferencedEntityIdLookup` interface, along with:
  * `EntityRetrievingClosestReferencedEntityIdLookup` reference implementation
  * `MaxReferenceDepthExhaustedException`
  * `MaxReferencedEntityVisitsExhaustedException`
  * `ReferencedEntityIdLookupException`
* Added `LabelLookup` interface.
  * Relaxed `EntityIdLabelFormatter` to only require a `LabelLookup`.

## Version 3.9.0 (2018-01-18)

* Added `EntityIdComposer`.
* Added `DisabledEntityTypesEntityLookup`.

## Version 3.8.0 (2017-03-17)

* Fixed `EntityRetrievingTermLookup` silently failing for entities that do not implement
  `FingerprintProvider` (#171).
* Introduced caching in `PrefixMappingEntityIdParserFactory` (#162).
* Added compatibility with Wikibase DataModel 7.x.

## Version 3.7.0 (2016-11-14)

* Raised minimum PHP version to 5.5.
* Compatible with Wikibase DataModel 6.3
* Added `EntityIdPager` from `Wikibase\Repo\Store`.
* Added services for foreign entities:
  * `DispatchingEntityLookup`
  * `PrefixMappingEntityIdParser`
  * `PrefixMappingEntityIdParserFactory`
  * `UnknownForeignRepositoryException`

## Version 3.6.0 (2016-05-13)

* Added `StatementListDiffer` (was in the package private `Internal` namespace before).
* Added `StatementListPatcher` (replaces an incompatible package private class with the same name).
* Added `TermListPatcher`.
* Fixed `FingerprintPatcher` ignoring change operations on aliases that are marked as "not associative".
* Fixed `StatementGuidValidator` not rejecting strings with a newline at the end.

## Version 3.5.0 (2016-03-14)

* Added compatibility with Wikibase DataModel 6.x

## Version 3.4.0 (2016-02-22)

* Added `RestrictedEntityLookup::reset`

## Version 3.3.0 (2016-02-18)

* Added compatibility with Wikibase DataModel 5.0.
* Added `FILTER_TYPE` constant to `DataTypeStatementFilter`, `NullStatementFilter` and `PropertySetStatementFilter`.
* Fixed `StatementGuidParser` not parsing GUIDs with multiple dollar signs.

## Version 3.2.0 (2015-12-03)

* Added `StatementGrouper` interface and the most basic implementations:
  * `NullStatementGrouper`
  * `ByPropertyIdStatementGrouper`
  * `FilteringStatementGrouper`
* Added `StatementFilter` implementations for use in `FilteringStatementGrouper`:
  * `NullStatementFilter`
  * `DataTypeStatementFilter`
  * `PropertySetStatementFilter`

## Version 3.1.1 (2015-11-15)

* Made `EntityRetrievingTermLookup` handle `EntityLookupException` ([T118581](https://phabricator.wikimedia.org/T118581))

## Version 3.1.0 (2015-10-16)

* Added `InMemoryEntityLookup::addException`
* Added `PropertyDataTypeMatcher`
* Added `InProcessCachingDataTypeLookup`
* Added optional message and previous exception parameters to the `UnresolvedEntityRedirectException` constructor

## Version 3.0.0 (2015-09-16)

Breaking changes:

* Removed `EntityRedirectResolvingDecorator`
* Removed `UnresolvedRedirectException`
* `EntityLookup::hasEntity` now throws `EntityLookupException`

Non breaking changes:

* Added `UnresolvedEntityRedirectException`
* Added `EntityAccessLimitException`
* `RestrictedEntityLookup` now throws `EntityAccessLimitException`

## Version 2.0.1 (2015-09-10)

* Fixed uncaught exception in EntityIdLabelFormatter::formatEntityId ([T112003](https://phabricator.wikimedia.org/T112003))

## Version 2.0.0 (2015-09-02)

Moved `EntityIdParser` back to Wikibase DataModel:

* Removed `EntityIdParser`
* Removed `EntityIdParsingException`
* Removed `BasicEntityIdParser`
* Removed `DispatchingEntityIdParser`

Changed all Lookup contracts:

* All lookups now return null when there is no value found as a result of the lookup:
  * `EntityRetrievingTermLookup` returns null instead of throwing `OutOfBoundsException`.
  * `LanguageLabelDescriptionLookup` returns null instead of throwing `OutOfBoundsException`.
  * `ItemLookup` implementations should return null instead of throwing `ItemNotFoundException`.
  * `LabelDescriptionLookup` implementations should return null instead of `OutOfBoundsException`.
  * `PropertyLookup` implementations should return null instead of `PropertyNotFoundException`.
  * `TermLookup` implementations should return null instead of `OutOfBoundsException`.
* All lookups now throw exceptions in exceptional circumstances:
  * `EntityLookup` implementations should throw `EntityLookupException` instead of returning null.
  * `EntityRedirectLookup` implementations should throw `EntityRedirectLookupException` instead of returning false.
  * `EntityRetrievingDataTypeLookup` throws `PropertyDataTypeLookupException` instead of `PropertyNotFoundException`.
  * `EntityRetrievingTermLookup` throws `TermLookupException` instead of `OutOfBoundsException`.
  * `InMemoryDataTypeLookup` throws `PropertyDataTypeLookupException` instead of `PropertyNotFoundException`.
  * `ItemLookup` implementations should throw `ItemLookupException` instead of `ItemNotFoundException`.
  * `LabelDescriptionLookup` implementations should throw `LabelDescriptionLookupException` instead of `OutOfBoundsException`.
  * `LanguageLabelDescriptionLookup` throws `LabelDescriptionLookupException` instead of `OutOfBoundsException`.
  * `PropertyDataTypeLookup` implementations should throw `PropertyDataTypeLookupException` instead of `PropertyNotFoundException`.
  * `PropertyLookup` implementations should throw `PropertyLookupException` instead of `PropertyNotFoundException`.
  * `TermLookup` implementations should throw `TermLookupException` instead of `OutOfBoundsException`.
* Removed `Lookup\ItemNotFoundException`
* Removed `Lookup\PropertyNotFoundException`
* Added `Lookup\EntityLookupException`
* Added `Lookup\EntityRedirectLookupException`
* Added `Lookup\LabelDescriptionLookupException`
* Added `Lookup\TermLookupException`
* Added `Lookup\ItemLookupException`
* Added `Lookup\PropertyLookupException`

Moved over various classes and interfaces from Wikibase Lib:

* Added `Lookup\RedirectResolvingEntityLookup`
* Added `Lookup\RestrictedEntityLookup`
* Added `Diff\EntityTypeAwareDiffOpFactory` (previously called WikibaseDiffOpFactory in Lib)

Other additions:

* Added `Lookup\InMemoryEntityLookup`

## Version 1.1.0 (2015-08-10)

Moved over various classes and interfaces from Wikibase Lib:

* `DataValue\ValuesFinder`
* `Entity\EntityPrefetcher`
* `Entity\EntityRedirectResolvingDecorator`
* `Entity\NullEntityPrefetcher`
* `EntityId\EntityIdFormatter`
* `EntityId\EntityIdLabelFormatter`
* `EntityId\EscapingEntityIdFormatter`
* `EntityId\PlainEntityIdFormatter`
* `EntityId\SuffixEntityIdParser`
* `Lookup\EntityLookup`
* `Lookup\EntityRedirectLookup`
* `Lookup\EntityRetrievingDataTypeLookup`
* `Lookup\EntityRetrievingTermLookup`
* `Lookup\LabelDescriptionLookup`
* `Lookup\LanguageLabelDescriptionLookup`
* `Lookup\TermLookup`
* `Statement\StatementGuidValidator`
* `Term\PropertyLabelResolver`
* `Term\TermBuffer`

These have not been changed apart from now residing in a different namespace, and in some
cases using dependencies that have similarly been moved.

* Added `Entity\UnresolvedRedirectException`, similar to the one in Wikibase Lib, though without revision info

## Version 1.0.0 (2015-07-28)

Initial release containing

* Entity diffing and patching functionality in `Services\Diff`
* `EntityIdParser` and basic implementations in `Services\EntityId`
* `ItemLookup`, `PropertyLookup` and `PropertyDataTypeLookup` interfaces
* Statement GUID parser and generators in `Services\Statement`
* `ByPropertyIdGrouper`