tnfr 3.0.3__py3-none-any.whl → 8.5.0__py3-none-any.whl

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.

Potentially problematic release.


This version of tnfr might be problematic. Click here for more details.

Files changed (360) hide show
  1. tnfr/__init__.py +375 -56
  2. tnfr/__init__.pyi +33 -0
  3. tnfr/_compat.py +10 -0
  4. tnfr/_generated_version.py +34 -0
  5. tnfr/_version.py +49 -0
  6. tnfr/_version.pyi +7 -0
  7. tnfr/alias.py +723 -0
  8. tnfr/alias.pyi +108 -0
  9. tnfr/backends/__init__.py +354 -0
  10. tnfr/backends/jax_backend.py +173 -0
  11. tnfr/backends/numpy_backend.py +238 -0
  12. tnfr/backends/optimized_numpy.py +420 -0
  13. tnfr/backends/torch_backend.py +408 -0
  14. tnfr/cache.py +171 -0
  15. tnfr/cache.pyi +13 -0
  16. tnfr/cli/__init__.py +110 -0
  17. tnfr/cli/__init__.pyi +26 -0
  18. tnfr/cli/arguments.py +489 -0
  19. tnfr/cli/arguments.pyi +29 -0
  20. tnfr/cli/execution.py +914 -0
  21. tnfr/cli/execution.pyi +70 -0
  22. tnfr/cli/interactive_validator.py +614 -0
  23. tnfr/cli/utils.py +51 -0
  24. tnfr/cli/utils.pyi +7 -0
  25. tnfr/cli/validate.py +236 -0
  26. tnfr/compat/__init__.py +85 -0
  27. tnfr/compat/dataclass.py +136 -0
  28. tnfr/compat/jsonschema_stub.py +61 -0
  29. tnfr/compat/matplotlib_stub.py +73 -0
  30. tnfr/compat/numpy_stub.py +155 -0
  31. tnfr/config/__init__.py +224 -0
  32. tnfr/config/__init__.pyi +10 -0
  33. tnfr/config/constants.py +104 -0
  34. tnfr/config/constants.pyi +12 -0
  35. tnfr/config/defaults.py +54 -0
  36. tnfr/config/defaults_core.py +212 -0
  37. tnfr/config/defaults_init.py +33 -0
  38. tnfr/config/defaults_metric.py +104 -0
  39. tnfr/config/feature_flags.py +81 -0
  40. tnfr/config/feature_flags.pyi +16 -0
  41. tnfr/config/glyph_constants.py +31 -0
  42. tnfr/config/init.py +77 -0
  43. tnfr/config/init.pyi +8 -0
  44. tnfr/config/operator_names.py +254 -0
  45. tnfr/config/operator_names.pyi +36 -0
  46. tnfr/config/physics_derivation.py +354 -0
  47. tnfr/config/presets.py +83 -0
  48. tnfr/config/presets.pyi +7 -0
  49. tnfr/config/security.py +927 -0
  50. tnfr/config/thresholds.py +114 -0
  51. tnfr/config/tnfr_config.py +498 -0
  52. tnfr/constants/__init__.py +92 -0
  53. tnfr/constants/__init__.pyi +92 -0
  54. tnfr/constants/aliases.py +33 -0
  55. tnfr/constants/aliases.pyi +27 -0
  56. tnfr/constants/init.py +33 -0
  57. tnfr/constants/init.pyi +12 -0
  58. tnfr/constants/metric.py +104 -0
  59. tnfr/constants/metric.pyi +19 -0
  60. tnfr/core/__init__.py +33 -0
  61. tnfr/core/container.py +226 -0
  62. tnfr/core/default_implementations.py +329 -0
  63. tnfr/core/interfaces.py +279 -0
  64. tnfr/dynamics/__init__.py +238 -0
  65. tnfr/dynamics/__init__.pyi +83 -0
  66. tnfr/dynamics/adaptation.py +267 -0
  67. tnfr/dynamics/adaptation.pyi +7 -0
  68. tnfr/dynamics/adaptive_sequences.py +189 -0
  69. tnfr/dynamics/adaptive_sequences.pyi +14 -0
  70. tnfr/dynamics/aliases.py +23 -0
  71. tnfr/dynamics/aliases.pyi +19 -0
  72. tnfr/dynamics/bifurcation.py +232 -0
  73. tnfr/dynamics/canonical.py +229 -0
  74. tnfr/dynamics/canonical.pyi +48 -0
  75. tnfr/dynamics/coordination.py +385 -0
  76. tnfr/dynamics/coordination.pyi +25 -0
  77. tnfr/dynamics/dnfr.py +3034 -0
  78. tnfr/dynamics/dnfr.pyi +26 -0
  79. tnfr/dynamics/dynamic_limits.py +225 -0
  80. tnfr/dynamics/feedback.py +252 -0
  81. tnfr/dynamics/feedback.pyi +24 -0
  82. tnfr/dynamics/fused_dnfr.py +454 -0
  83. tnfr/dynamics/homeostasis.py +157 -0
  84. tnfr/dynamics/homeostasis.pyi +14 -0
  85. tnfr/dynamics/integrators.py +661 -0
  86. tnfr/dynamics/integrators.pyi +36 -0
  87. tnfr/dynamics/learning.py +310 -0
  88. tnfr/dynamics/learning.pyi +33 -0
  89. tnfr/dynamics/metabolism.py +254 -0
  90. tnfr/dynamics/nbody.py +796 -0
  91. tnfr/dynamics/nbody_tnfr.py +783 -0
  92. tnfr/dynamics/propagation.py +326 -0
  93. tnfr/dynamics/runtime.py +908 -0
  94. tnfr/dynamics/runtime.pyi +77 -0
  95. tnfr/dynamics/sampling.py +36 -0
  96. tnfr/dynamics/sampling.pyi +7 -0
  97. tnfr/dynamics/selectors.py +711 -0
  98. tnfr/dynamics/selectors.pyi +85 -0
  99. tnfr/dynamics/structural_clip.py +207 -0
  100. tnfr/errors/__init__.py +37 -0
  101. tnfr/errors/contextual.py +492 -0
  102. tnfr/execution.py +223 -0
  103. tnfr/execution.pyi +45 -0
  104. tnfr/extensions/__init__.py +205 -0
  105. tnfr/extensions/__init__.pyi +18 -0
  106. tnfr/extensions/base.py +173 -0
  107. tnfr/extensions/base.pyi +35 -0
  108. tnfr/extensions/business/__init__.py +71 -0
  109. tnfr/extensions/business/__init__.pyi +11 -0
  110. tnfr/extensions/business/cookbook.py +88 -0
  111. tnfr/extensions/business/cookbook.pyi +8 -0
  112. tnfr/extensions/business/health_analyzers.py +202 -0
  113. tnfr/extensions/business/health_analyzers.pyi +9 -0
  114. tnfr/extensions/business/patterns.py +183 -0
  115. tnfr/extensions/business/patterns.pyi +8 -0
  116. tnfr/extensions/medical/__init__.py +73 -0
  117. tnfr/extensions/medical/__init__.pyi +11 -0
  118. tnfr/extensions/medical/cookbook.py +88 -0
  119. tnfr/extensions/medical/cookbook.pyi +8 -0
  120. tnfr/extensions/medical/health_analyzers.py +181 -0
  121. tnfr/extensions/medical/health_analyzers.pyi +9 -0
  122. tnfr/extensions/medical/patterns.py +163 -0
  123. tnfr/extensions/medical/patterns.pyi +8 -0
  124. tnfr/flatten.py +262 -0
  125. tnfr/flatten.pyi +21 -0
  126. tnfr/gamma.py +354 -0
  127. tnfr/gamma.pyi +36 -0
  128. tnfr/glyph_history.py +377 -0
  129. tnfr/glyph_history.pyi +35 -0
  130. tnfr/glyph_runtime.py +19 -0
  131. tnfr/glyph_runtime.pyi +8 -0
  132. tnfr/immutable.py +218 -0
  133. tnfr/immutable.pyi +36 -0
  134. tnfr/initialization.py +203 -0
  135. tnfr/initialization.pyi +65 -0
  136. tnfr/io.py +10 -0
  137. tnfr/io.pyi +13 -0
  138. tnfr/locking.py +37 -0
  139. tnfr/locking.pyi +7 -0
  140. tnfr/mathematics/__init__.py +79 -0
  141. tnfr/mathematics/backend.py +453 -0
  142. tnfr/mathematics/backend.pyi +99 -0
  143. tnfr/mathematics/dynamics.py +408 -0
  144. tnfr/mathematics/dynamics.pyi +90 -0
  145. tnfr/mathematics/epi.py +391 -0
  146. tnfr/mathematics/epi.pyi +65 -0
  147. tnfr/mathematics/generators.py +242 -0
  148. tnfr/mathematics/generators.pyi +29 -0
  149. tnfr/mathematics/metrics.py +119 -0
  150. tnfr/mathematics/metrics.pyi +16 -0
  151. tnfr/mathematics/operators.py +239 -0
  152. tnfr/mathematics/operators.pyi +59 -0
  153. tnfr/mathematics/operators_factory.py +124 -0
  154. tnfr/mathematics/operators_factory.pyi +11 -0
  155. tnfr/mathematics/projection.py +87 -0
  156. tnfr/mathematics/projection.pyi +33 -0
  157. tnfr/mathematics/runtime.py +182 -0
  158. tnfr/mathematics/runtime.pyi +64 -0
  159. tnfr/mathematics/spaces.py +256 -0
  160. tnfr/mathematics/spaces.pyi +83 -0
  161. tnfr/mathematics/transforms.py +305 -0
  162. tnfr/mathematics/transforms.pyi +62 -0
  163. tnfr/metrics/__init__.py +79 -0
  164. tnfr/metrics/__init__.pyi +20 -0
  165. tnfr/metrics/buffer_cache.py +163 -0
  166. tnfr/metrics/buffer_cache.pyi +24 -0
  167. tnfr/metrics/cache_utils.py +214 -0
  168. tnfr/metrics/coherence.py +2009 -0
  169. tnfr/metrics/coherence.pyi +129 -0
  170. tnfr/metrics/common.py +158 -0
  171. tnfr/metrics/common.pyi +35 -0
  172. tnfr/metrics/core.py +316 -0
  173. tnfr/metrics/core.pyi +13 -0
  174. tnfr/metrics/diagnosis.py +833 -0
  175. tnfr/metrics/diagnosis.pyi +86 -0
  176. tnfr/metrics/emergence.py +245 -0
  177. tnfr/metrics/export.py +179 -0
  178. tnfr/metrics/export.pyi +7 -0
  179. tnfr/metrics/glyph_timing.py +379 -0
  180. tnfr/metrics/glyph_timing.pyi +81 -0
  181. tnfr/metrics/learning_metrics.py +280 -0
  182. tnfr/metrics/learning_metrics.pyi +21 -0
  183. tnfr/metrics/phase_coherence.py +351 -0
  184. tnfr/metrics/phase_compatibility.py +349 -0
  185. tnfr/metrics/reporting.py +183 -0
  186. tnfr/metrics/reporting.pyi +25 -0
  187. tnfr/metrics/sense_index.py +1203 -0
  188. tnfr/metrics/sense_index.pyi +9 -0
  189. tnfr/metrics/trig.py +373 -0
  190. tnfr/metrics/trig.pyi +13 -0
  191. tnfr/metrics/trig_cache.py +233 -0
  192. tnfr/metrics/trig_cache.pyi +10 -0
  193. tnfr/multiscale/__init__.py +32 -0
  194. tnfr/multiscale/hierarchical.py +517 -0
  195. tnfr/node.py +763 -0
  196. tnfr/node.pyi +139 -0
  197. tnfr/observers.py +255 -130
  198. tnfr/observers.pyi +31 -0
  199. tnfr/ontosim.py +144 -137
  200. tnfr/ontosim.pyi +28 -0
  201. tnfr/operators/__init__.py +1672 -0
  202. tnfr/operators/__init__.pyi +31 -0
  203. tnfr/operators/algebra.py +277 -0
  204. tnfr/operators/canonical_patterns.py +420 -0
  205. tnfr/operators/cascade.py +267 -0
  206. tnfr/operators/cycle_detection.py +358 -0
  207. tnfr/operators/definitions.py +4108 -0
  208. tnfr/operators/definitions.pyi +78 -0
  209. tnfr/operators/grammar.py +1164 -0
  210. tnfr/operators/grammar.pyi +140 -0
  211. tnfr/operators/hamiltonian.py +710 -0
  212. tnfr/operators/health_analyzer.py +809 -0
  213. tnfr/operators/jitter.py +272 -0
  214. tnfr/operators/jitter.pyi +11 -0
  215. tnfr/operators/lifecycle.py +314 -0
  216. tnfr/operators/metabolism.py +618 -0
  217. tnfr/operators/metrics.py +2138 -0
  218. tnfr/operators/network_analysis/__init__.py +27 -0
  219. tnfr/operators/network_analysis/source_detection.py +186 -0
  220. tnfr/operators/nodal_equation.py +395 -0
  221. tnfr/operators/pattern_detection.py +660 -0
  222. tnfr/operators/patterns.py +669 -0
  223. tnfr/operators/postconditions/__init__.py +38 -0
  224. tnfr/operators/postconditions/mutation.py +236 -0
  225. tnfr/operators/preconditions/__init__.py +1226 -0
  226. tnfr/operators/preconditions/coherence.py +305 -0
  227. tnfr/operators/preconditions/dissonance.py +236 -0
  228. tnfr/operators/preconditions/emission.py +128 -0
  229. tnfr/operators/preconditions/mutation.py +580 -0
  230. tnfr/operators/preconditions/reception.py +125 -0
  231. tnfr/operators/preconditions/resonance.py +364 -0
  232. tnfr/operators/registry.py +74 -0
  233. tnfr/operators/registry.pyi +9 -0
  234. tnfr/operators/remesh.py +1809 -0
  235. tnfr/operators/remesh.pyi +26 -0
  236. tnfr/operators/structural_units.py +268 -0
  237. tnfr/operators/unified_grammar.py +105 -0
  238. tnfr/parallel/__init__.py +54 -0
  239. tnfr/parallel/auto_scaler.py +234 -0
  240. tnfr/parallel/distributed.py +384 -0
  241. tnfr/parallel/engine.py +238 -0
  242. tnfr/parallel/gpu_engine.py +420 -0
  243. tnfr/parallel/monitoring.py +248 -0
  244. tnfr/parallel/partitioner.py +459 -0
  245. tnfr/py.typed +0 -0
  246. tnfr/recipes/__init__.py +22 -0
  247. tnfr/recipes/cookbook.py +743 -0
  248. tnfr/rng.py +178 -0
  249. tnfr/rng.pyi +26 -0
  250. tnfr/schemas/__init__.py +8 -0
  251. tnfr/schemas/grammar.json +94 -0
  252. tnfr/sdk/__init__.py +107 -0
  253. tnfr/sdk/__init__.pyi +19 -0
  254. tnfr/sdk/adaptive_system.py +173 -0
  255. tnfr/sdk/adaptive_system.pyi +21 -0
  256. tnfr/sdk/builders.py +370 -0
  257. tnfr/sdk/builders.pyi +51 -0
  258. tnfr/sdk/fluent.py +1121 -0
  259. tnfr/sdk/fluent.pyi +74 -0
  260. tnfr/sdk/templates.py +342 -0
  261. tnfr/sdk/templates.pyi +41 -0
  262. tnfr/sdk/utils.py +341 -0
  263. tnfr/secure_config.py +46 -0
  264. tnfr/security/__init__.py +70 -0
  265. tnfr/security/database.py +514 -0
  266. tnfr/security/subprocess.py +503 -0
  267. tnfr/security/validation.py +290 -0
  268. tnfr/selector.py +247 -0
  269. tnfr/selector.pyi +19 -0
  270. tnfr/sense.py +378 -0
  271. tnfr/sense.pyi +23 -0
  272. tnfr/services/__init__.py +17 -0
  273. tnfr/services/orchestrator.py +325 -0
  274. tnfr/sparse/__init__.py +39 -0
  275. tnfr/sparse/representations.py +492 -0
  276. tnfr/structural.py +705 -0
  277. tnfr/structural.pyi +83 -0
  278. tnfr/telemetry/__init__.py +35 -0
  279. tnfr/telemetry/cache_metrics.py +226 -0
  280. tnfr/telemetry/cache_metrics.pyi +64 -0
  281. tnfr/telemetry/nu_f.py +422 -0
  282. tnfr/telemetry/nu_f.pyi +108 -0
  283. tnfr/telemetry/verbosity.py +36 -0
  284. tnfr/telemetry/verbosity.pyi +15 -0
  285. tnfr/tokens.py +58 -0
  286. tnfr/tokens.pyi +36 -0
  287. tnfr/tools/__init__.py +20 -0
  288. tnfr/tools/domain_templates.py +478 -0
  289. tnfr/tools/sequence_generator.py +846 -0
  290. tnfr/topology/__init__.py +13 -0
  291. tnfr/topology/asymmetry.py +151 -0
  292. tnfr/trace.py +543 -0
  293. tnfr/trace.pyi +42 -0
  294. tnfr/tutorials/__init__.py +38 -0
  295. tnfr/tutorials/autonomous_evolution.py +285 -0
  296. tnfr/tutorials/interactive.py +1576 -0
  297. tnfr/tutorials/structural_metabolism.py +238 -0
  298. tnfr/types.py +775 -0
  299. tnfr/types.pyi +357 -0
  300. tnfr/units.py +68 -0
  301. tnfr/units.pyi +13 -0
  302. tnfr/utils/__init__.py +282 -0
  303. tnfr/utils/__init__.pyi +215 -0
  304. tnfr/utils/cache.py +4223 -0
  305. tnfr/utils/cache.pyi +470 -0
  306. tnfr/utils/callbacks.py +375 -0
  307. tnfr/utils/callbacks.pyi +49 -0
  308. tnfr/utils/chunks.py +108 -0
  309. tnfr/utils/chunks.pyi +22 -0
  310. tnfr/utils/data.py +428 -0
  311. tnfr/utils/data.pyi +74 -0
  312. tnfr/utils/graph.py +85 -0
  313. tnfr/utils/graph.pyi +10 -0
  314. tnfr/utils/init.py +821 -0
  315. tnfr/utils/init.pyi +80 -0
  316. tnfr/utils/io.py +559 -0
  317. tnfr/utils/io.pyi +66 -0
  318. tnfr/utils/numeric.py +114 -0
  319. tnfr/utils/numeric.pyi +21 -0
  320. tnfr/validation/__init__.py +257 -0
  321. tnfr/validation/__init__.pyi +85 -0
  322. tnfr/validation/compatibility.py +460 -0
  323. tnfr/validation/compatibility.pyi +6 -0
  324. tnfr/validation/config.py +73 -0
  325. tnfr/validation/graph.py +139 -0
  326. tnfr/validation/graph.pyi +18 -0
  327. tnfr/validation/input_validation.py +755 -0
  328. tnfr/validation/invariants.py +712 -0
  329. tnfr/validation/rules.py +253 -0
  330. tnfr/validation/rules.pyi +44 -0
  331. tnfr/validation/runtime.py +279 -0
  332. tnfr/validation/runtime.pyi +28 -0
  333. tnfr/validation/sequence_validator.py +162 -0
  334. tnfr/validation/soft_filters.py +170 -0
  335. tnfr/validation/soft_filters.pyi +32 -0
  336. tnfr/validation/spectral.py +164 -0
  337. tnfr/validation/spectral.pyi +42 -0
  338. tnfr/validation/validator.py +1266 -0
  339. tnfr/validation/window.py +39 -0
  340. tnfr/validation/window.pyi +1 -0
  341. tnfr/visualization/__init__.py +98 -0
  342. tnfr/visualization/cascade_viz.py +256 -0
  343. tnfr/visualization/hierarchy.py +284 -0
  344. tnfr/visualization/sequence_plotter.py +784 -0
  345. tnfr/viz/__init__.py +60 -0
  346. tnfr/viz/matplotlib.py +278 -0
  347. tnfr/viz/matplotlib.pyi +35 -0
  348. tnfr-8.5.0.dist-info/METADATA +573 -0
  349. tnfr-8.5.0.dist-info/RECORD +353 -0
  350. tnfr-8.5.0.dist-info/entry_points.txt +3 -0
  351. tnfr-3.0.3.dist-info/licenses/LICENSE.txt → tnfr-8.5.0.dist-info/licenses/LICENSE.md +1 -1
  352. tnfr/constants.py +0 -183
  353. tnfr/dynamics.py +0 -543
  354. tnfr/helpers.py +0 -198
  355. tnfr/main.py +0 -37
  356. tnfr/operators.py +0 -296
  357. tnfr-3.0.3.dist-info/METADATA +0 -35
  358. tnfr-3.0.3.dist-info/RECORD +0 -13
  359. {tnfr-3.0.3.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
  360. {tnfr-3.0.3.dist-info → tnfr-8.5.0.dist-info}/top_level.txt +0 -0
tnfr/utils/cache.pyi ADDED
@@ -0,0 +1,470 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ import threading
5
+ from collections import defaultdict
6
+ from collections.abc import (
7
+ Callable,
8
+ Hashable,
9
+ Iterable,
10
+ Iterator,
11
+ Mapping,
12
+ MutableMapping,
13
+ )
14
+ from dataclasses import dataclass
15
+ from typing import Any, ClassVar, ContextManager, Generic, TypeVar
16
+
17
+ import networkx as nx
18
+ from cachetools import LRUCache
19
+
20
+ from ..types import GraphLike, NodeId, TimingContext, TNFRGraph
21
+
22
+ K = TypeVar("K", bound=Hashable)
23
+ V = TypeVar("V")
24
+ T = TypeVar("T")
25
+
26
+ class SecurityError(RuntimeError):
27
+ """Raised when a cache payload fails hardened validation."""
28
+
29
+ ...
30
+
31
+ @dataclass(frozen=True)
32
+ class CacheCapacityConfig:
33
+ default_capacity: int | None
34
+ overrides: dict[str, int | None]
35
+
36
+ @dataclass(frozen=True)
37
+ class CacheStatistics:
38
+ hits: int = ...
39
+ misses: int = ...
40
+ evictions: int = ...
41
+ total_time: float = ...
42
+ timings: int = ...
43
+
44
+ def merge(self, other: CacheStatistics) -> CacheStatistics: ...
45
+
46
+ class CacheLayer:
47
+ def load(self, name: str) -> Any: ...
48
+ def store(self, name: str, value: Any) -> None: ...
49
+ def delete(self, name: str) -> None: ...
50
+ def clear(self) -> None: ...
51
+ def close(self) -> None: ...
52
+
53
+ class MappingCacheLayer(CacheLayer):
54
+ def __init__(self, storage: MutableMapping[str, Any] | None = ...) -> None: ...
55
+
56
+ class ShelveCacheLayer(CacheLayer):
57
+ def __init__(
58
+ self,
59
+ path: str,
60
+ *,
61
+ flag: str = ...,
62
+ protocol: int | None = ...,
63
+ writeback: bool = ...,
64
+ ) -> None: ...
65
+
66
+ class RedisCacheLayer(CacheLayer):
67
+ def __init__(self, client: Any | None = ..., *, namespace: str = ...) -> None: ...
68
+
69
+ class CacheManager:
70
+ _MISSING: ClassVar[object]
71
+
72
+ def __init__(
73
+ self,
74
+ storage: MutableMapping[str, Any] | None = ...,
75
+ *,
76
+ default_capacity: int | None = ...,
77
+ overrides: Mapping[str, int | None] | None = ...,
78
+ layers: Iterable[CacheLayer] | None = ...,
79
+ ) -> None: ...
80
+ @staticmethod
81
+ def _normalise_capacity(value: int | None) -> int | None: ...
82
+ def register(
83
+ self,
84
+ name: str,
85
+ factory: Callable[[], Any],
86
+ *,
87
+ lock_factory: Callable[[], threading.Lock | threading.RLock] | None = ...,
88
+ reset: Callable[[Any], Any] | None = ...,
89
+ create: bool = ...,
90
+ encoder: Callable[[Any], Any] | None = ...,
91
+ decoder: Callable[[Any], Any] | None = ...,
92
+ ) -> None: ...
93
+ def configure(
94
+ self,
95
+ *,
96
+ default_capacity: int | None | object = ...,
97
+ overrides: Mapping[str, int | None] | None = ...,
98
+ replace_overrides: bool = ...,
99
+ ) -> None: ...
100
+ def configure_from_mapping(self, config: Mapping[str, Any]) -> None: ...
101
+ def export_config(self) -> CacheCapacityConfig: ...
102
+ def get_capacity(
103
+ self,
104
+ name: str,
105
+ *,
106
+ requested: int | None = ...,
107
+ fallback: int | None = ...,
108
+ use_default: bool = ...,
109
+ ) -> int | None: ...
110
+ def has_override(self, name: str) -> bool: ...
111
+ def get_lock(self, name: str) -> threading.Lock | threading.RLock: ...
112
+ def names(self) -> Iterator[str]: ...
113
+ def get(self, name: str, *, create: bool = ...) -> Any: ...
114
+ def peek(self, name: str) -> Any: ...
115
+ def store(self, name: str, value: Any) -> None: ...
116
+ def update(
117
+ self,
118
+ name: str,
119
+ updater: Callable[[Any], Any],
120
+ *,
121
+ create: bool = ...,
122
+ ) -> Any: ...
123
+ def clear(self, name: str | None = ...) -> None: ...
124
+ def increment_hit(
125
+ self,
126
+ name: str,
127
+ *,
128
+ amount: int = ...,
129
+ duration: float | None = ...,
130
+ ) -> None: ...
131
+ def increment_miss(
132
+ self,
133
+ name: str,
134
+ *,
135
+ amount: int = ...,
136
+ duration: float | None = ...,
137
+ ) -> None: ...
138
+ def increment_eviction(self, name: str, *, amount: int = ...) -> None: ...
139
+ def record_timing(self, name: str, duration: float) -> None: ...
140
+ def timer(self, name: str) -> TimingContext: ...
141
+ def get_metrics(self, name: str) -> CacheStatistics: ...
142
+ def iter_metrics(self) -> Iterator[tuple[str, CacheStatistics]]: ...
143
+ def aggregate_metrics(self) -> CacheStatistics: ...
144
+ def register_metrics_publisher(
145
+ self, publisher: Callable[[str, CacheStatistics], None]
146
+ ) -> None: ...
147
+ def publish_metrics(
148
+ self,
149
+ *,
150
+ publisher: Callable[[str, CacheStatistics], None] | None = ...,
151
+ ) -> None: ...
152
+ def log_metrics(self, logger: logging.Logger, *, level: int = ...) -> None: ...
153
+
154
+ class InstrumentedLRUCache(MutableMapping[K, V], Generic[K, V]):
155
+ _MISSING: ClassVar[object]
156
+
157
+ def __init__(
158
+ self,
159
+ maxsize: int,
160
+ *,
161
+ manager: CacheManager | None = ...,
162
+ metrics_key: str | None = ...,
163
+ telemetry_callbacks: (
164
+ Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None
165
+ ) = ...,
166
+ eviction_callbacks: (
167
+ Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None
168
+ ) = ...,
169
+ locks: MutableMapping[K, Any] | None = ...,
170
+ getsizeof: Callable[[V], int] | None = ...,
171
+ count_overwrite_hit: bool = ...,
172
+ ) -> None: ...
173
+ @property
174
+ def telemetry_callbacks(self) -> tuple[Callable[[K, V], None], ...]: ...
175
+ @property
176
+ def eviction_callbacks(self) -> tuple[Callable[[K, V], None], ...]: ...
177
+ def set_telemetry_callbacks(
178
+ self,
179
+ callbacks: Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None,
180
+ *,
181
+ append: bool = ...,
182
+ ) -> None: ...
183
+ def set_eviction_callbacks(
184
+ self,
185
+ callbacks: Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None,
186
+ *,
187
+ append: bool = ...,
188
+ ) -> None: ...
189
+ def pop(self, key: K, default: Any = ...) -> V: ...
190
+ def popitem(self) -> tuple[K, V]: ...
191
+ def clear(self) -> None: ...
192
+ @property
193
+ def maxsize(self) -> int: ...
194
+ @property
195
+ def currsize(self) -> int: ...
196
+ def get(self, key: K, default: V | None = ...) -> V | None: ...
197
+
198
+ class ManagedLRUCache(LRUCache[K, V], Generic[K, V]):
199
+ def __init__(
200
+ self,
201
+ maxsize: int,
202
+ *,
203
+ manager: CacheManager | None = ...,
204
+ metrics_key: str | None = ...,
205
+ eviction_callbacks: (
206
+ Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None
207
+ ) = ...,
208
+ telemetry_callbacks: (
209
+ Iterable[Callable[[K, V], None]] | Callable[[K, V], None] | None
210
+ ) = ...,
211
+ locks: MutableMapping[K, Any] | None = ...,
212
+ ) -> None: ...
213
+ def popitem(self) -> tuple[K, V]: ...
214
+
215
+ def prune_lock_mapping(
216
+ cache: Mapping[K, Any] | MutableMapping[K, Any] | None,
217
+ locks: MutableMapping[K, Any] | None,
218
+ ) -> None: ...
219
+
220
+ __all__ = (
221
+ "CacheLayer",
222
+ "CacheManager",
223
+ "CacheCapacityConfig",
224
+ "CacheStatistics",
225
+ "InstrumentedLRUCache",
226
+ "ManagedLRUCache",
227
+ "MappingCacheLayer",
228
+ "RedisCacheLayer",
229
+ "ShelveCacheLayer",
230
+ "prune_lock_mapping",
231
+ "EdgeCacheManager",
232
+ "NODE_SET_CHECKSUM_KEY",
233
+ "cached_node_list",
234
+ "cached_nodes_and_A",
235
+ "clear_node_repr_cache",
236
+ "edge_version_cache",
237
+ "edge_version_update",
238
+ "ensure_node_index_map",
239
+ "ensure_node_offset_map",
240
+ "get_graph_version",
241
+ "increment_edge_version",
242
+ "increment_graph_version",
243
+ "node_set_checksum",
244
+ "stable_json",
245
+ "configure_graph_cache_limits",
246
+ "DNFR_PREP_STATE_KEY",
247
+ "DnfrCache",
248
+ "DnfrPrepState",
249
+ "new_dnfr_cache",
250
+ "build_cache_manager",
251
+ "configure_global_cache_layers",
252
+ "reset_global_cache_manager",
253
+ "_GRAPH_CACHE_LAYERS_KEY",
254
+ "_SeedHashCache",
255
+ "ScopedCounterCache",
256
+ )
257
+
258
+ NODE_SET_CHECKSUM_KEY: str
259
+ _GRAPH_CACHE_LAYERS_KEY: str
260
+ DNFR_PREP_STATE_KEY: str
261
+
262
+ class DnfrCache:
263
+ idx: dict[Any, int]
264
+ theta: list[float]
265
+ epi: list[float]
266
+ vf: list[float]
267
+ cos_theta: list[float]
268
+ sin_theta: list[float]
269
+ neighbor_x: list[float]
270
+ neighbor_y: list[float]
271
+ neighbor_epi_sum: list[float]
272
+ neighbor_vf_sum: list[float]
273
+ neighbor_count: list[float]
274
+ neighbor_deg_sum: list[float] | None
275
+ th_bar: list[float] | None
276
+ epi_bar: list[float] | None
277
+ vf_bar: list[float] | None
278
+ deg_bar: list[float] | None
279
+ degs: dict[Any, float] | None
280
+ deg_list: list[float] | None
281
+ theta_np: Any | None
282
+ epi_np: Any | None
283
+ vf_np: Any | None
284
+ cos_theta_np: Any | None
285
+ sin_theta_np: Any | None
286
+ deg_array: Any | None
287
+ edge_src: Any | None
288
+ edge_dst: Any | None
289
+ checksum: Any | None
290
+ neighbor_x_np: Any | None
291
+ neighbor_y_np: Any | None
292
+ neighbor_epi_sum_np: Any | None
293
+ neighbor_vf_sum_np: Any | None
294
+ neighbor_count_np: Any | None
295
+ neighbor_deg_sum_np: Any | None
296
+ th_bar_np: Any | None
297
+ epi_bar_np: Any | None
298
+ vf_bar_np: Any | None
299
+ deg_bar_np: Any | None
300
+ grad_phase_np: Any | None
301
+ grad_epi_np: Any | None
302
+ grad_vf_np: Any | None
303
+ grad_topo_np: Any | None
304
+ grad_total_np: Any | None
305
+ dense_components_np: Any | None
306
+ dense_accum_np: Any | None
307
+ dense_degree_np: Any | None
308
+ neighbor_accum_np: Any | None
309
+ neighbor_inv_count_np: Any | None
310
+ neighbor_cos_avg_np: Any | None
311
+ neighbor_sin_avg_np: Any | None
312
+ neighbor_mean_tmp_np: Any | None
313
+ neighbor_mean_length_np: Any | None
314
+ edge_signature: Any | None
315
+ neighbor_accum_signature: Any | None
316
+ neighbor_edge_values_np: Any | None
317
+
318
+ class EdgeCacheState:
319
+ cache: MutableMapping[Hashable, Any]
320
+ locks: defaultdict[Hashable, threading.RLock]
321
+ max_entries: int | None
322
+ dirty: bool
323
+
324
+ def new_dnfr_cache() -> DnfrCache: ...
325
+
326
+ class DnfrPrepState:
327
+ cache: DnfrCache
328
+ cache_lock: threading.RLock
329
+ vector_lock: threading.RLock
330
+
331
+ class EdgeCacheManager:
332
+ _STATE_KEY: str
333
+
334
+ def __init__(self, graph: MutableMapping[str, Any]) -> None: ...
335
+ def record_hit(self) -> None: ...
336
+ def record_miss(self, *, track_metrics: bool = ...) -> None: ...
337
+ def record_eviction(self, *, track_metrics: bool = ...) -> None: ...
338
+ def timer(self) -> TimingContext: ...
339
+ def _default_state(self) -> EdgeCacheState: ...
340
+ def resolve_max_entries(self, max_entries: int | None | object) -> int | None: ...
341
+ def _build_state(self, max_entries: int | None) -> EdgeCacheState: ...
342
+ def _ensure_state(
343
+ self, state: EdgeCacheState | None, max_entries: int | None | object
344
+ ) -> EdgeCacheState: ...
345
+ def _reset_state(self, state: EdgeCacheState | None) -> EdgeCacheState: ...
346
+ def get_cache(
347
+ self,
348
+ max_entries: int | None | object,
349
+ *,
350
+ create: bool = ...,
351
+ ) -> EdgeCacheState | None: ...
352
+ def flush_state(self, state: EdgeCacheState) -> None: ...
353
+ def clear(self) -> None: ...
354
+
355
+ def get_graph_version(graph: Any, key: str, default: int = ...) -> int: ...
356
+ def increment_graph_version(graph: Any, key: str) -> int: ...
357
+ def stable_json(obj: Any) -> str: ...
358
+ def clear_node_repr_cache() -> None: ...
359
+ def configure_global_cache_layers(
360
+ *,
361
+ shelve: Mapping[str, Any] | None = ...,
362
+ redis: Mapping[str, Any] | None = ...,
363
+ replace: bool = ...,
364
+ ) -> None: ...
365
+ def node_set_checksum(
366
+ G: nx.Graph,
367
+ nodes: Iterable[Any] | None = ...,
368
+ *,
369
+ presorted: bool = ...,
370
+ store: bool = ...,
371
+ ) -> str: ...
372
+ def reset_global_cache_manager() -> None: ...
373
+ def build_cache_manager(
374
+ *,
375
+ graph: MutableMapping[str, Any] | None = ...,
376
+ storage: MutableMapping[str, Any] | None = ...,
377
+ default_capacity: int | None = ...,
378
+ overrides: Mapping[str, int | None] | None = ...,
379
+ ) -> CacheManager: ...
380
+ def cached_node_list(G: nx.Graph) -> tuple[Any, ...]: ...
381
+ def ensure_node_index_map(G: TNFRGraph) -> dict[NodeId, int]: ...
382
+ def ensure_node_offset_map(G: TNFRGraph) -> dict[NodeId, int]: ...
383
+ def configure_graph_cache_limits(
384
+ G: GraphLike | TNFRGraph | MutableMapping[str, Any],
385
+ *,
386
+ default_capacity: int | None | object = CacheManager._MISSING,
387
+ overrides: Mapping[str, int | None] | None = ...,
388
+ replace_overrides: bool = ...,
389
+ ) -> CacheCapacityConfig: ...
390
+ def increment_edge_version(G: Any) -> None: ...
391
+ def edge_version_cache(
392
+ G: Any,
393
+ key: Hashable,
394
+ builder: Callable[[], T],
395
+ *,
396
+ max_entries: int | None | object = CacheManager._MISSING,
397
+ ) -> T: ...
398
+ def cached_nodes_and_A(
399
+ G: nx.Graph,
400
+ *,
401
+ cache_size: int | None = ...,
402
+ require_numpy: bool = ...,
403
+ prefer_sparse: bool = ...,
404
+ nodes: tuple[Any, ...] | None = ...,
405
+ ) -> tuple[tuple[Any, ...], Any]: ...
406
+ def edge_version_update(G: TNFRGraph) -> ContextManager[None]: ...
407
+
408
+ class _SeedCacheState:
409
+ cache: InstrumentedLRUCache[tuple[int, int], int] | None
410
+ maxsize: int
411
+
412
+ class _CounterState(Generic[K]):
413
+ cache: InstrumentedLRUCache[K, int]
414
+ locks: dict[K, threading.RLock]
415
+ max_entries: int
416
+
417
+ class _SeedHashCache(MutableMapping[tuple[int, int], int]):
418
+ _state_key: str
419
+
420
+ def __init__(
421
+ self,
422
+ *,
423
+ manager: CacheManager | None = ...,
424
+ state_key: str = ...,
425
+ default_maxsize: int = ...,
426
+ ) -> None: ...
427
+ def configure(self, maxsize: int) -> None: ...
428
+ def __getitem__(self, key: tuple[int, int]) -> int: ...
429
+ def __setitem__(self, key: tuple[int, int], value: int) -> None: ...
430
+ def __delitem__(self, key: tuple[int, int]) -> None: ...
431
+ def __iter__(self) -> Iterator[tuple[int, int]]: ...
432
+ def __len__(self) -> int: ...
433
+ def clear(self) -> None: ...
434
+ @property
435
+ def maxsize(self) -> int: ...
436
+ @property
437
+ def enabled(self) -> bool: ...
438
+ @property
439
+ def data(self) -> InstrumentedLRUCache[tuple[int, int], int] | None: ...
440
+
441
+ class ScopedCounterCache(Generic[K]):
442
+ _state_key: str
443
+
444
+ def __init__(
445
+ self,
446
+ name: str,
447
+ max_entries: int | None = ...,
448
+ *,
449
+ manager: CacheManager | None = ...,
450
+ default_max_entries: int = ...,
451
+ ) -> None: ...
452
+ def configure(
453
+ self, *, force: bool = ..., max_entries: int | None = ...
454
+ ) -> None: ...
455
+ def clear(self) -> None: ...
456
+ def bump(self, key: K) -> int: ...
457
+ def __len__(self) -> int: ...
458
+ @property
459
+ def lock(self) -> threading.Lock | threading.RLock: ...
460
+ @property
461
+ def max_entries(self) -> int: ...
462
+ @property
463
+ def cache(self) -> InstrumentedLRUCache[K, int]: ...
464
+ @property
465
+ def locks(self) -> dict[K, threading.RLock]: ...
466
+
467
+ # Internal symbols used by utils.__init__.py
468
+ _GRAPH_CACHE_MANAGER_KEY: str
469
+
470
+ def _graph_cache_manager(graph: MutableMapping[str, Any]) -> CacheManager: ...