A custom filter rule for Gramps that matches people who are recorded as a child with a relationship to a parent other than "Birth" — adopted, foster, step, sponsored, none, unknown or a custom type.
This rule is a review/QA companion to the Common Biological Ancestor rule. That rule decides who is a blood relative purely from the child relationship type (Birth vs. Adopted / Foster / …) recorded on each child. It can therefore only be as accurate as those labels.
The catch: in Gramps the default relationship for a new child is "Birth". An adopted or foster child whose relationship type was never changed silently looks biological, and will be treated as a blood relative.
Run this rule to list everyone marked as a non-birth child, so you can confirm the labels are complete and correct — and, by knowing your own tree, spot anyone who should be on the list but isn't (because they were left at the default).
Close Gramps.
Extract the downloaded ZIP archive.
Copy or extract the project folder into your Gramps user plugin folder.
Keep the complete folder structure unchanged, including any locale folder
included with the project.
The user plugin folder is normally located here:
%AppData%\gramps\gramps<version>\plugins\~/.gramps/gramps<version>/plugins/~/Library/Application Support/gramps/gramps<version>/plugins/Replace <version> with the Gramps version folder used on your system.
Start Gramps again.
Check that the installed filter, rule, gramplet or tool is available where described in the project documentation.
If the project does not appear or fails to load, check Help → Plugin Manager for an error message.
Because the project was installed only in the user plugin folder, removing that folder removes the test installation without changing the original Gramps program files.
The match fires if the person has any parent family in which their relationship to the father or the mother qualifies.
None and Unknown
relationships, since those are gaps worth reviewing too. Pick a specific type
if you want a narrower list.(label, factory) tuple in the rule's labels). It
stores the language-neutral English keyword, so a saved filter keeps working
even if you switch interface language.GNU General Public License, version 2 or later — same as Gramps.
This rule lists children marked as non-birth. It cannot find the reverse — a child that should be non-birth but was left at the default "Birth" — because in the data such a child looks fully biological, so no filter can detect it with certainty.
Gramps' built-in Verify the Data tool (Tools → Utilities → Verify the Data) is the practical safety net. It flags birth relationships that are biologically implausible: a parent too young or too old at the child's birth, a parent not yet born, or a parent already dead. Those are exactly the cases where a "Birth" tag is suspect, so you can review each one and re-tag it if needed. Note this only catches implausible cases — an adopted child whose adoptive parents are a plausible age will not be flagged.
This addon ships with a Danish translation and is ready for more languages. Layout:
<addon folder>/
*.py *.gpr.py
po/
template.pot # all translatable strings (source)
da.po # Danish translation (source)
locale/
da/LC_MESSAGES/addon.mo # compiled Danish catalog (used at runtime)
Gramps loads locale/<lang>/LC_MESSAGES/addon.mo automatically when the
interface is set to that language, and falls back to English otherwise. The
.mo filename must be exactly addon.mo.
To add another language, e.g. German:
po/template.pot to po/de.po and translate each msgstr.locale/de/LC_MESSAGES/addon.mo. With GNU gettext:
msgfmt po/de.po -o locale/de/LC_MESSAGES/addon.mo
(or use the Python polib package: pofile('po/de.po').save_as_mofile(...)).Only strings unique to this addon are translated here; standard Gramps terms (category names, "ID:", the relationship-type names in the drop-down, etc.) come from Gramps' own translations automatically.