python-lucide 0.5.6__tar.gz → 0.5.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. {python_lucide-0.5.6 → python_lucide-0.5.7}/PKG-INFO +26 -1
  2. {python_lucide-0.5.6 → python_lucide-0.5.7}/README.md +25 -0
  3. {python_lucide-0.5.6 → python_lucide-0.5.7}/pyproject.toml +3 -3
  4. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/config.py +1 -1
  5. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/data/gemini-icon-descriptions.jsonl +14 -0
  6. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/data/lucide-icon-clusters.json +4720 -4635
  7. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/data/lucide-icons.sql +489 -7
  8. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/db_source_test.py +1 -1
  9. python_lucide-0.5.6/.beads/README.md +0 -81
  10. {python_lucide-0.5.6 → python_lucide-0.5.7}/.gitignore +0 -0
  11. {python_lucide-0.5.6 → python_lucide-0.5.7}/LICENSE +0 -0
  12. {python_lucide-0.5.6 → python_lucide-0.5.7}/Makefile +0 -0
  13. {python_lucide-0.5.6 → python_lucide-0.5.7}/build_support.py +0 -0
  14. {python_lucide-0.5.6 → python_lucide-0.5.7}/hatch_build.py +0 -0
  15. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/__init__.py +0 -0
  16. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/build_clusters.py +0 -0
  17. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/build_search.py +0 -0
  18. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/cli.py +0 -0
  19. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/core.py +0 -0
  20. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/data/__init__.py +0 -0
  21. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/db.py +0 -0
  22. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/dev_utils.py +0 -0
  23. {python_lucide-0.5.6 → python_lucide-0.5.7}/src/lucide/search.py +0 -0
  24. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/__init__.py +0 -0
  25. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/build_clusters_test.py +0 -0
  26. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/build_search_test.py +0 -0
  27. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/cli_test.py +0 -0
  28. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/conftest.py +0 -0
  29. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/core_test.py +0 -0
  30. {python_lucide-0.5.6 → python_lucide-0.5.7}/tests/search_test.py +0 -0
  31. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/App.svelte +0 -0
  32. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/app.css +0 -0
  33. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/components/DetailPanel.svelte +0 -0
  34. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/lib/clusters.ts +0 -0
  35. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/lib/embeddings.ts +0 -0
  36. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/lib/model-loader.ts +0 -0
  37. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/lib/types.ts +0 -0
  38. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/main.ts +0 -0
  39. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/pages/ExplorePage.svelte +0 -0
  40. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/pages/SearchPage.svelte +0 -0
  41. {python_lucide-0.5.6 → python_lucide-0.5.7}/web/src/vite-env.d.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: python-lucide
3
- Version: 0.5.6
3
+ Version: 0.5.7
4
4
  Summary: A Python package for working with Lucide icons
5
5
  Project-URL: Bug Tracker, https://github.com/mmacpherson/python-lucide/issues
6
6
  Project-URL: Homepage, https://github.com/mmacpherson/python-lucide
@@ -57,6 +57,21 @@ pip install python-lucide
57
57
  ```
58
58
  This installs the package with a pre-built database of all Lucide icons, ready to use immediately.
59
59
 
60
+ Python 3.10–3.14 are supported. **Python 3.15 support is experimental:** core
61
+ rendering, aliases, and SQL-backed package builds pass tests on 3.15 RC2 and have
62
+ a dedicated CI job, but semantic search is currently unsupported because ONNX
63
+ Runtime does not yet provide compatible wheels. Core installation remains
64
+ available on 3.15; full support will be advertised once search is validated too.
65
+ Use Python 3.10–3.14 for search and full development tooling. HDBSCAN and UMAP's
66
+ dependencies affect cluster generation during development, not ordinary searches.
67
+
68
+ To run the core tests on Python 3.15 from a source checkout:
69
+
70
+ ```bash
71
+ uv sync --python 3.15 --no-dev --group test-core
72
+ uv run --no-sync python -m pytest tests/core_test.py tests/db_source_test.py
73
+ ```
74
+
60
75
  ## Quick Start
61
76
  ```python
62
77
  from lucide import lucide_icon
@@ -151,6 +166,16 @@ pip install "python-lucide[search]"
151
166
  lucide search "celebrate a big achievement"
152
167
  ```
153
168
 
169
+ If your application uses Python 3.15, run the search CLI separately under Python
170
+ 3.14, or use the [browser search](https://mmacpherson.github.io/python-lucide/):
171
+
172
+ ```bash
173
+ uvx --python 3.14 --from "python-lucide[search]" lucide search "payment"
174
+ ```
175
+
176
+ This runs the CLI in a separate environment; calling `search_icons()` from your
177
+ application still requires a supported Python version with the search extra.
178
+
154
179
  <img src="https://raw.githubusercontent.com/mmacpherson/python-lucide/main/.github/images/search-cli.png" width="360" alt="Terminal output of lucide search: each result icon renders inline next to its name and match score">
155
180
 
156
181
  In terminals supporting the Kitty graphics protocol (kitty, Ghostty,
@@ -30,6 +30,21 @@ pip install python-lucide
30
30
  ```
31
31
  This installs the package with a pre-built database of all Lucide icons, ready to use immediately.
32
32
 
33
+ Python 3.10–3.14 are supported. **Python 3.15 support is experimental:** core
34
+ rendering, aliases, and SQL-backed package builds pass tests on 3.15 RC2 and have
35
+ a dedicated CI job, but semantic search is currently unsupported because ONNX
36
+ Runtime does not yet provide compatible wheels. Core installation remains
37
+ available on 3.15; full support will be advertised once search is validated too.
38
+ Use Python 3.10–3.14 for search and full development tooling. HDBSCAN and UMAP's
39
+ dependencies affect cluster generation during development, not ordinary searches.
40
+
41
+ To run the core tests on Python 3.15 from a source checkout:
42
+
43
+ ```bash
44
+ uv sync --python 3.15 --no-dev --group test-core
45
+ uv run --no-sync python -m pytest tests/core_test.py tests/db_source_test.py
46
+ ```
47
+
33
48
  ## Quick Start
34
49
  ```python
35
50
  from lucide import lucide_icon
@@ -124,6 +139,16 @@ pip install "python-lucide[search]"
124
139
  lucide search "celebrate a big achievement"
125
140
  ```
126
141
 
142
+ If your application uses Python 3.15, run the search CLI separately under Python
143
+ 3.14, or use the [browser search](https://mmacpherson.github.io/python-lucide/):
144
+
145
+ ```bash
146
+ uvx --python 3.14 --from "python-lucide[search]" lucide search "payment"
147
+ ```
148
+
149
+ This runs the CLI in a separate environment; calling `search_icons()` from your
150
+ application still requires a supported Python version with the search extra.
151
+
127
152
  <img src="https://raw.githubusercontent.com/mmacpherson/python-lucide/main/.github/images/search-cli.png" width="360" alt="Terminal output of lucide search: each result icon renders inline next to its name and match score">
128
153
 
129
154
  In terminals supporting the Kitty graphics protocol (kitty, Ghostty,
@@ -4,6 +4,7 @@ requires = ["hatchling>=1.27,<2"]
4
4
 
5
5
  [dependency-groups]
6
6
  dev = [
7
+ { include-group = "test-core" },
7
8
  "cairosvg>=2.7.0",
8
9
  "fastembed>=0.4.0",
9
10
  "hdbscan>=0.8.0",
@@ -17,13 +18,12 @@ dev = [
17
18
  # Cap below 2: pydantic-ai v2 removed Agent(output_retries=...), which
18
19
  # build_clusters.py relies on. Lift the cap when migrating to the v2 API.
19
20
  "pydantic-ai-slim[google]>=1.0.0,<2",
20
- "pytest-cov>=4.0.0",
21
- "pytest>=7.0.0",
22
21
  "ruff>=0.1.0",
23
22
  "types-setuptools>=80.9.0.20250529",
24
23
  "typing-extensions>=4.1.0",
25
24
  "umap-learn>=0.5.0"
26
25
  ]
26
+ test-core = ["pytest-cov>=4.0.0", "pytest>=7.0.0"]
27
27
 
28
28
  [project]
29
29
  authors = [{ name = "Mike Macpherson" }]
@@ -46,7 +46,7 @@ license = { text = "MIT" }
46
46
  name = "python-lucide"
47
47
  readme = "README.md"
48
48
  requires-python = ">=3.10"
49
- version = "0.5.6"
49
+ version = "0.5.7"
50
50
 
51
51
  [project.optional-dependencies]
52
52
  search = ["cairosvg>=2.7.0", "fastembed>=0.4.0"]
@@ -6,7 +6,7 @@ This module contains default configuration values used throughout the package.
6
6
  from dataclasses import dataclass
7
7
 
8
8
  # Default Lucide tag to use when building the icon database
9
- DEFAULT_LUCIDE_TAG = "1.45.0"
9
+ DEFAULT_LUCIDE_TAG = "1.47.0"
10
10
 
11
11
  # Default size for the LRU cache used by lucide_icon function
12
12
  DEFAULT_ICON_CACHE_SIZE = 128
@@ -1867,3 +1867,17 @@
1867
1867
  {"name": "tic-tac-toe", "description": "This icon depicts a partially filled tic-tac-toe board with Xs and Os, showcasing the classic game's strategic grid. It symbolizes competition, decision-making, and the pursuit of victory through tactical placement and anticipation of the opponent's moves.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.45.0", "tags": ["game", "board", "grid", "strategy", "noughts and crosses"], "categories": ["gaming"], "timestamp": "2026-09-13T15:59:44.205480+00:00"}
1868
1868
  {"name": "triangles-centerline-dashed-vertical", "description": "This icon depicts two mirrored triangles on either side of a dashed vertical line. It represents concepts of reflection, symmetry, mirroring, and perfect alignment, suggesting balance and a central dividing line.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.45.0", "tags": ["reflect", "mirror", "alignment", "dashed"], "categories": ["design", "photography"], "timestamp": "2026-09-13T15:59:44.244422+00:00"}
1869
1869
  {"name": "user-round-group", "description": "This icon depicts three stylized figures arranged in a group. It represents concepts of community, teamwork, and collective belonging, suggesting shared identity, collaboration, and family ties within a larger social structure.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.45.0", "tags": ["group", "people", "team", "members", "community", "membership", "collaboration", "organization", "contacts", "directory", "staff", "family", "ancestry", "ancestors", "lineage", "parents"], "categories": ["account", "people", "social"], "timestamp": "2026-09-13T15:59:44.839730+00:00"}
1870
+ {"name": "tube-lotion", "description": "This icon depicts a squeeze tube, likely containing lotion or cream. It symbolizes personal care, protection, and hygiene, suggesting applications like skincare, sun protection, or topical treatments for well-being.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["sunscreen", "sunblock", "spf", "uv", "cream", "skincare", "toothpaste", "ointment", "bottle", "toiletries", "bathroom", "beach", "summer"], "categories": ["medical", "home", "shopping", "travel", "seasons"], "timestamp": "2026-09-20T15:50:47.082657+00:00"}
1871
+ {"name": "clef-treble", "description": "This icon visually depicts a stylized treble clef, a symbol used in musical notation. It represents concepts of music, pitch, melody, and the fundamental elements of musical composition and performance.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["sol", "g", "music", "note", "key", "treble", "staff", "pitch", "violin", "solfege", "major", "scale"], "categories": ["multimedia"], "timestamp": "2026-09-20T15:50:47.084712+00:00"}
1872
+ {"name": "rotate-cw-clock", "description": "This icon depicts a circular arrow encompassing clock hands, symbolizing cyclical movement. It represents actions like refreshing, reloading, updating, or synchronizing, evoking concepts of time progression, revision, and renewal.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["modify", "edit", "refresh", "sync", "renew", "revision", "settings", "adjust", "upgrade", "time", "timeline", "version", "time machine", "backup", "clockwise", "arrow", "reload", "rerun", "synchronize", "circular", "cycle", "update"], "categories": ["arrows", "time"], "timestamp": "2026-09-20T15:50:47.103426+00:00"}
1873
+ {"name": "clef-bass", "description": "This icon visually represents the bass clef, a musical symbol used for low-pitched notes. It signifies music, harmony, and the foundation of sound in musical compositions. It also evokes a sense of depth and resonance.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["fa", "f", "music", "note", "key", "baritone", "staff", "pitch", "bass", "subbass", "major", "scale"], "categories": ["multimedia"], "timestamp": "2026-09-20T15:50:47.144353+00:00"}
1874
+ {"name": "square-dashed-plus", "description": "This icon visually represents a dashed square with a plus sign in the center. It conveys concepts of selection, addition, and the creation of new items or spaces, suggesting an action of inserting or defining an area for something new.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["selection", "select", "add", "new", "placeholder", "marquee", "box", "dashed", "plus", "insert", "frame", "empty"], "categories": ["design", "layout", "shapes"], "timestamp": "2026-09-20T15:50:47.157369+00:00"}
1875
+ {"name": "monitor-pc", "description": "This icon visually depicts a desktop computer setup, featuring a monitor screen and a vertical tower unit. It represents personal computing, digital workstations, technology, and can evoke concepts of work, productivity, or immersive gaming experiences.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["personal computer", "desktop", "screen", "display", "workstation", "tower", "chassis", "hardware", "setup", "gaming"], "categories": ["devices", "development", "gaming"], "timestamp": "2026-09-20T15:50:47.168980+00:00"}
1876
+ {"name": "square-dashed-x-corner", "description": "This icon visually depicts a dashed square with rounded corners, and an \"X\" mark in the bottom right corner. It represents the concept of deselecting, unselecting, or canceling a selection, often associated with removing or deleting an item from a chosen set.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["deselect", "unselect", "delete", "select", "selection", "border", "width", "layout", "style", "design", "rectangular", "marquee", "box", "rectangle", "aspect ratio", "1:1"], "categories": ["design", "development", "layout"], "timestamp": "2026-09-20T15:50:47.246790+00:00"}
1877
+ {"name": "clef-alto", "description": "This icon visually depicts an alto clef, a musical symbol. It represents a specific pitch range and is associated with musical notation, harmony, and melody, indicating a particular voice or instrument part.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["do", "c", "music", "note", "key", "soprano", "mezzo", "alto", "staff", "pitch", "baritone", "major", "scale"], "categories": ["multimedia"], "timestamp": "2026-09-20T15:50:47.264365+00:00"}
1878
+ {"name": "lambda", "description": "This icon features the Greek letter lambda, a wavy symbol suggesting fluidity and abstract concepts. It represents mathematical functions, programming constructs like anonymous functions, and serverless computing, evoking notions of flexibility and modern technology.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["greek", "symbol", "math", "function", "programming", "serverless", "anonymous", "functional", "cloud", "wavelength", "calculus", "linear algebra"], "categories": ["development", "math", "science", "text"], "timestamp": "2026-09-20T15:50:47.281700+00:00"}
1879
+ {"name": "square-dashed-x", "description": "This icon depicts a dashed square with an \"X\" inside, symbolizing cancellation, deselection, or removal. It represents the action of unselecting items, deleting content, or rejecting a choice within a defined area or selection.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["deselect", "unselect", "delete", "select", "selection", "border", "width", "layout", "style", "design", "rectangular", "marquee", "box", "rectangle", "aspect ratio", "1:1"], "categories": ["design", "development", "layout"], "timestamp": "2026-09-20T15:50:47.323515+00:00"}
1880
+ {"name": "faucet", "description": "This icon depicts a classic faucet with a cross-shaped handle. It symbolizes the flow of water, representing access to drinking water, hydration, and essential utilities for everyday life. It suggests concepts of freshness and the basic amenities of a home.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["tap", "spigot", "water", "drinking", "fresh", "source", "pipes", "plumbing", "plumber", "sink", "basin", "kitchen", "bathroom", "washroom", "fixture", "valve", "flow", "drinkable", "potable", "amenities", "utilities", "hydration"], "categories": ["food-beverage", "home", "navigation", "travel"], "timestamp": "2026-09-20T15:50:47.397254+00:00"}
1881
+ {"name": "nepali-rupee", "description": "This icon visually depicts the Nepali Rupee symbol, a stylized character representing the Nepalese currency. It symbolizes financial transactions, monetary value, and economic exchange related to Nepal.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["currency", "money", "nepal", "rupee", "npr"], "categories": ["finance", "shopping", "travel"], "timestamp": "2026-09-20T15:50:47.969003+00:00"}
1882
+ {"name": "door-closed-package", "description": "This icon depicts a closed door with a package placed on the doorstep. It represents the successful delivery of goods, the act of receiving a parcel, and the secure drop-off of items at one's residence.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["delivery", "parcel", "doorstep", "shipping", "drop-off", "courier"], "categories": ["home", "food-beverage", "transportation"], "timestamp": "2026-09-20T15:50:48.050003+00:00"}
1883
+ {"name": "cupcake", "description": "This icon visually depicts a stylized cupcake with a swirled frosting top and a fluted paper liner. It represents sweetness, indulgence, and celebration, evoking concepts of baking, dessert, and culinary enjoyment.", "model": "gemini-2.5-flash-lite", "prompt_template_hash": "7ae15a902cba", "lucide_version": "1.47.0", "tags": ["cake", "dessert", "food", "celebration", "sweet", "baking", "cooking"], "categories": ["food-beverage"], "timestamp": "2026-09-20T15:50:48.083908+00:00"}