# Changelog archive (1.5.3 and earlier) Releases before 2.0.0. For 2.0.0 and later, see the [current changelog](https://github.com/trungdong/prov/blob/master/HISTORY.md). ## 1.5.3 (2018-11-20) - Reorganised source code to /src - Added Python 3.7 support - Removed Python 3.3 support due to end-of-life - plus minor improvements and bug fixes ## 1.5.2 (2018-02-06) - Fixed association relation in RDF serialisation - Fixed compatibility with networkx 2.0+ ## 1.5.1 (2017-07-18) - Replaced pydotplus with pydot (see #111) - Fixed datetime and bundle error in RDF serialisation - Tested against Python 3.6 - Improved documentation ## 1.5.0 (2016-10-19) - Added: Support for [PROV-O](http://www.w3.org/TR/prov-o/) (RDF) serialization and deserialization - Added: `direction` option for {py:meth}`prov.dot.prov_to_dot` - Added: {py:meth}`prov.graph.graph_to_prov` to convert a [MultiDiGraph](https://networkx.readthedocs.io/en/stable/reference/classes.multigraph.html) back to a {py:class}`~prov.model.ProvDocument` - Testing with Python 3.5 - Various minor bug fixes and improvements ## 1.4.0 (2015-08-13) - Changed the type of qualified names to prov:QUALIFIED_NAME (fixed #68) - Removed XSDQName class and stopped supporting parsing xsd:QName as qualified names - Replaced pydot dependency with pydotplus - Removed support for Python 2.6 - Various minor bug fixes and improvements ## 1.3.2 (2015-06-17) - Added: prov-compare script to check equivalence of two PROV files (currently supporting JSON and XML) - Fixed: deserialising Python 3's bytes objects (issue #67) ## 1.3.1 (2015-02-27) - Fixed unicode issue with deserialising text contents - Set the correct version requirement for six - Fixed format selection in prov-convert script ## 1.3.0 (2015-02-03) - Python 3.3 and 3.4 supported - Updated prov-convert script to support XML output - Added missing test JSON and XML files in distributions ## 1.2.0 (2014-12-19) - Added: {py:meth}`prov.graph.prov_to_graph` to convert a {py:class}`~prov.model.ProvDocument` to a [MultiDiGraph](https://networkx.readthedocs.io/en/stable/reference/classes.multigraph.html) - Added: PROV-N serializer - Fixed: None values for empty formal attributes in PROV-N output (issue #60) - Fixed: PROV-N representation for xsd:dateTime (issue #58) - Fixed: Unintended merging of Identifier and QualifiedName values - Fixed: Cloning the records when creating a new document from them - Fixed: incorrect SoftwareAgent records in XML serialization ## 1.1.0 (2014-08-21) - Added: Support for [PROV-XML](http://www.w3.org/TR/prov-xml/) serialization and deserialization - A {py:class}`~prov.model.ProvRecord` instance can now be used as the value of an attributes - Added: convenient assertions methods for {py:class}`~prov.model.ProvEntity`, {py:class}`~prov.model.ProvActivity`, and {py:class}`~prov.model.ProvAgent` - Added: {py:meth}`prov.model.ProvDocument.update` and {py:meth}`prov.model.ProvBundle.update` - Fixed: Handling default namespaces of bundles when flattened ## 1.0.1 (2014-08-18) - Added: Default namespace inheritance for bundles - Fixed: {py:meth}`prov.model.NamespaceManager.valid_qualified_name` did not support {py:class}`~prov.model.XSDQName` - Added: Convenience {py:func}`prov.read` method with a lazy format detection - Added: Convenience {py:meth}`~prov.model.ProvBundle.plot` method on the {py:class}`~prov.model.ProvBundle` class (requiring matplotlib). - Changed: The previous {py:meth}`!add_record` method renamed to {py:meth}`~prov.model.ProvBundle.new_record` - Added: {py:meth}`~prov.model.ProvBundle.add_record` function which takes one argument, a {py:class}`~prov.model.ProvRecord`, has been added - Fixed: Document flattening (see {py:meth}`~prov.model.ProvDocument.flattened`) - Added: {py:meth}`~prov.model.ProvRecord.__hash__` function added to {py:class}`~prov.model.ProvRecord` (**at risk**: to be removed as {py:class}`~prov.model.ProvRecord` is expected to be mutable) - Added: {py:attr}`~prov.model.ProvRecord.extra_attributes` added to mirror existing {py:attr}`~prov.model.ProvRecord.formal_attributes` ## 1.0.0 (2014-07-15) - The underlying data model has been rewritten and is **incompatible** with pre-1.0 versions. - References to PROV elements (i.e. entities, activities, agents) in relation records are now QualifiedName instances. - A document or bundle can have multiple records with the same identifier. - PROV-JSON serializer and deserializer are now separated from the data model. - Many tests added, including round-trip PROV-JSON encoding/decoding. - For changes pre-1.0, see the "Pre-1.0 change log" section below. ## Pre-1.0 change log ### 0.5.3 (2013-12-13) - Changed: Allowed namespaces at bundle level - Fixed: Only check equality of ProvBundles on asserted records - Fixed: Some string literals are wrongly converted to QNames - Updated test cases from ProvToolbox (v4.1) - Added text explanations for some ProvException subclasses - Added support for langtag in prov.persistence.LiteralAttribute - Fixed: Support for prov:InternationalizedString literals - Fixed: Keep timezone information when parsing xsd:dateTime ### 0.5.2 (2013-10-18) - Added South migrations for prov.persistence - Fixed: Support for unlimited-length record identifier - Fixed: Support for unlimited-length URI in namespace - Fixed: Support for long literals (i.e. longer than 255 characters) - Fixed: (JSON) Support for membership with multiple members - Fixed: UnicodeEncodeError error - Fixed: Support for JSON having records sharing the same identifier - Fixed: Refactor the flattening code - Fixed: Parsing XSD dateTime - Fixed: Triple quoted multi-line string literals in PROV-N - Added: Support initialising namespaces when creating a ProvBundle ### 0.5.1 (2013-09-13) - Added: JSON membership relation with a single entity (in a list) - Fixed: Not generating inferred records in JSON encoding. - Fixed: Generating JSON arrays for multi-value attributes - Fixed: Comparing unicode literal values (fixed #12) - Fixed: Returning the identifier of a record if the required attribute type is Identifier - Fixed: No longer trying to find the actual generalEntity record when creating a Mention record - Added informative arguments to ProvException classes - Fixed: Attribute validation does not fail if the attribute is already a ProvRecord ### 0.5.0 (2013-09-02) - Allow inferred records to be retyped when flattening - prov.model.graph: check if a node of a relation already drawn - Add get_flattened() function to ProvBundle - Added: hash functions for Literal and Namespace - Changed: Add new bundle's namespaces to parent document - Fixed: prov.persistence only saves namespaces at document level - Added: is_document() and is_bundle() for ProvBundle - Fixed: Stop outputting prefix in an bundle's PROV-JSON - Changed: Removed namespace declarations in example bundles - Better handling of ids when generating PROV-JSON - Changed: Bundles cannot have their own namespace prefixes - When exporting a bundle as a document add namespaces from parent - Return pdbundle when calling add_prov_bundle - Fixed support for the default namespace - Fixed minor bugs. ### 0.4.9 (2013-08-09) - Fixed: Cannot get_label() when self._extra_attributes is None ### 0.4.8 (2013-08-06) - Added: Option to show attributes of relations in DOT graph generation - Added: option to show attributes of nodes in DOT graph representation - Added: Convenient methods for (de)serialising PROV-JSON (closes #17) - Fixed: No longer output inferred records in PROV-N and PROV-JSON - Fixed: Bundles now can have own namespaces - Fixed: missing return Literal(...) - Fixed: Error getting the value and datatype of Literal ### 0.4.7 (2013-07-10) - Changed: Removed out-dated example_graph() - Changed: Improved mappings between default Python and XSD data types - Changed: Removed ProvElement as the inferred record for influence - Changed: Updated examples (primer, bundles1, bundles2) - Fixed: Removed the duplicated Bundle definition in PROV_RECORD_TYPES - Added JSON test files from ProvToolbox and a test for loading these - Changed: Improved Literal equality test - Added langtag getter to Literal ### 0.4.6 (2013-04-24) - Fixed: Removed the 'activity' attribute from Influence expression - Fixed: Inferred records couldn't be created when the expected types provided as a list ### 0.4.5 (2013-03-13) - Changed: ProvActivity.set_time() can now accept just one argument. It previously sets the time of the missing argument to None. - Changed: ProvAgent is now eligible for entity arguments and ProvEntity for agent ones - Fixed: Producing the right PROV-N representation for float values ### 0.4.4 - Added float data type support for prov.persistence - Removed ProvCollection class since collections should be instantiated as entities - Added get_attribute() and get_value() to ProvRecord - Changed: Check if an attribute's value is a valid QName and return the QName - Fixed exception rendering graphs with empty records ### 0.4.3 - Fixed: PROV-N export - top-level bundle -> document - Fixed: Bug when renaming prefixes ### 0.4.2 - Updated graph colors to the PROV style ### 0.4.1 - Restructured package folder - Moved to a new repo. - Fixed: 'memberof' -> 'hadMember' ### 0.4.0 (2012-10-31) - Initial release.