Skip to main content

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

Project description

PyPI Python License
Downloads Status Tests

✨Symjoy - Unicode Engine for Python

Version Highlights
v2.7.0 Grouping API + search improvements + CI
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 metadata-driven Unicode symbol engine for Python.

Symjoy provides clean, structured, and intelligent access to Unicode characters including:

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

Designed for:

  • 💬Chat applications
  • 🎮 Games
  • 📚Educational tools
  • 💰 Financial systems
  • ⚙️ Developer utilities

✨ Key Features

  • JSON-backed data architecture.
  • Lazy-loaded registry.
  • Automatic keyword enrichment.
  • Semantic relationship graph.
  • Multilingual alias support.
  • Indexed search engine.
  • 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
exists(name) -> bool
info(name) -> dict | None
random() -> str | None
list() -> list[str]
items() -> dict[str, str]
related(name) -> list[dict]
by_group(group) -> list[dict]

Example:

from symjoy import emoji

print(emoji.list())
print(emoji.related("heart"))
print(emoji.by_group("emotion"))

🔎 Intelligent Search

Search across all categories:

from symjoy import search

results = search("heart")

Ranking Strategy

Search is ranked by:

  1. Exact match.
  2. Keyword match.
  3. Alias match.
  4. Token match.

Multi-token Support

search("smile face")
search("red heart")

🧠 Metadata Engine (v2.5.0)

Introduced a fully data-driven system::

  • JSON-driven data storage
  • Runtime metadata enrichment
  • Automatic keyword generation
  • Token-based relationship graph
  • Category-agnostic registry
emoji.related("heart")
search("joy")

⚡ Indexed Search Engine (v2.6.0)

Introduces internal indexing for high-performance queries.

Indexed Fields

  • Names.
  • Keywords.
  • Aliases.
  • Tokens.

Benefits:

  • Faster lookups.
  • Scalable architecture.
  • Reduced full-registry scans.
  • Improved query precision.

🚀 Grouping & Search Improvements (v2.7.0)

v2.7.0 introduces semantic grouping and enhanced search capabilities.

🧩 Grouping API

Symbols are now organized into semantic groups:

  • emotion
  • gesture
  • nature
  • object
  • activity
  • symbolic
from symjoy import emoji

emoji.by_group("emotion")

🔍 Improved Search Engine

Search now supports:

  • multi-token queries
  • keyword + alias + token indexing
  • deterministic ranking
search("smile face")
search("red heart")

⚙️ Developer Improvements

  • CI automation (GitHub Actions)
  • Improved test coverage
  • Stabilized registry + index pipeline

🔁 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

License

MIT License

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.7.0.tar.gz (26.5 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.7.0-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for symjoy-2.7.0.tar.gz
Algorithm Hash digest
SHA256 c314b0d98222d40f2630085f05f5928c8de55c54964735a3e79b72dffc0e4a6d
MD5 23a79035fec83abb0ef7881fae2a5670
BLAKE2b-256 769fd4a81a10f009a2ad6cc56ca855095ac19c8d13a391583cdeab21601f84b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: symjoy-2.7.0-py3-none-any.whl
  • Upload date:
  • Size: 32.4 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.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27eaa13aded8ed14591e105d52127cc2d5afd32b944374a7c2cb92e9b1a0a929
MD5 3896c03a1e44a8424c41f8b8a3577ed0
BLAKE2b-256 18ea014619132b2cb93dedfbd89ab87954d59db4bcee5778f48cf54d6100eb59

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