Skip to main content

Python implimentation of gedcom-x standard

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

GEDCOM-X Python Toolkit (gedcom-x beta 0.5.5)

A lightweight, class-based Python implementation of the GEDCOM-X data model.

⚠️ Project Status

This project is currently in beta.
While the core GEDCOM-X classes and serialization are functional, some features may not be fully implemented or may not behave exactly as expected.

  • Certain GEDCOM 7 tags are not yet mapped
  • Some classes may be missing methods or fields
  • Error handling and validation are still evolving
  • Backward compatibility is not guaranteed until the first stable release

✅ What You Can Do

  • Create and manipulate GEDCOM-X objects in Python
  • Serialize and deserialize data to/from JSON
  • Experimentally convert GEDCOM 5x & 7 files into GEDCOM-X JSON
  • Extend the classes to handle new GEDCOM tags or custom attributes
  • Use the library as a foundation for genealogy-related tooling or RAG pipelines

❌ What You Can’t Do (Yet)

  • Rely on complete coverage of all GEDCOM 7 tags
  • Expect perfect compliance with the GEDCOM-X specification
  • Assume strong validation or error recovery on malformed input
  • Use it as a drop-in replacement for production genealogy software
  • Write GEDCOM-X to GEDCOM 5x / 7
  • Create Graphs from Genealogies

Contributors and testers are welcome — feedback will help stabilize the library!


This library aims to provide:

  • Python classes for every GEDCOM-X type (Person, Fact, Source, etc.)
  • Extensibility, with current GEDCOM RS etc, extension built in
  • Serialization and Deserialization to/from GEDCOM-X JSON
  • Utilities to convert GEDCOM 5x & 7 GEDCOM Files into GEDCOM-X and back
  • Type-safe field definitions and extensibility hooks for future tags

Features

  • Complete GEDCOM-X Class Coverage
    Each GEDCOM-X type is represented as a Python class with fields and types.

  • Serialization / Deserialization
    Every class can serialize to JSON and reconstruct from JSON via _as_dict_() and _from_json() methods.

  • Type Checking & Enum Validation
    Uses Python type hints and enums to ensure correct values (e.g. FactType, EventType, ConfidenceLevel).

  • Composable / Nestable Classes
    Nested objects (e.g. Person → Name → NameForm → TextValue) are constructed and validated recursively.

  • GEDCOM 7 → GEDCOM-X Conversion
    Experimental parser to read GEDCOM 7 files and convert them into structured GEDCOM-X JSON.


Installation

Clone the repository and install dependencies:

git clone https://github.com/yourusername/gedcom-x.git
cd gedcom-x
pip install -r requirements.txt

or

pip install gedcom-x

Examples

Create a Person Gedcom-X Type
import json
from gedcomx import Person, Name, NameForm, TextValue

person = Person(
    id="P-123",
    names=[Name(
        nameForms=[NameForm(
            fullText=TextValue(value="John Doe")
        )]
    )]
)

print(json.dumps(person._as_dict_,indent=4))

result

{
    "id": "P-123",
    "lang": "en",
    "private": false,
    "living": false,
    "gender": {
        "lang": "en",
        "type": "http://gedcomx.org/Unknown"
    },
    "names": [
        {
            "lang": "en",
            "nameForms": [
                {
                    "lang": "en",
                    "fullText": {
                        "lang": "en",
                        "value": "John Doe"
                    }
                }
            ]
        }
    ]
}

</details>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gedcom_x-0.5.10.tar.gz (130.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gedcom_x-0.5.10-py3-none-any.whl (156.7 kB view details)

Uploaded Python 3

File details

Details for the file gedcom_x-0.5.10.tar.gz.

File metadata

  • Download URL: gedcom_x-0.5.10.tar.gz
  • Upload date:
  • Size: 130.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for gedcom_x-0.5.10.tar.gz
Algorithm Hash digest
SHA256 70bcb55a975851c0ff68d7ae22e06a8eb315c759c2b99fb898268cc0ce04385d
MD5 345b4d9424d5110970e49c0de5bcb6ac
BLAKE2b-256 8197adc88000bf6fef044dec9d9aa409c25b249fe9c2cae8f1f8e70f1f2e783b

See more details on using hashes here.

File details

Details for the file gedcom_x-0.5.10-py3-none-any.whl.

File metadata

  • Download URL: gedcom_x-0.5.10-py3-none-any.whl
  • Upload date:
  • Size: 156.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for gedcom_x-0.5.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4131ba24dc5d419bf6c6059f48a6269ae2ff3902faa3b2086e58c6975730c821
MD5 b2bd10fa3d7a4033cd0c41f20f6d694c
BLAKE2b-256 98eb31187f68471da859bbf959dcc1da397281c77d24e75f6c38a842d86064a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page