neuralnode 2.2.9__tar.gz → 2.2.10__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 (143) hide show
  1. {neuralnode-2.2.9 → neuralnode-2.2.10}/.env.example +22 -22
  2. {neuralnode-2.2.9 → neuralnode-2.2.10}/.github/PULL_REQUEST_TEMPLATE.md +15 -15
  3. {neuralnode-2.2.9 → neuralnode-2.2.10}/.github/workflows/tests.yml +86 -86
  4. {neuralnode-2.2.9 → neuralnode-2.2.10}/.gitignore +41 -41
  5. {neuralnode-2.2.9 → neuralnode-2.2.10}/CHANGELOG.md +8 -0
  6. {neuralnode-2.2.9 → neuralnode-2.2.10}/CONTRIBUTING.md +40 -40
  7. {neuralnode-2.2.9 → neuralnode-2.2.10}/LICENSE +157 -157
  8. {neuralnode-2.2.9 → neuralnode-2.2.10}/NOTICE +15 -15
  9. {neuralnode-2.2.9 → neuralnode-2.2.10}/PKG-INFO +219 -357
  10. neuralnode-2.2.10/README.md +332 -0
  11. {neuralnode-2.2.9 → neuralnode-2.2.10}/THIRD_PARTY_NOTICES.md +12 -12
  12. {neuralnode-2.2.9 → neuralnode-2.2.10}/TOKENAI_CLA.md +59 -59
  13. {neuralnode-2.2.9 → neuralnode-2.2.10}/TRADEMARKS.md +21 -21
  14. {neuralnode-2.2.9 → neuralnode-2.2.10}/docs/documentation.md +263 -262
  15. {neuralnode-2.2.9 → neuralnode-2.2.10}/docs/replica_voice_ids.csv +21 -21
  16. {neuralnode-2.2.9 → neuralnode-2.2.10}/docs/replica_voice_ids.md +41 -41
  17. {neuralnode-2.2.9 → neuralnode-2.2.10}/docs/telegram_guide.md +125 -125
  18. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/agent_with_tools.py +82 -82
  19. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/basic_chat.py +36 -36
  20. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/01_basic_usage.py +21 -21
  21. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/02_horus_lens.py +16 -16
  22. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/03_one_liner.py +17 -17
  23. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/04_custom_cache.py +17 -17
  24. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/05_4bit_quantization.py +20 -20
  25. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/06_8bit_quantization.py +17 -17
  26. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/07_multi_gpu.py +15 -15
  27. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/08_flash_attention.py +16 -16
  28. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/09_data_types.py +26 -26
  29. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/10_generation_params.py +34 -34
  30. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/11_streaming.py +13 -13
  31. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/12_chat_templates.py +22 -22
  32. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/13_offline_mode.py +14 -14
  33. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/14_force_download.py +14 -14
  34. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/15_model_info.py +24 -24
  35. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/16_cpu_offloading.py +17 -17
  36. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/17_cpu_only.py +16 -16
  37. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/18_production_setup.py +43 -43
  38. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/19_gguf_4bit.py +14 -14
  39. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/20_gguf_5bit.py +13 -13
  40. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/21_gguf_6bit.py +13 -13
  41. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/22_gguf_8bit.py +13 -13
  42. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/23_gguf_16bit.py +14 -14
  43. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/24_list_models.py +26 -26
  44. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/25_interactive_chat.py +53 -53
  45. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/26_horus_hiero.py +16 -16
  46. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_codes_camples/README.md +70 -70
  47. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_download_guide.py +36 -36
  48. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_examples.py +257 -257
  49. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_tq_ready_gguf.py +61 -61
  50. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/horus_transformers_features.py +512 -512
  51. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/local_models.py +107 -107
  52. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/neuralnode_v21_complete_demo.py +21 -21
  53. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/openclaw_demo.py +106 -106
  54. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/shade_model_with_tools.py +23 -23
  55. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/telegram_bot_demo.py +37 -37
  56. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/thinking_mode_example.py +231 -231
  57. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/tts_demo.py +26 -26
  58. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/turboquant_example.py +38 -38
  59. {neuralnode-2.2.9 → neuralnode-2.2.10}/examples/v3_features.py +35 -35
  60. neuralnode-2.2.10/media/neuralnode-dark-transparent.png +0 -0
  61. {neuralnode-2.2.9 → neuralnode-2.2.10}/pyproject.toml +269 -269
  62. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/__init__.py +884 -884
  63. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/agents/__init__.py +30 -30
  64. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/agents/agents.py +906 -906
  65. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/agents/base.py +233 -233
  66. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/agents/thinking.py +162 -162
  67. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/chains/__init__.py +629 -629
  68. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/config/__init__.py +241 -241
  69. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/core/__init__.py +472 -472
  70. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/core/openai_blocker.py +29 -29
  71. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/diagnostics/__init__.py +782 -782
  72. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/integrations/__init__.py +25 -25
  73. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/integrations/discord.py +193 -193
  74. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/integrations/openclaw.py +656 -656
  75. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/integrations/slack.py +181 -181
  76. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/integrations/telegram.py +689 -689
  77. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/__init__.py +13 -13
  78. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/advanced.py +508 -508
  79. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/conversation.py +148 -148
  80. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/file.py +121 -121
  81. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/sliding.py +85 -85
  82. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/memory/summary.py +131 -131
  83. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/prompts/__init__.py +703 -703
  84. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/__init__.py +342 -342
  85. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/base.py +383 -383
  86. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/__init__.py +60 -60
  87. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/ai21.py +79 -79
  88. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/anthropic.py +152 -152
  89. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/bedrock.py +116 -116
  90. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/cohere.py +123 -123
  91. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/deepseek.py +126 -126
  92. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/fireworks.py +84 -84
  93. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/google.py +167 -167
  94. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/groq.py +114 -114
  95. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/mistral.py +120 -120
  96. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/openai.py +302 -302
  97. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/perplexity.py +94 -94
  98. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/together.py +124 -124
  99. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/chat/vertex.py +104 -104
  100. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/embeddings.py +1176 -1176
  101. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/hfhub.py +237 -237
  102. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/horus.py +2774 -2774
  103. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/image_generation.py +135 -135
  104. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/local/__init__.py +319 -319
  105. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/local_providers.py +1907 -1907
  106. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/text_generation.py +1174 -1174
  107. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/providers/universal_local.py +750 -750
  108. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/rag/__init__.py +988 -988
  109. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/reasoning/__init__.py +679 -679
  110. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/replica.py +225 -225
  111. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/speech/__init__.py +479 -479
  112. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/thinking.py +380 -380
  113. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/__init__.py +54 -54
  114. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/advanced.py +758 -758
  115. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/multisearch.py +612 -612
  116. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/system/__init__.py +248 -248
  117. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/system/operations.py +471 -471
  118. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tools/web/__init__.py +261 -261
  119. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/tts/__init__.py +445 -445
  120. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/turboquant.py +552 -552
  121. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/utils/__init__.py +5 -5
  122. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/utils/dependencies.py +89 -89
  123. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/utils/logger.py +277 -277
  124. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/utils/metrics.py +220 -220
  125. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/vectorstores/__init__.py +871 -871
  126. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/vision/__init__.py +192 -192
  127. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/neuralnode/voice.py +82 -82
  128. {neuralnode-2.2.9 → neuralnode-2.2.10}/src/nn/__init__.py +6 -6
  129. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_agents_basic.py +78 -78
  130. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_hfhub.py +297 -297
  131. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_image_generation.py +78 -78
  132. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_memory.py +39 -39
  133. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_openclaw.py +225 -225
  134. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_provider_capabilities.py +90 -90
  135. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_providers_mocked.py +191 -191
  136. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_rag.py +73 -73
  137. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_refactoring.py +38 -38
  138. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_release_readiness.py +50 -50
  139. {neuralnode-2.2.9 → neuralnode-2.2.10}/tests/test_voice.py +146 -146
  140. neuralnode-2.2.9/README.md +0 -470
  141. {neuralnode-2.2.9 → neuralnode-2.2.10}/.github/workflows/publish.yml +0 -0
  142. {neuralnode-2.2.9 → neuralnode-2.2.10}/docs/assets/neuralnode-logo-transparent.png +0 -0
  143. {neuralnode-2.2.9 → neuralnode-2.2.10}/media/neuralnode.png +0 -0
@@ -1,22 +1,22 @@
1
- # NeuralNode Environment Configuration
2
- # Copy this file to .env and fill in your API keys
3
-
4
- # OpenAI Configuration
5
- OPENAI_API_KEY=sk-your-openai-api-key-here
6
- OPENAI_BASE_URL=https://api.openai.com/v1
7
-
8
- # Anthropic Configuration
9
- ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key-here
10
-
11
- # Google (Gemini) Configuration
12
- GOOGLE_API_KEY=your-google-api-key-here
13
-
14
- # Ollama Configuration (for local models)
15
- # No API key needed, just ensure Ollama is running
16
- OLLAMA_BASE_URL=http://localhost:11434
17
-
18
- # NeuralNode Settings
19
- NEURALNODE_DEFAULT_PROVIDER=auto
20
- NEURALNODE_MEMORY_ENABLED=true
21
- NEURALNODE_SAFE_MODE=true
22
- NEURALNODE_LOG_LEVEL=INFO
1
+ # NeuralNode Environment Configuration
2
+ # Copy this file to .env and fill in your API keys
3
+
4
+ # OpenAI Configuration
5
+ OPENAI_API_KEY=sk-your-openai-api-key-here
6
+ OPENAI_BASE_URL=https://api.openai.com/v1
7
+
8
+ # Anthropic Configuration
9
+ ANTHROPIC_API_KEY=sk-ant-your-anthropic-api-key-here
10
+
11
+ # Google (Gemini) Configuration
12
+ GOOGLE_API_KEY=your-google-api-key-here
13
+
14
+ # Ollama Configuration (for local models)
15
+ # No API key needed, just ensure Ollama is running
16
+ OLLAMA_BASE_URL=http://localhost:11434
17
+
18
+ # NeuralNode Settings
19
+ NEURALNODE_DEFAULT_PROVIDER=auto
20
+ NEURALNODE_MEMORY_ENABLED=true
21
+ NEURALNODE_SAFE_MODE=true
22
+ NEURALNODE_LOG_LEVEL=INFO
@@ -1,15 +1,15 @@
1
- ## Summary
2
-
3
- Describe the problem and the change made.
4
-
5
- ## Validation
6
-
7
- - [ ] I ran the relevant tests and checks.
8
- - [ ] I added or updated tests where appropriate.
9
- - [ ] I did not include secrets, credentials, or private data.
10
- - [ ] I have read and agree to [TOKENAI_CLA.md](../TOKENAI_CLA.md).
11
- - [ ] I have identified any third-party code, data, or assets included in this PR.
12
-
13
- ## Notes for review
14
-
15
- Add compatibility notes, migration details, or known limitations here.
1
+ ## Summary
2
+
3
+ Describe the problem and the change made.
4
+
5
+ ## Validation
6
+
7
+ - [ ] I ran the relevant tests and checks.
8
+ - [ ] I added or updated tests where appropriate.
9
+ - [ ] I did not include secrets, credentials, or private data.
10
+ - [ ] I have read and agree to [TOKENAI_CLA.md](../TOKENAI_CLA.md).
11
+ - [ ] I have identified any third-party code, data, or assets included in this PR.
12
+
13
+ ## Notes for review
14
+
15
+ Add compatibility notes, migration details, or known limitations here.
@@ -1,86 +1,86 @@
1
- name: Tests
2
-
3
- on:
4
- push:
5
- branches: [ main, develop ]
6
- pull_request:
7
- branches: [ main ]
8
-
9
- jobs:
10
- build:
11
- runs-on: ubuntu-24.04
12
- steps:
13
- - uses: actions/checkout@v7
14
-
15
- - name: Set up Python
16
- uses: actions/setup-python@v7
17
- with:
18
- python-version: "3.12"
19
-
20
- - name: Install build tools
21
- run: python -m pip install --upgrade build twine
22
-
23
- - name: Build source distribution and wheel
24
- run: python -m build --outdir .ci-dist
25
-
26
- - name: Validate package metadata
27
- run: python -m twine check .ci-dist/*
28
-
29
- - name: Install wheel and verify package version
30
- run: |
31
- python -m pip install --force-reinstall .ci-dist/*.whl
32
- python -c "import neuralnode; assert neuralnode.__version__ == '2.2.9'; print(neuralnode.__version__)"
33
-
34
- test:
35
- # Python 3.9 is no longer available on the newest Ubuntu runner image.
36
- runs-on: ubuntu-24.04
37
- strategy:
38
- matrix:
39
- python-version: ["3.9", "3.10", "3.11", "3.12"]
40
-
41
- steps:
42
- - uses: actions/checkout@v7
43
-
44
- - name: Set up Python ${{ matrix.python-version }}
45
- uses: actions/setup-python@v7
46
- with:
47
- python-version: ${{ matrix.python-version }}
48
-
49
- - name: Install dependencies
50
- run: |
51
- python -m pip install --upgrade pip
52
- pip install -e ".[dev]"
53
-
54
- - name: Run tests
55
- run: |
56
- pytest tests/ -v --cov=src/neuralnode --cov-report=xml --cov-report=term
57
-
58
- - name: Upload coverage to Codecov
59
- uses: codecov/codecov-action@v7
60
- with:
61
- files: ./coverage.xml
62
- flags: unittests
63
- name: codecov-umbrella
64
-
65
- lint:
66
- runs-on: ubuntu-24.04
67
- steps:
68
- - uses: actions/checkout@v7
69
-
70
- - name: Set up Python
71
- uses: actions/setup-python@v7
72
- with:
73
- python-version: "3.11"
74
-
75
- - name: Install dependencies
76
- run: |
77
- python -m pip install --upgrade pip
78
- pip install black ruff mypy
79
-
80
- - name: Check formatting with black
81
- run: black --check src/neuralnode
82
-
83
- # The legacy tree has broad style/type debt; keep CI focused on undefined
84
- # names while that debt is addressed incrementally.
85
- - name: Check undefined names with ruff
86
- run: ruff check src/neuralnode --select F821
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-24.04
12
+ steps:
13
+ - uses: actions/checkout@v7
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v7
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Install build tools
21
+ run: python -m pip install --upgrade build twine
22
+
23
+ - name: Build source distribution and wheel
24
+ run: python -m build --outdir .ci-dist
25
+
26
+ - name: Validate package metadata
27
+ run: python -m twine check .ci-dist/*
28
+
29
+ - name: Install wheel and verify package version
30
+ run: |
31
+ python -m pip install --force-reinstall .ci-dist/*.whl
32
+ python -c "import neuralnode; assert neuralnode.__version__ == '2.2.10'; print(neuralnode.__version__)"
33
+
34
+ test:
35
+ # Python 3.9 is no longer available on the newest Ubuntu runner image.
36
+ runs-on: ubuntu-24.04
37
+ strategy:
38
+ matrix:
39
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
40
+
41
+ steps:
42
+ - uses: actions/checkout@v7
43
+
44
+ - name: Set up Python ${{ matrix.python-version }}
45
+ uses: actions/setup-python@v7
46
+ with:
47
+ python-version: ${{ matrix.python-version }}
48
+
49
+ - name: Install dependencies
50
+ run: |
51
+ python -m pip install --upgrade pip
52
+ pip install -e ".[dev]"
53
+
54
+ - name: Run tests
55
+ run: |
56
+ pytest tests/ -v --cov=src/neuralnode --cov-report=xml --cov-report=term
57
+
58
+ - name: Upload coverage to Codecov
59
+ uses: codecov/codecov-action@v7
60
+ with:
61
+ files: ./coverage.xml
62
+ flags: unittests
63
+ name: codecov-umbrella
64
+
65
+ lint:
66
+ runs-on: ubuntu-24.04
67
+ steps:
68
+ - uses: actions/checkout@v7
69
+
70
+ - name: Set up Python
71
+ uses: actions/setup-python@v7
72
+ with:
73
+ python-version: "3.11"
74
+
75
+ - name: Install dependencies
76
+ run: |
77
+ python -m pip install --upgrade pip
78
+ pip install black ruff mypy
79
+
80
+ - name: Check formatting with black
81
+ run: black --check src/neuralnode
82
+
83
+ # The legacy tree has broad style/type debt; keep CI focused on undefined
84
+ # names while that debt is addressed incrementally.
85
+ - name: Check undefined names with ruff
86
+ run: ruff check src/neuralnode --select F821
@@ -1,41 +1,41 @@
1
- # Python
2
- __pycache__/
3
- *.pyc
4
- *.pyo
5
- *.pyd
6
- *.egg-info/
7
- dist/
8
- release-dist/
9
- .release-dist*/
10
- .ci-dist/
11
- .ci-dist-verify*/
12
- .install-check*/
13
- build/
14
- .eggs/
15
-
16
- # Virtual envs
17
- .venv/
18
- venv/
19
- env/
20
-
21
- # Local credentials and environment files
22
- .env
23
- .env.*
24
- !.env.example
25
- **/.env
26
- **/.env.*
27
- !**/.env.example
28
-
29
- # Temp / outputs
30
- outputs/
31
- .tmp_*
32
- *.gguf.tmp
33
-
34
- # Test caches
35
- .pytest_cache/
36
- .mypy_cache/
37
- .ruff_cache/
38
-
39
- # OS
40
- .DS_Store
41
- Thumbs.db
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ *.pyo
5
+ *.pyd
6
+ *.egg-info/
7
+ dist/
8
+ release-dist/
9
+ .release-dist*/
10
+ .ci-dist/
11
+ .ci-dist-verify*/
12
+ .install-check*/
13
+ build/
14
+ .eggs/
15
+
16
+ # Virtual envs
17
+ .venv/
18
+ venv/
19
+ env/
20
+
21
+ # Local credentials and environment files
22
+ .env
23
+ .env.*
24
+ !.env.example
25
+ **/.env
26
+ **/.env.*
27
+ !**/.env.example
28
+
29
+ # Temp / outputs
30
+ outputs/
31
+ .tmp_*
32
+ *.gguf.tmp
33
+
34
+ # Test caches
35
+ .pytest_cache/
36
+ .mypy_cache/
37
+ .ruff_cache/
38
+
39
+ # OS
40
+ .DS_Store
41
+ Thumbs.db
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to NeuralNode are documented here.
4
4
 
5
+ ## 2.2.10 — 2026-11-01
6
+
7
+ ### Documentation and branding
8
+
9
+ - Added the dark NeuralNode wordmark as a transparent PNG for reliable display
10
+ on light PyPI pages and other light backgrounds.
11
+ - Updated the README image reference to the published transparent asset.
12
+
5
13
  ## 2.2.9 — 2026-11-01
6
14
 
7
15
  ### Integrations and runtime cleanup
@@ -1,40 +1,40 @@
1
- # Contributing to NeuralNode
2
-
3
- Thank you for helping improve NeuralNode. Contributions may be submitted by
4
- opening an issue, creating a fork, or opening a pull request.
5
-
6
- ## Pull request workflow
7
-
8
- 1. Create a focused branch or fork.
9
- 2. Explain the problem and the proposed change.
10
- 3. Include or update tests when appropriate.
11
- 4. Run the relevant checks locally.
12
- 5. Open a pull request against the default branch.
13
-
14
- All pull requests are subject to review by TokenAI. Opening a pull request
15
- does not guarantee acceptance or merge. TokenAI may accept, request changes,
16
- reject, close, or remove a proposed contribution at its sole discretion.
17
-
18
- ## Contribution terms
19
-
20
- By submitting a pull request, patch, issue attachment, or other contribution to
21
- this repository, you confirm that you have read and agree to the
22
- [TokenAI Contributor License Agreement](TOKENAI_CLA.md), and that:
23
-
24
- - you have the legal right to submit the contribution;
25
- - the contribution is your original work or you have permission to submit it;
26
- - you have identified any third-party code, data, or assets included in it;
27
- - you have not knowingly included secrets, credentials, or private data; and
28
- - you agree to the copyright assignment and license grant in
29
- [TOKENAI_CLA.md](TOKENAI_CLA.md).
30
-
31
- ## Attribution
32
-
33
- Contributions become part of a project owned and maintained by TokenAI. Do not
34
- remove existing NeuralNode or TokenAI notices. Derivative products and forks
35
- must continue to follow [LICENSE](LICENSE) and [TRADEMARKS.md](TRADEMARKS.md).
36
-
37
- ## Code of conduct
38
-
39
- Be respectful, constructive, and specific. Harassment, discrimination,
40
- deliberate disclosure of secrets, and malicious code are not acceptable.
1
+ # Contributing to NeuralNode
2
+
3
+ Thank you for helping improve NeuralNode. Contributions may be submitted by
4
+ opening an issue, creating a fork, or opening a pull request.
5
+
6
+ ## Pull request workflow
7
+
8
+ 1. Create a focused branch or fork.
9
+ 2. Explain the problem and the proposed change.
10
+ 3. Include or update tests when appropriate.
11
+ 4. Run the relevant checks locally.
12
+ 5. Open a pull request against the default branch.
13
+
14
+ All pull requests are subject to review by TokenAI. Opening a pull request
15
+ does not guarantee acceptance or merge. TokenAI may accept, request changes,
16
+ reject, close, or remove a proposed contribution at its sole discretion.
17
+
18
+ ## Contribution terms
19
+
20
+ By submitting a pull request, patch, issue attachment, or other contribution to
21
+ this repository, you confirm that you have read and agree to the
22
+ [TokenAI Contributor License Agreement](TOKENAI_CLA.md), and that:
23
+
24
+ - you have the legal right to submit the contribution;
25
+ - the contribution is your original work or you have permission to submit it;
26
+ - you have identified any third-party code, data, or assets included in it;
27
+ - you have not knowingly included secrets, credentials, or private data; and
28
+ - you agree to the copyright assignment and license grant in
29
+ [TOKENAI_CLA.md](TOKENAI_CLA.md).
30
+
31
+ ## Attribution
32
+
33
+ Contributions become part of a project owned and maintained by TokenAI. Do not
34
+ remove existing NeuralNode or TokenAI notices. Derivative products and forks
35
+ must continue to follow [LICENSE](LICENSE) and [TRADEMARKS.md](TRADEMARKS.md).
36
+
37
+ ## Code of conduct
38
+
39
+ Be respectful, constructive, and specific. Harassment, discrimination,
40
+ deliberate disclosure of secrets, and malicious code are not acceptable.