numclassify 0.3.2__tar.gz → 0.3.2.1__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 (40) hide show
  1. {numclassify-0.3.2 → numclassify-0.3.2.1}/CHANGELOG.md +5 -3
  2. {numclassify-0.3.2 → numclassify-0.3.2.1}/PKG-INFO +1 -1
  3. numclassify-0.3.2.1/docs/extra/saffron.css +37 -0
  4. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/playground.html +1 -1
  5. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/playground.js +42 -6
  6. {numclassify-0.3.2 → numclassify-0.3.2.1}/mkdocs.yml +6 -2
  7. {numclassify-0.3.2 → numclassify-0.3.2.1}/pyproject.toml +1 -1
  8. {numclassify-0.3.2 → numclassify-0.3.2.1}/.github/workflows/ci.yml +0 -0
  9. {numclassify-0.3.2 → numclassify-0.3.2.1}/.github/workflows/docs.yml +0 -0
  10. {numclassify-0.3.2 → numclassify-0.3.2.1}/.github/workflows/publish.yml +0 -0
  11. {numclassify-0.3.2 → numclassify-0.3.2.1}/.gitignore +0 -0
  12. {numclassify-0.3.2 → numclassify-0.3.2.1}/CONTRIBUTING.md +0 -0
  13. {numclassify-0.3.2 → numclassify-0.3.2.1}/LICENSE +0 -0
  14. {numclassify-0.3.2 → numclassify-0.3.2.1}/README.md +0 -0
  15. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/api.md +0 -0
  16. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/changelog.md +0 -0
  17. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/cli.md +0 -0
  18. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/index.md +0 -0
  19. {numclassify-0.3.2 → numclassify-0.3.2.1}/docs/playground.css +0 -0
  20. {numclassify-0.3.2 → numclassify-0.3.2.1}/examples/basic_usage.py +0 -0
  21. {numclassify-0.3.2 → numclassify-0.3.2.1}/examples/custom_type.py +0 -0
  22. {numclassify-0.3.2 → numclassify-0.3.2.1}/examples/find_perfect_numbers.py +0 -0
  23. {numclassify-0.3.2 → numclassify-0.3.2.1}/examples/random_classify.py +0 -0
  24. {numclassify-0.3.2 → numclassify-0.3.2.1}/examples/stream_large_range.py +0 -0
  25. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/__init__.py +0 -0
  26. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/__main__.py +0 -0
  27. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/__init__.py +0 -0
  28. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/combinatorial.py +0 -0
  29. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/digital.py +0 -0
  30. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/divisors.py +0 -0
  31. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/figurate.py +0 -0
  32. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/number_theory.py +0 -0
  33. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/powers.py +0 -0
  34. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/primes.py +0 -0
  35. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/recreational.py +0 -0
  36. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_core/sequences.py +0 -0
  37. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/_registry.py +0 -0
  38. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/cli.py +0 -0
  39. {numclassify-0.3.2 → numclassify-0.3.2.1}/numclassify/py.typed +0 -0
  40. {numclassify-0.3.2 → numclassify-0.3.2.1}/tests/test_registry.py +0 -0
@@ -6,6 +6,11 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
6
6
 
7
7
  ---
8
8
 
9
+ ## [0.3.2.1] - 2026-06-12
10
+
11
+ ### Fixed
12
+ - Search autocomplete dropdown not appearing — added fallback fetch of property names if initial Pyodide load fails, plus visible "Loading..." state in dropdown
13
+
9
14
  ## [0.3.2] - 2026-06-12
10
15
 
11
16
  ### Added
@@ -14,9 +19,6 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
14
19
  - Keyboard shortcuts: `C` (classify), `S` (search), `N` (Number of the Day), `?`/`H` (show shortcuts overlay)
15
20
  - `prefers-reduced-motion` support — disables all animations for accessibility
16
21
 
17
- ### Fixed
18
- - No bugs reported since v0.3.1
19
-
20
22
  ## [0.3.1] - 2026-06-12
21
23
 
22
24
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: numclassify
3
- Version: 0.3.2
3
+ Version: 0.3.2.1
4
4
  Summary: The most comprehensive Python library for number classification - 3000+ number types
5
5
  Project-URL: Homepage, https://github.com/aratrikghosh2011-tech/numclassify
6
6
  Project-URL: Repository, https://github.com/aratrikghosh2011-tech/numclassify
@@ -0,0 +1,37 @@
1
+ :root {
2
+ --md-primary-fg-color: #FF9933;
3
+ --md-primary-fg-color--light: #FFB366;
4
+ --md-primary-fg-color--dark: #E6821A;
5
+ --md-primary-bg-color: #0A0A0F;
6
+ --md-primary-bg-color--light: #12121A;
7
+ --md-accent-fg-color: #FF9933;
8
+ --md-accent-fg-color--light: #FFB366;
9
+ --md-accent-fg-color--dark: #E6821A;
10
+ --md-typeset-a-color: #FF9933;
11
+ }
12
+
13
+ [data-md-color-scheme="slate"] {
14
+ --md-default-bg-color: #0A0A0F;
15
+ --md-code-bg-color: #12121A;
16
+ }
17
+
18
+ .md-header {
19
+ background: linear-gradient(135deg, #E6821A, #FF9933) !important;
20
+ }
21
+
22
+ .md-tabs {
23
+ background: #E6821A !important;
24
+ }
25
+
26
+ .md-search__form {
27
+ background: rgba(255,255,255,0.15) !important;
28
+ }
29
+
30
+ a:hover {
31
+ color: #FFB366 !important;
32
+ }
33
+
34
+ .md-footer {
35
+ background: #0A0A0F !important;
36
+ border-top: 1px solid rgba(255,153,51,0.2);
37
+ }
@@ -19,7 +19,7 @@
19
19
  <header>
20
20
  <button class="theme-toggle" onclick="toggleTheme()" title="Toggle theme"><span id="theme-icon">&#127769;</span></button>
21
21
  <div class="logo-badge">numclassify playground</div>
22
- <div class="version-badge" id="version-badge">v<span id="version-text">—</span></div>
22
+ <div class="version-badge" id="version-badge" data-version="0.3.2.1">v<span id="version-text">—</span></div>
23
23
  <h1>Number Intelligence</h1>
24
24
  <p class="subtitle">Classify any integer into 3000+ named mathematical types — powered by real Python in your browser.</p>
25
25
  </header>
@@ -228,12 +228,18 @@ json.dumps(m)
228
228
  console.warn('Could not load category map', e);
229
229
  }
230
230
 
231
- // Fetch version number
231
+ // Fetch version number — prefer local source version as canonical
232
+ const badge = $('version-badge');
233
+ const srcVersion = badge ? badge.dataset.version : null;
232
234
  try {
233
- const ver = await pyodide.runPythonAsync('nc.__version__');
234
- $('version-text').textContent = ver;
235
+ const pypiVer = await pyodide.runPythonAsync('nc.__version__');
236
+ // Use the source version (from pyproject.toml) since PyPI may lag behind
237
+ $('version-text').textContent = srcVersion || pypiVer;
238
+ if (srcVersion && pypiVer !== srcVersion) {
239
+ badge.title = 'Source: v' + srcVersion + ' | PyPI: v' + pypiVer;
240
+ }
235
241
  } catch(e) {
236
- $('version-text').textContent = '?';
242
+ $('version-text').textContent = srcVersion || '?';
237
243
  }
238
244
 
239
245
  setProgress(100, 'Ready!');
@@ -670,13 +676,43 @@ function setupAutocomplete() {
670
676
  const dropdown = $('ac-dropdown');
671
677
  let selectedIdx = -1;
672
678
 
673
- input.addEventListener('input', () => {
679
+ input.addEventListener('input', async () => {
674
680
  const val = input.value.trim().toLowerCase();
675
681
  if (!val) { dropdown.classList.remove('open'); return; }
682
+
683
+ // Fallback: if allProperties is empty (Pyodide category fetch failed), try on-the-fly
684
+ if (!allProperties.length && pyReady && pyodide) {
685
+ try {
686
+ const sample = await pyodide.runPythonAsync(`
687
+ import json
688
+ from numclassify._registry import REGISTRY
689
+ keys = list(REGISTRY.keys())
690
+ json.dumps(keys)
691
+ `);
692
+ const keys = JSON.parse(sample);
693
+ if (keys.length) {
694
+ allProperties = keys;
695
+ categoryMap = {};
696
+ keys.forEach(k => { categoryMap[k] = ''; });
697
+ console.log('Autocomplete: fallback loaded', keys.length, 'properties');
698
+ }
699
+ } catch(e) {
700
+ console.warn('Autocomplete fallback failed', e);
701
+ }
702
+ }
703
+
676
704
  const matches = allProperties
677
705
  .filter(p => p.includes(val))
678
706
  .slice(0, 10);
679
- if (!matches.length) { dropdown.classList.remove('open'); return; }
707
+ if (!matches.length) {
708
+ if (!allProperties.length) {
709
+ dropdown.innerHTML = '<div class="ac-item" style="cursor:default;color:var(--text-muted)">Loading properties...</div>';
710
+ dropdown.classList.add('open');
711
+ } else {
712
+ dropdown.classList.remove('open');
713
+ }
714
+ return;
715
+ }
680
716
  selectedIdx = -1;
681
717
  dropdown.innerHTML = matches.map((p, i) =>
682
718
  `<div class="ac-item${i === 0 ? ' selected' : ''}" data-prop="${p}" onclick="pickAutocomplete('${p}')">
@@ -7,13 +7,17 @@ repo_name: aratrikghosh2011-tech/numclassify
7
7
  theme:
8
8
  name: material
9
9
  palette:
10
- primary: indigo
11
- accent: indigo
10
+ primary: custom
11
+ accent: custom
12
+ scheme: slate
12
13
  features:
13
14
  - navigation.tabs
14
15
  - navigation.top
15
16
  - content.code.copy
16
17
 
18
+ extra_css:
19
+ - extra/saffron.css
20
+
17
21
  nav:
18
22
  - Home: index.md
19
23
  - API Reference: api.md
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "numclassify"
7
- version = "0.3.2"
7
+ version = "0.3.2.1"
8
8
  description = "The most comprehensive Python library for number classification - 3000+ number types"
9
9
  authors = [{name = "Aratrik Ghosh", email = "aratrikghosh2011@gmail.com"}]
10
10
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes