All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.


v2.5.5 - 2023-08-17


  • replaced_by and consider attributes not being extracted from RDF/XML documents on missing RDF datatype (#209).

  • Hard requirement on multiprocessing.pool preventing the package to work single-threaded on more restrictive environments (#208).

v2.5.4 - 2023-04-10


  • Entity.synonyms setter not accepting frozenset arguments as expected (#207).


  • Bump supported networkx version to v3.0 (#206).

v2.5.3 - 2023-01-11


  • Crash in LineageIterator.to_set when starting from an empty set of entities.

v2.5.2 - 2022-12-07


  • Explicit support for Python 3.11.


  • Bumped fastobo dependency to v0.12.2.

  • Bumped chardet dependency to v5.0.

v2.5.1 - 2022-10-12


  • EntitySet.ids iterating on its elements instead of copying the internal identifiers.

  • RDF/XML parser failing on unknown datatypes (#187).


  • Disable typechecking when collecting entities in to_set methods.

v2.5.0 - 2022-07-12


  • Bumped fastobo dependecy to v0.12.1


  • Support for Python 3.6.

v2.4.7 - 2022-06-28


  • Serialization of is_class_level properties with fastobo-based serializers (#178).

  • Parsing of SynonymTypeProperty elements in RDF/XML without a label attribute (#176).

v2.4.6 - 2022-06-18


  • Setters for the holds_over_chain and equivalent_to_chain properties of Relationship objects.


  • Serialization of holds_over_chain properties with fastobo-based serializers (#175).

v2.4.5 - 2022-04-21


  • Serialization of metadata tag relationships by fastobo (#164).

v2.4.4 - 2022-01-24


  • OwlFunctionalSerializer to dump an Ontology to OWL Functional-style syntax.


  • Bumped fastobo dependency to v0.11.1.

  • Make FastoboParser raise a SyntaxWarning when encoutering creation dates that are not datetime.datetime.

v2.4.3 - 2021-08-02


  • Missing documentation for the pronto.Entity.relationships property.


  • RDX/XML parser crashing on files containing a relationship and a term with the same ID (#138).

v2.4.2 - 2021-05-26


  • Support for chardet version 4.0 (in addition to older 3.0).


  • Serialization of Ontology failing with non-empty idspaces.

  • Typo in OWL2 URL in (#130).

v2.4.1 - 2021-02-19


  • pronto.pv.PropertyValue is now an abstract class.

  • pronto.parsers.RdfXmlParser now ignores synonym Xrefs not in the right format.


  • pronto.Entity.definition documentation now lists return type as pronto.definition.Definition as expected.

  • CURIE compaction in RDF/XML not being handled consistently, causing some crashes on ontologies using aliased relationships.

  • pronto.utils.typechecked.disabled is now reentrant and should not be disabled in multithreaded contexts anymore.


  • Implicit injection of lxml instead of xml.etree, which caused issues with RdfXmlParser.

v2.4.0 - 2021-02-18


  • Deprecation warnings for the retrieval of relationships via indexing, to be deprecated in v3.


  • Replaced Travis-CI with GitHub Actions to handle continuous integration.

  • Bumped fastobo dependency to v0.10.0.


  • Retrieval of terms via their alternate IDs (introduced in v2.3.0, caused multiple issues (#120, #126).

v2.3.2 - 2020-12-17


  • Support for path-like objects when creating an Ontology (#108).


  • Avoid decoding file-like objects if they are already UTF-8 encoded when creating an Ontology (#110).

v2.3.1 - 2020-09-21


  • pronto.entity package not being included in source distribution.

v2.3.0 - 2020-09-21 - YANKED


  • Retrieval of entities via their alternate IDs on the source Ontology.

  • Direct edition of entity relationships via the Relationships view.

  • __all__ attribute to all modules of the data model.

  • RelationshipSet container like TermSet with shortcut attributes and proxying of actual Relationship instances.

  • Relationship.subproperties and Relationship.superproperties methods to add, remove, clear and iterate over the subproperties and superproperties of a Relationship instance.

  • Ontology.synonym_types method to count (via SizedIterator) and iterate over the synonym types of an ontology and all of its imports.

  • Ontology.get_synonym_type method to retrieve a single synonym type by ID from an ontology or one of its imports.


  • Management of sub-properties / super-properties is now consistent with the management of subclasses / superclasses.

  • consider, disjoint_from, disjoint_over, equivalent_to, replaced_by transitive_over and union_of properties of Relationship now return a RelationshipSet.


  • Outdated documentation in Term.subclasses describing the performances of the previous algorithm.

  • Possible AttributeError with the setter of the Entity.synonyms property.

  • Issue with synonym types declared in imported ontologies not being usable with synonyms of the actual ontology.

  • Various type annotations not updated since version v2.2.2.

v2.2.4 - 2020-09-11


  • Make Entity.annotations return a mutable set and add a setter.


  • Term.relationship erroneously updating the Ontology._lineage cache.

  • Unneeded code in pronto.serializers._fastobo handling is_a clauses.

v2.2.3 - 2020-07-31


  • Replaced frozendict with immutabledict (#90).

  • Bumped fastobo dependency to v0.9.0 to support inline comments.

  • Parsers will now process their imports in parallel using a thread pool.


  • Argument type checking in view layer is now disabled during the parsing phase to reduce overhead.

v2.2.2 - 2020-07-18


  • Extraction of basic relationships from RDF/XML documents.


  • Erroneous type annotations on Term.subclasses and Term.superclasses.

  • Bug with Term.equivalent_to setter crashing with a NameError.

  • Bug with Entity.synonyms setter not extracting synonym data.

v2.2.1 - 2020-06-17


  • Extraction of subclasses/superclasses hierarchy from nested imports.

  • Serialization of OBO frames not being done in order.

  • Parsing issue with anti_symmetric clauses in OBO typedefs.

  • Xrefs not being extracted when declared as axioms in RDF/XML documents.

  • ResourceWarning when creating Ontology from file-handles not mapping to a filesystem location.

v2.2.0 - 2020-06-17


  • threads parameter to Ontology constructor to control the number of threads used by parsers supporting multithreading (OBO and OBO JSON at the moment).

  • Deprecation warnings for suspected uses of the is_a pseudo-relationship since subclasses/superclasses is now to be handled by the owner Ontology.

  • Support for subclass/superclass edition directly from the objects returned by Term.subclasses() and Term.superclasses(). (#84)


  • Updated fastobo to v0.8, which reduce memory footprint of identifiers, and improves the parser speed.

  • Improved OBO parser performance using threading plus zero-copy validation of identifiers on Xref instantiation.

  • Improved performance in debug mode by having the typechecker only extract the wrapped function signature once.


  • OBO parser crashing on files containing idspace clauses in their headers.

  • Reference management issue with binary operations of TermSet.


  • nanoset depency, which was not useful anymore in Python 3.8 and caused issues with multithreading when processing OBO frames in parallel.

v2.1.0 - 2020-03-23


  • Synonym.xrefs now has a setter. (#70)

  • pickle support for Ontology. (#66)

  • RdfXmlParser support for owl:inverseOf and rdfs:subPropertyOf.


  • Synonym.xrefs now returns a mutable set that can be used to add Xref to the synonym directly.


  • SynonymType.type setter does not consider all synonym types as undeclared anymore. (#71)

  • RdfXmlParser crashing on synonym types definition without a label like in Uberon. (#67)

  • FastoboSerializer crashing when encountering a relationship with at least one replaced_by clause.

v2.0.1 - 2020-02-19


  • Internal handling of ontology data forcing an Ontology to outlive all of the Terms created from it.

  • property missing a return type annotation.

  • Term.equivalent_to not returning a TermSet but a set of strings.


  • Refactored implementation of SubclassesIterator and
    SuperclassesIterator to make both use the interal subclassing cache.

  • Make Term.is_leaf use internal subclassing cache to make it run in constant time.

v2.0.0 - 2020-02-14


  • TermSet.subclasses and TermSet.superclasses methods to query all
    the subclasses / superclasses of all Term.

  • TermSet class to the top-level pronto module.

  • Dynamic management of subclassing cache for the Ontology class.

  • Setters for Term.consider, Term.union_of and Term.intersection_of.


  • cache keyword argument for the Ontology.


  • SuperclassesIterator.to_set being named to_self because of a typo.

  • Several bugs affecting the fastobo-backed serializer.

v1.2.0 - 2020-02-10


  • Parameter with_self to disable reflexivity of Term.subclasses and Term.superclasses iterators.

  • TermSet class which stores a set of terms efficiently while providing some useful shortcuts to access the underlying data.


  • Moved code of Term.subclasses and Term.superclasses to a dedicated iterator class in the pronto.logic submodule.

  • Dropped contexter requirement.


  • Fix a typo in Synonym.type setter leading to a potential bug when the given type is None.

  • Fix miscellaneous bugs found with mypy.

  • fastobo serializer crashing on namespace clauses because of a type issue.

  • fastobo parsers using data version clauses as format version clauses.

v1.1.5 - 2020-01-25


  • Bumped fastobo to v0.7.0, switching parser implementation to use multi-threading in order to speedup the parser process.

v1.1.4 - 2020-01-21


  • Explicit support for Python 3.8.

  • Support for Windows-style line endings (#53)

v1.1.3 - 2019-11-10


  • Handling of some clauses in FastoboParser.

  • OboSerializer occasionaly missing lines between term and typedef frames.


  • Missing docstrings to some Entity properties.

v1.1.2 - 2019-10-30


  • RdfXMLParser crashing on entities with rdf:label elements without literal content.

v1.1.1 - 2019-10-29


  • pronto.serializers module not being embedded in Wheel distribution.

v1.1.0 - 2019-10-24


  • Entity.add_synonym method to create a new synonym and add it to an entity.

  • @roundrepr now adds a minimal docstring to the generated __repr__ method.

  • Ontology caches subclassing relationships to greatly improve performance of Term.subclasses.


  • Entity subclasses now store their id directly to improve performance.

  • Term.subclasses and Term.superclasses use collections.deque instead of queue.Queue as a LIFO structure since thread-safety is not needed.

  • chardet result is now used even when prediction confidence is under 100% to detect encoding of the handle passed to Ontology.


  • SynonymType comparison implementation.

  • Synonym.type getter crashing on type not being None.

  • RdfXMLParser crashing on synonymtypedefs without scope specifiers.

v1.0.0 - 2019-10-11


  • Issues with typedef serialization in FastoboSerializer.

  • Ontology.create_term and Ontology.create_relationship not raising ValueError when given an identifier already in the knowledge graph.

  • Signature of BaseSerializer.dump to remove encoding argument.

  • Missing __slots__ in Entity in non-typechecking runtime.


  • Bumped fastobo requirement to v0.6.0.

v1.0.0-alpha.3 - 2019-10-10


  • Extraction of oboInOwl:consider annotation in RdfXMLParser.

  • Extraction of oboInOwl:savedBy annotation in RdfXMLParser.

  • Extraction of subsetdef and synonymtypedef as annotation properties in RdfXMLParser.

  • Support for doap:Version instead of owl:VersionIri for specification of ontology data version.

  • Proper comparison of PropertyValue classes, based on the lexicographic order of their serialization.

  • Ontology.dump and Ontology.dumps methods to serialize an ontology in obo or obojson format.


  • Metadata not storing optional description of ID spaces if any.

  • Wrong type hints in RelationshipData.equivalent_to_chain.


  • Added type checking to some more property setters.

  • Avoid using networkx in Term.subclasses.

  • fastobo-derived parsers will not create a new entity if one exists in the graph of dependencies already.

  • Exposed pronto.warnings and the complete warnings hierarchy.

v1.0.0-alpha.2 - 2019-10-03


  • Support for extraction of relationships from OWL/XML files to OwlXMLParser.


  • Type hints of RelationshipData.synonyms attribute.

v1.0.0-alpha.1 - 2019-10-02


  • Dropped support for Python earlier than 3.6.

  • Brand new data model that follow the OBO 1.4 object model.

  • Partial OWL XML parser implementation using the OBO 1.4 semantics.

  • New OBO parser implementation based on fastobo.

  • Imports are properly separated from the top-level ontology.

  • Ontology.__getitem__ can also access entities from imports.

  • Term, Relationship, Xref, SynonymType compare only based on their ID.

  • Subset, Definition compare only based on their textual value.


  • Support for OBO JSON parser based on fastobo.

  • Provisional mypy type hints.

  • Type checking for most properties in __debug__ mode.

  • Proper repr implementation that should roundtrip most of the time.

  • Detection of file format and encoding based on buffer content.


  • OBO and JSON serialization support (for now).

  • Term.rchildren and Term.rparents and stop making direction assumptions on relationships.