A structured, metadata-driven Unicode symbol engine for Python.
Project description
✨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:
- Exact match.
- Keyword match.
- Alias match.
- 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
Project Links
- Pypi: https://pypi.org/project/symjoy/
- Github: https://github.com/vishwanathdvgmm/symjoy
- Github issues: https://github.com/vishwanathdvgmm/symjoy/issues
- Email: vishwanathdvgmm@gmail.com
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c314b0d98222d40f2630085f05f5928c8de55c54964735a3e79b72dffc0e4a6d
|
|
| MD5 |
23a79035fec83abb0ef7881fae2a5670
|
|
| BLAKE2b-256 |
769fd4a81a10f009a2ad6cc56ca855095ac19c8d13a391583cdeab21601f84b7
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27eaa13aded8ed14591e105d52127cc2d5afd32b944374a7c2cb92e9b1a0a929
|
|
| MD5 |
3896c03a1e44a8424c41f8b8a3577ed0
|
|
| BLAKE2b-256 |
18ea014619132b2cb93dedfbd89ab87954d59db4bcee5778f48cf54d6100eb59
|