exonware-xwsystem 0.1.0.1__py3-none-any.whl → 0.1.0.4__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.
- exonware/__init__.py +2 -1
- exonware/conf.py +2 -2
- exonware/xwsystem/__init__.py +115 -43
- exonware/xwsystem/base.py +30 -0
- exonware/xwsystem/caching/__init__.py +39 -13
- exonware/xwsystem/caching/base.py +24 -6
- exonware/xwsystem/caching/bloom_cache.py +2 -2
- exonware/xwsystem/caching/cache_manager.py +2 -1
- exonware/xwsystem/caching/conditional.py +2 -2
- exonware/xwsystem/caching/contracts.py +85 -139
- exonware/xwsystem/caching/decorators.py +6 -19
- exonware/xwsystem/caching/defs.py +2 -1
- exonware/xwsystem/caching/disk_cache.py +2 -1
- exonware/xwsystem/caching/distributed.py +2 -1
- exonware/xwsystem/caching/errors.py +2 -1
- exonware/xwsystem/caching/events.py +110 -27
- exonware/xwsystem/caching/eviction_strategies.py +2 -2
- exonware/xwsystem/caching/external_caching_python.py +701 -0
- exonware/xwsystem/caching/facade.py +253 -0
- exonware/xwsystem/caching/factory.py +300 -0
- exonware/xwsystem/caching/fluent.py +14 -12
- exonware/xwsystem/caching/integrity.py +21 -6
- exonware/xwsystem/caching/lfu_cache.py +2 -1
- exonware/xwsystem/caching/lfu_optimized.py +18 -6
- exonware/xwsystem/caching/lru_cache.py +7 -4
- exonware/xwsystem/caching/memory_bounded.py +2 -2
- exonware/xwsystem/caching/metrics_exporter.py +2 -2
- exonware/xwsystem/caching/observable_cache.py +2 -2
- exonware/xwsystem/caching/pluggable_cache.py +2 -2
- exonware/xwsystem/caching/rate_limiter.py +2 -2
- exonware/xwsystem/caching/read_through.py +2 -2
- exonware/xwsystem/caching/secure_cache.py +81 -28
- exonware/xwsystem/caching/serializable.py +9 -7
- exonware/xwsystem/caching/stats.py +2 -2
- exonware/xwsystem/caching/tagging.py +2 -2
- exonware/xwsystem/caching/ttl_cache.py +4 -3
- exonware/xwsystem/caching/two_tier_cache.py +6 -3
- exonware/xwsystem/caching/utils.py +30 -12
- exonware/xwsystem/caching/validation.py +2 -2
- exonware/xwsystem/caching/warming.py +6 -3
- exonware/xwsystem/caching/write_behind.py +15 -6
- exonware/xwsystem/config/__init__.py +11 -17
- exonware/xwsystem/config/base.py +5 -5
- exonware/xwsystem/config/contracts.py +93 -153
- exonware/xwsystem/config/defaults.py +3 -2
- exonware/xwsystem/config/defs.py +3 -2
- exonware/xwsystem/config/errors.py +2 -5
- exonware/xwsystem/config/logging.py +12 -8
- exonware/xwsystem/config/logging_setup.py +3 -2
- exonware/xwsystem/config/performance.py +1 -46
- exonware/xwsystem/config/performance_modes.py +9 -8
- exonware/xwsystem/config/version_manager.py +1 -0
- exonware/xwsystem/config.py +27 -0
- exonware/xwsystem/console/__init__.py +53 -0
- exonware/xwsystem/console/base.py +133 -0
- exonware/xwsystem/console/cli/__init__.py +61 -0
- exonware/xwsystem/{cli → console/cli}/args.py +27 -24
- exonware/xwsystem/{cli → console/cli}/base.py +18 -87
- exonware/xwsystem/{cli → console/cli}/colors.py +15 -13
- exonware/xwsystem/console/cli/console.py +98 -0
- exonware/xwsystem/{cli → console/cli}/contracts.py +51 -69
- exonware/xwsystem/console/cli/defs.py +87 -0
- exonware/xwsystem/console/cli/encoding.py +69 -0
- exonware/xwsystem/{cli → console/cli}/errors.py +8 -3
- exonware/xwsystem/console/cli/event_logger.py +166 -0
- exonware/xwsystem/{cli → console/cli}/progress.py +25 -21
- exonware/xwsystem/{cli → console/cli}/prompts.py +3 -2
- exonware/xwsystem/{cli → console/cli}/tables.py +27 -24
- exonware/xwsystem/console/contracts.py +113 -0
- exonware/xwsystem/console/defs.py +154 -0
- exonware/xwsystem/console/errors.py +34 -0
- exonware/xwsystem/console/event_logger.py +385 -0
- exonware/xwsystem/console/writer.py +132 -0
- exonware/xwsystem/contracts.py +28 -0
- exonware/xwsystem/data_structures/__init__.py +23 -0
- exonware/xwsystem/data_structures/trie.py +34 -0
- exonware/xwsystem/data_structures/union_find.py +144 -0
- exonware/xwsystem/defs.py +17 -0
- exonware/xwsystem/errors.py +23 -0
- exonware/xwsystem/facade.py +62 -0
- exonware/xwsystem/http_client/__init__.py +22 -1
- exonware/xwsystem/http_client/advanced_client.py +8 -5
- exonware/xwsystem/http_client/base.py +3 -2
- exonware/xwsystem/http_client/client.py +7 -4
- exonware/xwsystem/http_client/contracts.py +42 -56
- exonware/xwsystem/http_client/defs.py +2 -1
- exonware/xwsystem/http_client/errors.py +2 -1
- exonware/xwsystem/http_client/facade.py +156 -0
- exonware/xwsystem/io/__init__.py +22 -3
- exonware/xwsystem/io/archive/__init__.py +8 -2
- exonware/xwsystem/io/archive/archive.py +1 -1
- exonware/xwsystem/io/archive/archive_files.py +4 -7
- exonware/xwsystem/io/archive/archivers.py +120 -10
- exonware/xwsystem/io/archive/base.py +4 -5
- exonware/xwsystem/io/archive/codec_integration.py +1 -2
- exonware/xwsystem/io/archive/compression.py +1 -2
- exonware/xwsystem/io/archive/facade.py +263 -0
- exonware/xwsystem/io/archive/formats/__init__.py +2 -3
- exonware/xwsystem/io/archive/formats/brotli_format.py +20 -7
- exonware/xwsystem/io/archive/formats/lz4_format.py +20 -7
- exonware/xwsystem/io/archive/formats/rar.py +11 -5
- exonware/xwsystem/io/archive/formats/sevenzip.py +12 -6
- exonware/xwsystem/io/archive/formats/squashfs_format.py +1 -2
- exonware/xwsystem/io/archive/formats/tar.py +52 -7
- exonware/xwsystem/io/archive/formats/wim_format.py +11 -5
- exonware/xwsystem/io/archive/formats/zip.py +1 -2
- exonware/xwsystem/io/archive/formats/zpaq_format.py +1 -2
- exonware/xwsystem/io/archive/formats/zstandard.py +20 -7
- exonware/xwsystem/io/base.py +119 -115
- exonware/xwsystem/io/codec/__init__.py +4 -2
- exonware/xwsystem/io/codec/base.py +19 -13
- exonware/xwsystem/io/codec/contracts.py +59 -2
- exonware/xwsystem/io/codec/registry.py +67 -21
- exonware/xwsystem/io/common/__init__.py +1 -1
- exonware/xwsystem/io/common/atomic.py +29 -16
- exonware/xwsystem/io/common/base.py +11 -10
- exonware/xwsystem/io/common/lock.py +6 -5
- exonware/xwsystem/io/common/path_manager.py +2 -1
- exonware/xwsystem/io/common/watcher.py +1 -2
- exonware/xwsystem/io/contracts.py +301 -433
- exonware/xwsystem/io/contracts_1.py +1180 -0
- exonware/xwsystem/io/data_operations.py +19 -20
- exonware/xwsystem/io/defs.py +4 -3
- exonware/xwsystem/io/errors.py +3 -2
- exonware/xwsystem/io/facade.py +87 -61
- exonware/xwsystem/io/file/__init__.py +1 -1
- exonware/xwsystem/io/file/base.py +8 -9
- exonware/xwsystem/io/file/conversion.py +2 -3
- exonware/xwsystem/io/file/file.py +61 -18
- exonware/xwsystem/io/file/paged_source.py +8 -8
- exonware/xwsystem/io/file/paging/__init__.py +1 -2
- exonware/xwsystem/io/file/paging/byte_paging.py +4 -5
- exonware/xwsystem/io/file/paging/line_paging.py +2 -3
- exonware/xwsystem/io/file/paging/record_paging.py +2 -3
- exonware/xwsystem/io/file/paging/registry.py +1 -2
- exonware/xwsystem/io/file/source.py +13 -17
- exonware/xwsystem/io/filesystem/__init__.py +1 -1
- exonware/xwsystem/io/filesystem/base.py +1 -2
- exonware/xwsystem/io/filesystem/local.py +3 -4
- exonware/xwsystem/io/folder/__init__.py +1 -1
- exonware/xwsystem/io/folder/base.py +1 -2
- exonware/xwsystem/io/folder/folder.py +16 -7
- exonware/xwsystem/io/indexing/__init__.py +14 -0
- exonware/xwsystem/io/indexing/facade.py +443 -0
- exonware/xwsystem/io/path_parser.py +98 -0
- exonware/xwsystem/io/serialization/__init__.py +21 -3
- exonware/xwsystem/io/serialization/auto_serializer.py +146 -20
- exonware/xwsystem/io/serialization/base.py +84 -34
- exonware/xwsystem/io/serialization/contracts.py +50 -73
- exonware/xwsystem/io/serialization/defs.py +2 -1
- exonware/xwsystem/io/serialization/errors.py +2 -1
- exonware/xwsystem/io/serialization/flyweight.py +154 -7
- exonware/xwsystem/io/serialization/format_detector.py +15 -14
- exonware/xwsystem/io/serialization/formats/__init__.py +8 -5
- exonware/xwsystem/io/serialization/formats/binary/bson.py +15 -6
- exonware/xwsystem/io/serialization/formats/binary/cbor.py +5 -5
- exonware/xwsystem/io/serialization/formats/binary/marshal.py +5 -5
- exonware/xwsystem/io/serialization/formats/binary/msgpack.py +5 -5
- exonware/xwsystem/io/serialization/formats/binary/pickle.py +5 -5
- exonware/xwsystem/io/serialization/formats/binary/plistlib.py +5 -5
- exonware/xwsystem/io/serialization/formats/database/dbm.py +7 -7
- exonware/xwsystem/io/serialization/formats/database/shelve.py +7 -7
- exonware/xwsystem/io/serialization/formats/database/sqlite3.py +7 -7
- exonware/xwsystem/io/serialization/formats/tabular/__init__.py +27 -0
- exonware/xwsystem/io/serialization/formats/tabular/base.py +89 -0
- exonware/xwsystem/io/serialization/formats/tabular/csv.py +319 -0
- exonware/xwsystem/io/serialization/formats/tabular/df.py +249 -0
- exonware/xwsystem/io/serialization/formats/tabular/excel.py +291 -0
- exonware/xwsystem/io/serialization/formats/tabular/googlesheets.py +374 -0
- exonware/xwsystem/io/serialization/formats/text/__init__.py +1 -1
- exonware/xwsystem/io/serialization/formats/text/append_only_log.py +5 -7
- exonware/xwsystem/io/serialization/formats/text/configparser.py +5 -5
- exonware/xwsystem/io/serialization/formats/text/csv.py +7 -5
- exonware/xwsystem/io/serialization/formats/text/formdata.py +5 -5
- exonware/xwsystem/io/serialization/formats/text/json.py +27 -18
- exonware/xwsystem/io/serialization/formats/text/json5.py +8 -4
- exonware/xwsystem/io/serialization/formats/text/jsonlines.py +18 -14
- exonware/xwsystem/io/serialization/formats/text/multipart.py +5 -5
- exonware/xwsystem/io/serialization/formats/text/toml.py +8 -6
- exonware/xwsystem/io/serialization/formats/text/xml.py +25 -20
- exonware/xwsystem/io/serialization/formats/text/yaml.py +8 -6
- exonware/xwsystem/io/serialization/parsers/__init__.py +3 -2
- exonware/xwsystem/io/serialization/parsers/base.py +6 -5
- exonware/xwsystem/io/serialization/parsers/hybrid_parser.py +7 -6
- exonware/xwsystem/io/serialization/parsers/msgspec_parser.py +10 -7
- exonware/xwsystem/io/serialization/parsers/orjson_direct_parser.py +7 -6
- exonware/xwsystem/io/serialization/parsers/orjson_parser.py +11 -8
- exonware/xwsystem/io/serialization/parsers/pysimdjson_parser.py +13 -9
- exonware/xwsystem/io/serialization/parsers/rapidjson_parser.py +10 -7
- exonware/xwsystem/io/serialization/parsers/registry.py +11 -10
- exonware/xwsystem/io/serialization/parsers/standard.py +7 -6
- exonware/xwsystem/io/serialization/parsers/ujson_parser.py +10 -7
- exonware/xwsystem/io/serialization/registry.py +4 -4
- exonware/xwsystem/io/serialization/serializer.py +168 -79
- exonware/xwsystem/io/serialization/universal_options.py +367 -0
- exonware/xwsystem/io/serialization/utils/__init__.py +1 -2
- exonware/xwsystem/io/serialization/utils/path_ops.py +5 -6
- exonware/xwsystem/io/source_reader.py +223 -0
- exonware/xwsystem/io/stream/__init__.py +1 -1
- exonware/xwsystem/io/stream/async_operations.py +61 -14
- exonware/xwsystem/io/stream/base.py +1 -2
- exonware/xwsystem/io/stream/codec_io.py +6 -7
- exonware/xwsystem/ipc/__init__.py +1 -0
- exonware/xwsystem/ipc/async_fabric.py +4 -4
- exonware/xwsystem/ipc/base.py +6 -5
- exonware/xwsystem/ipc/contracts.py +41 -66
- exonware/xwsystem/ipc/defs.py +2 -1
- exonware/xwsystem/ipc/errors.py +2 -1
- exonware/xwsystem/ipc/message_queue.py +5 -2
- exonware/xwsystem/ipc/pipes.py +70 -34
- exonware/xwsystem/ipc/process_manager.py +7 -5
- exonware/xwsystem/ipc/process_pool.py +6 -5
- exonware/xwsystem/ipc/shared_memory.py +64 -11
- exonware/xwsystem/monitoring/__init__.py +7 -0
- exonware/xwsystem/monitoring/base.py +11 -8
- exonware/xwsystem/monitoring/contracts.py +86 -144
- exonware/xwsystem/monitoring/defs.py +2 -1
- exonware/xwsystem/monitoring/error_recovery.py +16 -3
- exonware/xwsystem/monitoring/errors.py +2 -1
- exonware/xwsystem/monitoring/facade.py +183 -0
- exonware/xwsystem/monitoring/memory_monitor.py +1 -0
- exonware/xwsystem/monitoring/metrics.py +1 -0
- exonware/xwsystem/monitoring/performance_manager_generic.py +7 -7
- exonware/xwsystem/monitoring/performance_monitor.py +1 -0
- exonware/xwsystem/monitoring/performance_validator.py +1 -0
- exonware/xwsystem/monitoring/system_monitor.py +6 -5
- exonware/xwsystem/monitoring/tracing.py +18 -16
- exonware/xwsystem/monitoring/tracker.py +2 -1
- exonware/xwsystem/operations/__init__.py +5 -50
- exonware/xwsystem/operations/base.py +3 -44
- exonware/xwsystem/operations/contracts.py +25 -15
- exonware/xwsystem/operations/defs.py +1 -1
- exonware/xwsystem/operations/diff.py +5 -4
- exonware/xwsystem/operations/errors.py +1 -1
- exonware/xwsystem/operations/merge.py +6 -4
- exonware/xwsystem/operations/patch.py +5 -4
- exonware/xwsystem/patterns/__init__.py +1 -0
- exonware/xwsystem/patterns/base.py +2 -1
- exonware/xwsystem/patterns/context_manager.py +2 -1
- exonware/xwsystem/patterns/contracts.py +215 -256
- exonware/xwsystem/patterns/defs.py +2 -1
- exonware/xwsystem/patterns/dynamic_facade.py +1 -0
- exonware/xwsystem/patterns/errors.py +2 -4
- exonware/xwsystem/patterns/handler_factory.py +2 -3
- exonware/xwsystem/patterns/import_registry.py +1 -0
- exonware/xwsystem/patterns/object_pool.py +1 -0
- exonware/xwsystem/patterns/registry.py +4 -43
- exonware/xwsystem/plugins/__init__.py +2 -1
- exonware/xwsystem/plugins/base.py +6 -5
- exonware/xwsystem/plugins/contracts.py +94 -158
- exonware/xwsystem/plugins/defs.py +2 -1
- exonware/xwsystem/plugins/errors.py +2 -1
- exonware/xwsystem/py.typed +3 -0
- exonware/xwsystem/query/__init__.py +36 -0
- exonware/xwsystem/query/contracts.py +56 -0
- exonware/xwsystem/query/errors.py +22 -0
- exonware/xwsystem/query/registry.py +128 -0
- exonware/xwsystem/runtime/__init__.py +2 -1
- exonware/xwsystem/runtime/base.py +4 -3
- exonware/xwsystem/runtime/contracts.py +39 -60
- exonware/xwsystem/runtime/defs.py +2 -1
- exonware/xwsystem/runtime/env.py +11 -9
- exonware/xwsystem/runtime/errors.py +2 -1
- exonware/xwsystem/runtime/reflection.py +3 -2
- exonware/xwsystem/security/__init__.py +68 -11
- exonware/xwsystem/security/audit.py +167 -0
- exonware/xwsystem/security/base.py +121 -24
- exonware/xwsystem/security/contracts.py +91 -146
- exonware/xwsystem/security/crypto.py +17 -16
- exonware/xwsystem/security/defs.py +2 -1
- exonware/xwsystem/security/errors.py +2 -1
- exonware/xwsystem/security/facade.py +321 -0
- exonware/xwsystem/security/file_security.py +330 -0
- exonware/xwsystem/security/hazmat.py +11 -8
- exonware/xwsystem/security/monitor.py +372 -0
- exonware/xwsystem/security/path_validator.py +140 -18
- exonware/xwsystem/security/policy.py +357 -0
- exonware/xwsystem/security/resource_limits.py +1 -0
- exonware/xwsystem/security/validator.py +455 -0
- exonware/xwsystem/shared/__init__.py +14 -1
- exonware/xwsystem/shared/base.py +285 -2
- exonware/xwsystem/shared/contracts.py +415 -126
- exonware/xwsystem/shared/defs.py +2 -1
- exonware/xwsystem/shared/errors.py +2 -2
- exonware/xwsystem/shared/xwobject.py +316 -0
- exonware/xwsystem/structures/__init__.py +1 -0
- exonware/xwsystem/structures/base.py +3 -2
- exonware/xwsystem/structures/circular_detector.py +15 -14
- exonware/xwsystem/structures/contracts.py +53 -76
- exonware/xwsystem/structures/defs.py +2 -1
- exonware/xwsystem/structures/errors.py +2 -1
- exonware/xwsystem/structures/tree_walker.py +2 -1
- exonware/xwsystem/threading/__init__.py +21 -4
- exonware/xwsystem/threading/async_primitives.py +6 -5
- exonware/xwsystem/threading/base.py +3 -2
- exonware/xwsystem/threading/contracts.py +87 -143
- exonware/xwsystem/threading/defs.py +2 -1
- exonware/xwsystem/threading/errors.py +2 -1
- exonware/xwsystem/threading/facade.py +175 -0
- exonware/xwsystem/threading/locks.py +1 -0
- exonware/xwsystem/threading/safe_factory.py +1 -0
- exonware/xwsystem/utils/__init__.py +40 -0
- exonware/xwsystem/utils/base.py +22 -21
- exonware/xwsystem/utils/contracts.py +50 -73
- exonware/xwsystem/utils/dt/__init__.py +19 -3
- exonware/xwsystem/utils/dt/base.py +5 -4
- exonware/xwsystem/utils/dt/contracts.py +22 -29
- exonware/xwsystem/utils/dt/defs.py +2 -1
- exonware/xwsystem/utils/dt/errors.py +2 -5
- exonware/xwsystem/utils/dt/formatting.py +88 -2
- exonware/xwsystem/utils/dt/humanize.py +10 -9
- exonware/xwsystem/utils/dt/parsing.py +56 -5
- exonware/xwsystem/utils/dt/timezone_utils.py +2 -24
- exonware/xwsystem/utils/errors.py +2 -4
- exonware/xwsystem/utils/paths.py +1 -0
- exonware/xwsystem/utils/string.py +49 -0
- exonware/xwsystem/utils/test_runner.py +185 -0
- exonware/xwsystem/utils/utils_contracts.py +2 -1
- exonware/xwsystem/utils/web.py +110 -0
- exonware/xwsystem/validation/__init__.py +25 -1
- exonware/xwsystem/validation/base.py +6 -5
- exonware/xwsystem/validation/contracts.py +29 -41
- exonware/xwsystem/validation/data_validator.py +1 -0
- exonware/xwsystem/validation/declarative.py +11 -8
- exonware/xwsystem/validation/defs.py +2 -1
- exonware/xwsystem/validation/errors.py +2 -1
- exonware/xwsystem/validation/facade.py +198 -0
- exonware/xwsystem/validation/fluent_validator.py +22 -19
- exonware/xwsystem/validation/schema_discovery.py +210 -0
- exonware/xwsystem/validation/type_safety.py +2 -1
- exonware/xwsystem/version.py +2 -2
- {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.4.dist-info}/METADATA +71 -4
- exonware_xwsystem-0.1.0.4.dist-info/RECORD +337 -0
- exonware/xwsystem/cli/__init__.py +0 -43
- exonware/xwsystem/cli/console.py +0 -113
- exonware/xwsystem/cli/defs.py +0 -134
- exonware/xwsystem/conf.py +0 -44
- exonware/xwsystem/security/auth.py +0 -484
- exonware_xwsystem-0.1.0.1.dist-info/RECORD +0 -284
- {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.4.dist-info}/WHEEL +0 -0
- {exonware_xwsystem-0.1.0.1.dist-info → exonware_xwsystem-0.1.0.4.dist-info}/licenses/LICENSE +0 -0
exonware/__init__.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/__init__.py
|
|
1
2
|
"""
|
|
2
3
|
exonware package - Enterprise-grade Python framework ecosystem
|
|
3
4
|
|
|
4
5
|
Company: eXonware.com
|
|
5
6
|
Author: Eng. Muhammad AlShehri
|
|
6
7
|
Email: connect@exonware.com
|
|
7
|
-
Version: 0.1.0.
|
|
8
|
+
Version: 0.1.0.4
|
|
8
9
|
Generation Date: September 04, 2025
|
|
9
10
|
|
|
10
11
|
This is a namespace package allowing multiple exonware subpackages
|
exonware/conf.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/conf.py
|
|
1
2
|
#exonware/conf.py
|
|
2
3
|
"""
|
|
3
4
|
Public-facing configuration for all exonware packages.
|
|
@@ -9,7 +10,7 @@ works across all exonware packages (xwsystem, xwnode, xwdata, etc.).
|
|
|
9
10
|
Company: eXonware.com
|
|
10
11
|
Author: Eng. Muhammad AlShehri
|
|
11
12
|
Email: connect@exonware.com
|
|
12
|
-
Version: 0.1.0.
|
|
13
|
+
Version: 0.1.0.4
|
|
13
14
|
Generation Date: 11-Nov-2025
|
|
14
15
|
"""
|
|
15
16
|
|
|
@@ -106,4 +107,3 @@ class _ConfModule(types.ModuleType):
|
|
|
106
107
|
_module_instance = _ConfModule(__name__, __doc__)
|
|
107
108
|
|
|
108
109
|
sys.modules[__name__] = _module_instance
|
|
109
|
-
|
exonware/xwsystem/__init__.py
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/xwsystem/__init__.py
|
|
1
2
|
#exonware/xwsystem/__init__.py
|
|
2
3
|
"""
|
|
3
4
|
Company: eXonware.com
|
|
4
5
|
Author: Eng. Muhammad AlShehri
|
|
5
6
|
Email: connect@exonware.com
|
|
6
|
-
Version: 0.1.0.
|
|
7
|
+
Version: 0.1.0.4
|
|
7
8
|
Generation Date: October 10, 2025
|
|
8
9
|
|
|
9
10
|
XWSystem - Enterprise-grade Python framework with AI-powered performance optimization.
|
|
@@ -57,6 +58,18 @@ from typing import TYPE_CHECKING
|
|
|
57
58
|
if TYPE_CHECKING:
|
|
58
59
|
from typing import Any
|
|
59
60
|
|
|
61
|
+
# =============================================================================
|
|
62
|
+
# XWLAZY INTEGRATION - Auto-install missing dependencies silently (EARLY)
|
|
63
|
+
# =============================================================================
|
|
64
|
+
# Activate xwlazy BEFORE other imports to enable auto-installation of missing dependencies
|
|
65
|
+
# This enables silent auto-installation of missing libraries when they are imported
|
|
66
|
+
try:
|
|
67
|
+
from exonware.xwlazy import auto_enable_lazy
|
|
68
|
+
auto_enable_lazy(__package__ or "exonware.xwsystem", mode="smart")
|
|
69
|
+
except ImportError:
|
|
70
|
+
# xwlazy not installed - lazy mode simply stays disabled (normal behavior)
|
|
71
|
+
pass
|
|
72
|
+
|
|
60
73
|
# Logging utilities
|
|
61
74
|
from .config.logging_setup import get_logger, setup_logging
|
|
62
75
|
|
|
@@ -91,7 +104,10 @@ from .io.serialization import (
|
|
|
91
104
|
# Registry
|
|
92
105
|
SerializationRegistry, get_serialization_registry,
|
|
93
106
|
# Flyweight optimization
|
|
94
|
-
get_serializer, get_flyweight_stats, clear_serializer_cache,
|
|
107
|
+
get_serializer, get_flyweight_stats, clear_serializer_cache,
|
|
108
|
+
# Universal options
|
|
109
|
+
map_universal_options, get_supported_universal_options, validate_universal_options,
|
|
110
|
+
get_all_supported_formats, get_format_option_info, UniversalOption,
|
|
95
111
|
get_cache_info, create_serializer, SerializerPool,
|
|
96
112
|
# Auto-detection utilities
|
|
97
113
|
XWSerializer, AutoSerializer,
|
|
@@ -187,11 +203,13 @@ from .caching import (
|
|
|
187
203
|
)
|
|
188
204
|
from .caching.ttl_cache import TTLCache, AsyncTTLCache
|
|
189
205
|
|
|
190
|
-
# CLI utilities
|
|
191
|
-
from .
|
|
192
|
-
from .cli.
|
|
193
|
-
from .cli.
|
|
194
|
-
from .cli.
|
|
206
|
+
# CLI utilities - import general console enums from console level (priority)
|
|
207
|
+
from .console.defs import Colors, Style, Alignment, BorderStyle
|
|
208
|
+
from .console.cli.colors import colorize, CliColoredOutput
|
|
209
|
+
from .console.cli.args import CliArgumentParser, CliArgument, CliCommand, ArgumentType
|
|
210
|
+
from .console.cli.progress import CliProgressBar, CliSpinnerProgress, CliMultiProgress, CliProgressConfig
|
|
211
|
+
from .console.cli.tables import CliTable, CliTableFormatter, CliColumn
|
|
212
|
+
from .console.cli.console import CliConsole
|
|
195
213
|
|
|
196
214
|
# Validation utilities
|
|
197
215
|
from .validation.declarative import XModel, Field, ValidationError
|
|
@@ -216,10 +234,17 @@ from .utils.dt import (
|
|
|
216
234
|
humanize_timedelta, humanize_timestamp, time_ago, time_until,
|
|
217
235
|
duration_to_human, parse_human_duration, TimezoneManager,
|
|
218
236
|
convert_timezone, get_timezone_info, list_timezones,
|
|
219
|
-
format_datetime
|
|
237
|
+
format_datetime, get_datetime, get_date, get_date_from_to_month,
|
|
238
|
+
calculate_duration_days, parse_timestamp_milliseconds
|
|
220
239
|
)
|
|
221
240
|
from .utils.dt.parsing import parse_datetime, parse_date, parse_time, parse_iso8601, parse_timestamp
|
|
222
241
|
|
|
242
|
+
# String utilities
|
|
243
|
+
from .utils.string import find_nth_occurrence
|
|
244
|
+
|
|
245
|
+
# Web utilities
|
|
246
|
+
from .utils.web import validate_url_accessible, extract_webpage_text
|
|
247
|
+
|
|
223
248
|
# IPC utilities
|
|
224
249
|
from .ipc import (
|
|
225
250
|
ProcessManager, ProcessInfo, SharedMemoryManager, SharedData,
|
|
@@ -257,15 +282,12 @@ from .config import (
|
|
|
257
282
|
PATH_SEPARATOR_FORWARD, PATH_SEPARATOR_BACKWARD,
|
|
258
283
|
CIRCULAR_REFERENCE_PLACEHOLDER, MAX_DEPTH_EXCEEDED_PLACEHOLDER,
|
|
259
284
|
LOGGING_ENABLED, LOGGING_LEVEL, setup_logging, get_logger,
|
|
260
|
-
|
|
261
|
-
|
|
285
|
+
ConsoleEventLogger, ConsoleEvent,
|
|
286
|
+
PerformanceConfig
|
|
262
287
|
)
|
|
263
288
|
from .config.performance import (
|
|
264
289
|
get_performance_config,
|
|
265
|
-
|
|
266
|
-
get_serialization_limits,
|
|
267
|
-
get_network_limits,
|
|
268
|
-
get_security_limits,
|
|
290
|
+
set_performance_config,
|
|
269
291
|
)
|
|
270
292
|
|
|
271
293
|
# Monitoring utilities
|
|
@@ -320,9 +342,12 @@ from .validation.type_safety import (
|
|
|
320
342
|
)
|
|
321
343
|
|
|
322
344
|
# Enterprise utilities - distributed across security, monitoring, and io/serialization
|
|
345
|
+
# Note: Authentication provider implementations (OAuth2Provider, JWTProvider, SAMLProvider, EnterpriseAuth)
|
|
346
|
+
# have been moved to xwauth, which extends xwsystem. Use xwauth for actual authentication providers.
|
|
323
347
|
from .security import (
|
|
324
|
-
|
|
325
|
-
|
|
348
|
+
AuthenticationError, AuthorizationError, TokenExpiredError,
|
|
349
|
+
AAuthProvider, ATokenInfo, AUserInfo,
|
|
350
|
+
IAuthenticatable, IAuthorization, ISecurityToken
|
|
326
351
|
)
|
|
327
352
|
from .monitoring import (
|
|
328
353
|
TracingManager, OpenTelemetryTracer, JaegerTracer,
|
|
@@ -502,7 +527,7 @@ def list_available_formats():
|
|
|
502
527
|
|
|
503
528
|
# Test which formats are available by trying to create serializers
|
|
504
529
|
all_formats = [
|
|
505
|
-
'json', 'yaml', 'toml', 'xml', 'csv', 'ini', 'formdata', 'multipart', # Text
|
|
530
|
+
'json', 'jsonl', 'ndjson', 'yaml', 'toml', 'xml', 'csv', 'ini', 'formdata', 'multipart', # Text (NDJSON/JSONL explicitly listed)
|
|
506
531
|
'bson', 'msgpack', 'cbor', 'pickle', 'marshal', 'dbm', 'shelve', 'plist', # Binary
|
|
507
532
|
'avro', 'protobuf', 'thrift', 'parquet', 'orc', 'capnproto', 'flatbuffers', # Enterprise
|
|
508
533
|
'leveldb', 'lmdb', 'zarr', # Key-value stores
|
|
@@ -523,7 +548,7 @@ def list_available_formats():
|
|
|
523
548
|
return {
|
|
524
549
|
'all': available,
|
|
525
550
|
'missing': missing,
|
|
526
|
-
'text': [f for f in available if f in ['json', 'yaml', 'toml', 'xml', 'csv', 'ini', 'formdata', 'multipart']],
|
|
551
|
+
'text': [f for f in available if f in ['json', 'jsonl', 'ndjson', 'yaml', 'toml', 'xml', 'csv', 'ini', 'formdata', 'multipart']],
|
|
527
552
|
'binary': [f for f in available if f in ['bson', 'msgpack', 'cbor', 'pickle', 'marshal', 'dbm', 'shelve', 'plist']],
|
|
528
553
|
'enterprise': [f for f in available if f in ['avro', 'protobuf', 'thrift', 'parquet', 'orc', 'capnproto', 'flatbuffers']],
|
|
529
554
|
'keyvalue': [f for f in available if f in ['leveldb', 'lmdb', 'zarr']],
|
|
@@ -543,18 +568,24 @@ __all__ = [
|
|
|
543
568
|
"ASerialization",
|
|
544
569
|
"SerializationError",
|
|
545
570
|
|
|
546
|
-
# Text formats (
|
|
571
|
+
# Text formats (7) - I→A pattern (CSV moved to tabular)
|
|
547
572
|
"JsonSerializer",
|
|
548
573
|
"Json5Serializer",
|
|
549
574
|
"JsonLinesSerializer",
|
|
550
575
|
"YamlSerializer",
|
|
551
576
|
"TomlSerializer",
|
|
552
577
|
"XmlSerializer",
|
|
553
|
-
"CsvSerializer",
|
|
554
578
|
"ConfigParserSerializer",
|
|
555
579
|
"FormDataSerializer",
|
|
556
580
|
"MultipartSerializer",
|
|
557
581
|
|
|
582
|
+
# Tabular formats (4) - I→A→ATabular pattern
|
|
583
|
+
"ATabularSerialization",
|
|
584
|
+
"ExcelSerializer",
|
|
585
|
+
"CsvSerializer", # Moved from text/ to tabular/
|
|
586
|
+
"GoogleSheetsSerializer",
|
|
587
|
+
"DataFrameSerializer",
|
|
588
|
+
|
|
558
589
|
# Binary formats (6) - I→A pattern
|
|
559
590
|
"MsgPackSerializer",
|
|
560
591
|
"PickleSerializer",
|
|
@@ -574,6 +605,9 @@ __all__ = [
|
|
|
574
605
|
"detect_format",
|
|
575
606
|
"get_serializer", "get_flyweight_stats", "clear_serializer_cache",
|
|
576
607
|
"get_cache_info", "create_serializer", "SerializerPool",
|
|
608
|
+
# Universal options
|
|
609
|
+
"map_universal_options", "get_supported_universal_options", "validate_universal_options",
|
|
610
|
+
"get_all_supported_formats", "get_format_option_info", "UniversalOption",
|
|
577
611
|
# HTTP
|
|
578
612
|
"HttpClient",
|
|
579
613
|
"AsyncHttpClient",
|
|
@@ -659,12 +693,10 @@ __all__ = [
|
|
|
659
693
|
"get_logger",
|
|
660
694
|
"disable_logging",
|
|
661
695
|
"enable_logging",
|
|
696
|
+
"ConsoleEventLogger",
|
|
697
|
+
"ConsoleEvent",
|
|
662
698
|
# Performance Configuration
|
|
663
699
|
"get_performance_config",
|
|
664
|
-
"configure_performance",
|
|
665
|
-
"get_serialization_limits",
|
|
666
|
-
"get_network_limits",
|
|
667
|
-
"get_security_limits",
|
|
668
700
|
# Configuration
|
|
669
701
|
"DEFAULT_ENCODING",
|
|
670
702
|
"DEFAULT_PATH_DELIMITER",
|
|
@@ -688,7 +720,6 @@ __all__ = [
|
|
|
688
720
|
"MAX_DEPTH_EXCEEDED_PLACEHOLDER",
|
|
689
721
|
# Performance Configuration
|
|
690
722
|
"PerformanceConfig",
|
|
691
|
-
"PerformanceLimits",
|
|
692
723
|
# Validation
|
|
693
724
|
"DataValidator",
|
|
694
725
|
"check_data_depth",
|
|
@@ -752,26 +783,26 @@ __all__ = [
|
|
|
752
783
|
"CacheConfig",
|
|
753
784
|
"CacheStats",
|
|
754
785
|
|
|
755
|
-
# CLI
|
|
756
|
-
"ArgumentParser",
|
|
757
|
-
"Argument",
|
|
758
|
-
"Command",
|
|
759
|
-
"ArgumentType",
|
|
760
|
-
"ColoredOutput",
|
|
786
|
+
# CLI - general console enums (from console level)
|
|
761
787
|
"Colors",
|
|
762
788
|
"Style",
|
|
763
|
-
"colorize",
|
|
764
|
-
"print_colored",
|
|
765
|
-
"ProgressBar",
|
|
766
|
-
"SpinnerProgress",
|
|
767
|
-
"MultiProgress",
|
|
768
|
-
"ProgressConfig",
|
|
769
|
-
"Table",
|
|
770
|
-
"TableFormatter",
|
|
771
|
-
"Column",
|
|
772
789
|
"Alignment",
|
|
773
790
|
"BorderStyle",
|
|
774
|
-
|
|
791
|
+
# CLI-specific classes
|
|
792
|
+
"CliArgumentParser",
|
|
793
|
+
"CliArgument",
|
|
794
|
+
"CliCommand",
|
|
795
|
+
"ArgumentType",
|
|
796
|
+
"CliColoredOutput",
|
|
797
|
+
"colorize",
|
|
798
|
+
"CliProgressBar",
|
|
799
|
+
"CliSpinnerProgress",
|
|
800
|
+
"CliMultiProgress",
|
|
801
|
+
"CliProgressConfig",
|
|
802
|
+
"CliTable",
|
|
803
|
+
"CliTableFormatter",
|
|
804
|
+
"CliColumn",
|
|
805
|
+
"CliConsole", # From console.cli.console
|
|
775
806
|
|
|
776
807
|
# Validation
|
|
777
808
|
"XModel",
|
|
@@ -781,10 +812,13 @@ __all__ = [
|
|
|
781
812
|
# Enterprise Features
|
|
782
813
|
# NOTE: Schema Registry classes moved to exonware-xwschema
|
|
783
814
|
# Available in: pip install exonware-xwschema
|
|
815
|
+
# NOTE: Authentication provider implementations (OAuth2Provider, JWTProvider, SAMLProvider, EnterpriseAuth)
|
|
816
|
+
# have been moved to xwauth, which extends xwsystem. Use xwauth for actual authentication providers.
|
|
784
817
|
"TracingManager", "OpenTelemetryTracer", "JaegerTracer",
|
|
785
818
|
"TracingError", "SpanContext", "TraceContext",
|
|
786
|
-
"OAuth2Provider", "JWTProvider", "SAMLProvider",
|
|
787
819
|
"AuthenticationError", "AuthorizationError", "TokenExpiredError",
|
|
820
|
+
"AAuthProvider", "ATokenInfo", "AUserInfo",
|
|
821
|
+
"IAuthenticatable", "IAuthorization", "ISecurityToken",
|
|
788
822
|
|
|
789
823
|
# Security Hazmat
|
|
790
824
|
"AES_GCM",
|
|
@@ -829,7 +863,17 @@ __all__ = [
|
|
|
829
863
|
"parse_time",
|
|
830
864
|
"parse_iso8601",
|
|
831
865
|
"parse_timestamp",
|
|
866
|
+
"parse_timestamp_milliseconds",
|
|
832
867
|
"format_datetime",
|
|
868
|
+
"get_datetime",
|
|
869
|
+
"get_date",
|
|
870
|
+
"get_date_from_to_month",
|
|
871
|
+
"calculate_duration_days",
|
|
872
|
+
# String utilities
|
|
873
|
+
"find_nth_occurrence",
|
|
874
|
+
# Web utilities
|
|
875
|
+
"validate_url_accessible",
|
|
876
|
+
"extract_webpage_text",
|
|
833
877
|
|
|
834
878
|
# IPC
|
|
835
879
|
"ProcessManager",
|
|
@@ -851,7 +895,7 @@ __all__ = [
|
|
|
851
895
|
"quick_decrypt",
|
|
852
896
|
"list_available_formats",
|
|
853
897
|
|
|
854
|
-
# Protocol Definitions
|
|
898
|
+
# Protocol Definitions
|
|
855
899
|
"Serializable",
|
|
856
900
|
"AsyncSerializable",
|
|
857
901
|
"Hashable",
|
|
@@ -866,4 +910,32 @@ __all__ = [
|
|
|
866
910
|
"ValidationRule",
|
|
867
911
|
"CacheKey",
|
|
868
912
|
"ConfigValue",
|
|
913
|
+
|
|
914
|
+
# Unified Facades (DX Improvements)
|
|
915
|
+
"XWCache",
|
|
916
|
+
"XWArchive",
|
|
917
|
+
"XWIndex",
|
|
918
|
+
"XWSecurity",
|
|
919
|
+
"XWCrypto",
|
|
920
|
+
"XWHTTP",
|
|
921
|
+
"XWValidator",
|
|
922
|
+
"XWMonitor",
|
|
923
|
+
"XWConcurrency",
|
|
869
924
|
]
|
|
925
|
+
|
|
926
|
+
# =============================================================================
|
|
927
|
+
# UNIFIED FACADES - Simplified Developer Experience (DX)
|
|
928
|
+
# =============================================================================
|
|
929
|
+
|
|
930
|
+
# Import unified facades from their respective modules
|
|
931
|
+
from .caching.facade import XWCache
|
|
932
|
+
from .io.archive.facade import XWArchive
|
|
933
|
+
from .io.indexing.facade import XWIndex
|
|
934
|
+
from .security.facade import XWSecurity, XWCrypto
|
|
935
|
+
from .http_client.facade import XWHTTP
|
|
936
|
+
from .validation.facade import XWValidator
|
|
937
|
+
from .monitoring.facade import XWMonitor
|
|
938
|
+
from .threading.facade import XWConcurrency
|
|
939
|
+
|
|
940
|
+
# XWSerializer already exists in io.serialization.serializer
|
|
941
|
+
# XWIO already exists in io.facade
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""
|
|
2
|
+
#exonware/xwsystem/src/exonware/xwsystem/base.py
|
|
3
|
+
|
|
4
|
+
High-level abstract base classes for xwsystem.
|
|
5
|
+
|
|
6
|
+
Company: eXonware.com
|
|
7
|
+
Author: Eng. Muhammad AlShehri
|
|
8
|
+
Email: connect@exonware.com
|
|
9
|
+
Version: 0.1.0.4
|
|
10
|
+
Last Updated: 29-Jan-2026
|
|
11
|
+
|
|
12
|
+
MANDATORY (GUIDE_31_DEV.md): abstract classes in `base.py` MUST start with `A`
|
|
13
|
+
and MUST use `ABC`.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from abc import ABC
|
|
19
|
+
|
|
20
|
+
from .contracts import IXWFacade
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AXWFacade(ABC, IXWFacade):
|
|
24
|
+
"""Abstract base for xwsystem facades."""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"AXWFacade",
|
|
29
|
+
]
|
|
30
|
+
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/xwsystem/caching/__init__.py
|
|
1
2
|
"""
|
|
2
3
|
Company: eXonware.com
|
|
3
4
|
Author: Eng. Muhammad AlShehri
|
|
4
5
|
Email: connect@exonware.com
|
|
5
|
-
Version: 0.1.0.
|
|
6
|
+
Version: 0.1.0.4
|
|
6
7
|
Generation Date: 01-Nov-2025
|
|
7
8
|
|
|
8
9
|
XSystem Caching Package
|
|
@@ -59,10 +60,7 @@ from .lfu_cache import LFUCache, AsyncLFUCache
|
|
|
59
60
|
from .ttl_cache import TTLCache, AsyncTTLCache
|
|
60
61
|
from .cache_manager import CacheManager, CacheConfig, CacheStats
|
|
61
62
|
from .decorators import (
|
|
62
|
-
|
|
63
|
-
xwcached, xw_async_cached, xwcache, xw_async_cache,
|
|
64
|
-
# Backward compatibility
|
|
65
|
-
cache, async_cache, cache_result, async_cache_result, cached, async_cached
|
|
63
|
+
xwcached, xw_async_cached, xwcache, xw_async_cache
|
|
66
64
|
)
|
|
67
65
|
from .distributed import DistributedCache, RedisCache
|
|
68
66
|
|
|
@@ -119,9 +117,24 @@ from .utils import (
|
|
|
119
117
|
default_key_builder,
|
|
120
118
|
)
|
|
121
119
|
|
|
120
|
+
# Cache Factory (configurable cache creation)
|
|
121
|
+
from .factory import CacheFactory, CacheType, create_cache
|
|
122
|
+
|
|
122
123
|
# Interfaces (for advanced usage)
|
|
123
124
|
from .contracts import ICache
|
|
124
125
|
|
|
126
|
+
# External cache libraries
|
|
127
|
+
from .external_caching_python import (
|
|
128
|
+
CacheboxCache,
|
|
129
|
+
FunctoolsLRUCache,
|
|
130
|
+
CachetoolsLRUCache,
|
|
131
|
+
CachetoolsLFUCache,
|
|
132
|
+
CachetoolsTTLCache,
|
|
133
|
+
CachetoolsRRCache,
|
|
134
|
+
HAS_CACHEBOX,
|
|
135
|
+
HAS_CACHETOOLS,
|
|
136
|
+
)
|
|
137
|
+
|
|
125
138
|
# Errors
|
|
126
139
|
from .errors import (
|
|
127
140
|
CacheError,
|
|
@@ -211,6 +224,11 @@ __all__ = [
|
|
|
211
224
|
"format_bytes",
|
|
212
225
|
"default_key_builder",
|
|
213
226
|
|
|
227
|
+
# Cache Factory
|
|
228
|
+
"CacheFactory",
|
|
229
|
+
"CacheType",
|
|
230
|
+
"create_cache",
|
|
231
|
+
|
|
214
232
|
# Interfaces
|
|
215
233
|
"ICache",
|
|
216
234
|
|
|
@@ -219,23 +237,26 @@ __all__ = [
|
|
|
219
237
|
"CacheConfig",
|
|
220
238
|
"CacheStats",
|
|
221
239
|
|
|
222
|
-
# Decorators
|
|
240
|
+
# Decorators
|
|
223
241
|
"xwcached",
|
|
224
242
|
"xw_async_cached",
|
|
225
243
|
"xwcache",
|
|
226
244
|
"xw_async_cache",
|
|
227
|
-
# Backward compatibility (deprecated)
|
|
228
|
-
"cache",
|
|
229
|
-
"async_cache",
|
|
230
|
-
"cache_result",
|
|
231
|
-
"async_cache_result",
|
|
232
|
-
"cached",
|
|
233
|
-
"async_cached",
|
|
234
245
|
|
|
235
246
|
# Distributed
|
|
236
247
|
"DistributedCache",
|
|
237
248
|
"RedisCache",
|
|
238
249
|
|
|
250
|
+
# External cache libraries
|
|
251
|
+
"CacheboxCache",
|
|
252
|
+
"FunctoolsLRUCache",
|
|
253
|
+
"CachetoolsLRUCache",
|
|
254
|
+
"CachetoolsLFUCache",
|
|
255
|
+
"CachetoolsTTLCache",
|
|
256
|
+
"CachetoolsRRCache",
|
|
257
|
+
"HAS_CACHEBOX",
|
|
258
|
+
"HAS_CACHETOOLS",
|
|
259
|
+
|
|
239
260
|
# Errors
|
|
240
261
|
"CacheError",
|
|
241
262
|
"CacheKeyError",
|
|
@@ -246,5 +267,10 @@ __all__ = [
|
|
|
246
267
|
"CacheRateLimitError",
|
|
247
268
|
"CacheValueSizeError",
|
|
248
269
|
"CacheKeySizeError",
|
|
270
|
+
|
|
271
|
+
# Unified Facade
|
|
272
|
+
"XWCache",
|
|
249
273
|
]
|
|
250
274
|
|
|
275
|
+
# Import unified facade
|
|
276
|
+
from .facade import XWCache
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/xwsystem/caching/base.py
|
|
1
2
|
#exonware/xwsystem/caching/base.py
|
|
2
3
|
"""
|
|
3
4
|
Company: eXonware.com
|
|
4
5
|
Author: Eng. Muhammad AlShehri
|
|
5
6
|
Email: connect@exonware.com
|
|
6
|
-
Version: 0.1.0.
|
|
7
|
+
Version: 0.1.0.4
|
|
7
8
|
Generation Date: September 04, 2025
|
|
8
9
|
|
|
9
10
|
Caching module base classes - abstract classes for caching functionality.
|
|
10
11
|
"""
|
|
11
12
|
|
|
12
13
|
from abc import ABC, abstractmethod
|
|
13
|
-
from typing import Any, Optional,
|
|
14
|
+
from typing import Any, Optional, Hashable
|
|
14
15
|
from .defs import CachePolicy
|
|
15
16
|
|
|
16
17
|
|
|
@@ -25,7 +26,8 @@ class ACache(ABC):
|
|
|
25
26
|
capacity: Maximum cache size
|
|
26
27
|
ttl: Time to live in seconds
|
|
27
28
|
"""
|
|
28
|
-
|
|
29
|
+
# Ensure capacity is always int (handle case where it might be string from config)
|
|
30
|
+
self.capacity = int(capacity) if not isinstance(capacity, int) else capacity
|
|
29
31
|
self.ttl = ttl
|
|
30
32
|
self._cache: dict[str, Any] = {}
|
|
31
33
|
self._access_times: dict[str, float] = {}
|
|
@@ -185,13 +187,29 @@ class ACache(ABC):
|
|
|
185
187
|
More efficient than individual puts for batch operations.
|
|
186
188
|
"""
|
|
187
189
|
count = 0
|
|
190
|
+
errors = []
|
|
188
191
|
for key, value in items.items():
|
|
189
192
|
try:
|
|
190
193
|
self.put(key, value)
|
|
191
194
|
count += 1
|
|
192
|
-
except Exception:
|
|
193
|
-
#
|
|
194
|
-
|
|
195
|
+
except Exception as e:
|
|
196
|
+
# Log error but continue with other items for batch resilience
|
|
197
|
+
# This follows GUIDE_TEST.md by handling errors explicitly
|
|
198
|
+
# rather than silently ignoring them
|
|
199
|
+
errors.append((key, str(e)))
|
|
200
|
+
|
|
201
|
+
# Log any errors that occurred during batch operation
|
|
202
|
+
if errors:
|
|
203
|
+
# Import here to avoid circular dependencies
|
|
204
|
+
from ..config.logging_setup import get_logger
|
|
205
|
+
logger = get_logger("xwsystem.caching.base")
|
|
206
|
+
|
|
207
|
+
logger.warning(
|
|
208
|
+
f"put_many: {len(errors)} items failed out of {len(items)}. "
|
|
209
|
+
f"Successfully cached {count} items. "
|
|
210
|
+
f"Errors: {errors[:5]}" # Show first 5 errors
|
|
211
|
+
)
|
|
212
|
+
|
|
195
213
|
return count
|
|
196
214
|
|
|
197
215
|
def delete_many(self, keys: list[Hashable]) -> int:
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
#exonware/xwsystem/src/exonware/xwsystem/caching/bloom_cache.py
|
|
2
3
|
"""
|
|
3
4
|
Company: eXonware.com
|
|
4
5
|
Author: Eng. Muhammad AlShehri
|
|
5
6
|
Email: connect@exonware.com
|
|
6
|
-
Version: 0.1.0.
|
|
7
|
+
Version: 0.1.0.4
|
|
7
8
|
Generation Date: 01-Nov-2025
|
|
8
9
|
|
|
9
10
|
Bloom filter-enhanced cache for faster negative lookups.
|
|
@@ -212,4 +213,3 @@ __all__ = [
|
|
|
212
213
|
'BloomFilterCache',
|
|
213
214
|
'SimpleBloomFilter',
|
|
214
215
|
]
|
|
215
|
-
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
#exonware/xwsystem/src/exonware/xwsystem/caching/cache_manager.py
|
|
1
2
|
"""
|
|
2
3
|
Company: eXonware.com
|
|
3
4
|
Author: Eng. Muhammad AlShehri
|
|
4
5
|
Email: connect@exonware.com
|
|
5
|
-
Version: 0.1.0.
|
|
6
|
+
Version: 0.1.0.4
|
|
6
7
|
Generation Date: September 04, 2025
|
|
7
8
|
|
|
8
9
|
Cache Manager implementation - Placeholder.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
+
#exonware/xwsystem/src/exonware/xwsystem/caching/conditional.py
|
|
2
3
|
"""
|
|
3
4
|
Company: eXonware.com
|
|
4
5
|
Author: Eng. Muhammad AlShehri
|
|
5
6
|
Email: connect@exonware.com
|
|
6
|
-
Version: 0.1.0.
|
|
7
|
+
Version: 0.1.0.4
|
|
7
8
|
Generation Date: 01-Nov-2025
|
|
8
9
|
|
|
9
10
|
Conditional eviction policies for caching.
|
|
@@ -146,4 +147,3 @@ class ConditionalEvictionCache(LRUCache):
|
|
|
146
147
|
__all__ = [
|
|
147
148
|
'ConditionalEvictionCache',
|
|
148
149
|
]
|
|
149
|
-
|