Skip to content

chore(deps): bump prov from 2.1.1 to 3.1.0 - #6

Open
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/prov-3.1.0
Open

dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/uv/prov-3.1.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 4, 2026

Copy link
Copy Markdown

Bumps prov from 2.1.1 to 3.1.0.

Release notes

Sourced from prov's releases.

3.1.0

  • New PROV-JSONLD serializer and deserializer, selected with format="jsonld" (src/prov/serializers/provjsonld.py): implements the W3C member submission "A JSON-LD Representation for the PROV Data Model", the canonical §4 compacted shape only, with no runtime dependency beyond the standard library. Registered in prov.serializers.Registry and included in prov.read()'s format auto-detection. See Work with PROV-JSONLD
  • serialize(format="jsonld", ...) takes a context keyword: "url" (the default) references the submission's context by URL; "embed" inlines the vendored context object for fully self-contained output; any other value raises ValueError
  • The deserializer additionally tolerates ProvToolbox's prov:-prefixed spellings of the type and special terms, and is exercised against both the submission's own example and a vendored ProvToolbox fixture (src/prov/tests/jsonld/)
  • jsonld joins json/xml/rdf in the shared round-trip test matrix (SHARED_TARGETS in src/prov/tests/conftest.py); output is additionally validated against the submission's vendored JSON Schema in both context modes (context="embed" after substituting the canonical context URL for the embedded object, since the schema's Context production cannot describe an embedded context) and, for context="embed", additionally proven valid JSON-LD via pyld flatten
  • Known limitation: the PROV-JSONLD submission defines no term for mentionOf (PROV-DM's Mention relation); serialize() raises prov.serializers.provjsonld.ProvJSONLDException for any document containing a ProvMention record, and the deserializer raises the same exception on an input statement typed "Mention". This is a permanent limitation of the submission, not a prov defect — see docs/reference/conformance.md

3.0.0 is the compatibility release: the one release the roadmap allows to change behaviour and drop dependencies, closing out the standards-conformance work (PROV-DM, PROV-CONSTRAINTS, PROV-O) that a backward-compatible 2.x series could not fix. See Upgrading to 3.0 for what changed and what to do about it.

Breaking changes

  • ProvBundle.unified() / ProvDocument.unified() implement PROV-CONSTRAINTS key constraints (22/23) with pairwise term unification of formal attributes: records sharing an identifier whose formal attributes hold different concrete values now raise the new documented prov.model.ProvUnificationError instead of silently unioning; absent formal attributes unify with concrete values; extra attributes keep set-union semantics; bundles unify independently (#253)
  • unified() rejects same-identifier records of incompatible types (entity vs activity, distinct relation kinds — PROV-CONSTRAINTS 53/54/55) with ProvUnificationError instead of merging them order-dependently into the first record's type; spec-permitted overlaps (an agent that is also an entity or activity) are kept as separate records (#253)
  • Attribute values that are Python-equal but differently typed (2 vs 2.0, 1 vs True) are all retained on a record instead of collapsing to whichever was asserted first — visible in attribute iteration, record equality and hashing, and serialization. Attributes now iterate in assertion order rather than an arbitrary hash order, which makes args, formal_attributes, get_startTime() and get_endTime() deterministic. ProvRecord.get_attribute(), get_asserted_types() and the value property still return a plain set, but it is now built fresh on every call, so mutating it no longer writes through to the record: record.get_asserted_types().add(qn) now silently does nothing (#34)
  • pydot and networkx are no longer unconditional runtime dependencies. import prov.dot now requires the dot extra (pip install "prov[dot]") and import prov.graph the graph extra; without them the import raises ModuleNotFoundError naming the extra to install. The plot extra now pulls in pydot/networkx as well, since plot() renders through prov.dot. See the upgrading guide.
  • The rdf extra now requires rdflib>=7.0.0 (previously >=6.0.0); round-trip behaviour is unchanged
  • python-dateutil dropped — prov now has no unconditional runtime dependencies. Datetime strings are parsed as xsd:dateTime (ISO 8601 plus the hour-24 end-of-day form) via the standard library; factory time=/startTime=/endTime= parameters raise ProvException on invalid input instead of leaking a raw dateutil error, and non-ISO forms previously tolerated by dateutil (e.g. "Nov 7, 2011") are no longer accepted (#237)
  • The misspelled prov.model.GenrationRef type alias is renamed GenerationRef; the old spelling is removed rather than kept as a deprecated alias

Conformance and correctness fixes

  • When an attribute is asserted twice with an equal value of equal type — e.g. Literal("10", XSD_DECIMAL) and Literal("10.00", XSD_DECIMAL) (#77), or Literal("hi", langtag="en") and Literal("hi", langtag="EN") (#259) — the record retains the first value asserted, as in 2.x (#34)
  • Numeric datatype fidelity: Literal values typed xsd:long (and the rest of the XSD integer family) keep their asserted datatype instead of being silently re-typed xsd:int (#235); PROV-N output types plain integers by magnitude (xsd:int/xsd:long/xsd:integer) so out-of-int32 values are no longer emitted as invalid bare int literals (#249), and plain floats as full-precision xsd:double instead of %g-truncated xsd:float (#251)
  • Literal semantics: string literals have one canonical serialized form (RDF output no longer decorates plain strings with ^^xsd:string) (#89); xsd:decimal literals compare and hash in value space (#77); language tags compare case-insensitively per RDF 1.1 while preserving their original case in output (#259)
  • PROV-XML round trip preserves attributes whose value is the empty string; previously they were silently dropped on deserialization (#224)
  • PROV-XML serializes attribute names containing characters illegal in an XML NCName using the reversible _xHHHH_ escaping convention instead of raising ValueError; the deserializer applies the inverse, so such names round-trip (#289)

... (truncated)

Commits
  • 67f0c77 Merge pull request #368 from trungdong/worktree-prov-jsonld-3.1
  • 8c54fd2 Clear the Codacy findings on the PROV-JSONLD serializer
  • 314e90a Drop three PROV-JSONLD round-trip tests the shared matrix already covers
  • ee1dfd9 Fix _is_embedded_submission_context false positives on ordinary third-party c...
  • 5c784ab Clean up PROV-JSONLD prose, type-alias consistency, and cosmetics
  • 2a2c0bd Fix PROV-JSONLD decoder losing namespaces from mixed context objects and tigh...
  • 4680750 Bring jsonld into the registry test coverage and fix stale example counts
  • cf1b0bb Fix PROV-JSONLD default-namespace identifiers resolving against the wrong IRI
  • 1bb59fb Simplify the PROV-JSONLD serializer and its test scaffolding
  • 5932e19 Update CLAUDE.md for the stamped 3.1.0 release
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [prov](https://github.com/trungdong/prov) from 2.1.1 to 3.1.0.
- [Release notes](https://github.com/trungdong/prov/releases)
- [Changelog](https://github.com/trungdong/prov/blob/main/docs/changelog-archive.md)
- [Commits](trungdong/prov@2.1.1...3.1.0)

---
updated-dependencies:
- dependency-name: prov
  dependency-version: 3.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants