Changelog¶
Notable changes to vericlient, newest first. Dates are the day the version was released.
The project follows semantic versioning.
Unreleased¶
Added¶
- VCSP is now fully covered:
matchfor 1:1 and 1:N biometric matching,modify_groupto populate or empty a group,modify_credential_tags, andstart_clustering. All 31 endpoints in the specification are reachable. - VCSP batch enrolment and task management:
enroll_batch,get_tasks,get_task,delete_task,get_task_resultandwait_for_task. Coverage reaches 27 of 31 endpoints. The client builds the TAR archive batch enrolment expects, whose layout is documented nowhere and was worked out from the service's error messages. - VCSP credential listing and configuration lookup:
list_credentials,delete_credentials,get_credential_sampleandget_credential_configuration. Coverage reaches 22 of the 31 endpoints. - VCSP groups and tags:
create_group,get_groups,get_group,delete_group,get_group_members,create_tags,get_tagsanddelete_tag. Coverage goes from 10 to 18 of the 31 endpoints in the specification. - Exceptions for the new failure modes:
GroupNotFoundError,GroupAlreadyExistsError,GroupsLimitExceededError,TagAlreadyExistsError,TagsLimitExceededError,TagListEmptyErrorandEnrollmentsLimitExceededError. - The VCSP suite now creates and destroys real resources against a sandbox, with a session
sweeper that recovers from a run that died before its teardown, and a
--keep-resourcesflag for debugging.
Breaking¶
- Responses no longer carry
status_code. An HTTP status code is a transport detail, and surfacing it on a client's return value invites callers to branch on it instead of relying on the exceptions the client already raises.DaspeakResponsekeepsversion;VcspResponsenow carries no fields and exists only as a shared type.
0.2.0 — 2026-09-21¶
First release after a long gap. It carries breaking changes, all of them correcting behaviour that was either wrong or impossible to use.
Breaking¶
- Configuration precedence is inverted. A constructor argument now wins over the
matching
VERICLIENT_environment variable. Before, the environment silently won, soDaspeakClient(apikey="x")was ignored wheneverVERICLIENT_APIKEYwas set and two clients could not use two different keys in the same process. dynaconfis gone, replaced bypydantic-settings.VERICLIENT_TIMEOUTis now validated as an integer at client creation instead of failing later at request time.- das-Peak identification models renamed to match the API:
CompareAudio2CredentialsInput.audio_reference→audio_to_evaluate,CompareCredential2CredentialsInput.credential_reference→credential_to_evaluate, and on the output,authenticity_reference,input_audio_duration_referenceandnet_speech_duration_reference→ their_to_evaluatecounterparts. Safe, because both endpoints were sending the wrong field name and had never returned a result. AssuranceMethodOutput.schemaandAssuranceMethodSchema.schemaare nowjson_schema. The old name shadowedBaseModel.schema. JSON payloads are unchanged;$schemaandschemaremain as aliases.Client.__init__takes anAPIsmember instead of a string, andVcspClient(api=...)is gone.- Python 3.11 is the minimum. The package is tested on 3.11, 3.12, 3.13 and 3.14.
Fixed¶
- das-Peak
identification/wav2credentialsandidentification/credential2credentialssent the wrong form field names and always answered 400. Client._deletereturnedNonedespite being annotated-> requests.Response.- A non-JSON error body, such as a gateway's HTML 502 page, raised a raw
JSONDecodeErrorinstead of aServerError. VcspClientcould not accept a sample as bytes: it passed the bytes tomimetypes.guess_type()and raisedTypeError. Media types are now sniffed from the content, andEnrollmentInputtakes an optionalcontent_type.- The getting-started example in the documentation imported a
DasfaceClientthat does not exist.
Added¶
- The VCSP client reaches PyPI for the first time. It was written between 0.1.6 and this release but never published, so every 0.1.x on PyPI carries das-Peak only.
- das-Peak is now fully covered:
get_model_metadata,get_model_calibrationsandget_model_metadata_from_credentialcomplete the eleven endpoints in the specification. Three of them had entries inDaspeakEndpointsbut no method, while the README claimed full support. ModelNotAvailableError, raised when a model hash does not exist.EnrollmentInput.content_type, for when the sniffed media type will not do.utils.guess_content_type.
Documentation¶
- Documentation moved to https://vericlient.larri.dev, and the project URLs, README and badges follow it.
- The changelog is no longer duplicated: the documentation includes this file directly.
-
A
py.typedmarker ships with the package, so type checkers use the annotations that were already there. -
A real quickstart on the home page, which previously held a
pip installline and a link. - Supported endpoints page, with per-API coverage checked against the OpenAPI specifications rather than claimed from memory.
- Error handling page describing the exception tree, which until now was only dumped by mkdocstrings with no explanation.
- The VCSP usage page grew from a single
alive()example to cover everything implemented. - Light and dark themes, copy buttons on code blocks, and a navigation that separates usage from API reference.
mkdocs build --strict, so a broken internal link fails CI.- Removed a reference to a
javascripts/extra.jsthat is not in the repository and was 404ing on every page.
Internal¶
- Every dependency refreshed; no known vulnerabilities in the resolved set.
- CI rebuilt: matrix over 3.11–3.14,
ruff format --check, and apip-auditstage that reports into the run summary. - Weekly automated dependency updates, verified before they reach a pull request.
0.1.6 — 2024-09-12¶
0.1.5 — 2024-09-12¶
0.1.4 — 2024-09-12¶
0.1.3 — 2024-09-12¶
0.1.2 — 2024-09-12¶
0.1.1 — 2024-09-12¶
Six releases in one afternoon, all of them the same library. Each one changed only
.github/workflows/ci.yml and the version number while the automated release pipeline was
being worked out: artifact naming, the release job, and the PyPI upload step. Nothing in
src/ differs between 0.1.1 and 0.1.6.
0.1.0 — 2024-09-12¶
First release, never published to PyPI. It shipped the das-Peak client and the pieces everything else is built on:
Client, the shared request, error and target handlingDaspeakClientwith the alive, models, credential generation, similarity and identification endpoints- Configuration through
VERICLIENT_environment variables - The
EnvironmentsandLocationsenums for cloud targets, and aurlargument for self-hosted deployments