[PR #157] feat(registry): discover third-party enricher/type packs via entry points #2626

Open
opened 2026-06-07 15:05:10 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/reconurge/flowsint/pull/157
Author: @thau0x01
Created: 6/3/2026
Status: 🔄 Open

Base: mainHead: feat/enricher-type-plugin-discovery


📝 Commits (2)

  • d770772 feat(registry): discover third-party enricher/type packs via entry points
  • 17b3d82 docs: document external enricher/type packs via entry points

📊 Changes

5 files changed (+463 additions, -0 deletions)

View changed files

docs/developers/external-packs.mdx (+391 -0)
📝 docs/developers/managing-enrichers.mdx (+2 -0)
📝 docs/developers/managing-types.mdx (+2 -0)
📝 flowsint-enrichers/src/flowsint_enrichers/registry.py (+35 -0)
📝 flowsint-types/src/flowsint_types/registry.py (+33 -0)

📄 Description

What

Adds an opt-in entry-point discovery hook so external packages can ship Flowsint enrichers and types from their own top-level package, without vendoring them inside flowsint_enrichers/ or flowsint_types/.

load_all_enrichers() and load_all_types() now also iterate the flowsint.enrichers and flowsint.types entry-point groups and import the referenced module, firing the existing @flowsint_enricher / @flowsint_type decorators into the global registries.

Why

Today discovery is a filesystem walk of a single package directory, so the only way to add enrichers/types is to edit this repo. This hook lets people maintain private or domain-specific packs (e.g. country-specific OSINT sources) as separate, independently-versioned distributions that only need to be installed alongside Flowsint.

How a pack registers

[project.entry-points."flowsint.enrichers"]
my_pack = "my_pack.enrichers"

[project.entry-points."flowsint.types"]
my_pack = "my_pack.types"

The referenced module is imported once; its __init__ imports the submodules that define the decorated classes.

Notes

  • Additive and backwards-compatible: with no third-party packs installed, behavior is unchanged.
  • Plugin import failures are caught, logged to stderr, and skipped — matching the existing in-tree walk behavior.
  • Stays idempotent via the existing _enrichers_loaded / _types_loaded guards.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/reconurge/flowsint/pull/157 **Author:** [@thau0x01](https://github.com/thau0x01) **Created:** 6/3/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/enricher-type-plugin-discovery` --- ### 📝 Commits (2) - [`d770772`](https://github.com/reconurge/flowsint/commit/d7707722f70c8660e6edc9da80bf409a7c7a3f3b) feat(registry): discover third-party enricher/type packs via entry points - [`17b3d82`](https://github.com/reconurge/flowsint/commit/17b3d823936cb206b4e780286733c067900aa0a2) docs: document external enricher/type packs via entry points ### 📊 Changes **5 files changed** (+463 additions, -0 deletions) <details> <summary>View changed files</summary> ➕ `docs/developers/external-packs.mdx` (+391 -0) 📝 `docs/developers/managing-enrichers.mdx` (+2 -0) 📝 `docs/developers/managing-types.mdx` (+2 -0) 📝 `flowsint-enrichers/src/flowsint_enrichers/registry.py` (+35 -0) 📝 `flowsint-types/src/flowsint_types/registry.py` (+33 -0) </details> ### 📄 Description ## What Adds an opt-in entry-point discovery hook so external packages can ship Flowsint enrichers and types from their own top-level package, without vendoring them inside `flowsint_enrichers/` or `flowsint_types/`. `load_all_enrichers()` and `load_all_types()` now also iterate the `flowsint.enrichers` and `flowsint.types` entry-point groups and import the referenced module, firing the existing `@flowsint_enricher` / `@flowsint_type` decorators into the global registries. ## Why Today discovery is a filesystem walk of a single package directory, so the only way to add enrichers/types is to edit this repo. This hook lets people maintain private or domain-specific packs (e.g. country-specific OSINT sources) as separate, independently-versioned distributions that only need to be installed alongside Flowsint. ## How a pack registers ```toml [project.entry-points."flowsint.enrichers"] my_pack = "my_pack.enrichers" [project.entry-points."flowsint.types"] my_pack = "my_pack.types" ``` The referenced module is imported once; its `__init__` imports the submodules that define the decorated classes. ## Notes - Additive and backwards-compatible: with no third-party packs installed, behavior is unchanged. - Plugin import failures are caught, logged to stderr, and skipped — matching the existing in-tree walk behavior. - Stays idempotent via the existing `_enrichers_loaded` / `_types_loaded` guards. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-06-07 15:05:10 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/flowsint#2626