Skip to content

EMT-391: Add Kuiper Aliasing Engine - #3005

Open
szymon-blumczynski-cognite wants to merge 9 commits into
mainfrom
feature/EMT-391
Open

EMT-391: Add Kuiper Aliasing Engine#3005
szymon-blumczynski-cognite wants to merge 9 commits into
mainfrom
feature/EMT-391

Conversation

@szymon-blumczynski-cognite

@szymon-blumczynski-cognite szymon-blumczynski-cognite commented May 17, 2026

Copy link
Copy Markdown

Description

Add the Kuiper Aliasing Engine - a comprehensive system for entity matching through configurable aliasing rules. This includes:

  • Aliasing Engine Core: Rule-based system for transforming and normalizing entity attributes
  • Rule Library: 8 different rule types (case transformation, character substitution, leading zero normalization, prefix/suffix handling, regex substitution, value expansion, and composite rules)
  • Assembly & Composition: Framework for building Kuiper expressions with configurable rule composition
  • Bootstrap System: Initialization logic for setting up the aliasing engine
  • YAML Configuration: Reader for loading aliasing rules from YAML with proper error handling
  • Registry & Discovery: Dynamic rule discovery and registry system
  • Common Utilities: JSON Path and macro support for flexible attribute access

Bump

  • Patch
  • Skip

Changelog

Added

  • Kuiper Aliasing Engine with rule-based entity attribute transformation
  • 8 configurable aliasing rule types for data normalization
  • Aliasing engine assembly and expression composition framework
  • Bootstrap system for engine initialization
  • YAML-based rule configuration with validation and error reporting
  • Rule registry and dynamic discovery system
  • JSON Path and macro variable support

@gemini-code-assist

Copy link
Copy Markdown
Contributor
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

@szymon-blumczynski-cognite
szymon-blumczynski-cognite force-pushed the feature/EMT-391 branch 6 times, most recently from 6880607 to ebcd3fd Compare May 18, 2026 12:15
@github-actions

github-actions Bot commented May 18, 2026

Copy link
Copy Markdown

☂️ Code Coverage

current status: ✅

Overall Coverage

Statements Covered Coverage Threshold Status
43774 37736 86% 80% 🟢

New Files

File Coverage Status
cognite_toolkit/_cdf_tk/commands/entity_matching/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/api/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/api/facade.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/assembly/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/assembly/aliasing_kuiper.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/assembly/aliasing_kuiper_builder.py 97% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/assembly/expression_composer.py 95% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/assembly/expression_composition_config.py 99% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/bootstrap/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/bootstrap/bootstrapper.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/io/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/io/errors.py 97% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/io/workflow_assembly.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/io/yaml_rules_reader.py 82% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/registry/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/registry/registry.py 95% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/registry/rules_discovery.py 86% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/base.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/case_transformation.py 98% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/character_substitution.py 95% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/composite.py 98% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/leading_zero_normalization.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/prefix_suffix.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/regex_substitution.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/aliasing/rules/value_expansion.py 97% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/common/init.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/common/json_path.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/common/macro.py 87% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/common/macro_variable_generator.py 100% 🟢
cognite_toolkit/_cdf_tk/commands/entity_matching/entity_matching.py 100% 🟢
TOTAL 98% 🟢

Modified Files

No covered modified files...

updated for commit: 10e49e3 by action🐍

@codecov

codecov Bot commented May 18, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 95.62564% with 43 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.20%. Comparing base (180a929) to head (10e49e3).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...s/entity_matching/aliasing/io/yaml_rules_reader.py 82.00% 18 Missing ⚠️
...tity_matching/aliasing/registry/rules_discovery.py 85.71% 8 Missing ⚠️
...ching/aliasing/assembly/aliasing_kuiper_builder.py 96.59% 3 Missing ⚠️
...t/_cdf_tk/commands/entity_matching/common/macro.py 86.95% 3 Missing ⚠️
..._matching/aliasing/assembly/expression_composer.py 94.73% 2 Missing ⚠️
..._matching/aliasing/rules/character_substitution.py 94.73% 2 Missing ⚠️
.../entity_matching/aliasing/rules/value_expansion.py 96.66% 2 Missing ⚠️
...aliasing/assembly/expression_composition_config.py 98.76% 1 Missing ⚠️
..._tk/commands/entity_matching/aliasing/io/errors.py 96.77% 1 Missing ⚠️
...ands/entity_matching/aliasing/registry/registry.py 95.45% 1 Missing ⚠️
... and 2 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3005      +/-   ##
==========================================
+ Coverage   85.92%   86.20%   +0.28%     
==========================================
  Files         465      493      +28     
  Lines       42700    43774    +1074     
==========================================
+ Hits        36690    37736    +1046     
- Misses       6010     6038      +28     
Files with missing lines Coverage Δ
...olkit/_cdf_tk/commands/entity_matching/__init__.py 100.00% <100.00%> (ø)
...tk/commands/entity_matching/aliasing/api/facade.py 100.00% <100.00%> (ø)
...tity_matching/aliasing/assembly/aliasing_kuiper.py 100.00% <100.00%> (ø)
...entity_matching/aliasing/bootstrap/bootstrapper.py 100.00% <100.00%> (ø)
...k/commands/entity_matching/aliasing/io/__init__.py 100.00% <100.00%> (ø)
...s/entity_matching/aliasing/io/workflow_assembly.py 100.00% <100.00%> (ø)
...tk/commands/entity_matching/aliasing/rules/base.py 100.00% <100.00%> (ø)
...ching/aliasing/rules/leading_zero_normalization.py 100.00% <100.00%> (ø)
...ds/entity_matching/aliasing/rules/prefix_suffix.py 100.00% <100.00%> (ø)
...tity_matching/aliasing/rules/regex_substitution.py 100.00% <100.00%> (ø)
... and 15 more

... and 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@szymon-blumczynski-cognite
szymon-blumczynski-cognite force-pushed the feature/EMT-391 branch 4 times, most recently from 614c80b to 8c29be8 Compare May 19, 2026 13:38
@szymon-blumczynski-cognite
szymon-blumczynski-cognite marked this pull request as ready for review May 19, 2026 14:36
@olacognite olacognite mentioned this pull request Jun 3, 2026
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants