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.
0.4 - 2026-04-29
- Query: Using type-based indexing for relation existent checks
- Query:
validate()to keep result valid - Benchmark suite
- Add support for removing multiple nodes at single
remove_node()call with less complexity id()based indexing for relationsremove_nodes()andremove_relations()- Hash and compare support for nodes and relations
- Query: Add sort support for
limit(),paginate(), andfirst()
- Query:
set()->set_val() - Return type of
get_nodes_of_type(),get_relations_from(),get_relations_to()toset - Query: return type of
get(),relations(), andids()toset - Query: return type of
group_by()todict[Any, set[Node]] - Query:
order_by()returns sorted list of nodes (because internal query result is aset), use in-place sorting inlimit(),paginate(), andfirst()instead.
- Query: Fixed calling
remove()query for invalid nodes raisesNotFoundError - Query: Make all queries atomic
- Query: Raise
TypeErrorwhen all values are non-numeric in given field formin(),max(),avg() - Fixed always
'None'for wrong-parsed string values - Fixed replacing all used
nodeandrelationwords in node / relation definitions - Fixed outdated type hints
- Fixed slowness problems:
- Query:
exclude(): ~0.05 ms (10x faster) - Query:
intersect(): ~0.20 ms (6x faster) - Query:
remove(): ~0.55 ms (6x faster) - Query: Batch remove for
remove_relations()(~6x faster) remove_node(),remove_nodes(): ~0.55 ms (6x faster)load(): ~45.22 ms (2x faster)save(): ~251.76 ms (2x faster)- Improves for
define_node(),define_relation(),undefine_node(),undefine_relation(),create_node(),create_relation(),remove_relation()
- Query:
- Remove unused indexing from save file (no version change)
remove_node()->remove_nodes()remove_relation()->remove_relations()- Query:
distinct(): Query results are always unique - Query: using internal
edgesattribute returns a set of relation object IDs (instead of list of relation objects)
- Unused
types.Field.default - Query:
auto_distinctfromunion(): Query results are always unique - Query:
NotFoundErrorfor invalid start points (returnsNoneinstead)
0.3 - 2026-04-25
- Guides and documentation
- Complete in-code documentation
- Engine API:
undefine_node(),undefine_relation(),remove_node(),remove_relation(),is_node_from_type() set()function forNodeandRelation- Query:
set(),remove(),remove_relations(),with_type(),with_field(),paginate(),union(),exclude(),intersect(),sum(),avg(),min(),max(),group_by(),relations() - Query: Starting query from all nodes with
engine.query.all() - Query: Traverse in all relation types
- Validate save file version before load
- Validate source and target node types
- Enhanced error handling, warnings, error messages, and checks
- Add
accept_any_extensiontoload_safe()to disable file extension check - Additional type hints
- Query:
include_parent_typesforwhit_type()to check parent types too - Query:
auto_distinctforunion()to make result nodes distinct automatically - Query: Add all relation to query when starting point is
.all()
- Query: Keep all relations after
limit()query - Return of
Migration.convert_pickle_to_json()frombooltoNone, Standard error handling used SchemaError->ParseError
load_dsl()->parse()
- Fixed order while saving database for relations
- Fixed support for comments in properties section
- Fixed weak line type detection in DSL
- Relation types can't be bidirectional and reverse named at the same time anymore
parser.parse_relation_instance()return signature- Fixed editor confusion at query chain
- Fixed
TypeErrorinstead ofConditionErrorat query condition evaluation - Fixed wrong example in
QueryBuilderdocstrings - Fixed silent
Noneor[]for invalidget_node(),get_relations_from(),get_relations_to()calls - Fixed wrong error handling for
Migrationclass
0.2.2 - 2026-02-12
- Version number not incremented.
0.2.1 - 2026-02-12
Note
This version isn't available at PyPI because of versioning issues.
- Move examples to
examples/directory.
- Both direction traverse selects both nodes.
0.2 - 2026-02-04
- JSON-based serialization.
Migrationclass.- Custom exceptions.
- Unit tests.
- Save / load logic for database.
- Split module into multiple files. (Same API)
- Pickle-based serialization.
- Validation for saved databases.
0.1.3 - 2026-01-30
- Documentation for examples.
pytestworkflow.pylintworkflow.
- Project description mismatch.
- Old README content.
0.1.2 - 2026-01-30
- Automated PyPI releases.
- Error reporting in .where() queries.
- Error reporting for invalid date values.
parse()function for engine.
- Change the method of detecting the type of node and relation creation blocks.
0.1.1 - 2026-01-29
Note
This version was removed from GitHub because of build issues.
- Fix project structure.
0.1 - 2026-01-25
Note
This version was removed from PyPI and GitHub because of project structure issues.
- Core implementation.