exonware-xwsystem 0.0.1.411__py3-none-any.whl → 0.1.0.3__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 +73 -391
- 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 +279 -14
- 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 +199 -0
- 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 +65 -33
- exonware/xwsystem/io/serialization/formats/text/json5.py +8 -4
- exonware/xwsystem/io/serialization/formats/text/jsonlines.py +113 -25
- 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 +16 -0
- exonware/xwsystem/io/serialization/parsers/base.py +60 -0
- exonware/xwsystem/io/serialization/parsers/hybrid_parser.py +62 -0
- exonware/xwsystem/io/serialization/parsers/msgspec_parser.py +48 -0
- exonware/xwsystem/io/serialization/parsers/orjson_direct_parser.py +54 -0
- exonware/xwsystem/io/serialization/parsers/orjson_parser.py +62 -0
- exonware/xwsystem/io/serialization/parsers/pysimdjson_parser.py +55 -0
- exonware/xwsystem/io/serialization/parsers/rapidjson_parser.py +53 -0
- exonware/xwsystem/io/serialization/parsers/registry.py +91 -0
- exonware/xwsystem/io/serialization/parsers/standard.py +44 -0
- exonware/xwsystem/io/serialization/parsers/ujson_parser.py +53 -0
- 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 +139 -480
- 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 +4 -4
- {exonware_xwsystem-0.0.1.411.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/METADATA +71 -4
- exonware_xwsystem-0.1.0.3.dist-info/RECORD +337 -0
- exonware/xwsystem/caching/USAGE_GUIDE.md +0 -779
- 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.0.1.411.dist-info/RECORD +0 -274
- {exonware_xwsystem-0.0.1.411.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/WHEEL +0 -0
- {exonware_xwsystem-0.0.1.411.dist-info → exonware_xwsystem-0.1.0.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Command Line Interface (CLI) Utilities
|
|
3
|
-
======================================
|
|
4
|
-
|
|
5
|
-
Production-grade CLI utilities for XSystem.
|
|
6
|
-
|
|
7
|
-
Company: eXonware.com
|
|
8
|
-
Author: Eng. Muhammad AlShehri
|
|
9
|
-
Email: connect@exonware.com
|
|
10
|
-
Version: 0.0.1.411
|
|
11
|
-
Generated: 2025-01-27
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
from .colors import colorize, Colors, Style
|
|
15
|
-
from .args import ArgumentParser, Argument, Command, ArgumentType
|
|
16
|
-
from .progress import ProgressBar, SpinnerProgress, MultiProgress, ProgressConfig
|
|
17
|
-
from .tables import Table, TableFormatter, Column, Alignment, BorderStyle
|
|
18
|
-
|
|
19
|
-
__all__ = [
|
|
20
|
-
# Colors
|
|
21
|
-
'colorize',
|
|
22
|
-
'Colors',
|
|
23
|
-
'Style',
|
|
24
|
-
|
|
25
|
-
# Arguments
|
|
26
|
-
'ArgumentParser',
|
|
27
|
-
'Argument',
|
|
28
|
-
'Command',
|
|
29
|
-
'ArgumentType',
|
|
30
|
-
|
|
31
|
-
# Progress
|
|
32
|
-
'ProgressBar',
|
|
33
|
-
'SpinnerProgress',
|
|
34
|
-
'MultiProgress',
|
|
35
|
-
'ProgressConfig',
|
|
36
|
-
|
|
37
|
-
# Tables
|
|
38
|
-
'Table',
|
|
39
|
-
'TableFormatter',
|
|
40
|
-
'Column',
|
|
41
|
-
'Alignment',
|
|
42
|
-
'BorderStyle',
|
|
43
|
-
]
|
exonware/xwsystem/cli/console.py
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Company: eXonware.com
|
|
3
|
-
Author: Eng. Muhammad AlShehri
|
|
4
|
-
Email: connect@exonware.com
|
|
5
|
-
Version: 0.0.1.411
|
|
6
|
-
Generation Date: September 04, 2025
|
|
7
|
-
|
|
8
|
-
Console utilities for CLI operations.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
import sys
|
|
12
|
-
import os
|
|
13
|
-
from typing import Optional
|
|
14
|
-
from .contracts import IConsole, ColorType
|
|
15
|
-
from .errors import ConsoleError
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class Console(IConsole):
|
|
19
|
-
"""Console implementation for CLI operations."""
|
|
20
|
-
|
|
21
|
-
def __init__(self):
|
|
22
|
-
"""Initialize console."""
|
|
23
|
-
self._supports_color = self._check_color_support()
|
|
24
|
-
self._is_interactive = self._check_interactive()
|
|
25
|
-
|
|
26
|
-
def _check_color_support(self) -> bool:
|
|
27
|
-
"""Check if terminal supports color."""
|
|
28
|
-
try:
|
|
29
|
-
# Check if we're in a terminal that supports color
|
|
30
|
-
return (
|
|
31
|
-
hasattr(sys.stdout, 'isatty') and
|
|
32
|
-
sys.stdout.isatty() and
|
|
33
|
-
os.getenv('TERM') != 'dumb' and
|
|
34
|
-
os.getenv('NO_COLOR') is None
|
|
35
|
-
)
|
|
36
|
-
except:
|
|
37
|
-
return False
|
|
38
|
-
|
|
39
|
-
def _check_interactive(self) -> bool:
|
|
40
|
-
"""Check if console is interactive."""
|
|
41
|
-
try:
|
|
42
|
-
return hasattr(sys.stdin, 'isatty') and sys.stdin.isatty()
|
|
43
|
-
except:
|
|
44
|
-
return False
|
|
45
|
-
|
|
46
|
-
def print(self, text: str, color: Optional[ColorType] = None, **kwargs) -> None:
|
|
47
|
-
"""Print text to console."""
|
|
48
|
-
try:
|
|
49
|
-
if color and self._supports_color:
|
|
50
|
-
text = self._apply_color(text, color)
|
|
51
|
-
|
|
52
|
-
print(text, **kwargs)
|
|
53
|
-
except Exception as e:
|
|
54
|
-
raise ConsoleError(f"Failed to print to console: {e}")
|
|
55
|
-
|
|
56
|
-
def input(self, prompt: str, **kwargs) -> str:
|
|
57
|
-
"""Get input from user."""
|
|
58
|
-
try:
|
|
59
|
-
if not self._is_interactive:
|
|
60
|
-
raise ConsoleError("Console is not interactive")
|
|
61
|
-
|
|
62
|
-
return input(prompt, **kwargs)
|
|
63
|
-
except Exception as e:
|
|
64
|
-
raise ConsoleError(f"Failed to get input: {e}")
|
|
65
|
-
|
|
66
|
-
def clear(self) -> None:
|
|
67
|
-
"""Clear console screen."""
|
|
68
|
-
try:
|
|
69
|
-
if os.name == 'nt': # Windows
|
|
70
|
-
os.system('cls')
|
|
71
|
-
else: # Unix/Linux/macOS
|
|
72
|
-
os.system('clear')
|
|
73
|
-
except Exception as e:
|
|
74
|
-
raise ConsoleError(f"Failed to clear console: {e}")
|
|
75
|
-
|
|
76
|
-
def _apply_color(self, text: str, color: ColorType) -> str:
|
|
77
|
-
"""Apply color to text."""
|
|
78
|
-
color_codes = {
|
|
79
|
-
ColorType.RESET: '\033[0m',
|
|
80
|
-
ColorType.BOLD: '\033[1m',
|
|
81
|
-
ColorType.DIM: '\033[2m',
|
|
82
|
-
ColorType.UNDERLINE: '\033[4m',
|
|
83
|
-
ColorType.RED: '\033[31m',
|
|
84
|
-
ColorType.GREEN: '\033[32m',
|
|
85
|
-
ColorType.YELLOW: '\033[33m',
|
|
86
|
-
ColorType.BLUE: '\033[34m',
|
|
87
|
-
ColorType.MAGENTA: '\033[35m',
|
|
88
|
-
ColorType.CYAN: '\033[36m',
|
|
89
|
-
ColorType.WHITE: '\033[37m',
|
|
90
|
-
ColorType.GRAY: '\033[90m',
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
code = color_codes.get(color, '')
|
|
94
|
-
return f"{code}{text}\033[0m" if code else text
|
|
95
|
-
|
|
96
|
-
def get_size(self) -> tuple[int, int]:
|
|
97
|
-
"""Get console size."""
|
|
98
|
-
try:
|
|
99
|
-
if hasattr(os, 'get_terminal_size'):
|
|
100
|
-
size = os.get_terminal_size()
|
|
101
|
-
return (size.columns, size.lines)
|
|
102
|
-
else:
|
|
103
|
-
return (80, 24) # Default size
|
|
104
|
-
except:
|
|
105
|
-
return (80, 24)
|
|
106
|
-
|
|
107
|
-
def is_interactive(self) -> bool:
|
|
108
|
-
"""Check if console is interactive."""
|
|
109
|
-
return self._is_interactive
|
|
110
|
-
|
|
111
|
-
def supports_color(self) -> bool:
|
|
112
|
-
"""Check if console supports color."""
|
|
113
|
-
return self._supports_color
|
exonware/xwsystem/cli/defs.py
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
#exonware/xwsystem/cli/types.py
|
|
3
|
-
"""
|
|
4
|
-
Company: eXonware.com
|
|
5
|
-
Author: Eng. Muhammad AlShehri
|
|
6
|
-
Email: connect@exonware.com
|
|
7
|
-
Version: 0.0.1.411
|
|
8
|
-
Generation Date: 07-Sep-2025
|
|
9
|
-
|
|
10
|
-
CLI types and enums for XWSystem.
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
from enum import Enum
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
# ============================================================================
|
|
17
|
-
# CLI ENUMS
|
|
18
|
-
# ============================================================================
|
|
19
|
-
|
|
20
|
-
class ColorType(Enum):
|
|
21
|
-
"""Color types for CLI output."""
|
|
22
|
-
RESET = "reset"
|
|
23
|
-
BOLD = "bold"
|
|
24
|
-
DIM = "dim"
|
|
25
|
-
UNDERLINE = "underline"
|
|
26
|
-
RED = "red"
|
|
27
|
-
GREEN = "green"
|
|
28
|
-
YELLOW = "yellow"
|
|
29
|
-
BLUE = "blue"
|
|
30
|
-
MAGENTA = "magenta"
|
|
31
|
-
CYAN = "cyan"
|
|
32
|
-
WHITE = "white"
|
|
33
|
-
GRAY = "gray"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class ProgressStyle(Enum):
|
|
37
|
-
"""Progress bar styles."""
|
|
38
|
-
BAR = "bar"
|
|
39
|
-
SPINNER = "spinner"
|
|
40
|
-
PERCENTAGE = "percentage"
|
|
41
|
-
COUNTER = "counter"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
class TableStyle(Enum):
|
|
45
|
-
"""Table display styles."""
|
|
46
|
-
SIMPLE = "simple"
|
|
47
|
-
GRID = "grid"
|
|
48
|
-
FANCY = "fancy"
|
|
49
|
-
MINIMAL = "minimal"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
class PromptType(Enum):
|
|
53
|
-
"""Prompt input types."""
|
|
54
|
-
TEXT = "text"
|
|
55
|
-
PASSWORD = "password"
|
|
56
|
-
CONFIRM = "confirm"
|
|
57
|
-
SELECT = "select"
|
|
58
|
-
MULTISELECT = "multiselect"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class Alignment(Enum):
|
|
62
|
-
"""Text alignment options."""
|
|
63
|
-
LEFT = "left"
|
|
64
|
-
CENTER = "center"
|
|
65
|
-
RIGHT = "right"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class BorderStyle(Enum):
|
|
69
|
-
"""Table border styles."""
|
|
70
|
-
NONE = "none"
|
|
71
|
-
ASCII = "ascii"
|
|
72
|
-
SIMPLE = "simple"
|
|
73
|
-
ROUNDED = "rounded"
|
|
74
|
-
DOUBLE = "double"
|
|
75
|
-
THICK = "thick"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
class Colors(Enum):
|
|
79
|
-
"""ANSI color codes."""
|
|
80
|
-
# Standard colors
|
|
81
|
-
BLACK = "\033[30m"
|
|
82
|
-
RED = "\033[31m"
|
|
83
|
-
GREEN = "\033[32m"
|
|
84
|
-
YELLOW = "\033[33m"
|
|
85
|
-
BLUE = "\033[34m"
|
|
86
|
-
MAGENTA = "\033[35m"
|
|
87
|
-
CYAN = "\033[36m"
|
|
88
|
-
WHITE = "\033[37m"
|
|
89
|
-
|
|
90
|
-
# Bright colors
|
|
91
|
-
BRIGHT_BLACK = "\033[90m"
|
|
92
|
-
BRIGHT_RED = "\033[91m"
|
|
93
|
-
BRIGHT_GREEN = "\033[92m"
|
|
94
|
-
BRIGHT_YELLOW = "\033[93m"
|
|
95
|
-
BRIGHT_BLUE = "\033[94m"
|
|
96
|
-
BRIGHT_MAGENTA = "\033[95m"
|
|
97
|
-
BRIGHT_CYAN = "\033[96m"
|
|
98
|
-
BRIGHT_WHITE = "\033[97m"
|
|
99
|
-
|
|
100
|
-
# Background colors
|
|
101
|
-
BG_BLACK = "\033[40m"
|
|
102
|
-
BG_RED = "\033[41m"
|
|
103
|
-
BG_GREEN = "\033[42m"
|
|
104
|
-
BG_YELLOW = "\033[43m"
|
|
105
|
-
BG_BLUE = "\033[44m"
|
|
106
|
-
BG_MAGENTA = "\033[45m"
|
|
107
|
-
BG_CYAN = "\033[46m"
|
|
108
|
-
BG_WHITE = "\033[47m"
|
|
109
|
-
|
|
110
|
-
# Reset
|
|
111
|
-
RESET = "\033[0m"
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class Style(Enum):
|
|
115
|
-
"""ANSI style codes."""
|
|
116
|
-
RESET = "\033[0m"
|
|
117
|
-
BOLD = "\033[1m"
|
|
118
|
-
DIM = "\033[2m"
|
|
119
|
-
ITALIC = "\033[3m"
|
|
120
|
-
UNDERLINE = "\033[4m"
|
|
121
|
-
BLINK = "\033[5m"
|
|
122
|
-
REVERSE = "\033[7m"
|
|
123
|
-
STRIKETHROUGH = "\033[9m"
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
class ArgumentType(Enum):
|
|
127
|
-
"""Types of command-line arguments."""
|
|
128
|
-
STRING = "string"
|
|
129
|
-
INTEGER = "int"
|
|
130
|
-
FLOAT = "float"
|
|
131
|
-
BOOLEAN = "bool"
|
|
132
|
-
FILE = "file"
|
|
133
|
-
DIRECTORY = "dir"
|
|
134
|
-
CHOICE = "choice"
|
exonware/xwsystem/conf.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Public-facing configuration shorthands.
|
|
3
|
-
|
|
4
|
-
This module delegates to exonware.conf for backward compatibility.
|
|
5
|
-
For new code, prefer: import exonware.conf as conf
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from __future__ import annotations
|
|
9
|
-
|
|
10
|
-
import sys
|
|
11
|
-
import types
|
|
12
|
-
|
|
13
|
-
# Delegate to top-level conf for backward compatibility
|
|
14
|
-
# This allows both import patterns to work:
|
|
15
|
-
# - import exonware.conf as conf (preferred - no xwsystem initialization)
|
|
16
|
-
# - import exonware.xwsystem.conf as conf (backward compatible)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class _ConfModule(types.ModuleType):
|
|
20
|
-
"""Expose selected config toggles as module-level attributes."""
|
|
21
|
-
|
|
22
|
-
def __getattr__(self, name: str):
|
|
23
|
-
# Delegate to top-level conf module
|
|
24
|
-
try:
|
|
25
|
-
import exonware.conf as top_conf
|
|
26
|
-
return getattr(top_conf.xwsystem, name)
|
|
27
|
-
except (ImportError, AttributeError):
|
|
28
|
-
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
|
|
29
|
-
|
|
30
|
-
def __setattr__(self, name: str, value) -> None:
|
|
31
|
-
if name.startswith('_'):
|
|
32
|
-
super().__setattr__(name, value)
|
|
33
|
-
return
|
|
34
|
-
|
|
35
|
-
# Delegate to top-level conf module
|
|
36
|
-
try:
|
|
37
|
-
import exonware.conf as top_conf
|
|
38
|
-
setattr(top_conf.xwsystem, name, value)
|
|
39
|
-
except (ImportError, AttributeError):
|
|
40
|
-
super().__setattr__(name, value)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
sys.modules[__name__].__class__ = _ConfModule
|
|
44
|
-
|