oscura 0.5.1__py3-none-any.whl → 0.7.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.
- oscura/__init__.py +169 -167
- oscura/analyzers/__init__.py +3 -0
- oscura/analyzers/classification.py +659 -0
- oscura/analyzers/digital/edges.py +325 -65
- oscura/analyzers/digital/quality.py +293 -166
- oscura/analyzers/digital/timing.py +260 -115
- oscura/analyzers/digital/timing_numba.py +334 -0
- oscura/analyzers/entropy.py +605 -0
- oscura/analyzers/eye/diagram.py +176 -109
- oscura/analyzers/eye/metrics.py +5 -5
- oscura/analyzers/jitter/__init__.py +6 -4
- oscura/analyzers/jitter/ber.py +52 -52
- oscura/analyzers/jitter/classification.py +156 -0
- oscura/analyzers/jitter/decomposition.py +163 -113
- oscura/analyzers/jitter/spectrum.py +80 -64
- oscura/analyzers/ml/__init__.py +39 -0
- oscura/analyzers/ml/features.py +600 -0
- oscura/analyzers/ml/signal_classifier.py +604 -0
- oscura/analyzers/packet/daq.py +246 -158
- oscura/analyzers/packet/parser.py +12 -1
- oscura/analyzers/packet/payload.py +50 -2110
- oscura/analyzers/packet/payload_analysis.py +361 -181
- oscura/analyzers/packet/payload_patterns.py +133 -70
- oscura/analyzers/packet/stream.py +84 -23
- oscura/analyzers/patterns/__init__.py +26 -5
- oscura/analyzers/patterns/anomaly_detection.py +908 -0
- oscura/analyzers/patterns/clustering.py +169 -108
- oscura/analyzers/patterns/clustering_optimized.py +227 -0
- oscura/analyzers/patterns/discovery.py +1 -1
- oscura/analyzers/patterns/matching.py +581 -197
- oscura/analyzers/patterns/pattern_mining.py +778 -0
- oscura/analyzers/patterns/periodic.py +121 -38
- oscura/analyzers/patterns/sequences.py +175 -78
- oscura/analyzers/power/conduction.py +1 -1
- oscura/analyzers/power/soa.py +6 -6
- oscura/analyzers/power/switching.py +250 -110
- oscura/analyzers/protocol/__init__.py +17 -1
- oscura/analyzers/protocols/base.py +6 -6
- oscura/analyzers/protocols/ble/__init__.py +38 -0
- oscura/analyzers/protocols/ble/analyzer.py +809 -0
- oscura/analyzers/protocols/ble/uuids.py +288 -0
- oscura/analyzers/protocols/can.py +257 -127
- oscura/analyzers/protocols/can_fd.py +107 -80
- oscura/analyzers/protocols/flexray.py +139 -80
- oscura/analyzers/protocols/hdlc.py +93 -58
- oscura/analyzers/protocols/i2c.py +247 -106
- oscura/analyzers/protocols/i2s.py +138 -86
- oscura/analyzers/protocols/industrial/__init__.py +40 -0
- oscura/analyzers/protocols/industrial/bacnet/__init__.py +33 -0
- oscura/analyzers/protocols/industrial/bacnet/analyzer.py +708 -0
- oscura/analyzers/protocols/industrial/bacnet/encoding.py +412 -0
- oscura/analyzers/protocols/industrial/bacnet/services.py +622 -0
- oscura/analyzers/protocols/industrial/ethercat/__init__.py +30 -0
- oscura/analyzers/protocols/industrial/ethercat/analyzer.py +474 -0
- oscura/analyzers/protocols/industrial/ethercat/mailbox.py +339 -0
- oscura/analyzers/protocols/industrial/ethercat/topology.py +166 -0
- oscura/analyzers/protocols/industrial/modbus/__init__.py +31 -0
- oscura/analyzers/protocols/industrial/modbus/analyzer.py +525 -0
- oscura/analyzers/protocols/industrial/modbus/crc.py +79 -0
- oscura/analyzers/protocols/industrial/modbus/functions.py +436 -0
- oscura/analyzers/protocols/industrial/opcua/__init__.py +21 -0
- oscura/analyzers/protocols/industrial/opcua/analyzer.py +552 -0
- oscura/analyzers/protocols/industrial/opcua/datatypes.py +446 -0
- oscura/analyzers/protocols/industrial/opcua/services.py +264 -0
- oscura/analyzers/protocols/industrial/profinet/__init__.py +23 -0
- oscura/analyzers/protocols/industrial/profinet/analyzer.py +441 -0
- oscura/analyzers/protocols/industrial/profinet/dcp.py +263 -0
- oscura/analyzers/protocols/industrial/profinet/ptcp.py +200 -0
- oscura/analyzers/protocols/jtag.py +180 -98
- oscura/analyzers/protocols/lin.py +219 -114
- oscura/analyzers/protocols/manchester.py +4 -4
- oscura/analyzers/protocols/onewire.py +253 -149
- oscura/analyzers/protocols/parallel_bus/__init__.py +20 -0
- oscura/analyzers/protocols/parallel_bus/centronics.py +92 -0
- oscura/analyzers/protocols/parallel_bus/gpib.py +137 -0
- oscura/analyzers/protocols/spi.py +192 -95
- oscura/analyzers/protocols/swd.py +321 -167
- oscura/analyzers/protocols/uart.py +267 -125
- oscura/analyzers/protocols/usb.py +235 -131
- oscura/analyzers/side_channel/power.py +17 -12
- oscura/analyzers/signal/__init__.py +15 -0
- oscura/analyzers/signal/timing_analysis.py +1086 -0
- oscura/analyzers/signal_integrity/__init__.py +4 -1
- oscura/analyzers/signal_integrity/sparams.py +2 -19
- oscura/analyzers/spectral/chunked.py +129 -60
- oscura/analyzers/spectral/chunked_fft.py +300 -94
- oscura/analyzers/spectral/chunked_wavelet.py +100 -80
- oscura/analyzers/statistical/checksum.py +376 -217
- oscura/analyzers/statistical/classification.py +229 -107
- oscura/analyzers/statistical/entropy.py +78 -53
- oscura/analyzers/statistics/correlation.py +407 -211
- oscura/analyzers/statistics/outliers.py +2 -2
- oscura/analyzers/statistics/streaming.py +30 -5
- oscura/analyzers/validation.py +216 -101
- oscura/analyzers/waveform/measurements.py +9 -0
- oscura/analyzers/waveform/measurements_with_uncertainty.py +31 -15
- oscura/analyzers/waveform/spectral.py +500 -228
- oscura/api/__init__.py +31 -5
- oscura/api/dsl/__init__.py +582 -0
- oscura/{dsl → api/dsl}/commands.py +43 -76
- oscura/{dsl → api/dsl}/interpreter.py +26 -51
- oscura/{dsl → api/dsl}/parser.py +107 -77
- oscura/{dsl → api/dsl}/repl.py +2 -2
- oscura/api/dsl.py +1 -1
- oscura/{integrations → api/integrations}/__init__.py +1 -1
- oscura/{integrations → api/integrations}/llm.py +201 -102
- oscura/api/operators.py +3 -3
- oscura/api/optimization.py +144 -30
- oscura/api/rest_server.py +921 -0
- oscura/api/server/__init__.py +17 -0
- oscura/api/server/dashboard.py +850 -0
- oscura/api/server/static/README.md +34 -0
- oscura/api/server/templates/base.html +181 -0
- oscura/api/server/templates/export.html +120 -0
- oscura/api/server/templates/home.html +284 -0
- oscura/api/server/templates/protocols.html +58 -0
- oscura/api/server/templates/reports.html +43 -0
- oscura/api/server/templates/session_detail.html +89 -0
- oscura/api/server/templates/sessions.html +83 -0
- oscura/api/server/templates/waveforms.html +73 -0
- oscura/automotive/__init__.py +8 -1
- oscura/automotive/can/__init__.py +10 -0
- oscura/automotive/can/checksum.py +3 -1
- oscura/automotive/can/dbc_generator.py +590 -0
- oscura/automotive/can/message_wrapper.py +121 -74
- oscura/automotive/can/patterns.py +98 -21
- oscura/automotive/can/session.py +292 -56
- oscura/automotive/can/state_machine.py +6 -3
- oscura/automotive/can/stimulus_response.py +97 -75
- oscura/automotive/dbc/__init__.py +10 -2
- oscura/automotive/dbc/generator.py +84 -56
- oscura/automotive/dbc/parser.py +6 -6
- oscura/automotive/dtc/data.json +17 -102
- oscura/automotive/dtc/database.py +2 -2
- oscura/automotive/flexray/__init__.py +31 -0
- oscura/automotive/flexray/analyzer.py +504 -0
- oscura/automotive/flexray/crc.py +185 -0
- oscura/automotive/flexray/fibex.py +449 -0
- oscura/automotive/j1939/__init__.py +45 -8
- oscura/automotive/j1939/analyzer.py +605 -0
- oscura/automotive/j1939/spns.py +326 -0
- oscura/automotive/j1939/transport.py +306 -0
- oscura/automotive/lin/__init__.py +47 -0
- oscura/automotive/lin/analyzer.py +612 -0
- oscura/automotive/loaders/blf.py +13 -2
- oscura/automotive/loaders/csv_can.py +143 -72
- oscura/automotive/loaders/dispatcher.py +50 -2
- oscura/automotive/loaders/mdf.py +86 -45
- oscura/automotive/loaders/pcap.py +111 -61
- oscura/automotive/uds/__init__.py +4 -0
- oscura/automotive/uds/analyzer.py +725 -0
- oscura/automotive/uds/decoder.py +140 -58
- oscura/automotive/uds/models.py +7 -1
- oscura/automotive/visualization.py +1 -1
- oscura/cli/analyze.py +348 -0
- oscura/cli/batch.py +142 -122
- oscura/cli/benchmark.py +275 -0
- oscura/cli/characterize.py +137 -82
- oscura/cli/compare.py +224 -131
- oscura/cli/completion.py +250 -0
- oscura/cli/config_cmd.py +361 -0
- oscura/cli/decode.py +164 -87
- oscura/cli/export.py +286 -0
- oscura/cli/main.py +115 -31
- oscura/{onboarding → cli/onboarding}/__init__.py +3 -3
- oscura/{onboarding → cli/onboarding}/help.py +80 -58
- oscura/{onboarding → cli/onboarding}/tutorials.py +97 -72
- oscura/{onboarding → cli/onboarding}/wizard.py +55 -36
- oscura/cli/progress.py +147 -0
- oscura/cli/shell.py +157 -135
- oscura/cli/validate_cmd.py +204 -0
- oscura/cli/visualize.py +158 -0
- oscura/convenience.py +125 -79
- oscura/core/__init__.py +4 -2
- oscura/core/backend_selector.py +3 -3
- oscura/core/cache.py +126 -15
- oscura/core/cancellation.py +1 -1
- oscura/{config → core/config}/__init__.py +20 -11
- oscura/{config → core/config}/defaults.py +1 -1
- oscura/{config → core/config}/loader.py +7 -5
- oscura/{config → core/config}/memory.py +5 -5
- oscura/{config → core/config}/migration.py +1 -1
- oscura/{config → core/config}/pipeline.py +99 -23
- oscura/{config → core/config}/preferences.py +1 -1
- oscura/{config → core/config}/protocol.py +3 -3
- oscura/{config → core/config}/schema.py +426 -272
- oscura/{config → core/config}/settings.py +1 -1
- oscura/{config → core/config}/thresholds.py +195 -153
- oscura/core/correlation.py +5 -6
- oscura/core/cross_domain.py +0 -2
- oscura/core/debug.py +9 -5
- oscura/{extensibility → core/extensibility}/docs.py +158 -70
- oscura/{extensibility → core/extensibility}/extensions.py +160 -76
- oscura/{extensibility → core/extensibility}/logging.py +1 -1
- oscura/{extensibility → core/extensibility}/measurements.py +1 -1
- oscura/{extensibility → core/extensibility}/plugins.py +1 -1
- oscura/{extensibility → core/extensibility}/templates.py +73 -3
- oscura/{extensibility → core/extensibility}/validation.py +1 -1
- oscura/core/gpu_backend.py +11 -7
- oscura/core/log_query.py +101 -11
- oscura/core/logging.py +126 -54
- oscura/core/logging_advanced.py +5 -5
- oscura/core/memory_limits.py +108 -70
- oscura/core/memory_monitor.py +2 -2
- oscura/core/memory_progress.py +7 -7
- oscura/core/memory_warnings.py +1 -1
- oscura/core/numba_backend.py +13 -13
- oscura/{plugins → core/plugins}/__init__.py +9 -9
- oscura/{plugins → core/plugins}/base.py +7 -7
- oscura/{plugins → core/plugins}/cli.py +3 -3
- oscura/{plugins → core/plugins}/discovery.py +186 -106
- oscura/{plugins → core/plugins}/lifecycle.py +1 -1
- oscura/{plugins → core/plugins}/manager.py +7 -7
- oscura/{plugins → core/plugins}/registry.py +3 -3
- oscura/{plugins → core/plugins}/versioning.py +1 -1
- oscura/core/progress.py +16 -1
- oscura/core/provenance.py +8 -2
- oscura/{schemas → core/schemas}/__init__.py +2 -2
- oscura/{schemas → core/schemas}/device_mapping.json +2 -8
- oscura/{schemas → core/schemas}/packet_format.json +4 -24
- oscura/{schemas → core/schemas}/protocol_definition.json +2 -12
- oscura/core/types.py +4 -0
- oscura/core/uncertainty.py +3 -3
- oscura/correlation/__init__.py +52 -0
- oscura/correlation/multi_protocol.py +811 -0
- oscura/discovery/auto_decoder.py +117 -35
- oscura/discovery/comparison.py +191 -86
- oscura/discovery/quality_validator.py +155 -68
- oscura/discovery/signal_detector.py +196 -79
- oscura/export/__init__.py +18 -8
- oscura/export/kaitai_struct.py +513 -0
- oscura/export/scapy_layer.py +801 -0
- oscura/export/wireshark/generator.py +1 -1
- oscura/export/wireshark/templates/dissector.lua.j2 +2 -2
- oscura/export/wireshark_dissector.py +746 -0
- oscura/guidance/wizard.py +207 -111
- oscura/hardware/__init__.py +19 -0
- oscura/{acquisition → hardware/acquisition}/__init__.py +4 -4
- oscura/{acquisition → hardware/acquisition}/file.py +2 -2
- oscura/{acquisition → hardware/acquisition}/hardware.py +7 -7
- oscura/{acquisition → hardware/acquisition}/saleae.py +15 -12
- oscura/{acquisition → hardware/acquisition}/socketcan.py +1 -1
- oscura/{acquisition → hardware/acquisition}/streaming.py +2 -2
- oscura/{acquisition → hardware/acquisition}/synthetic.py +3 -3
- oscura/{acquisition → hardware/acquisition}/visa.py +33 -11
- oscura/hardware/firmware/__init__.py +29 -0
- oscura/hardware/firmware/pattern_recognition.py +874 -0
- oscura/hardware/hal_detector.py +736 -0
- oscura/hardware/security/__init__.py +37 -0
- oscura/hardware/security/side_channel_detector.py +1126 -0
- oscura/inference/__init__.py +4 -0
- oscura/inference/active_learning/observation_table.py +4 -1
- oscura/inference/alignment.py +216 -123
- oscura/inference/bayesian.py +113 -33
- oscura/inference/crc_reverse.py +101 -55
- oscura/inference/logic.py +6 -2
- oscura/inference/message_format.py +342 -183
- oscura/inference/protocol.py +95 -44
- oscura/inference/protocol_dsl.py +180 -82
- oscura/inference/signal_intelligence.py +1439 -706
- oscura/inference/spectral.py +99 -57
- oscura/inference/state_machine.py +810 -158
- oscura/inference/stream.py +270 -110
- oscura/iot/__init__.py +34 -0
- oscura/iot/coap/__init__.py +32 -0
- oscura/iot/coap/analyzer.py +668 -0
- oscura/iot/coap/options.py +212 -0
- oscura/iot/lorawan/__init__.py +21 -0
- oscura/iot/lorawan/crypto.py +206 -0
- oscura/iot/lorawan/decoder.py +801 -0
- oscura/iot/lorawan/mac_commands.py +341 -0
- oscura/iot/mqtt/__init__.py +27 -0
- oscura/iot/mqtt/analyzer.py +999 -0
- oscura/iot/mqtt/properties.py +315 -0
- oscura/iot/zigbee/__init__.py +31 -0
- oscura/iot/zigbee/analyzer.py +615 -0
- oscura/iot/zigbee/security.py +153 -0
- oscura/iot/zigbee/zcl.py +349 -0
- oscura/jupyter/display.py +125 -45
- oscura/{exploratory → jupyter/exploratory}/__init__.py +8 -8
- oscura/{exploratory → jupyter/exploratory}/error_recovery.py +298 -141
- oscura/jupyter/exploratory/fuzzy.py +746 -0
- oscura/{exploratory → jupyter/exploratory}/fuzzy_advanced.py +258 -100
- oscura/{exploratory → jupyter/exploratory}/legacy.py +464 -242
- oscura/{exploratory → jupyter/exploratory}/parse.py +167 -145
- oscura/{exploratory → jupyter/exploratory}/recovery.py +119 -87
- oscura/jupyter/exploratory/sync.py +612 -0
- oscura/{exploratory → jupyter/exploratory}/unknown.py +299 -176
- oscura/jupyter/magic.py +4 -4
- oscura/{ui → jupyter/ui}/__init__.py +2 -2
- oscura/{ui → jupyter/ui}/formatters.py +3 -3
- oscura/{ui → jupyter/ui}/progressive_display.py +153 -82
- oscura/loaders/__init__.py +183 -67
- oscura/loaders/binary.py +88 -1
- oscura/loaders/chipwhisperer.py +153 -137
- oscura/loaders/configurable.py +208 -86
- oscura/loaders/csv_loader.py +458 -215
- oscura/loaders/hdf5_loader.py +278 -119
- oscura/loaders/lazy.py +87 -54
- oscura/loaders/mmap_loader.py +1 -1
- oscura/loaders/numpy_loader.py +253 -116
- oscura/loaders/pcap.py +226 -151
- oscura/loaders/rigol.py +110 -49
- oscura/loaders/sigrok.py +201 -78
- oscura/loaders/tdms.py +81 -58
- oscura/loaders/tektronix.py +291 -174
- oscura/loaders/touchstone.py +182 -87
- oscura/loaders/tss.py +456 -0
- oscura/loaders/vcd.py +215 -117
- oscura/loaders/wav.py +155 -68
- oscura/reporting/__init__.py +9 -0
- oscura/reporting/analyze.py +352 -146
- oscura/reporting/argument_preparer.py +69 -14
- oscura/reporting/auto_report.py +97 -61
- oscura/reporting/batch.py +131 -58
- oscura/reporting/chart_selection.py +57 -45
- oscura/reporting/comparison.py +63 -17
- oscura/reporting/content/executive.py +76 -24
- oscura/reporting/core_formats/multi_format.py +11 -8
- oscura/reporting/engine.py +312 -158
- oscura/reporting/enhanced_reports.py +949 -0
- oscura/reporting/export.py +86 -43
- oscura/reporting/formatting/numbers.py +69 -42
- oscura/reporting/html.py +139 -58
- oscura/reporting/index.py +137 -65
- oscura/reporting/output.py +158 -67
- oscura/reporting/pdf.py +67 -102
- oscura/reporting/plots.py +191 -112
- oscura/reporting/sections.py +88 -47
- oscura/reporting/standards.py +104 -61
- oscura/reporting/summary_generator.py +75 -55
- oscura/reporting/tables.py +138 -54
- oscura/reporting/templates/enhanced/protocol_re.html +525 -0
- oscura/sessions/__init__.py +14 -23
- oscura/sessions/base.py +3 -3
- oscura/sessions/blackbox.py +106 -10
- oscura/sessions/generic.py +2 -2
- oscura/sessions/legacy.py +783 -0
- oscura/side_channel/__init__.py +63 -0
- oscura/side_channel/dpa.py +1025 -0
- oscura/utils/__init__.py +15 -1
- oscura/utils/bitwise.py +118 -0
- oscura/{builders → utils/builders}/__init__.py +1 -1
- oscura/{comparison → utils/comparison}/__init__.py +6 -6
- oscura/{comparison → utils/comparison}/compare.py +202 -101
- oscura/{comparison → utils/comparison}/golden.py +83 -63
- oscura/{comparison → utils/comparison}/limits.py +313 -89
- oscura/{comparison → utils/comparison}/mask.py +151 -45
- oscura/{comparison → utils/comparison}/trace_diff.py +1 -1
- oscura/{comparison → utils/comparison}/visualization.py +147 -89
- oscura/{component → utils/component}/__init__.py +3 -3
- oscura/{component → utils/component}/impedance.py +122 -58
- oscura/{component → utils/component}/reactive.py +165 -168
- oscura/{component → utils/component}/transmission_line.py +3 -3
- oscura/{filtering → utils/filtering}/__init__.py +6 -6
- oscura/{filtering → utils/filtering}/base.py +1 -1
- oscura/{filtering → utils/filtering}/convenience.py +2 -2
- oscura/{filtering → utils/filtering}/design.py +169 -93
- oscura/{filtering → utils/filtering}/filters.py +2 -2
- oscura/{filtering → utils/filtering}/introspection.py +2 -2
- oscura/utils/geometry.py +31 -0
- oscura/utils/imports.py +184 -0
- oscura/utils/lazy.py +1 -1
- oscura/{math → utils/math}/__init__.py +2 -2
- oscura/{math → utils/math}/arithmetic.py +114 -48
- oscura/{math → utils/math}/interpolation.py +139 -106
- oscura/utils/memory.py +129 -66
- oscura/utils/memory_advanced.py +92 -9
- oscura/utils/memory_extensions.py +10 -8
- oscura/{optimization → utils/optimization}/__init__.py +1 -1
- oscura/{optimization → utils/optimization}/search.py +2 -2
- oscura/utils/performance/__init__.py +58 -0
- oscura/utils/performance/caching.py +889 -0
- oscura/utils/performance/lsh_clustering.py +333 -0
- oscura/utils/performance/memory_optimizer.py +699 -0
- oscura/utils/performance/optimizations.py +675 -0
- oscura/utils/performance/parallel.py +654 -0
- oscura/utils/performance/profiling.py +661 -0
- oscura/{pipeline → utils/pipeline}/base.py +1 -1
- oscura/{pipeline → utils/pipeline}/composition.py +1 -1
- oscura/{pipeline → utils/pipeline}/parallel.py +3 -2
- oscura/{pipeline → utils/pipeline}/pipeline.py +1 -1
- oscura/{pipeline → utils/pipeline}/reverse_engineering.py +412 -221
- oscura/{search → utils/search}/__init__.py +3 -3
- oscura/{search → utils/search}/anomaly.py +188 -58
- oscura/utils/search/context.py +294 -0
- oscura/{search → utils/search}/pattern.py +138 -10
- oscura/utils/serial.py +51 -0
- oscura/utils/storage/__init__.py +61 -0
- oscura/utils/storage/database.py +1166 -0
- oscura/{streaming → utils/streaming}/chunked.py +302 -143
- oscura/{streaming → utils/streaming}/progressive.py +1 -1
- oscura/{streaming → utils/streaming}/realtime.py +3 -2
- oscura/{triggering → utils/triggering}/__init__.py +6 -6
- oscura/{triggering → utils/triggering}/base.py +6 -6
- oscura/{triggering → utils/triggering}/edge.py +2 -2
- oscura/{triggering → utils/triggering}/pattern.py +2 -2
- oscura/{triggering → utils/triggering}/pulse.py +115 -74
- oscura/{triggering → utils/triggering}/window.py +2 -2
- oscura/utils/validation.py +32 -0
- oscura/validation/__init__.py +121 -0
- oscura/{compliance → validation/compliance}/__init__.py +5 -5
- oscura/{compliance → validation/compliance}/advanced.py +5 -5
- oscura/{compliance → validation/compliance}/masks.py +1 -1
- oscura/{compliance → validation/compliance}/reporting.py +127 -53
- oscura/{compliance → validation/compliance}/testing.py +114 -52
- oscura/validation/compliance_tests.py +915 -0
- oscura/validation/fuzzer.py +990 -0
- oscura/validation/grammar_tests.py +596 -0
- oscura/validation/grammar_validator.py +904 -0
- oscura/validation/hil_testing.py +977 -0
- oscura/{quality → validation/quality}/__init__.py +4 -4
- oscura/{quality → validation/quality}/ensemble.py +251 -171
- oscura/{quality → validation/quality}/explainer.py +3 -3
- oscura/{quality → validation/quality}/scoring.py +1 -1
- oscura/{quality → validation/quality}/warnings.py +4 -4
- oscura/validation/regression_suite.py +808 -0
- oscura/validation/replay.py +788 -0
- oscura/{testing → validation/testing}/__init__.py +2 -2
- oscura/{testing → validation/testing}/synthetic.py +5 -5
- oscura/visualization/__init__.py +9 -0
- oscura/visualization/accessibility.py +1 -1
- oscura/visualization/annotations.py +64 -67
- oscura/visualization/colors.py +7 -7
- oscura/visualization/digital.py +180 -81
- oscura/visualization/eye.py +236 -85
- oscura/visualization/interactive.py +320 -143
- oscura/visualization/jitter.py +587 -247
- oscura/visualization/layout.py +169 -134
- oscura/visualization/optimization.py +103 -52
- oscura/visualization/palettes.py +1 -1
- oscura/visualization/power.py +427 -211
- oscura/visualization/power_extended.py +626 -297
- oscura/visualization/presets.py +2 -0
- oscura/visualization/protocols.py +495 -181
- oscura/visualization/render.py +79 -63
- oscura/visualization/reverse_engineering.py +171 -124
- oscura/visualization/signal_integrity.py +460 -279
- oscura/visualization/specialized.py +190 -100
- oscura/visualization/spectral.py +670 -255
- oscura/visualization/thumbnails.py +166 -137
- oscura/visualization/waveform.py +150 -63
- oscura/workflows/__init__.py +3 -0
- oscura/{batch → workflows/batch}/__init__.py +5 -5
- oscura/{batch → workflows/batch}/advanced.py +150 -75
- oscura/workflows/batch/aggregate.py +531 -0
- oscura/workflows/batch/analyze.py +236 -0
- oscura/{batch → workflows/batch}/logging.py +2 -2
- oscura/{batch → workflows/batch}/metrics.py +1 -1
- oscura/workflows/complete_re.py +1144 -0
- oscura/workflows/compliance.py +44 -54
- oscura/workflows/digital.py +197 -51
- oscura/workflows/legacy/__init__.py +12 -0
- oscura/{workflow → workflows/legacy}/dag.py +4 -1
- oscura/workflows/multi_trace.py +9 -9
- oscura/workflows/power.py +42 -62
- oscura/workflows/protocol.py +82 -49
- oscura/workflows/reverse_engineering.py +351 -150
- oscura/workflows/signal_integrity.py +157 -82
- oscura-0.7.0.dist-info/METADATA +661 -0
- oscura-0.7.0.dist-info/RECORD +591 -0
- oscura/batch/aggregate.py +0 -300
- oscura/batch/analyze.py +0 -139
- oscura/dsl/__init__.py +0 -73
- oscura/exceptions.py +0 -59
- oscura/exploratory/fuzzy.py +0 -513
- oscura/exploratory/sync.py +0 -384
- oscura/exporters/__init__.py +0 -94
- oscura/exporters/csv.py +0 -303
- oscura/exporters/exporters.py +0 -44
- oscura/exporters/hdf5.py +0 -217
- oscura/exporters/html_export.py +0 -701
- oscura/exporters/json_export.py +0 -291
- oscura/exporters/markdown_export.py +0 -367
- oscura/exporters/matlab_export.py +0 -354
- oscura/exporters/npz_export.py +0 -219
- oscura/exporters/spice_export.py +0 -210
- oscura/search/context.py +0 -149
- oscura/session/__init__.py +0 -34
- oscura/session/annotations.py +0 -289
- oscura/session/history.py +0 -313
- oscura/session/session.py +0 -520
- oscura/workflow/__init__.py +0 -13
- oscura-0.5.1.dist-info/METADATA +0 -583
- oscura-0.5.1.dist-info/RECORD +0 -481
- /oscura/core/{config.py → config/legacy.py} +0 -0
- /oscura/{extensibility → core/extensibility}/__init__.py +0 -0
- /oscura/{extensibility → core/extensibility}/registry.py +0 -0
- /oscura/{plugins → core/plugins}/isolation.py +0 -0
- /oscura/{schemas → core/schemas}/bus_configuration.json +0 -0
- /oscura/{builders → utils/builders}/signal_builder.py +0 -0
- /oscura/{optimization → utils/optimization}/parallel.py +0 -0
- /oscura/{pipeline → utils/pipeline}/__init__.py +0 -0
- /oscura/{streaming → utils/streaming}/__init__.py +0 -0
- {oscura-0.5.1.dist-info → oscura-0.7.0.dist-info}/WHEEL +0 -0
- {oscura-0.5.1.dist-info → oscura-0.7.0.dist-info}/entry_points.txt +0 -0
- {oscura-0.5.1.dist-info → oscura-0.7.0.dist-info}/licenses/LICENSE +0 -0
oscura/__init__.py
CHANGED
|
@@ -46,7 +46,15 @@ Example:
|
|
|
46
46
|
For more information, see https://github.com/oscura-re/oscura
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
# Version dynamically imported from package metadata (SSOT: pyproject.toml)
|
|
50
|
+
try:
|
|
51
|
+
from importlib.metadata import version
|
|
52
|
+
|
|
53
|
+
__version__ = version("oscura")
|
|
54
|
+
except Exception:
|
|
55
|
+
# Fallback for development/testing when package not installed
|
|
56
|
+
__version__ = "0.7.0"
|
|
57
|
+
|
|
50
58
|
__author__ = "Oscura Contributors"
|
|
51
59
|
|
|
52
60
|
# Core types
|
|
@@ -155,67 +163,9 @@ from oscura.analyzers.waveform.spectral import (
|
|
|
155
163
|
thd,
|
|
156
164
|
)
|
|
157
165
|
|
|
158
|
-
#
|
|
159
|
-
from oscura.
|
|
160
|
-
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
# Comparison and limit testing
|
|
164
|
-
from oscura.comparison.compare import (
|
|
165
|
-
compare_traces,
|
|
166
|
-
correlation,
|
|
167
|
-
difference,
|
|
168
|
-
similarity_score,
|
|
169
|
-
)
|
|
170
|
-
from oscura.comparison.golden import (
|
|
171
|
-
GoldenReference,
|
|
172
|
-
compare_to_golden,
|
|
173
|
-
create_golden,
|
|
174
|
-
)
|
|
175
|
-
from oscura.comparison.limits import (
|
|
176
|
-
LimitSpec,
|
|
177
|
-
check_limits,
|
|
178
|
-
create_limit_spec,
|
|
179
|
-
margin_analysis,
|
|
180
|
-
)
|
|
181
|
-
from oscura.comparison.mask import (
|
|
182
|
-
Mask,
|
|
183
|
-
create_mask,
|
|
184
|
-
eye_mask,
|
|
185
|
-
mask_test,
|
|
186
|
-
)
|
|
187
|
-
|
|
188
|
-
# EMC Compliance (EMC-001, EMC-002, EMC-003)
|
|
189
|
-
from oscura.compliance import (
|
|
190
|
-
AVAILABLE_MASKS,
|
|
191
|
-
ComplianceReportFormat,
|
|
192
|
-
ComplianceResult,
|
|
193
|
-
ComplianceViolation,
|
|
194
|
-
DetectorType,
|
|
195
|
-
LimitMask,
|
|
196
|
-
check_compliance,
|
|
197
|
-
create_custom_mask,
|
|
198
|
-
generate_compliance_report,
|
|
199
|
-
load_limit_mask,
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
# Component analysis
|
|
203
|
-
from oscura.component.impedance import (
|
|
204
|
-
discontinuity_analysis,
|
|
205
|
-
extract_impedance,
|
|
206
|
-
impedance_profile,
|
|
207
|
-
)
|
|
208
|
-
from oscura.component.reactive import (
|
|
209
|
-
extract_parasitics,
|
|
210
|
-
measure_capacitance,
|
|
211
|
-
measure_inductance,
|
|
212
|
-
)
|
|
213
|
-
from oscura.component.transmission_line import (
|
|
214
|
-
characteristic_impedance,
|
|
215
|
-
propagation_delay,
|
|
216
|
-
transmission_line_analysis,
|
|
217
|
-
velocity_factor,
|
|
218
|
-
)
|
|
166
|
+
# Automotive - CAN analysis and DBC generation
|
|
167
|
+
from oscura.automotive.can.session import CANSession
|
|
168
|
+
from oscura.automotive.dbc.generator import DBCGenerator
|
|
219
169
|
|
|
220
170
|
# Convenience functions (one-call analysis)
|
|
221
171
|
from oscura.convenience import (
|
|
@@ -258,6 +208,31 @@ from oscura.core.exceptions import (
|
|
|
258
208
|
ValidationError,
|
|
259
209
|
)
|
|
260
210
|
|
|
211
|
+
# Expert API - Extensibility (API-006, API-007, API-008, PLUG-008)
|
|
212
|
+
from oscura.core.extensibility import (
|
|
213
|
+
AlgorithmRegistry,
|
|
214
|
+
MeasurementDefinition,
|
|
215
|
+
MeasurementRegistry,
|
|
216
|
+
PluginError,
|
|
217
|
+
PluginManager,
|
|
218
|
+
PluginMetadata,
|
|
219
|
+
PluginTemplate,
|
|
220
|
+
PluginType,
|
|
221
|
+
generate_plugin_template,
|
|
222
|
+
get_algorithm,
|
|
223
|
+
get_algorithms,
|
|
224
|
+
get_measurement_registry,
|
|
225
|
+
get_plugin_manager,
|
|
226
|
+
list_measurements,
|
|
227
|
+
list_plugins,
|
|
228
|
+
load_plugin,
|
|
229
|
+
register_algorithm,
|
|
230
|
+
register_measurement,
|
|
231
|
+
)
|
|
232
|
+
from oscura.core.extensibility import (
|
|
233
|
+
measure as measure_custom,
|
|
234
|
+
)
|
|
235
|
+
|
|
261
236
|
# Logging
|
|
262
237
|
from oscura.core.logging import (
|
|
263
238
|
configure_logging,
|
|
@@ -301,41 +276,91 @@ from oscura.discovery import (
|
|
|
301
276
|
decode_protocol as discovery_decode_protocol,
|
|
302
277
|
)
|
|
303
278
|
|
|
304
|
-
# Data Export
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
279
|
+
# Data Export - Removed legacy exports
|
|
280
|
+
# Use oscura.export.* modules directly for protocol export functionality
|
|
281
|
+
# Auto-Inference (INF-001 to INF-009)
|
|
282
|
+
from oscura.inference import (
|
|
283
|
+
AnalysisRecommendation,
|
|
284
|
+
assess_signal_quality,
|
|
285
|
+
auto_spectral_config,
|
|
286
|
+
check_measurement_suitability,
|
|
287
|
+
classify_signal,
|
|
288
|
+
detect_logic_family,
|
|
289
|
+
detect_protocol,
|
|
290
|
+
get_optimal_domain_order,
|
|
291
|
+
recommend_analyses,
|
|
292
|
+
suggest_measurements,
|
|
310
293
|
)
|
|
311
294
|
|
|
312
|
-
#
|
|
313
|
-
from oscura.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
PluginTemplate,
|
|
321
|
-
PluginType,
|
|
322
|
-
generate_plugin_template,
|
|
323
|
-
get_algorithm,
|
|
324
|
-
get_algorithms,
|
|
325
|
-
get_measurement_registry,
|
|
326
|
-
get_plugin_manager,
|
|
327
|
-
list_measurements,
|
|
328
|
-
list_plugins,
|
|
329
|
-
load_plugin,
|
|
330
|
-
register_algorithm,
|
|
331
|
-
register_measurement,
|
|
295
|
+
# Loaders (including multi-channel support)
|
|
296
|
+
from oscura.loaders import get_supported_formats, load, load_all_channels
|
|
297
|
+
|
|
298
|
+
# Reporting
|
|
299
|
+
from oscura.reporting.core import (
|
|
300
|
+
Report,
|
|
301
|
+
ReportConfig,
|
|
302
|
+
generate_report,
|
|
332
303
|
)
|
|
333
|
-
from oscura.
|
|
334
|
-
|
|
304
|
+
from oscura.reporting.formatting import (
|
|
305
|
+
NumberFormatter,
|
|
306
|
+
format_value,
|
|
307
|
+
format_with_context,
|
|
308
|
+
format_with_units,
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
# Session Management - Use new AnalysisSession API
|
|
312
|
+
from oscura.sessions import BlackBoxSession, GenericSession
|
|
313
|
+
|
|
314
|
+
# Signal builders (top-level convenience access)
|
|
315
|
+
from oscura.utils.builders import (
|
|
316
|
+
SignalBuilder,
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
# Comparison and limit testing
|
|
320
|
+
from oscura.utils.comparison.compare import (
|
|
321
|
+
compare_traces,
|
|
322
|
+
correlation,
|
|
323
|
+
difference,
|
|
324
|
+
similarity_score,
|
|
325
|
+
)
|
|
326
|
+
from oscura.utils.comparison.golden import (
|
|
327
|
+
GoldenReference,
|
|
328
|
+
compare_to_golden,
|
|
329
|
+
create_golden,
|
|
330
|
+
)
|
|
331
|
+
from oscura.utils.comparison.limits import (
|
|
332
|
+
LimitSpec,
|
|
333
|
+
check_limits,
|
|
334
|
+
create_limit_spec,
|
|
335
|
+
margin_analysis,
|
|
336
|
+
)
|
|
337
|
+
from oscura.utils.comparison.mask import (
|
|
338
|
+
Mask,
|
|
339
|
+
create_mask,
|
|
340
|
+
eye_mask,
|
|
341
|
+
mask_test,
|
|
342
|
+
)
|
|
343
|
+
|
|
344
|
+
# Component analysis
|
|
345
|
+
from oscura.utils.component.impedance import (
|
|
346
|
+
discontinuity_analysis,
|
|
347
|
+
extract_impedance,
|
|
348
|
+
impedance_profile,
|
|
349
|
+
)
|
|
350
|
+
from oscura.utils.component.reactive import (
|
|
351
|
+
extract_parasitics,
|
|
352
|
+
measure_capacitance,
|
|
353
|
+
measure_inductance,
|
|
354
|
+
)
|
|
355
|
+
from oscura.utils.component.transmission_line import (
|
|
356
|
+
characteristic_impedance,
|
|
357
|
+
propagation_delay,
|
|
358
|
+
transmission_line_analysis,
|
|
359
|
+
velocity_factor,
|
|
335
360
|
)
|
|
336
361
|
|
|
337
362
|
# Filtering (top-level convenience access)
|
|
338
|
-
from oscura.filtering.convenience import (
|
|
363
|
+
from oscura.utils.filtering.convenience import (
|
|
339
364
|
band_pass,
|
|
340
365
|
band_stop,
|
|
341
366
|
high_pass,
|
|
@@ -345,7 +370,7 @@ from oscura.filtering.convenience import (
|
|
|
345
370
|
notch_filter,
|
|
346
371
|
savgol_filter,
|
|
347
372
|
)
|
|
348
|
-
from oscura.filtering.design import (
|
|
373
|
+
from oscura.utils.filtering.design import (
|
|
349
374
|
BandPassFilter,
|
|
350
375
|
BandStopFilter,
|
|
351
376
|
HighPassFilter,
|
|
@@ -353,25 +378,8 @@ from oscura.filtering.design import (
|
|
|
353
378
|
design_filter,
|
|
354
379
|
)
|
|
355
380
|
|
|
356
|
-
# Auto-Inference (INF-001 to INF-009)
|
|
357
|
-
from oscura.inference import (
|
|
358
|
-
AnalysisRecommendation,
|
|
359
|
-
assess_signal_quality,
|
|
360
|
-
auto_spectral_config,
|
|
361
|
-
check_measurement_suitability,
|
|
362
|
-
classify_signal,
|
|
363
|
-
detect_logic_family,
|
|
364
|
-
detect_protocol,
|
|
365
|
-
get_optimal_domain_order,
|
|
366
|
-
recommend_analyses,
|
|
367
|
-
suggest_measurements,
|
|
368
|
-
)
|
|
369
|
-
|
|
370
|
-
# Loaders (including multi-channel support)
|
|
371
|
-
from oscura.loaders import get_supported_formats, load, load_all_channels
|
|
372
|
-
|
|
373
381
|
# Math/arithmetic operations (top-level convenience access)
|
|
374
|
-
from oscura.math.arithmetic import (
|
|
382
|
+
from oscura.utils.math.arithmetic import (
|
|
375
383
|
absolute,
|
|
376
384
|
add,
|
|
377
385
|
differentiate,
|
|
@@ -384,15 +392,25 @@ from oscura.math.arithmetic import (
|
|
|
384
392
|
scale,
|
|
385
393
|
subtract,
|
|
386
394
|
)
|
|
387
|
-
from oscura.math.interpolation import (
|
|
395
|
+
from oscura.utils.math.interpolation import (
|
|
388
396
|
align_traces,
|
|
389
397
|
downsample,
|
|
390
398
|
interpolate,
|
|
391
399
|
resample,
|
|
392
400
|
)
|
|
393
401
|
|
|
402
|
+
# Memory management
|
|
403
|
+
from oscura.utils.memory import (
|
|
404
|
+
MemoryCheckError,
|
|
405
|
+
check_memory_available,
|
|
406
|
+
estimate_memory,
|
|
407
|
+
get_available_memory,
|
|
408
|
+
get_memory_pressure,
|
|
409
|
+
get_total_memory,
|
|
410
|
+
)
|
|
411
|
+
|
|
394
412
|
# Expert API - Pipeline and Composition (API-001, API-002, API-004)
|
|
395
|
-
from oscura.pipeline import (
|
|
413
|
+
from oscura.utils.pipeline import (
|
|
396
414
|
Composable,
|
|
397
415
|
Pipeline,
|
|
398
416
|
TraceTransformer,
|
|
@@ -402,38 +420,14 @@ from oscura.pipeline import (
|
|
|
402
420
|
pipe,
|
|
403
421
|
)
|
|
404
422
|
|
|
405
|
-
# Reporting
|
|
406
|
-
from oscura.reporting.core import (
|
|
407
|
-
Report,
|
|
408
|
-
ReportConfig,
|
|
409
|
-
generate_report,
|
|
410
|
-
)
|
|
411
|
-
from oscura.reporting.formatting import (
|
|
412
|
-
NumberFormatter,
|
|
413
|
-
format_value,
|
|
414
|
-
format_with_context,
|
|
415
|
-
format_with_units,
|
|
416
|
-
)
|
|
417
|
-
|
|
418
|
-
# Session Management (SESS-001, SESS-002, SESS-003)
|
|
419
|
-
from oscura.session import (
|
|
420
|
-
Annotation,
|
|
421
|
-
AnnotationLayer,
|
|
422
|
-
AnnotationType,
|
|
423
|
-
HistoryEntry,
|
|
424
|
-
OperationHistory,
|
|
425
|
-
Session,
|
|
426
|
-
load_session,
|
|
427
|
-
)
|
|
428
|
-
|
|
429
423
|
# Expert API - Streaming (API-003)
|
|
430
|
-
from oscura.streaming import (
|
|
424
|
+
from oscura.utils.streaming import (
|
|
431
425
|
StreamingAnalyzer,
|
|
432
426
|
load_trace_chunks,
|
|
433
427
|
)
|
|
434
428
|
|
|
435
429
|
# Triggering (top-level convenience access)
|
|
436
|
-
from oscura.triggering import (
|
|
430
|
+
from oscura.utils.triggering import (
|
|
437
431
|
EdgeTrigger,
|
|
438
432
|
PulseWidthTrigger,
|
|
439
433
|
find_falling_edges,
|
|
@@ -444,22 +438,36 @@ from oscura.triggering import (
|
|
|
444
438
|
find_triggers,
|
|
445
439
|
)
|
|
446
440
|
|
|
447
|
-
#
|
|
448
|
-
from oscura.
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
441
|
+
# EMC Compliance (EMC-001, EMC-002, EMC-003)
|
|
442
|
+
from oscura.validation.compliance import (
|
|
443
|
+
AVAILABLE_MASKS,
|
|
444
|
+
ComplianceReportFormat,
|
|
445
|
+
ComplianceResult,
|
|
446
|
+
ComplianceViolation,
|
|
447
|
+
DetectorType,
|
|
448
|
+
LimitMask,
|
|
449
|
+
check_compliance,
|
|
450
|
+
create_custom_mask,
|
|
451
|
+
generate_compliance_report,
|
|
452
|
+
load_limit_mask,
|
|
455
453
|
)
|
|
456
454
|
|
|
457
455
|
# Visualization (top-level convenience access)
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
456
|
+
# Import conditionally - these require matplotlib
|
|
457
|
+
try:
|
|
458
|
+
from oscura.visualization import (
|
|
459
|
+
plot_fft,
|
|
460
|
+
plot_spectrum,
|
|
461
|
+
plot_waveform,
|
|
462
|
+
)
|
|
463
|
+
|
|
464
|
+
_HAS_VISUALIZATION = True
|
|
465
|
+
except ImportError:
|
|
466
|
+
# Visualization features require matplotlib
|
|
467
|
+
_HAS_VISUALIZATION = False
|
|
468
|
+
plot_fft = None # type: ignore[assignment]
|
|
469
|
+
plot_spectrum = None # type: ignore[assignment]
|
|
470
|
+
plot_waveform = None # type: ignore[assignment]
|
|
463
471
|
|
|
464
472
|
# Workflows (WRK-001 to WRK-005 + reverse engineering)
|
|
465
473
|
from oscura.workflows import (
|
|
@@ -487,10 +495,6 @@ __all__ = [
|
|
|
487
495
|
"AnalysisRecommendation",
|
|
488
496
|
# Expert API - Results (API-005)
|
|
489
497
|
"AnalysisResult",
|
|
490
|
-
# Session Management (SESS-002)
|
|
491
|
-
"Annotation",
|
|
492
|
-
"AnnotationLayer",
|
|
493
|
-
"AnnotationType",
|
|
494
498
|
# Discovery
|
|
495
499
|
"Anomaly",
|
|
496
500
|
# Audit trail (LOG-009)
|
|
@@ -498,11 +502,16 @@ __all__ = [
|
|
|
498
502
|
"AuditTrail",
|
|
499
503
|
"BandPassFilter",
|
|
500
504
|
"BandStopFilter",
|
|
505
|
+
# Session Management
|
|
506
|
+
"BlackBoxSession",
|
|
507
|
+
"CANSession",
|
|
501
508
|
"ComplianceReportFormat",
|
|
502
509
|
"ComplianceResult",
|
|
503
510
|
"ComplianceViolation",
|
|
504
511
|
"Composable",
|
|
505
512
|
"ConfigurationError",
|
|
513
|
+
# Automotive
|
|
514
|
+
"DBCGenerator",
|
|
506
515
|
# Discovery
|
|
507
516
|
"DataQuality",
|
|
508
517
|
# Convenience functions
|
|
@@ -516,12 +525,11 @@ __all__ = [
|
|
|
516
525
|
"FieldSpec",
|
|
517
526
|
"FilterResult",
|
|
518
527
|
"FormatError",
|
|
528
|
+
"GenericSession",
|
|
519
529
|
# Signal quality (QUAL-005)
|
|
520
530
|
"Glitch",
|
|
521
531
|
"GoldenReference",
|
|
522
532
|
"HighPassFilter",
|
|
523
|
-
# Session Management (SESS-003)
|
|
524
|
-
"HistoryEntry",
|
|
525
533
|
# Reverse engineering workflow
|
|
526
534
|
"InferredFrame",
|
|
527
535
|
"InsufficientDataError",
|
|
@@ -539,7 +547,6 @@ __all__ = [
|
|
|
539
547
|
# Signal quality (QUAL-001)
|
|
540
548
|
"NoiseMarginResult",
|
|
541
549
|
"NumberFormatter",
|
|
542
|
-
"OperationHistory",
|
|
543
550
|
# Exceptions
|
|
544
551
|
"OscuraError",
|
|
545
552
|
# Signal quality (QUAL-007)
|
|
@@ -561,8 +568,6 @@ __all__ = [
|
|
|
561
568
|
# Reverse engineering workflow
|
|
562
569
|
"ReverseEngineeringResult",
|
|
563
570
|
"SampleRateError",
|
|
564
|
-
# Session Management (SESS-001)
|
|
565
|
-
"Session",
|
|
566
571
|
# Signal builders
|
|
567
572
|
"SignalBuilder",
|
|
568
573
|
# Discovery
|
|
@@ -668,11 +673,8 @@ __all__ = [
|
|
|
668
673
|
"enob",
|
|
669
674
|
# Memory management
|
|
670
675
|
"estimate_memory",
|
|
671
|
-
# Export functions
|
|
672
|
-
|
|
673
|
-
"export_hdf5",
|
|
674
|
-
"export_json",
|
|
675
|
-
"export_mat",
|
|
676
|
+
# Export functions - removed legacy exports
|
|
677
|
+
# Use oscura.export.wireshark, kaitai_struct, scapy_layer instead
|
|
676
678
|
# Component analysis
|
|
677
679
|
"extract_impedance",
|
|
678
680
|
"extract_parasitics",
|
|
@@ -728,8 +730,8 @@ __all__ = [
|
|
|
728
730
|
"load_config",
|
|
729
731
|
"load_limit_mask",
|
|
730
732
|
"load_plugin",
|
|
731
|
-
# Session Management
|
|
732
|
-
|
|
733
|
+
# Session Management - removed legacy load_session
|
|
734
|
+
# Use AnalysisSession API instead
|
|
733
735
|
# Expert API - Streaming (API-003)
|
|
734
736
|
"load_trace_chunks",
|
|
735
737
|
# Filtering
|
oscura/analyzers/__init__.py
CHANGED
|
@@ -10,6 +10,7 @@ Provides signal analysis functionality including:
|
|
|
10
10
|
- Eye diagram analysis (height, width, Q-factor)
|
|
11
11
|
- Signal integrity (S-parameters, equalization)
|
|
12
12
|
- Side-channel analysis (DPA, CPA, timing attacks)
|
|
13
|
+
- Machine learning classification (automatic protocol detection)
|
|
13
14
|
"""
|
|
14
15
|
|
|
15
16
|
# Import measurements module as namespace for DSL compatibility
|
|
@@ -18,6 +19,7 @@ from oscura.analyzers import (
|
|
|
18
19
|
eye,
|
|
19
20
|
jitter,
|
|
20
21
|
measurements,
|
|
22
|
+
ml,
|
|
21
23
|
protocols,
|
|
22
24
|
side_channel,
|
|
23
25
|
signal_integrity,
|
|
@@ -31,6 +33,7 @@ __all__ = [
|
|
|
31
33
|
"eye",
|
|
32
34
|
"jitter",
|
|
33
35
|
"measurements",
|
|
36
|
+
"ml",
|
|
34
37
|
"protocols",
|
|
35
38
|
"side_channel",
|
|
36
39
|
"signal_integrity",
|