Skip to main content

A structured, metadata-driven Unicode symbol engine for Python.

Project description

PyPI Python License

Symjoy

Version Highlights
v2.6.0 Indexed search engine
v2.5.0 Metadata-driven architecture
v2.1.0 Helper APIs & improved search
v2.0.0 Structured category API

A structured, metadata-driven Unicode symbol engine for Python.

symjoy provides clean, consistent, and intelligent access to Unicode characters including:

  • Emojis 😄
  • Symbols ♥
  • Arrows →
  • Mathematical symbols π
  • Currency signs ₹
  • Miscellaneous icons ☀

It is designed for chat applications, games, educational tools, financial apps, and any Python project requiring Unicode characters.


✨ Key Features

  • JSON-backed data architecture.
  • Lazy-loaded registry.
  • Automatic keyword enrichment.
  • Semantic relationship graph.
  • Multilingual alias support.
  • Indexed search engine for fast lookups.
  • Deterministic search ordering.
  • Category-isolated APIs.
  • Backward compatible with v2.x.

📦 Installation

pip install symjoy

Required Python version: 3.12+

🚀 Basic Usage

from symjoy import emoji, symbols, arrows, math, currency, misc, search

print(emoji.get("smile"))      # 😄
print(symbols.get("heart"))    # ♥
print(arrows.get("right"))     # →
print(math.get("pi"))          # π
print(currency.get("rupee"))   # ₹
print(misc.get("sun"))         # ☀

print(emoji.random())          # Random emoji

📚 Category API

Each category exposes a consistent interface:

get(name) -> str | None
random() -> str
list() -> list[str]
items() -> dict[str, str]
related(name) -> list[dict]

Example:

from symjoy import emoji

print(emoji.list())
print(emoji.related("broken_heart"))

🔎 Intelligent Search

Search across all categories:

from symjoy import search

results = search("heart")

Search is ranked by:

  1. Exact name match.
  2. Prefix name match.
  3. Keyword match.
  4. Alias match.
  5. Substring fallback.

🧠 Metadata Engine (v2.5.0)

v2.5.0 introduces a major internal upgrade:

  • JSON-driven data storage
  • Runtime metadata enrichment
  • Automatic keyword generation
  • Token-based semantic relationship graph
  • Fully category-agnostic registry

Example:

emoji.related("heart")
search("joy")

⚡ Indexed Search Engine (v2.6.0)

v2.6.0 introduces an internal symbol index engine that significantly improves search performance.

The registry now builds internal indexes for:

  • symbol names.
  • keywords.
  • aliases.
  • name tokens.

This allows search queries to avoid scanning the entire symbol registry and instead perform indexed lookups.

Benefits:

  • faster search performance.
  • scalable architecture for larger Unicode datasets.
  • improved metadata-based queries.

🔁 Backward Compatibility (v1.x)

Version 2.x still supports legacy v1-style access:

from symjoy import emojis
print(emojis["smile"])

⚠️ This usage is deprecated and will be removed in symjoy v3.0.0.

📖 Documentation

📜 Changelog

🔄 Migration Guide

🏗 Architecture Overview

📁 File Structure

Project Links

If any issue with the package you can contact here:

The source code is available on GitHub

The link for the package in pypi.org is:

License: MIT

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

symjoy-2.6.0.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

symjoy-2.6.0-py3-none-any.whl (23.5 kB view details)

Uploaded Python 3

File details

Details for the file symjoy-2.6.0.tar.gz.

File metadata

  • Download URL: symjoy-2.6.0.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for symjoy-2.6.0.tar.gz
Algorithm Hash digest
SHA256 7baa00c6916c97af29c76f42442a033c4eebff539542263bdd520845e6706b89
MD5 1565a857fc175e95dd07f80e061f24bb
BLAKE2b-256 6cee41e826f1886065176265031da49f9d93aba4b12f882a6c13bb600125a00e

See more details on using hashes here.

File details

Details for the file symjoy-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: symjoy-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 23.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for symjoy-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 860ba1a924084fe2d35ddf8cd1e0bf8cae217463fdd54cdad2f2247c66d3286d
MD5 6b73a6af67821ede6ca5649910169316
BLAKE2b-256 ba7dbcf0fa1d30cbc4e36ce9a04cb4f3b4d7f13305d2d10dabac88d4da553466

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