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.
- tnfr/__init__.py +375 -56
- tnfr/__init__.pyi +33 -0
- tnfr/_compat.py +10 -0
- tnfr/_generated_version.py +34 -0
- tnfr/_version.py +49 -0
- tnfr/_version.pyi +7 -0
- tnfr/alias.py +723 -0
- tnfr/alias.pyi +108 -0
- tnfr/backends/__init__.py +354 -0
- tnfr/backends/jax_backend.py +173 -0
- tnfr/backends/numpy_backend.py +238 -0
- tnfr/backends/optimized_numpy.py +420 -0
- tnfr/backends/torch_backend.py +408 -0
- tnfr/cache.py +171 -0
- tnfr/cache.pyi +13 -0
- tnfr/cli/__init__.py +110 -0
- tnfr/cli/__init__.pyi +26 -0
- tnfr/cli/arguments.py +489 -0
- tnfr/cli/arguments.pyi +29 -0
- tnfr/cli/execution.py +914 -0
- tnfr/cli/execution.pyi +70 -0
- tnfr/cli/interactive_validator.py +614 -0
- tnfr/cli/utils.py +51 -0
- tnfr/cli/utils.pyi +7 -0
- tnfr/cli/validate.py +236 -0
- tnfr/compat/__init__.py +85 -0
- tnfr/compat/dataclass.py +136 -0
- tnfr/compat/jsonschema_stub.py +61 -0
- tnfr/compat/matplotlib_stub.py +73 -0
- tnfr/compat/numpy_stub.py +155 -0
- tnfr/config/__init__.py +224 -0
- tnfr/config/__init__.pyi +10 -0
- tnfr/config/constants.py +104 -0
- tnfr/config/constants.pyi +12 -0
- tnfr/config/defaults.py +54 -0
- tnfr/config/defaults_core.py +212 -0
- tnfr/config/defaults_init.py +33 -0
- tnfr/config/defaults_metric.py +104 -0
- tnfr/config/feature_flags.py +81 -0
- tnfr/config/feature_flags.pyi +16 -0
- tnfr/config/glyph_constants.py +31 -0
- tnfr/config/init.py +77 -0
- tnfr/config/init.pyi +8 -0
- tnfr/config/operator_names.py +254 -0
- tnfr/config/operator_names.pyi +36 -0
- tnfr/config/physics_derivation.py +354 -0
- tnfr/config/presets.py +83 -0
- tnfr/config/presets.pyi +7 -0
- tnfr/config/security.py +927 -0
- tnfr/config/thresholds.py +114 -0
- tnfr/config/tnfr_config.py +498 -0
- tnfr/constants/__init__.py +92 -0
- tnfr/constants/__init__.pyi +92 -0
- tnfr/constants/aliases.py +33 -0
- tnfr/constants/aliases.pyi +27 -0
- tnfr/constants/init.py +33 -0
- tnfr/constants/init.pyi +12 -0
- tnfr/constants/metric.py +104 -0
- tnfr/constants/metric.pyi +19 -0
- tnfr/core/__init__.py +33 -0
- tnfr/core/container.py +226 -0
- tnfr/core/default_implementations.py +329 -0
- tnfr/core/interfaces.py +279 -0
- tnfr/dynamics/__init__.py +238 -0
- tnfr/dynamics/__init__.pyi +83 -0
- tnfr/dynamics/adaptation.py +267 -0
- tnfr/dynamics/adaptation.pyi +7 -0
- tnfr/dynamics/adaptive_sequences.py +189 -0
- tnfr/dynamics/adaptive_sequences.pyi +14 -0
- tnfr/dynamics/aliases.py +23 -0
- tnfr/dynamics/aliases.pyi +19 -0
- tnfr/dynamics/bifurcation.py +232 -0
- tnfr/dynamics/canonical.py +229 -0
- tnfr/dynamics/canonical.pyi +48 -0
- tnfr/dynamics/coordination.py +385 -0
- tnfr/dynamics/coordination.pyi +25 -0
- tnfr/dynamics/dnfr.py +3034 -0
- tnfr/dynamics/dnfr.pyi +26 -0
- tnfr/dynamics/dynamic_limits.py +225 -0
- tnfr/dynamics/feedback.py +252 -0
- tnfr/dynamics/feedback.pyi +24 -0
- tnfr/dynamics/fused_dnfr.py +454 -0
- tnfr/dynamics/homeostasis.py +157 -0
- tnfr/dynamics/homeostasis.pyi +14 -0
- tnfr/dynamics/integrators.py +661 -0
- tnfr/dynamics/integrators.pyi +36 -0
- tnfr/dynamics/learning.py +310 -0
- tnfr/dynamics/learning.pyi +33 -0
- tnfr/dynamics/metabolism.py +254 -0
- tnfr/dynamics/nbody.py +796 -0
- tnfr/dynamics/nbody_tnfr.py +783 -0
- tnfr/dynamics/propagation.py +326 -0
- tnfr/dynamics/runtime.py +908 -0
- tnfr/dynamics/runtime.pyi +77 -0
- tnfr/dynamics/sampling.py +36 -0
- tnfr/dynamics/sampling.pyi +7 -0
- tnfr/dynamics/selectors.py +711 -0
- tnfr/dynamics/selectors.pyi +85 -0
- tnfr/dynamics/structural_clip.py +207 -0
- tnfr/errors/__init__.py +37 -0
- tnfr/errors/contextual.py +492 -0
- tnfr/execution.py +223 -0
- tnfr/execution.pyi +45 -0
- tnfr/extensions/__init__.py +205 -0
- tnfr/extensions/__init__.pyi +18 -0
- tnfr/extensions/base.py +173 -0
- tnfr/extensions/base.pyi +35 -0
- tnfr/extensions/business/__init__.py +71 -0
- tnfr/extensions/business/__init__.pyi +11 -0
- tnfr/extensions/business/cookbook.py +88 -0
- tnfr/extensions/business/cookbook.pyi +8 -0
- tnfr/extensions/business/health_analyzers.py +202 -0
- tnfr/extensions/business/health_analyzers.pyi +9 -0
- tnfr/extensions/business/patterns.py +183 -0
- tnfr/extensions/business/patterns.pyi +8 -0
- tnfr/extensions/medical/__init__.py +73 -0
- tnfr/extensions/medical/__init__.pyi +11 -0
- tnfr/extensions/medical/cookbook.py +88 -0
- tnfr/extensions/medical/cookbook.pyi +8 -0
- tnfr/extensions/medical/health_analyzers.py +181 -0
- tnfr/extensions/medical/health_analyzers.pyi +9 -0
- tnfr/extensions/medical/patterns.py +163 -0
- tnfr/extensions/medical/patterns.pyi +8 -0
- tnfr/flatten.py +262 -0
- tnfr/flatten.pyi +21 -0
- tnfr/gamma.py +354 -0
- tnfr/gamma.pyi +36 -0
- tnfr/glyph_history.py +377 -0
- tnfr/glyph_history.pyi +35 -0
- tnfr/glyph_runtime.py +19 -0
- tnfr/glyph_runtime.pyi +8 -0
- tnfr/immutable.py +218 -0
- tnfr/immutable.pyi +36 -0
- tnfr/initialization.py +203 -0
- tnfr/initialization.pyi +65 -0
- tnfr/io.py +10 -0
- tnfr/io.pyi +13 -0
- tnfr/locking.py +37 -0
- tnfr/locking.pyi +7 -0
- tnfr/mathematics/__init__.py +79 -0
- tnfr/mathematics/backend.py +453 -0
- tnfr/mathematics/backend.pyi +99 -0
- tnfr/mathematics/dynamics.py +408 -0
- tnfr/mathematics/dynamics.pyi +90 -0
- tnfr/mathematics/epi.py +391 -0
- tnfr/mathematics/epi.pyi +65 -0
- tnfr/mathematics/generators.py +242 -0
- tnfr/mathematics/generators.pyi +29 -0
- tnfr/mathematics/metrics.py +119 -0
- tnfr/mathematics/metrics.pyi +16 -0
- tnfr/mathematics/operators.py +239 -0
- tnfr/mathematics/operators.pyi +59 -0
- tnfr/mathematics/operators_factory.py +124 -0
- tnfr/mathematics/operators_factory.pyi +11 -0
- tnfr/mathematics/projection.py +87 -0
- tnfr/mathematics/projection.pyi +33 -0
- tnfr/mathematics/runtime.py +182 -0
- tnfr/mathematics/runtime.pyi +64 -0
- tnfr/mathematics/spaces.py +256 -0
- tnfr/mathematics/spaces.pyi +83 -0
- tnfr/mathematics/transforms.py +305 -0
- tnfr/mathematics/transforms.pyi +62 -0
- tnfr/metrics/__init__.py +79 -0
- tnfr/metrics/__init__.pyi +20 -0
- tnfr/metrics/buffer_cache.py +163 -0
- tnfr/metrics/buffer_cache.pyi +24 -0
- tnfr/metrics/cache_utils.py +214 -0
- tnfr/metrics/coherence.py +2009 -0
- tnfr/metrics/coherence.pyi +129 -0
- tnfr/metrics/common.py +158 -0
- tnfr/metrics/common.pyi +35 -0
- tnfr/metrics/core.py +316 -0
- tnfr/metrics/core.pyi +13 -0
- tnfr/metrics/diagnosis.py +833 -0
- tnfr/metrics/diagnosis.pyi +86 -0
- tnfr/metrics/emergence.py +245 -0
- tnfr/metrics/export.py +179 -0
- tnfr/metrics/export.pyi +7 -0
- tnfr/metrics/glyph_timing.py +379 -0
- tnfr/metrics/glyph_timing.pyi +81 -0
- tnfr/metrics/learning_metrics.py +280 -0
- tnfr/metrics/learning_metrics.pyi +21 -0
- tnfr/metrics/phase_coherence.py +351 -0
- tnfr/metrics/phase_compatibility.py +349 -0
- tnfr/metrics/reporting.py +183 -0
- tnfr/metrics/reporting.pyi +25 -0
- tnfr/metrics/sense_index.py +1203 -0
- tnfr/metrics/sense_index.pyi +9 -0
- tnfr/metrics/trig.py +373 -0
- tnfr/metrics/trig.pyi +13 -0
- tnfr/metrics/trig_cache.py +233 -0
- tnfr/metrics/trig_cache.pyi +10 -0
- tnfr/multiscale/__init__.py +32 -0
- tnfr/multiscale/hierarchical.py +517 -0
- tnfr/node.py +763 -0
- tnfr/node.pyi +139 -0
- tnfr/observers.py +255 -130
- tnfr/observers.pyi +31 -0
- tnfr/ontosim.py +144 -137
- tnfr/ontosim.pyi +28 -0
- tnfr/operators/__init__.py +1672 -0
- tnfr/operators/__init__.pyi +31 -0
- tnfr/operators/algebra.py +277 -0
- tnfr/operators/canonical_patterns.py +420 -0
- tnfr/operators/cascade.py +267 -0
- tnfr/operators/cycle_detection.py +358 -0
- tnfr/operators/definitions.py +4108 -0
- tnfr/operators/definitions.pyi +78 -0
- tnfr/operators/grammar.py +1164 -0
- tnfr/operators/grammar.pyi +140 -0
- tnfr/operators/hamiltonian.py +710 -0
- tnfr/operators/health_analyzer.py +809 -0
- tnfr/operators/jitter.py +272 -0
- tnfr/operators/jitter.pyi +11 -0
- tnfr/operators/lifecycle.py +314 -0
- tnfr/operators/metabolism.py +618 -0
- tnfr/operators/metrics.py +2138 -0
- tnfr/operators/network_analysis/__init__.py +27 -0
- tnfr/operators/network_analysis/source_detection.py +186 -0
- tnfr/operators/nodal_equation.py +395 -0
- tnfr/operators/pattern_detection.py +660 -0
- tnfr/operators/patterns.py +669 -0
- tnfr/operators/postconditions/__init__.py +38 -0
- tnfr/operators/postconditions/mutation.py +236 -0
- tnfr/operators/preconditions/__init__.py +1226 -0
- tnfr/operators/preconditions/coherence.py +305 -0
- tnfr/operators/preconditions/dissonance.py +236 -0
- tnfr/operators/preconditions/emission.py +128 -0
- tnfr/operators/preconditions/mutation.py +580 -0
- tnfr/operators/preconditions/reception.py +125 -0
- tnfr/operators/preconditions/resonance.py +364 -0
- tnfr/operators/registry.py +74 -0
- tnfr/operators/registry.pyi +9 -0
- tnfr/operators/remesh.py +1809 -0
- tnfr/operators/remesh.pyi +26 -0
- tnfr/operators/structural_units.py +268 -0
- tnfr/operators/unified_grammar.py +105 -0
- tnfr/parallel/__init__.py +54 -0
- tnfr/parallel/auto_scaler.py +234 -0
- tnfr/parallel/distributed.py +384 -0
- tnfr/parallel/engine.py +238 -0
- tnfr/parallel/gpu_engine.py +420 -0
- tnfr/parallel/monitoring.py +248 -0
- tnfr/parallel/partitioner.py +459 -0
- tnfr/py.typed +0 -0
- tnfr/recipes/__init__.py +22 -0
- tnfr/recipes/cookbook.py +743 -0
- tnfr/rng.py +178 -0
- tnfr/rng.pyi +26 -0
- tnfr/schemas/__init__.py +8 -0
- tnfr/schemas/grammar.json +94 -0
- tnfr/sdk/__init__.py +107 -0
- tnfr/sdk/__init__.pyi +19 -0
- tnfr/sdk/adaptive_system.py +173 -0
- tnfr/sdk/adaptive_system.pyi +21 -0
- tnfr/sdk/builders.py +370 -0
- tnfr/sdk/builders.pyi +51 -0
- tnfr/sdk/fluent.py +1121 -0
- tnfr/sdk/fluent.pyi +74 -0
- tnfr/sdk/templates.py +342 -0
- tnfr/sdk/templates.pyi +41 -0
- tnfr/sdk/utils.py +341 -0
- tnfr/secure_config.py +46 -0
- tnfr/security/__init__.py +70 -0
- tnfr/security/database.py +514 -0
- tnfr/security/subprocess.py +503 -0
- tnfr/security/validation.py +290 -0
- tnfr/selector.py +247 -0
- tnfr/selector.pyi +19 -0
- tnfr/sense.py +378 -0
- tnfr/sense.pyi +23 -0
- tnfr/services/__init__.py +17 -0
- tnfr/services/orchestrator.py +325 -0
- tnfr/sparse/__init__.py +39 -0
- tnfr/sparse/representations.py +492 -0
- tnfr/structural.py +705 -0
- tnfr/structural.pyi +83 -0
- tnfr/telemetry/__init__.py +35 -0
- tnfr/telemetry/cache_metrics.py +226 -0
- tnfr/telemetry/cache_metrics.pyi +64 -0
- tnfr/telemetry/nu_f.py +422 -0
- tnfr/telemetry/nu_f.pyi +108 -0
- tnfr/telemetry/verbosity.py +36 -0
- tnfr/telemetry/verbosity.pyi +15 -0
- tnfr/tokens.py +58 -0
- tnfr/tokens.pyi +36 -0
- tnfr/tools/__init__.py +20 -0
- tnfr/tools/domain_templates.py +478 -0
- tnfr/tools/sequence_generator.py +846 -0
- tnfr/topology/__init__.py +13 -0
- tnfr/topology/asymmetry.py +151 -0
- tnfr/trace.py +543 -0
- tnfr/trace.pyi +42 -0
- tnfr/tutorials/__init__.py +38 -0
- tnfr/tutorials/autonomous_evolution.py +285 -0
- tnfr/tutorials/interactive.py +1576 -0
- tnfr/tutorials/structural_metabolism.py +238 -0
- tnfr/types.py +775 -0
- tnfr/types.pyi +357 -0
- tnfr/units.py +68 -0
- tnfr/units.pyi +13 -0
- tnfr/utils/__init__.py +282 -0
- tnfr/utils/__init__.pyi +215 -0
- tnfr/utils/cache.py +4223 -0
- tnfr/utils/cache.pyi +470 -0
- tnfr/utils/callbacks.py +375 -0
- tnfr/utils/callbacks.pyi +49 -0
- tnfr/utils/chunks.py +108 -0
- tnfr/utils/chunks.pyi +22 -0
- tnfr/utils/data.py +428 -0
- tnfr/utils/data.pyi +74 -0
- tnfr/utils/graph.py +85 -0
- tnfr/utils/graph.pyi +10 -0
- tnfr/utils/init.py +821 -0
- tnfr/utils/init.pyi +80 -0
- tnfr/utils/io.py +559 -0
- tnfr/utils/io.pyi +66 -0
- tnfr/utils/numeric.py +114 -0
- tnfr/utils/numeric.pyi +21 -0
- tnfr/validation/__init__.py +257 -0
- tnfr/validation/__init__.pyi +85 -0
- tnfr/validation/compatibility.py +460 -0
- tnfr/validation/compatibility.pyi +6 -0
- tnfr/validation/config.py +73 -0
- tnfr/validation/graph.py +139 -0
- tnfr/validation/graph.pyi +18 -0
- tnfr/validation/input_validation.py +755 -0
- tnfr/validation/invariants.py +712 -0
- tnfr/validation/rules.py +253 -0
- tnfr/validation/rules.pyi +44 -0
- tnfr/validation/runtime.py +279 -0
- tnfr/validation/runtime.pyi +28 -0
- tnfr/validation/sequence_validator.py +162 -0
- tnfr/validation/soft_filters.py +170 -0
- tnfr/validation/soft_filters.pyi +32 -0
- tnfr/validation/spectral.py +164 -0
- tnfr/validation/spectral.pyi +42 -0
- tnfr/validation/validator.py +1266 -0
- tnfr/validation/window.py +39 -0
- tnfr/validation/window.pyi +1 -0
- tnfr/visualization/__init__.py +98 -0
- tnfr/visualization/cascade_viz.py +256 -0
- tnfr/visualization/hierarchy.py +284 -0
- tnfr/visualization/sequence_plotter.py +784 -0
- tnfr/viz/__init__.py +60 -0
- tnfr/viz/matplotlib.py +278 -0
- tnfr/viz/matplotlib.pyi +35 -0
- tnfr-8.5.0.dist-info/METADATA +573 -0
- tnfr-8.5.0.dist-info/RECORD +353 -0
- tnfr-8.5.0.dist-info/entry_points.txt +3 -0
- tnfr-3.0.3.dist-info/licenses/LICENSE.txt → tnfr-8.5.0.dist-info/licenses/LICENSE.md +1 -1
- tnfr/constants.py +0 -183
- tnfr/dynamics.py +0 -543
- tnfr/helpers.py +0 -198
- tnfr/main.py +0 -37
- tnfr/operators.py +0 -296
- tnfr-3.0.3.dist-info/METADATA +0 -35
- tnfr-3.0.3.dist-info/RECORD +0 -13
- {tnfr-3.0.3.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
- {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: ...
|