IncludeCPP 4.6.6__tar.gz → 4.6.9__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 (77) hide show
  1. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/PKG-INFO +39 -1
  2. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/SOURCES.txt +2 -0
  3. {includecpp-4.6.6 → includecpp-4.6.9}/PKG-INFO +39 -1
  4. {includecpp-4.6.6 → includecpp-4.6.9}/README.md +38 -0
  5. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/CHANGELOG.md +19 -0
  6. includecpp-4.6.9/includecpp/__init__.py +105 -0
  7. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/cli/commands.py +793 -2
  8. includecpp-4.6.9/includecpp/core/homeserver.py +860 -0
  9. {includecpp-4.6.6 → includecpp-4.6.9}/pyproject.toml +1 -1
  10. includecpp-4.6.6/includecpp/__init__.py +0 -59
  11. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/dependency_links.txt +0 -0
  12. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/entry_points.txt +0 -0
  13. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/requires.txt +0 -0
  14. {includecpp-4.6.6 → includecpp-4.6.9}/IncludeCPP.egg-info/top_level.txt +0 -0
  15. {includecpp-4.6.6 → includecpp-4.6.9}/LICENSE +0 -0
  16. {includecpp-4.6.6 → includecpp-4.6.9}/MANIFEST.in +0 -0
  17. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/DOCUMENTATION.md +0 -0
  18. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/__init__.pyi +0 -0
  19. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/__main__.py +0 -0
  20. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/cli/__init__.py +0 -0
  21. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/cli/config_parser.py +0 -0
  22. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/__init__.py +0 -0
  23. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/ai_integration.py +0 -0
  24. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/build_manager.py +0 -0
  25. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cpp_api.py +0 -0
  26. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cpp_api.pyi +0 -0
  27. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cpp_api_extensions.pyi +0 -0
  28. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cppy_converter.py +0 -0
  29. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/CSSL_DOCUMENTATION.md +0 -0
  30. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/CSSL_DOCUMENTATION_NEW.md +0 -0
  31. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/__init__.py +0 -0
  32. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/build/api.pyd +0 -0
  33. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/build/cssl_core.pyi +0 -0
  34. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/build/libgcc_s_seh-1.dll +0 -0
  35. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/build/libstdc++-6.dll +0 -0
  36. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/build/libwinpthread-1.dll +0 -0
  37. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/cssl_core.cp +0 -0
  38. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cpp/cssl_lexer.hpp +0 -0
  39. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_builtins.py +0 -0
  40. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_builtins.pyi +0 -0
  41. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_compiler.py +0 -0
  42. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_events.py +0 -0
  43. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_languages.py +0 -0
  44. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_modules.py +0 -0
  45. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_optimizer.py +0 -0
  46. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_parser.py +0 -0
  47. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_runtime.py +0 -0
  48. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_syntax.py +0 -0
  49. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl/cssl_types.py +0 -0
  50. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl_bridge.py +0 -0
  51. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/cssl_bridge.pyi +0 -0
  52. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/error_catalog.py +0 -0
  53. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/error_formatter.py +0 -0
  54. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/exceptions.py +0 -0
  55. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/path_discovery.py +0 -0
  56. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/project_ui.py +0 -0
  57. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/core/settings_ui.py +0 -0
  58. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/generator/__init__.py +0 -0
  59. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/generator/parser.cpp +0 -0
  60. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/generator/parser.h +0 -0
  61. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/generator/type_resolver.cpp +0 -0
  62. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/generator/type_resolver.h +0 -0
  63. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/py.typed +0 -0
  64. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/templates/cpp.proj.template +0 -0
  65. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/__init__.py +0 -0
  66. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/__init__.py +0 -0
  67. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/extension.js +0 -0
  68. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/images/cssl.png +0 -0
  69. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/images/cssl_pl.png +0 -0
  70. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/language-configuration.json +0 -0
  71. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/package.json +0 -0
  72. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/snippets/cssl.snippets.json +0 -0
  73. {includecpp-4.6.6 → includecpp-4.6.9}/includecpp/vscode/cssl/syntaxes/cssl.tmLanguage.json +0 -0
  74. {includecpp-4.6.6 → includecpp-4.6.9}/requirements.txt +0 -0
  75. {includecpp-4.6.6 → includecpp-4.6.9}/setup.cfg +0 -0
  76. {includecpp-4.6.6 → includecpp-4.6.9}/setup.py +0 -0
  77. {includecpp-4.6.6 → includecpp-4.6.9}/tests/test_multilang.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: IncludeCPP
3
- Version: 4.6.6
3
+ Version: 4.6.9
4
4
  Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
5
  Home-page: https://github.com/liliassg/IncludeCPP
6
6
  Author: Lilias Hatterscheidt
@@ -179,6 +179,11 @@ includecpp rebuild --clean
179
179
  | `rebuild --fast` | Fast incremental build |
180
180
  | `rebuild --clean` | Full clean rebuild |
181
181
  | `get <name>` | Show module's API |
182
+ | `server start` | Start HomeServer |
183
+ | `server stop` | Stop HomeServer |
184
+ | `server upload` | Upload file/project |
185
+ | `server download` | Download file/project |
186
+ | `server list` | List stored items |
182
187
 
183
188
  ---
184
189
 
@@ -247,6 +252,39 @@ includecpp <command> --help
247
252
 
248
253
  ---
249
254
 
255
+ ## HomeServer
256
+
257
+ Store and manage your modules, projects and files locally with the HomeServer:
258
+
259
+ ```bash
260
+ # Install and start the server (one-time setup)
261
+ includecpp server install
262
+
263
+ # Manual start/stop
264
+ includecpp server start
265
+ includecpp server stop
266
+ includecpp server status
267
+
268
+ # Upload files or projects
269
+ includecpp server upload mymodule ./include/mymodule.cpp
270
+ includecpp server upload myproject ./myproject --project
271
+
272
+ # List, download, delete
273
+ includecpp server list
274
+ includecpp server download mymodule ./backup/
275
+ includecpp server delete mymodule
276
+
277
+ # Change port (default: 2007)
278
+ includecpp server port 3000
279
+
280
+ # Remove HomeServer completely
281
+ includecpp server deinstall
282
+ ```
283
+
284
+ The server runs silently in the background and can auto-start with Windows.
285
+
286
+ ---
287
+
250
288
  ## Experimental Features
251
289
 
252
290
  IncludeCPP also includes experimental features that are still in development:
@@ -25,6 +25,7 @@ setup.py
25
25
  ./includecpp/core/error_catalog.py
26
26
  ./includecpp/core/error_formatter.py
27
27
  ./includecpp/core/exceptions.py
28
+ ./includecpp/core/homeserver.py
28
29
  ./includecpp/core/path_discovery.py
29
30
  ./includecpp/core/project_ui.py
30
31
  ./includecpp/core/settings_ui.py
@@ -91,6 +92,7 @@ includecpp/core/cssl_bridge.pyi
91
92
  includecpp/core/error_catalog.py
92
93
  includecpp/core/error_formatter.py
93
94
  includecpp/core/exceptions.py
95
+ includecpp/core/homeserver.py
94
96
  includecpp/core/path_discovery.py
95
97
  includecpp/core/project_ui.py
96
98
  includecpp/core/settings_ui.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: IncludeCPP
3
- Version: 4.6.6
3
+ Version: 4.6.9
4
4
  Summary: Professional C++ Python bindings with type-generic templates, pystubs and native threading
5
5
  Home-page: https://github.com/liliassg/IncludeCPP
6
6
  Author: Lilias Hatterscheidt
@@ -179,6 +179,11 @@ includecpp rebuild --clean
179
179
  | `rebuild --fast` | Fast incremental build |
180
180
  | `rebuild --clean` | Full clean rebuild |
181
181
  | `get <name>` | Show module's API |
182
+ | `server start` | Start HomeServer |
183
+ | `server stop` | Stop HomeServer |
184
+ | `server upload` | Upload file/project |
185
+ | `server download` | Download file/project |
186
+ | `server list` | List stored items |
182
187
 
183
188
  ---
184
189
 
@@ -247,6 +252,39 @@ includecpp <command> --help
247
252
 
248
253
  ---
249
254
 
255
+ ## HomeServer
256
+
257
+ Store and manage your modules, projects and files locally with the HomeServer:
258
+
259
+ ```bash
260
+ # Install and start the server (one-time setup)
261
+ includecpp server install
262
+
263
+ # Manual start/stop
264
+ includecpp server start
265
+ includecpp server stop
266
+ includecpp server status
267
+
268
+ # Upload files or projects
269
+ includecpp server upload mymodule ./include/mymodule.cpp
270
+ includecpp server upload myproject ./myproject --project
271
+
272
+ # List, download, delete
273
+ includecpp server list
274
+ includecpp server download mymodule ./backup/
275
+ includecpp server delete mymodule
276
+
277
+ # Change port (default: 2007)
278
+ includecpp server port 3000
279
+
280
+ # Remove HomeServer completely
281
+ includecpp server deinstall
282
+ ```
283
+
284
+ The server runs silently in the background and can auto-start with Windows.
285
+
286
+ ---
287
+
250
288
  ## Experimental Features
251
289
 
252
290
  IncludeCPP also includes experimental features that are still in development:
@@ -144,6 +144,11 @@ includecpp rebuild --clean
144
144
  | `rebuild --fast` | Fast incremental build |
145
145
  | `rebuild --clean` | Full clean rebuild |
146
146
  | `get <name>` | Show module's API |
147
+ | `server start` | Start HomeServer |
148
+ | `server stop` | Stop HomeServer |
149
+ | `server upload` | Upload file/project |
150
+ | `server download` | Download file/project |
151
+ | `server list` | List stored items |
147
152
 
148
153
  ---
149
154
 
@@ -212,6 +217,39 @@ includecpp <command> --help
212
217
 
213
218
  ---
214
219
 
220
+ ## HomeServer
221
+
222
+ Store and manage your modules, projects and files locally with the HomeServer:
223
+
224
+ ```bash
225
+ # Install and start the server (one-time setup)
226
+ includecpp server install
227
+
228
+ # Manual start/stop
229
+ includecpp server start
230
+ includecpp server stop
231
+ includecpp server status
232
+
233
+ # Upload files or projects
234
+ includecpp server upload mymodule ./include/mymodule.cpp
235
+ includecpp server upload myproject ./myproject --project
236
+
237
+ # List, download, delete
238
+ includecpp server list
239
+ includecpp server download mymodule ./backup/
240
+ includecpp server delete mymodule
241
+
242
+ # Change port (default: 2007)
243
+ includecpp server port 3000
244
+
245
+ # Remove HomeServer completely
246
+ includecpp server deinstall
247
+ ```
248
+
249
+ The server runs silently in the background and can auto-start with Windows.
250
+
251
+ ---
252
+
215
253
  ## Experimental Features
216
254
 
217
255
  IncludeCPP also includes experimental features that are still in development:
@@ -1,5 +1,24 @@
1
1
  # IncludeCPP Changelog
2
2
 
3
+ ## v4.6.7 (2026-01-14)
4
+
5
+ ### New Features
6
+ - **HomeServer**: Local storage server for modules, projects and files
7
+ - `includecpp server install` - Install and auto-start HomeServer
8
+ - `includecpp server start/stop` - Manual server control
9
+ - `includecpp server status` - Check server status
10
+ - `includecpp server upload/download` - File and project management
11
+ - `includecpp server list` - List stored items
12
+ - `includecpp server delete` - Remove items
13
+ - `includecpp server port` - Change server port
14
+ - `includecpp server deinstall` - Remove HomeServer completely
15
+ - Server runs in background (no terminal window)
16
+ - Auto-start support on Windows
17
+ - SQLite database for metadata storage
18
+ - Default port: 2007
19
+
20
+ ---
21
+
3
22
  ## v4.6.6 (2026-01-14)
4
23
 
5
24
  ### New Features
@@ -0,0 +1,105 @@
1
+ from .core.cpp_api import CppApi
2
+ from .core import cssl_bridge as CSSL
3
+ import warnings
4
+ import os
5
+ import sys
6
+ from pathlib import Path
7
+
8
+ __version__ = "4.6.9"
9
+ __all__ = ["CppApi", "CSSL"]
10
+
11
+ # Module-level cache for C++ modules
12
+ _api_instance = None
13
+ _loaded_modules = {}
14
+ _frozen_api = None # Cached API module for frozen (PyInstaller) mode
15
+
16
+ def _is_frozen():
17
+ """Check if running in a frozen PyInstaller bundle."""
18
+ return getattr(sys, 'frozen', False)
19
+
20
+ def _get_frozen_api():
21
+ """Get the bundled API module when running frozen."""
22
+ global _frozen_api
23
+ if _frozen_api is None:
24
+ try:
25
+ import api
26
+ _frozen_api = api
27
+ except ImportError:
28
+ _frozen_api = False # Mark as not available
29
+ return _frozen_api if _frozen_api else None
30
+
31
+ def _get_api():
32
+ """Get or create singleton CppApi instance.
33
+
34
+ Checks INCLUDECPP_PROJECT env var for project path when running
35
+ from a different directory (e.g., via 'includecpp server run').
36
+ """
37
+ global _api_instance
38
+ if _api_instance is None:
39
+ # Check for project path from environment (set by 'server run -p')
40
+ project_path = os.environ.get('INCLUDECPP_PROJECT')
41
+ if project_path:
42
+ config_path = Path(project_path) / 'cpp.proj'
43
+ if config_path.exists():
44
+ _api_instance = CppApi(config_path=config_path)
45
+ else:
46
+ _api_instance = CppApi()
47
+ else:
48
+ _api_instance = CppApi()
49
+ return _api_instance
50
+
51
+ def __getattr__(name: str):
52
+ """Enable: from includecpp import fast_list
53
+
54
+ This hook is called when Python cannot find an attribute in this module.
55
+ It allows dynamic C++ module loading via the import system.
56
+ """
57
+ if name.startswith('_'):
58
+ raise AttributeError(f"module 'includecpp' has no attribute '{name}'")
59
+
60
+ if name in _loaded_modules:
61
+ return _loaded_modules[name]
62
+
63
+ # In frozen mode (PyInstaller), try to get module from bundled api
64
+ if _is_frozen():
65
+ frozen_api = _get_frozen_api()
66
+ if frozen_api and hasattr(frozen_api, name):
67
+ module = getattr(frozen_api, name)
68
+ _loaded_modules[name] = module
69
+ return module
70
+ # If not found in frozen api, raise helpful error
71
+ raise AttributeError(
72
+ f"Module '{name}' not found in bundled executable. "
73
+ f"Ensure it was included during build with 'includecpp --make-exe'."
74
+ )
75
+
76
+ # Normal mode: use CppApi
77
+ api = _get_api()
78
+
79
+ if name not in api.registry:
80
+ available = list(api.registry.keys())
81
+ raise AttributeError(
82
+ f"Module '{name}' not found. "
83
+ f"Available: {available}. "
84
+ f"Run 'includecpp rebuild' first."
85
+ )
86
+
87
+ if api.need_update(name):
88
+ warnings.warn(
89
+ f"Module '{name}' source files changed. "
90
+ f"Run 'includecpp rebuild' to update.",
91
+ UserWarning
92
+ )
93
+
94
+ module = api.include(name)
95
+ _loaded_modules[name] = module
96
+ return module
97
+
98
+ def __dir__():
99
+ """List available attributes including C++ modules."""
100
+ base = ['CppApi', 'CSSL', '__version__']
101
+ try:
102
+ api = _get_api()
103
+ return sorted(set(base + list(api.registry.keys())))
104
+ except Exception:
105
+ return base