Skip to content

Chaldean Numerology

A Chaldean numerology engine that deterministically reduces a name to its planetary root (1-9) using the Chaldean letter values (1-8, with nine never assigned to a letter). This is distinct from the Pythagorean name-numerology tradition.

from fortune_telling_core import Querent, ReadingRequest
from fortune_telling_core.traditions.chaldean_numerology import (
    CHALDEAN_NUMEROLOGY_DECK,
    CHALDEAN_NUMEROLOGY_SPREAD,
    build_engine,
)

request = ReadingRequest(
    deck_id=CHALDEAN_NUMEROLOGY_DECK.id,
    spread_id=CHALDEAN_NUMEROLOGY_SPREAD.id,
    querent=Querent(id="sample", display_name="Sample", attributes={"name": "John"}),
)
reading = build_engine().cast(request)

chaldean_numerology

CHALDEAN_NUMEROLOGY_DECK module-attribute

CHALDEAN_NUMEROLOGY_DECK = Deck(
    id="chaldean_numerology.deck.numbers.v1",
    symbols=tuple(
        (
            Symbol(
                id=item.symbol_id,
                name=str(item.value),
                attributes={
                    "value": str(item.value),
                    "planet": item.planet,
                },
            )
        )
        for item in NUMBERS
    ),
)

CHALDEAN_NUMEROLOGY_SPREAD module-attribute

CHALDEAN_NUMEROLOGY_SPREAD = Spread(
    id="chaldean_numerology.spread.name.v1",
    name="Chaldean Name Number",
    positions=(
        Position(
            "name_number",
            "Name Number",
            "Root number reduced from the name.",
        ),
    ),
)

ChaldeanNumerologyEngine

Bases: AbstractEngine

Chaldean numerology engine.

The engine deterministically reduces a name to its Chaldean root number (1-9) and surfaces the planetary ruler of that root.

id class-attribute instance-attribute

id = 'chaldean_numerology.engine'

version class-attribute instance-attribute

version = '0.1.0'

deck

deck(request: ReadingRequest) -> Deck

Return the Chaldean numerology deck.

Parameters:

Name Type Description Default
request ReadingRequest

Reading request whose deck_id must match CHALDEAN_NUMEROLOGY_DECK.id.

required

Returns:

Type Description
Deck

The bundled deck.

Raises:

Type Description
ValidationError

If the requested deck is unsupported.

Source code in src/fortune_telling_core/traditions/chaldean_numerology/engine.py
def deck(self, request: ReadingRequest) -> Deck:
    """Return the Chaldean numerology deck.

    Args:
        request: Reading request whose ``deck_id`` must match
            ``CHALDEAN_NUMEROLOGY_DECK.id``.

    Returns:
        The bundled deck.

    Raises:
        ValidationError: If the requested deck is unsupported.
    """

    if request.deck_id != CHALDEAN_NUMEROLOGY_DECK.id:
        raise ValidationError(f"unsupported Chaldean numerology deck: {request.deck_id}")
    return CHALDEAN_NUMEROLOGY_DECK

spread

spread(request: ReadingRequest) -> Spread

Return the Chaldean numerology spread.

Parameters:

Name Type Description Default
request ReadingRequest

Reading request whose spread_id must match CHALDEAN_NUMEROLOGY_SPREAD.id.

required

Returns:

Type Description
Spread

The bundled spread.

Raises:

Type Description
ValidationError

If the requested spread is unsupported.

Source code in src/fortune_telling_core/traditions/chaldean_numerology/engine.py
def spread(self, request: ReadingRequest) -> Spread:
    """Return the Chaldean numerology spread.

    Args:
        request: Reading request whose ``spread_id`` must match
            ``CHALDEAN_NUMEROLOGY_SPREAD.id``.

    Returns:
        The bundled spread.

    Raises:
        ValidationError: If the requested spread is unsupported.
    """

    if request.spread_id != CHALDEAN_NUMEROLOGY_SPREAD.id:
        raise ValidationError(f"unsupported Chaldean numerology spread: {request.spread_id}")
    return CHALDEAN_NUMEROLOGY_SPREAD

draw

draw(request: ReadingRequest, rng: Rng) -> Draw

Compute the Chaldean name number as a deterministic draw.

Parameters:

Name Type Description Default
request ReadingRequest

Reading request with name in options or querent attributes.

required
rng Rng

Ignored. The argument is present for Engine compatibility.

required

Returns:

Type Description
Draw

A draw with the single name-number selection.

Raises:

Type Description
ValidationError

If the name is missing or invalid.

Source code in src/fortune_telling_core/traditions/chaldean_numerology/engine.py
def draw(self, request: ReadingRequest, rng: Rng) -> Draw:
    """Compute the Chaldean name number as a deterministic draw.

    Args:
        request: Reading request with ``name`` in options or querent
            attributes.
        rng: Ignored. The argument is present for ``Engine`` compatibility.

    Returns:
        A draw with the single name-number selection.

    Raises:
        ValidationError: If the name is missing or invalid.
    """

    del rng
    name = require_string(collect_values(request), "name")
    units = latin_chaldean.values(name)
    result = compute_name_number(name)
    data = number(result.root)
    selection = Selection(
        "name_number",
        data.symbol_id,
        {
            "value": str(data.value),
            "planet": data.planet,
            "total": str(result.total),
            "value_system": latin_chaldean.ID,
            "value_system_version": latin_chaldean.VERSION,
            "normalization": "latin_ascii_ignore",
            "normalized_name": "".join(unit.char for unit in units),
            "values": format_value_trace(units),
        },
    )
    return Draw(CHALDEAN_NUMEROLOGY_DECK.id, CHALDEAN_NUMEROLOGY_SPREAD.id, (selection,))

cast

cast(request: ReadingRequest) -> Reading

Compute a Chaldean numerology reading without a caller RNG.

Parameters:

Name Type Description Default
request ReadingRequest

Reading request containing the name.

required

Returns:

Type Description
Reading

A reading with the name-number placement and summary.

Raises:

Type Description
ValidationError

If the name is missing or invalid.

Source code in src/fortune_telling_core/traditions/chaldean_numerology/engine.py
def cast(self, request: ReadingRequest) -> Reading:
    """Compute a Chaldean numerology reading without a caller RNG.

    Args:
        request: Reading request containing the name.

    Returns:
        A reading with the name-number placement and summary.

    Raises:
        ValidationError: If the name is missing or invalid.
    """

    draw = self.draw(request, _NULL_RNG)
    return self._interpret(request, draw, rng=None)

build_engine

build_engine() -> ChaldeanNumerologyEngine

Create a Chaldean numerology engine.

Returns:

Type Description
ChaldeanNumerologyEngine

A new ChaldeanNumerologyEngine instance.

Source code in src/fortune_telling_core/traditions/chaldean_numerology/engine.py
def build_engine() -> ChaldeanNumerologyEngine:
    """Create a Chaldean numerology engine.

    Returns:
        A new ``ChaldeanNumerologyEngine`` instance.
    """

    return ChaldeanNumerologyEngine()