{"library":"prov","title":"PROV Python Library","description":"The `prov` library is a Python implementation of the W3C Provenance Data Model (PROV). It facilitates the creation, manipulation, and serialization/deserialization of provenance documents, supporting formats like PROV-JSON, PROV-XML, and PROV-O (RDF). The library is actively maintained, with its latest version being 2.1.1, and releases occur as needed to support newer Python versions and fix bugs.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install prov"],"cli":null},"imports":["from prov.model import ProvDocument","from prov.model import Namespace","from prov.constants import PROV_REC_NAMESPACE"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import datetime\nfrom prov.model import ProvDocument, Namespace, PROV_REC_NAMESPACE\n\n# Create a new provenance document\ndoc = ProvDocument()\n\n# Declare namespaces\ndoc.add_namespace('ex', 'http://example.org/')\ndoc.set_default_namespace('http://example.com/prov-example/')\n\n# Declare entities, activities, agents\ne1 = doc.entity('ex:entity1', {'prov:label': 'Example Entity 1'})\na1 = doc.activity('ex:activity1', datetime.datetime.now(), datetime.datetime.now(), {'prov:label': 'Example Activity 1'})\nag1 = doc.agent('ex:agent1', {'prov:label': 'Example Agent 1', PROV_REC_NAMESPACE['type']: PROV_REC_NAMESPACE['Person']})\n\n# Establish relationships\ndoc.wasGeneratedBy(e1, a1, datetime.datetime.now())\ndoc.wasAssociatedWith(a1, ag1)\n\n# Print the PROV-N representation\nprint(doc.get_provn())\n\n# To serialize to PROV-JSON (requires the 'json' extra, installed with `pip install prov[json]`)\n# from prov.serializers import provjson\n# import json\n# with open('example.json', 'w') as f:\n#     provjson.ProvJSONSerializer(doc).serialize(f)\n","lang":"python","description":"This example demonstrates how to create a simple PROV document, define namespaces, add entities, activities, and agents, and link them with provenance relations. It then prints the PROV-N (PROV Notation) representation of the document. For JSON or XML serialization, additional dependencies and specific serializers are used.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"2.1.1","pypi_latest":"2.1.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3,"avg_import_s":0.08,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":3.3,"disk_size":"38.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.04,"mem_mb":3.3,"disk_size":"39M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.12,"mem_mb":3.8,"disk_size":"45.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.1,"mem_mb":3.8,"disk_size":"46M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.09,"mem_mb":3.7,"disk_size":"36.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.9,"import_time_s":0.09,"mem_mb":3.7,"disk_size":"37M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":4,"disk_size":"36.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.09,"mem_mb":4,"disk_size":"37M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":3.4,"disk_size":"37.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"prov","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.3,"import_time_s":0.05,"mem_mb":3.4,"disk_size":"38M"}]}}