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.7.3 - 2026-01-12
- Broken parsing of OBO files containing explicit
is_atypedefs (#246).
v2.7.2 - 2025-11-10
- Use
dataclassesto derive code forEntityDataclasses.
- Remove all direct access to
__annotations__in the data model (#245). - Enable testing with Python 3.14 in GitHub Actions.
v2.7.1 - 2025-10-25
- Relax dependencies to support both
fastoboversionsv0.13andv0.14.
v2.7.0 - 2025-03-05
- Broken implementation of
EncodedFile.readintocausing issues with some encodings (#109). testsmodule being included in site-install (#237).- Ignore Unicode BOM in
BaseParser.can_parseif any.
v2.6.0 - 2025-02-14
- Explicit support for Python 3.13.
- OWL/XML and RDF/XML format support for
Ontology.dump(#232, #149).
- Bump
fastobotov0.13.0. - Use
pyproject.tomlto store project metadata instead ofsetup.cfg.
- RDF/XML parser not supporting
owl:annotatedTargetgiven as attributes. - Warn when failing to parse a xref in RDF/XML class parser.
- Allow undeclared synonym types in RDF/XML parser (#229).
v2.5.8 - 2024-09-14
- Extraction of implicit string annotation in RDF/XML files (#231).
- RDF/XML parser crash on
oboInOwl:SynonymTypePropertywhen missing a scope (#230).
- Migrate documentation to PyData theme.
v2.5.7 - 2024-04-24
- Handling of RDF datatypes in RDF/XML parser (#223, by @chrishmorris).
v2.5.6 - 2024-02-21
- Explicit support for Python 3.12.
- Synonym types not being properly extracted by RDF/XML parser (#218).
v2.5.5 - 2023-08-17
replaced_byandconsiderattributes not being extracted from RDF/XML documents on missing RDF datatype (#209).- Hard requirement on
multiprocessing.poolpreventing the package to work single-threaded on more restrictive environments (#208).
v2.5.4 - 2023-04-10
Entity.synonymssetter not acceptingfrozensetarguments as expected (#207).
- Bump supported
networkxversion tov3.0(#206).
v2.5.3 - 2023-01-11
- Crash in
LineageIterator.to_setwhen starting from an empty set of entities.
v2.5.2 - 2022-12-07
- Explicit support for Python 3.11.
- Bumped
fastobodependency tov0.12.2. - Bumped
chardetdependency tov5.0.
v2.5.1 - 2022-10-12
EntitySet.idsiterating on its elements instead of copying the internal identifiers.- RDF/XML parser failing on unknown datatypes (#187).
- Disable typechecking when collecting entities in
to_setmethods.
v2.5.0 - 2022-07-12
- Bumped
fastobodependecy tov0.12.1
- Support for Python 3.6.
v2.4.7 - 2022-06-28
- Serialization of
is_class_levelproperties withfastobo-based serializers (#178). - Parsing of
SynonymTypePropertyelements in RDF/XML without a label attribute (#176).
v2.4.6 - 2022-06-18
- Setters for the
holds_over_chainandequivalent_to_chainproperties ofRelationshipobjects.
- Serialization of
holds_over_chainproperties withfastobo-based serializers (#175).
v2.4.5 - 2022-04-21
- Serialization of metadata tag relationships by
fastobo(#164).
v2.4.4 - 2022-01-24
OwlFunctionalSerializerto dump anOntologyto OWL Functional-style syntax.
- Bumped
fastobodependency tov0.11.1. - Make
FastoboParserraise aSyntaxWarningwhen encoutering creation dates that are notdatetime.datetime.
v2.4.3 - 2021-08-02
- Missing documentation for the
pronto.Entity.relationshipsproperty.
- 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
chardetversion4.0(in addition to older3.0).
- Serialization of
Ontologyfailing with non-emptyidspaces. - Typo in OWL2 URL in
README.md(#130).
v2.4.1 - 2021-02-19
pronto.pv.PropertyValueis now an abstract class.pronto.parsers.RdfXmlParsernow ignores synonym Xrefs not in the right format.
pronto.Entity.definitiondocumentation now lists return type aspronto.definition.Definitionas expected.- CURIE compaction in RDF/XML not being handled consistently, causing some crashes on ontologies using aliased relationships.
pronto.utils.typechecked.disabledis now reentrant and should not be disabled in multithreaded contexts anymore.
- Implicit injection of
lxmlinstead ofxml.etree, which caused issues withRdfXmlParser.
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
fastobodependency tov0.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.entitypackage 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
Relationshipsview. __all__attribute to all modules of the data model.RelationshipSetcontainer likeTermSetwith shortcut attributes and proxying of actualRelationshipinstances.Relationship.subpropertiesandRelationship.superpropertiesmethods to add, remove, clear and iterate over the subproperties and superproperties of aRelationshipinstance.Ontology.synonym_typesmethod to count (viaSizedIterator) and iterate over the synonym types of an ontology and all of its imports.Ontology.get_synonym_typemethod 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_bytransitive_overandunion_ofproperties ofRelationshipnow return aRelationshipSet.
- Outdated documentation in
Term.subclassesdescribing the performances of the previous algorithm. - Possible
AttributeErrorwith the setter of theEntity.synonymsproperty. - 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.annotationsreturn a mutable set and add a setter.
Term.relationshiperroneously updating theOntology._lineagecache.- Unneeded code in
pronto.serializers._fastobohandlingis_aclauses.
v2.2.3 - 2020-07-31
- Replaced
frozendictwithimmutabledict(#90). - Bumped
fastobodependency tov0.9.0to 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.subclassesandTerm.superclasses. - Bug with
Term.equivalent_tosetter crashing with aNameError. - Bug with
Entity.synonymssetter 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_symmetricclauses in OBO typedefs. - Xrefs not being extracted when declared as axioms in RDF/XML documents.
ResourceWarningwhen creatingOntologyfrom file-handles not mapping to a filesystem location.
v2.2.0 - 2020-06-17
threadsparameter toOntologyconstructor 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_apseudo-relationship since subclasses/superclasses is now to be handled by the ownerOntology. - Support for subclass/superclass edition directly from the objects returned
by
Term.subclasses()andTerm.superclasses(). (#84)
- Updated
fastobotov0.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
Xrefinstantiation. - Improved performance in debug mode by having the typechecker only extract the wrapped function signature once.
- OBO parser crashing on files containing
idspaceclauses in their headers. - Reference management issue with binary operations of
TermSet.
nanosetdepency, 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.xrefsnow has a setter. (#70)picklesupport forOntology. (#66)RdfXmlParsersupport forowl:inverseOfandrdfs:subPropertyOf.
Synonym.xrefsnow returns a mutable set that can be used to addXrefto the synonym directly.
SynonymType.typesetter does not consider all synonym types as undeclared anymore. (#71)RdfXmlParsercrashing on synonym types definition without a label like in Uberon. (#67)FastoboSerializercrashing when encountering a relationship with at least onereplaced_byclause.
v2.0.1 - 2020-02-19
- Internal handling of ontology data forcing an
Ontologyto outlive all of theTerms created from it. Term.idproperty missing a return type annotation.Term.equivalent_tonot returning aTermSetbut a set of strings.
- Refactored implementation of
SubclassesIteratorand
SuperclassesIteratorto make both use the interal subclassing cache. - Make
Term.is_leafuse internal subclassing cache to make it run in constant time.
v2.0.0 - 2020-02-14
TermSet.subclassesandTermSet.superclassesmethods to query all
the subclasses / superclasses of allTerm.TermSetclass to the top-levelprontomodule.- Dynamic management of subclassing cache for the
Ontologyclass. - Setters for
Term.consider,Term.union_ofandTerm.intersection_of.
cachekeyword argument for theOntology.
SuperclassesIterator.to_setbeing namedto_selfbecause of a typo.- Several bugs affecting the
fastobo-backed serializer.
v1.2.0 - 2020-02-10
- Parameter
with_selfto disable reflexivity ofTerm.subclassesandTerm.superclassesiterators. TermSetclass which stores a set of terms efficiently while providing some useful shortcuts to access the underlying data.
- Moved code of
Term.subclassesandTerm.superclassesto a dedicated iterator class in thepronto.logicsubmodule. - Dropped
contexterrequirement.
- Fix a typo in
Synonym.typesetter leading to a potential bug when the giventypeisNone. - Fix miscellaneous bugs found with
mypy. fastoboserializer crashing on namespace clauses because of a type issue.fastoboparsers using data version clauses as format version clauses.
v1.1.5 - 2020-01-25
- Bumped
fastobotov0.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. OboSerializeroccasionaly missing lines between term and typedef frames.
- Missing docstrings to some
Entityproperties.
v1.1.2 - 2019-10-30
RdfXMLParsercrashing on entities withrdf:labelelements without literal content.
v1.1.1 - 2019-10-29
pronto.serializersmodule not being embedded in Wheel distribution.
v1.1.0 - 2019-10-24
Entity.add_synonymmethod to create a new synonym and add it to an entity.@roundreprnow adds a minimal docstring to the generated__repr__method.Ontologycaches subclassing relationships to greatly improve performance ofTerm.subclasses.
Entitysubclasses now store theiriddirectly to improve performance.Term.subclassesandTerm.superclassesusecollections.dequeinstead ofqueue.Queueas a LIFO structure since thread-safety is not needed.chardetresult is now used even when prediction confidence is under 100% to detect encoding of the handle passed toOntology.
SynonymTypecomparison implementation.Synonym.typegetter crashing ontypenot beingNone.RdfXMLParsercrashing on synonymtypedefs without scope specifiers.
v1.0.0 - 2019-10-11
- Issues with typedef serialization in
FastoboSerializer. Ontology.create_termandOntology.create_relationshipnot raisingValueErrorwhen given an identifier already in the knowledge graph.- Signature of
BaseSerializer.dumpto removeencodingargument. - Missing
__slots__inEntityin non-typechecking runtime.
- Bumped
fastoborequirement tov0.6.0.
v1.0.0-alpha.3 - 2019-10-10
- Extraction of
oboInOwl:considerannotation inRdfXMLParser. - Extraction of
oboInOwl:savedByannotation inRdfXMLParser. - Extraction of
subsetdefandsynonymtypedefas annotation properties inRdfXMLParser. - Support for
doap:Versioninstead ofowl:VersionIrifor specification of ontology data version. - Proper comparison of
PropertyValueclasses, based on the lexicographic order of their serialization. Ontology.dumpandOntology.dumpsmethods to serialize an ontology in obo or obojson format.
Metadatanot 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
networkxinTerm.subclasses. fastobo-derived parsers will not create a new entity if one exists in the graph of dependencies already.- Exposed
pronto.warningsand 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.synonymsattribute.
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,SynonymTypecompare only based on their ID.Subset,Definitioncompare only based on their textual value.
- Support for OBO JSON parser based on
fastobo. - Provisional
mypytype hints. - Type checking for most properties in
__debug__mode. - Proper
reprimplementation 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.rchildrenandTerm.rparentsand stop making direction assumptions on relationships.