oscura 0.6.0__py3-none-any.whl → 0.8.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.
Files changed (38) hide show
  1. oscura/__init__.py +1 -1
  2. oscura/analyzers/eye/__init__.py +5 -1
  3. oscura/analyzers/eye/generation.py +501 -0
  4. oscura/analyzers/jitter/__init__.py +6 -6
  5. oscura/analyzers/jitter/timing.py +419 -0
  6. oscura/analyzers/patterns/__init__.py +28 -0
  7. oscura/analyzers/patterns/reverse_engineering.py +991 -0
  8. oscura/analyzers/power/__init__.py +35 -12
  9. oscura/analyzers/statistics/__init__.py +4 -0
  10. oscura/analyzers/statistics/basic.py +149 -0
  11. oscura/analyzers/statistics/correlation.py +47 -6
  12. oscura/analyzers/waveform/__init__.py +2 -0
  13. oscura/analyzers/waveform/measurements.py +145 -23
  14. oscura/analyzers/waveform/spectral.py +361 -8
  15. oscura/automotive/__init__.py +1 -1
  16. oscura/core/config/loader.py +0 -1
  17. oscura/core/types.py +108 -0
  18. oscura/loaders/__init__.py +12 -4
  19. oscura/loaders/tss.py +456 -0
  20. oscura/reporting/__init__.py +88 -1
  21. oscura/reporting/automation.py +348 -0
  22. oscura/reporting/citations.py +374 -0
  23. oscura/reporting/core.py +54 -0
  24. oscura/reporting/formatting/__init__.py +11 -0
  25. oscura/reporting/formatting/measurements.py +279 -0
  26. oscura/reporting/html.py +57 -0
  27. oscura/reporting/interpretation.py +431 -0
  28. oscura/reporting/summary.py +329 -0
  29. oscura/reporting/visualization.py +542 -0
  30. oscura/visualization/__init__.py +2 -1
  31. oscura/visualization/batch.py +521 -0
  32. oscura/workflows/__init__.py +2 -0
  33. oscura/workflows/waveform.py +783 -0
  34. {oscura-0.6.0.dist-info → oscura-0.8.0.dist-info}/METADATA +37 -19
  35. {oscura-0.6.0.dist-info → oscura-0.8.0.dist-info}/RECORD +38 -26
  36. {oscura-0.6.0.dist-info → oscura-0.8.0.dist-info}/WHEEL +0 -0
  37. {oscura-0.6.0.dist-info → oscura-0.8.0.dist-info}/entry_points.txt +0 -0
  38. {oscura-0.6.0.dist-info → oscura-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oscura
3
- Version: 0.6.0
3
+ Version: 0.8.0
4
4
  Summary: Unified hardware reverse engineering framework. Extract all information from any system through signals and data. Unknown protocol discovery, state machine extraction, CRC recovery, security analysis. 16+ protocols, IEEE-compliant measurements.
5
5
  Project-URL: Homepage, https://github.com/oscura-re/oscura
6
6
  Project-URL: Documentation, https://github.com/oscura-re/oscura/tree/main/docs
@@ -292,7 +292,7 @@ result = osc.auto_decode(trace)
292
292
  print(f"Detected {result.protocol}: {len(result.frames)} frames decoded")
293
293
  ```
294
294
 
295
- [**6 working examples**](examples/) demonstrating core workflows and analysis patterns.
295
+ **[See demos/README.md](demos/README.md)** for 105+ comprehensive demonstrations organized by skill level.
296
296
 
297
297
  ---
298
298
 
@@ -439,32 +439,50 @@ Built for extensibility:
439
439
 
440
440
  ## Learn By Doing
441
441
 
442
- ### Working Examples
442
+ ### Working Demonstrations
443
443
 
444
- Core functionality demonstrated with working code:
444
+ **105+ comprehensive demos** organized into 12 categories covering:
445
445
 
446
- - [Side-Channel Analysis](examples/side_channel_analysis_demo.py) - DPA/CPA attacks, trace analysis
447
- - [ML Signal Classification](examples/ml_signal_classification_demo.py) - Machine learning for signal identification
448
- - [Wireshark Dissector Generation](examples/export/wireshark_dissector_demo.py) - Auto-generate protocol dissectors
449
- - [DBC File Generation](examples/automotive/dbc_generation_example.py) - CAN bus DBC export
450
- - [LIN Bus Analysis](examples/automotive/lin_analysis_example.py) - LIN protocol decoding
451
- - [Web Dashboard](examples/web_dashboard_example.py) - Interactive visualization
446
+ - **Data Loading** - All file format loaders (oscilloscopes, logic analyzers, automotive, scientific)
447
+ - **Basic Analysis** - Waveform measurements, digital analysis, spectral analysis, filtering
448
+ - **Protocol Decoding** - UART, SPI, I2C, CAN, LIN, FlexRay, JTAG, SWD, I2S, USB
449
+ - **Advanced Analysis** - Jitter, eye diagrams, power analysis, signal integrity, TDR
450
+ - **Domain Specific** - Automotive diagnostics, EMC compliance, side-channel analysis, IEEE 181 timing
451
+ - **Reverse Engineering** - CRC recovery, state machines, Wireshark dissectors, ML classification
452
+ - **Advanced Features** - Lazy loading, memory management, performance optimization, batch processing
453
+ - **Extensibility** - Custom analyzers, plugins, templates
454
+ - **Integration** - CI/CD, hardware, external tools, web dashboards
455
+ - **Export & Visualization** - All export formats, plotting, reporting
456
+ - **Complete Workflows** - End-to-end production pipelines
457
+ - **Standards Compliance** - IEEE 181/1241/1459/2414, automotive standards
452
458
 
453
- ### Run Your First Example
459
+ ### Comprehensive Demonstrations
460
+
461
+ **33+ in-depth demos** organized by skill level and domain:
462
+
463
+ - **[Getting Started](demos/README.md#beginner-path-2-4-hours)** - File loading, basic measurements, format export (Beginner, 2-4 hours)
464
+ - **[Protocol Decoding](demos/README.md#intermediate-path-6-10-hours)** - UART, SPI, I2C, Manchester, JTAG, USB, PCAP (Intermediate, 6-10 hours)
465
+ - **[Reverse Engineering](demos/README.md#advanced-path-12-20-hours)** - CRC recovery, state machines, Wireshark dissectors, automotive protocols (Advanced, 12-20 hours)
466
+ - **[Standards Compliance](demos/README.md#advanced-path-12-20-hours)** - IEEE 181/1241/1459/2414, CISPR 32, IEC 61000 (Advanced/Expert)
467
+ - **[Complete Workflows](demos/README.md#expert-path-20-40-hours)** - End-to-end production pipelines with ML inference (Expert, 20-40 hours)
468
+
469
+ **Categories**: Waveform Analysis | File I/O | Custom DAQ | Serial Protocols | Protocol Decoding | UDP Analysis | Protocol Inference | Automotive | Timing | Mixed Signal | Spectral | Jitter | Power | Signal Integrity | EMC | Signal RE | Advanced Inference | Complete Workflows
470
+
471
+ [**See full demo catalog with learning paths**](demos/README.md)
472
+
473
+ ### Run Your First Demo
454
474
 
455
475
  ```bash
456
476
  # Install development dependencies
457
477
  ./scripts/setup.sh
458
478
 
459
- # Side-channel analysis demo
460
- python examples/side_channel_analysis_demo.py
479
+ # Run your first demo
480
+ python demos/00_getting_started/00_hello_world.py
461
481
 
462
- # ML signal classification
463
- python examples/ml_signal_classification_demo.py
482
+ # Or try a specific topic
483
+ python demos/05_domain_specific/05_side_channel_basics.py
464
484
  ```
465
485
 
466
- [**Browse all examples**](examples/)
467
-
468
486
  ---
469
487
 
470
488
  ## Command-Line Interface
@@ -556,7 +574,7 @@ python3 .claude/hooks/validate_all.py # Must show 5/5 passing
556
574
  | **Real-World Validation** | Test on your captures, report issues | Ensure reliability across use cases |
557
575
  | **Documentation & Case Studies** | Tutorials, sanitized RE workflows, academic papers using Oscura | Lower entry barrier, demonstrate capabilities |
558
576
 
559
- [**Contributing Guide**](CONTRIBUTING.md) | [Architecture Documentation](docs/architecture/)
577
+ [**Contributing Guide**](CONTRIBUTING.md) | [Architecture Documentation](docs/developer-guide/architecture.md)
560
578
 
561
579
  ### Community
562
580
 
@@ -584,7 +602,7 @@ python3 .claude/hooks/validate_all.py # Must show 5/5 passing
584
602
 
585
603
  ### Development
586
604
 
587
- - [Architecture](docs/architecture/) - Design principles and patterns
605
+ - [Architecture](docs/developer-guide/architecture.md) - Design principles and patterns
588
606
  - [Testing Guide](docs/testing/) - Test suite architecture
589
607
  - [CHANGELOG](CHANGELOG.md) - Version history and migration guides
590
608
 
@@ -1,4 +1,4 @@
1
- oscura/__init__.py,sha256=sZMIZXUx6o16YS0E_1XC19L0dIduZHJgTFa5960TenQ,19022
1
+ oscura/__init__.py,sha256=pyZQJ3785pl4cQPnTdfs7vrxjVmRpXBA2LP_VG9mufo,19022
2
2
  oscura/__main__.py,sha256=l1rnaD-tpI1W3cp1VHGhSdq9NDqw6Gxjf_gnqXf-zzE,11786
3
3
  oscura/convenience.py,sha256=tAABQMwgKjftSNUJLlYnchAwVSO-no0rBfSZteXfZnI,16361
4
4
  oscura/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -18,15 +18,17 @@ oscura/analyzers/digital/signal_quality.py,sha256=Ssb1MkUfqjiENJJFOslkTX8Ef6C65H
18
18
  oscura/analyzers/digital/thresholds.py,sha256=CrGgO1rtzkUOnYb40UT3_uD_0qVA853lGL2WNL95qv4,22428
19
19
  oscura/analyzers/digital/timing.py,sha256=Hfv9xXjjyiYs7DIIe8c60vHZBX-ehnPAmjMerfoK93Y,38565
20
20
  oscura/analyzers/digital/timing_numba.py,sha256=F2sdubZK3I5ifk_6u1qKzmxsCRq4er8BXhemFnuhTSs,10657
21
- oscura/analyzers/eye/__init__.py,sha256=SRW0Ir-1RWLwoaenk6FZhGOIWPkuhevYTPt_-8thPw0,974
21
+ oscura/analyzers/eye/__init__.py,sha256=vqtyZ9whC6teeh81Mkn7myPkLYfLXpYexKOGrVp_7BM,1101
22
22
  oscura/analyzers/eye/diagram.py,sha256=CHEo4-5_vRydG99_nIveJMnz8txFtK7zIysNI307k_w,15289
23
+ oscura/analyzers/eye/generation.py,sha256=CHEo4-5_vRydG99_nIveJMnz8txFtK7zIysNI307k_w,15289
23
24
  oscura/analyzers/eye/metrics.py,sha256=UXNAdRnJCbgje79yOK--3gbSZ4gDb6uaUxQGNCJkRcA,17055
24
- oscura/analyzers/jitter/__init__.py,sha256=BKoRcC7rR-8FV4UipcT5ymfJxmL_u7866Rs9eJl-Nns,2249
25
+ oscura/analyzers/jitter/__init__.py,sha256=qTm4reC80D41gI_Mhb1TmMXM4Pl-KFw0OickgPyT-y4,2243
25
26
  oscura/analyzers/jitter/ber.py,sha256=dOFBW8vx6w-NCdV3hKawhHAJkDcUwjO0GkjqLGvHoM8,9113
26
27
  oscura/analyzers/jitter/classification.py,sha256=CjMHTxfJHjCwAW2KParuBJf6d3yIyDlrltblusZvRVI,6097
27
28
  oscura/analyzers/jitter/decomposition.py,sha256=Uc37cJLpKBNhU9uXuurPMxJOR4nSC3h79yjPM8k03SE,25626
28
29
  oscura/analyzers/jitter/measurements.py,sha256=xAxw_82M8v6Vq3oPMmGN44LzAUOmpi-YoLs58fCpA8Q,12417
29
30
  oscura/analyzers/jitter/spectrum.py,sha256=pzsH0ekM97rligOUOHlsp-8Hn1VZnQpd-a8EeZO3uYE,7164
31
+ oscura/analyzers/jitter/timing.py,sha256=_-YhTAwKHDnzwL-MFXiqNZrH5y2TxDyIsbayMkuC64o,12627
30
32
  oscura/analyzers/ml/__init__.py,sha256=77br1uGiIDnQJQngwfKPDep3OVGhoA_Pj3vIp_dnoUA,1356
31
33
  oscura/analyzers/ml/features.py,sha256=xroEW2wqVWsZb2j2dnEQXlyubyHCKxY73WgjNOFrsms,21767
32
34
  oscura/analyzers/ml/signal_classifier.py,sha256=pWpuIuB7PWOe71ozjJXIKOjpZckYf5cyp5mVPsacln4,22359
@@ -39,7 +41,7 @@ oscura/analyzers/packet/payload_analysis.py,sha256=ch4xmtrgOJjYx61z9Kf0qsuKMgnzM
39
41
  oscura/analyzers/packet/payload_extraction.py,sha256=yBJG-KbljlIyA2hZCv3N5L_eBrkXnS0wXp-EBpKpiX4,7752
40
42
  oscura/analyzers/packet/payload_patterns.py,sha256=GNvrWTbSWS5j-vsSipoRX4x35DsAptMZvtFDwgwY1ys,21791
41
43
  oscura/analyzers/packet/stream.py,sha256=2izSnyp77bd2Zp6QWPZdtMa1C7mAm48bqi-Y6Igk3ZQ,11215
42
- oscura/analyzers/patterns/__init__.py,sha256=SlYG7CbwB_036mWTJl3CqO2-sQGZKI_z1hm8lyNEV8w,7759
44
+ oscura/analyzers/patterns/__init__.py,sha256=-KC7qgwMZ4JSy04o-uV2tlNabMH36aIdEHr16vksXAQ,8546
43
45
  oscura/analyzers/patterns/anomaly_detection.py,sha256=yq7yMpAf1YY41nT-xykuIRlCpAqZVggjCmbeZpZhQeQ,34625
44
46
  oscura/analyzers/patterns/clustering.py,sha256=e5H7mMpz7hz29OmpKuXSaI6rRQ0UYMmn3vjyF8Y-gtM,35030
45
47
  oscura/analyzers/patterns/clustering_optimized.py,sha256=9aZ7cJZykCfMxnI6FoXEkirKUbpFLd1dkIdtwhsEqUM,7579
@@ -48,8 +50,9 @@ oscura/analyzers/patterns/learning.py,sha256=aRhE3vLg6fX1a1aD2Lpseil_4EFcrL9vitD
48
50
  oscura/analyzers/patterns/matching.py,sha256=pQVfdrzzt_rsyBkB3gW6qsEkH0GO0vHs0WRtnCGsDro,45653
49
51
  oscura/analyzers/patterns/pattern_mining.py,sha256=r9--2ebVBi6ixBicvQXxLbEKPTaH0-HDpl0uGCi2YWI,28686
50
52
  oscura/analyzers/patterns/periodic.py,sha256=MBYtTfJayshCNHWsRxqqJmTbedkR9ZaD4CfuQan24zQ,23025
53
+ oscura/analyzers/patterns/reverse_engineering.py,sha256=xzSr5P3wtAUnyz5Mc97dMrsk2r8HQOArSBxIGN3xVNo,33268
51
54
  oscura/analyzers/patterns/sequences.py,sha256=VwB0KubceaaOpfK3tPCP1CfuTkGsq2Xf3Zk95Jgpl3o,26188
52
- oscura/analyzers/power/__init__.py,sha256=MD2seC2_PLHzpR1ZUKnM43ZPsZy0Fa9_mIdMrGlQvoo,2755
55
+ oscura/analyzers/power/__init__.py,sha256=Q2U9bW8tmz5pFgmNM_KKxDJpzBB5saM6nwleCeFlBWo,3483
53
56
  oscura/analyzers/power/ac_power.py,sha256=8Oblosut_--CniQcoUGOwdACt2UmUznCu0cSsUCKQs4,10400
54
57
  oscura/analyzers/power/basic.py,sha256=K6NYIlPkz5_hbHehtUq9MEEKjULqzc7pkCHy2cp6nfQ,11357
55
58
  oscura/analyzers/power/conduction.py,sha256=z2rI-VlMgvW47s_fwdctG9y0F64UPnm61jto5JapgoE,8604
@@ -121,18 +124,18 @@ oscura/analyzers/statistical/chunked_corr.py,sha256=B9SXVXZKyNfUJ5uSCw8kX4oxYkrI
121
124
  oscura/analyzers/statistical/classification.py,sha256=7H8olxcMSCNPVlI2hnWgJPfR6V-I8eCM53woGvpb8Yo,27997
122
125
  oscura/analyzers/statistical/entropy.py,sha256=PumI1rLhR4QtvUVGooPYXEKbvV8u5sAuXvhTesimDWc,35981
123
126
  oscura/analyzers/statistical/ngrams.py,sha256=lsmhIFMYncX7nymdFMi916Nd1BwlPsgVMMPCF3qadMk,18054
124
- oscura/analyzers/statistics/__init__.py,sha256=5dMDFjrxnhVJUqFxnYZL_EhVBDI5SZojJ54HbtHASHs,2743
127
+ oscura/analyzers/statistics/__init__.py,sha256=cn40BFJeXEQt7Ljmx9_JDk-QltFYmVwYmQghKBcn24U,2809
125
128
  oscura/analyzers/statistics/advanced.py,sha256=XeIlZR8COj1yF7OtRZfZ5KWBLYXUSqgN2hNmtiLAD0g,26800
126
- oscura/analyzers/statistics/basic.py,sha256=Utdf7Cvg2o9TXUQEq1qeEp-W5lb28uECmzjHEKiCW2c,7115
127
- oscura/analyzers/statistics/correlation.py,sha256=AXk3879xnaRitCbC1HGmtil9ztP6j2l1xBLLDCa5hCI,27329
129
+ oscura/analyzers/statistics/basic.py,sha256=OfYLPAuZrX9AM79fhxjWvB8ZdLKTlE3tNNTkSsSEjr4,12056
130
+ oscura/analyzers/statistics/correlation.py,sha256=YwQcmtcEqVkOQh2lXd9sfIQX3fu8uzJBg_XPv3-tdOc,28990
128
131
  oscura/analyzers/statistics/distribution.py,sha256=ps2lXgWGYsUBTpGaftC5Qdz7GlDqJmB6z4uXaTeaLao,8916
129
132
  oscura/analyzers/statistics/outliers.py,sha256=rxXKt8BgxEUlgb0UJVbOO3V-WvUL9ODJ003dmYpufuc,14667
130
133
  oscura/analyzers/statistics/streaming.py,sha256=W0qxfqD8gBdbpqYPIORF_uJP88gGYnuAnFs3PBEpc-k,3604
131
134
  oscura/analyzers/statistics/trend.py,sha256=Tu0gUZqy4PJ7Ne7YzRuJGU80DUl71Onc3QXsbaiuLjU,15565
132
- oscura/analyzers/waveform/__init__.py,sha256=icFPs-NPaiaNzxjFfzOcMP613jzbqTz_5OgwnJbx7i4,560
133
- oscura/analyzers/waveform/measurements.py,sha256=5-Qxz7AOwpksFnskaq6qRp0UiyV68WC3iCMPvGbFDrw,26181
135
+ oscura/analyzers/waveform/__init__.py,sha256=SqLMhTFy4-Krx0b3hTZbhd1NKPeNe767Q6yaTz1wo1c,614
136
+ oscura/analyzers/waveform/measurements.py,sha256=h-ar252LHcFv7P89vDG_Dt9HT1SMeTxizRgr7Ebrc3M,31458
134
137
  oscura/analyzers/waveform/measurements_with_uncertainty.py,sha256=CeqGVWE66OVZdal38JXtGCz_Zrg91h9JmI-Mnmkh3GE,13308
135
- oscura/analyzers/waveform/spectral.py,sha256=6HYTHjtChWNeEw7tzZrDVJJsNUGtMDfBqMqvfsm59Ng,56479
138
+ oscura/analyzers/waveform/spectral.py,sha256=D6YUjZyqKgyU-4oT1vs2NelAsFmpbbU-fSbH9N62UdA,68419
136
139
  oscura/analyzers/waveform/wavelets.py,sha256=rKoqiKmuLQ9iKMFshJam7wdn6fL6sFcJY_-J0fYl5F4,10116
137
140
  oscura/api/__init__.py,sha256=7URqzrBUiIq54TSUUi291VhBiZ-ZL5cS4m5eM0WppGk,1808
138
141
  oscura/api/dsl.py,sha256=_azJ2AnbN5EDhgH6RiZmHEDJxu5lzMbZpDhhsmaX7Zs,14880
@@ -159,7 +162,7 @@ oscura/api/server/templates/reports.html,sha256=18xoAZPIg7eQANs9k-tmGzVs_-tmS5m6
159
162
  oscura/api/server/templates/session_detail.html,sha256=32HnJ0o8ptlZEHQVO1c96j6PoxS0856kPjW2MVn0D8o,3693
160
163
  oscura/api/server/templates/sessions.html,sha256=kVcpLOlXAx0PizP7Vc1NlhsYg5swTj77fKCZxoTTCYU,3146
161
164
  oscura/api/server/templates/waveforms.html,sha256=5XfpHkgRpmV0MeFb9pBkVDa63phT8zGWnrmA0UlUwZE,2269
162
- oscura/automotive/__init__.py,sha256=MhHsef7rFKAn_0souQIh2BQPcIlKnBzBOryTr5oww-I,2767
165
+ oscura/automotive/__init__.py,sha256=ZdYV6Ber8UAYSwUogrcDwhKB7Gnay9FyyrLlhIs-Cls,2767
163
166
  oscura/automotive/visualization.py,sha256=LD6Gia3kDqoB_jQkOeVmyRVLv1BPuTUVj6lJMVtbQWg,10664
164
167
  oscura/automotive/can/__init__.py,sha256=ZYxC8tMMi9Drm9adkH5yklypBTfIbf3D7BYA2SUp9fE,1491
165
168
  oscura/automotive/can/analysis.py,sha256=0z6MycxuJGusqDQhYEpHnGRmDw3OMf5yDbS8zI6GJO0,11251
@@ -250,12 +253,12 @@ oscura/core/performance.py,sha256=ICufOlSaJWrG6I92EEM2PLzHRFBNzu2NfvAAH_6b9f8,10
250
253
  oscura/core/progress.py,sha256=NLXt64MiZHGzrA5Q0NgSh6Ujg9VSw8QcpVvmpAG2ZgE,15723
251
254
  oscura/core/provenance.py,sha256=CQ8lbWuBxfvTSrPNIxJifdt3lWxn82jd7ELJg-OPVXM,10824
252
255
  oscura/core/results.py,sha256=ZdIOncVhm15E-P_5OaU-MZBw2ZWD0_4WBbMqV0IhJso,10637
253
- oscura/core/types.py,sha256=-uEhGEnbf2huOPGoOkGJs6g8CBa2JAIiR02UoDD5zxU,17602
256
+ oscura/core/types.py,sha256=1cre35OZ7bUBQPwZJGLLKFjgcyerX9gN0-ILyGH3Wxo,19911
254
257
  oscura/core/uncertainty.py,sha256=s9y-sQy9U_cbCwugHGP3U-alxotYrI90CJtjDZ25UjA,13224
255
258
  oscura/core/config/__init__.py,sha256=uncP5qTPfL0UZfBXvbzOv_rGUGY8rIV7qCoNIxcdAkE,4673
256
259
  oscura/core/config/defaults.py,sha256=USi1iCT3CY3qozltmDkB7HrNNgCc7KG03L6Wd18cPxU,6513
257
260
  oscura/core/config/legacy.py,sha256=S6jmz7Zo8TN2NUWhlgJRkTDWAnfpfBTK_XaRlUXKBd4,15053
258
- oscura/core/config/loader.py,sha256=6lWd1qZq_-gpw0oi_Tojuvp55EgD2FWviihObcv78Ac,9397
261
+ oscura/core/config/loader.py,sha256=BNBjtWwampW0smqLPWeKxU7Y1RVFkxkfFyp9BjDLEcc,9322
259
262
  oscura/core/config/memory.py,sha256=IiJqJSXaVNXhKwPUqMhCZpgZRPPpl09MLMn7Ux1Fwp4,8183
260
263
  oscura/core/config/migration.py,sha256=bcNPm2RPH19syS9IxLNR4grS4NlvayBEORTolzhB0fE,14131
261
264
  oscura/core/config/pipeline.py,sha256=ndMU-FQwf5k_i0de5JGLMBYp1QpK0c-9cUuGRb5XXHw,38116
@@ -376,7 +379,7 @@ oscura/jupyter/exploratory/unknown.py,sha256=KaxpoP9tW9E7Ld16_3VaXaKszfcU2uw62Id
376
379
  oscura/jupyter/ui/__init__.py,sha256=XQJh89b_xRe1CB8jssjIdbVgQeLCplFzSkCiXQYKXFU,935
377
380
  oscura/jupyter/ui/formatters.py,sha256=roXZhaNLgypb30T6EGF805cDkrqsAh_RQ978iGLtlAU,13580
378
381
  oscura/jupyter/ui/progressive_display.py,sha256=Ew-xXek_f6-XkR0CZymyzYbYkbXn8qCZS6Usk2n86dQ,11993
379
- oscura/loaders/__init__.py,sha256=6XL9e9V3c5sE4tNyNVE4NNEvk9g16lA8nGfyewbtfzs,19927
382
+ oscura/loaders/__init__.py,sha256=f1yakezyiv6IjrsK_L7H1jFCwQUAGNCvjv5DIKHDgzo,20237
380
383
  oscura/loaders/binary.py,sha256=USQTTdWjbrn3b-Ly4v-E5eLhga6kM73QlNKxnLm1YUw,5062
381
384
  oscura/loaders/chipwhisperer.py,sha256=gkxgakx0YXxJ4dKKkSmlOZYa-VKdWFldAbz3PPAvWyw,12756
382
385
  oscura/loaders/configurable.py,sha256=QyyqN_hMBKafx1wyMCcQrykRFY_TfWFU8XLYXztjnFY,44483
@@ -394,25 +397,29 @@ oscura/loaders/sigrok.py,sha256=BliW7KuLIKpyRkupaZTGlSczVoHWbK0-HBs2n4r5oVM,1302
394
397
  oscura/loaders/tdms.py,sha256=J1qDLiQMDs_7ayR04g9hsP39hs7LkYy7jJEc57BUPzw,11114
395
398
  oscura/loaders/tektronix.py,sha256=V-ns3yCqsXSkeZ1zNXbOZZuViMzYagsiiHr12WeKc4s,26189
396
399
  oscura/loaders/touchstone.py,sha256=Cj4KlQQMcSEZuf5M0hg3lFvXvnuPZkcLa8-X-qKEObA,8898
400
+ oscura/loaders/tss.py,sha256=c0xL2h0x09u765qFAxOKpFE8ggOGpc9DwUyRi6r41Y0,13874
397
401
  oscura/loaders/validation.py,sha256=JA_vVYQJB4gC9KFKa2lsGV5D-_agmIjP9kE_dXpv4Wk,17835
398
402
  oscura/loaders/vcd.py,sha256=y1mFZXTEqJEFfvMf3MYgGk5e16qG7mNlyAQgVLZNwfU,17722
399
403
  oscura/loaders/wav.py,sha256=xv6eELWMYflP7OormysAe6-yAiYNzWMInzC6cuUZZmo,9391
400
- oscura/reporting/__init__.py,sha256=PtKt8iuNKPRp0V0hXr_SQS_J3iJdlXykrsfYe8e28xk,6333
404
+ oscura/reporting/__init__.py,sha256=btcyeGPt73ZK7X4mIcMdfEdTUoYvkQh9tToTS1WobFE,8546
401
405
  oscura/reporting/advanced.py,sha256=dcu2fjCA_a4R7lGhdUQbcAb7ioTg7lkUwDiQK4uopjM,36413
402
406
  oscura/reporting/analyze.py,sha256=fMNZEQGBMX6I47DrJC8V1HjsWhmLIkfZPQNMFSIfD2E,20604
403
407
  oscura/reporting/argument_preparer.py,sha256=ofXjstDnwlC30MKLHiRphUzC7NkGeELgu40yE0slMFY,25965
404
408
  oscura/reporting/auto_report.py,sha256=VxB74gApLuXfoQ21YDgVzCUZviZKVvau_p6Xjs9kYw8,16290
409
+ oscura/reporting/automation.py,sha256=vh53Uz4gs5_IQGv6nS92mVv-xzsQV9vXih2db2OaOt4,11225
405
410
  oscura/reporting/batch.py,sha256=m-9tX6U9nr85pK7jDkhvvPuZMvXVs6s2nGJ9tSuFFLk,21480
406
411
  oscura/reporting/chart_selection.py,sha256=AAtitNpLc6ahZBMLLPjCMLrI3r819-Nbv8Q2Da4WiK8,6868
412
+ oscura/reporting/citations.py,sha256=o0es0cELNLXoY7b0jh7IHaj40Ka26UMmFcR6gCphIPQ,11735
407
413
  oscura/reporting/comparison.py,sha256=3Hf0bIP536ZtNKi-WHmgJtJY8OWCamoyM41TdXHPC8I,11656
408
414
  oscura/reporting/config.py,sha256=cmLsHhaRJRcu97u7FKLsTPB4FYla9RkoDkmZg8wmnhQ,23352
409
- oscura/reporting/core.py,sha256=mOnLShs3YXa_6RdmCnJThxMHe6CgRgE4YYcJLIh0iIg,15640
415
+ oscura/reporting/core.py,sha256=xKQ5hVblO5J6S97zPJgLoTYIimhOu4xONpzrqGkgVaE,17759
410
416
  oscura/reporting/engine.py,sha256=9w-UhDNXYmTVsLpM-ldFTDy2rsztEeylnvB4KBSyJ1g,36219
411
417
  oscura/reporting/enhanced_reports.py,sha256=lqH8TTGbVjxXGA8JCL9AmfHGlqGs3Sa0LiB9M083lkg,32556
412
418
  oscura/reporting/export.py,sha256=KofJZHiNHwa1lSF_xFDARZetvA5mmSc41o5ofLohQ84,11114
413
419
  oscura/reporting/formatting.py,sha256=KLM7fBpkKyGG_3LyyxRRYxt43AXSoHQ3ErzNbWZBRfs,12496
414
- oscura/reporting/html.py,sha256=xKj3kCCU07NrX6GsgxASUaE-j2drjlzr4QY2cY4edZg,16916
420
+ oscura/reporting/html.py,sha256=EChyMoZKR5_vFij0QVrZpkgillQUAUSvWaYeILPBUpI,19025
415
421
  oscura/reporting/index.py,sha256=oeVw37d0gzymmT3yPZyL8szJx2ydys1-OLe9oGJO6vE,21633
422
+ oscura/reporting/interpretation.py,sha256=EjvraQRDIn2Ld4x-rhs8GGpLFRlViNqFYR04WRyhbTg,14671
416
423
  oscura/reporting/multichannel.py,sha256=kLaNlZJhruLWAUcRyduOfbuakxQH4vB6pQ_Z57aYP6c,9174
417
424
  oscura/reporting/output.py,sha256=g2pBM2eZUPIQkawlSDm6CqUxpPIMuSRu2nYBRro9rtE,13646
418
425
  oscura/reporting/pdf.py,sha256=nKM2MbqgpUgGlzShWSzu_n47-2Ys7uJo1b9DnXLaehg,10447
@@ -420,9 +427,11 @@ oscura/reporting/plots.py,sha256=E2XiJXLLNorHi3emoA76jHWrPz0zzUzIjuo93KMONO4,258
420
427
  oscura/reporting/pptx_export.py,sha256=CojDp1TaM08U3fJqM1yZPvLZiM6zF5-iKah8-SZ7YGQ,10253
421
428
  oscura/reporting/sections.py,sha256=s5tiWGMuKT9c81TR0FXb7F06LtdUlFtUXsZjGBmckOw,13907
422
429
  oscura/reporting/standards.py,sha256=Xsrpx1rE3HhvEJtyZcALZHND3OceqWUvNGxHaNjKjDs,19684
430
+ oscura/reporting/summary.py,sha256=iJbAEV4Y2n8GN8UvtRzY6xmJoZs_4gqaMZ5wyu_1Av8,10558
423
431
  oscura/reporting/summary_generator.py,sha256=VjRiXBbxmMIXIWx3pzL85ZR3hzui1jwAvmEVOnwETyo,11265
424
432
  oscura/reporting/tables.py,sha256=R20Ge_YLXuZT-JKob9dQCZlhwoM5eo1IN8CTfN7eivs,13697
425
433
  oscura/reporting/template_system.py,sha256=jPF5jkkjl8el8V6IGJGNZmPlNRFZd0_DBbcokOUMiTU,21135
434
+ oscura/reporting/visualization.py,sha256=vM1Efhq37LZ4T2xNt5CRzbjBAeilaQ06iowsdxn11yw,17047
426
435
  oscura/reporting/content/__init__.py,sha256=MIU1IrYdFy7L7d6CY8RxkzL1_wL1qLYUfzUsKaASgJ4,874
427
436
  oscura/reporting/content/executive.py,sha256=EZOy_OQ_WV8kknJS2s0KUdPv9LMkgMVm1__aXDor9Kk,5727
428
437
  oscura/reporting/content/filtering.py,sha256=JrSPJPyGw_jsZUWlAi-ELt8b2ybh1Ui_wXWULv0R-ng,5184
@@ -430,8 +439,9 @@ oscura/reporting/content/minimal.py,sha256=amh-1wTJwPct-55HHCyUYDVEAcO0RXsyUu7Ug
430
439
  oscura/reporting/content/verbosity.py,sha256=ZCv5-EXH7Re6ix8d1ON3BdekMhSADmzcPhmXcmZmscg,4311
431
440
  oscura/reporting/core_formats/__init__.py,sha256=5mqsnXEIxyiuz38n4DekySkk3ro-bKYkr91xyl2oPLI,453
432
441
  oscura/reporting/core_formats/multi_format.py,sha256=qqCANlp0gZJQ5gBbBmIzGKPDaXoO229ThFJi_My5d88,6214
433
- oscura/reporting/formatting/__init__.py,sha256=KA7RSoQkcsNtTjC3L-o3D38EMkkZBqYvgHcSABK3uik,3196
442
+ oscura/reporting/formatting/__init__.py,sha256=1ZZ2MZHuhEqChx4LYBmTv-U3qbRJE-CibXyXSzAuggM,3504
434
443
  oscura/reporting/formatting/emphasis.py,sha256=bsc7gFfwGbonXfJZt7vl5Nns06oXNJjKP90EE9JNu1o,1761
444
+ oscura/reporting/formatting/measurements.py,sha256=_G4aj5xGYWMGUBvcoKIB10Q_6PEK8eLerGbSw01kqBI,10153
435
445
  oscura/reporting/formatting/numbers.py,sha256=0PTxz_tZRhbBjf7-UHQfUpASkJm_S3zUe44SK8q3ZDA,12932
436
446
  oscura/reporting/formatting/standards.py,sha256=msxfZ0qG3v7DpluiTmJ65wlbbl2qVNZabfMxaunXusU,1171
437
447
  oscura/reporting/renderers/__init__.py,sha256=3xTkPdizeMHrQ3fD_f_zbL1EKImTJHMGnkG-MIk-R_o,185
@@ -537,10 +547,11 @@ oscura/validation/quality/scoring.py,sha256=1znG6o4f33os8ULfduFH2MpGTs8w8oW7hL_t
537
547
  oscura/validation/quality/warnings.py,sha256=-6fU_NsEFuaFsXzmDq9p43dNYb_ll_PV4QuzIbHoP08,13417
538
548
  oscura/validation/testing/__init__.py,sha256=WEG_xHKik5Ohn67nV86QNCfIVw6Tob3jbqGmPAXdbho,1528
539
549
  oscura/validation/testing/synthetic.py,sha256=rlWcLU70Ks4vYIZnEsB-KdL0LgX592-w0cGmJC5u7GE,26444
540
- oscura/visualization/__init__.py,sha256=AHrRdGauJKb7NmxPKXYVPvzgsDlk6T83HrmwFCstldg,9016
550
+ oscura/visualization/__init__.py,sha256=PKluRSrlj_VYm_P-i1IPhtuOPjIIgxnAgXcago3R_Qk,9036
541
551
  oscura/visualization/accessibility.py,sha256=IC_fLCr4C5ifg4tM1P3xZVO_NR5vKD1V5HcIHHSDAMU,16151
542
552
  oscura/visualization/annotations.py,sha256=ZpRiF7XaLrN_ZG3L2SDnz6tUcQKBzQNgRe-BKS0Uqno,10761
543
553
  oscura/visualization/axis_scaling.py,sha256=19TSQgF5s0I2GSFdLNazwjtMdACBB7fDJwUyDtFCSuc,9300
554
+ oscura/visualization/batch.py,sha256=nk0DxwuxuJaaVNOE2SyN0qtGgNyBmEYKroQLpIxPcOo,15490
544
555
  oscura/visualization/colors.py,sha256=fsQerkweDxj_S3WX5NDYQLfPGHx9yeX-IDsalvg8WZA,11948
545
556
  oscura/visualization/digital.py,sha256=GxQ6ZP4pgkgrwEWnSyl664Y5PKmUDkPpT3re_03_B8A,12877
546
557
  oscura/visualization/eye.py,sha256=9BuGZZwvdEjsbRF5TVHJDkFNxnDd-IWD2p9C9WbOJYA,16782
@@ -566,7 +577,7 @@ oscura/visualization/styles.py,sha256=58-aRnig_9R1ap6UNWkkLYWAyCM7QHRLrEQF-42vQ_
566
577
  oscura/visualization/thumbnails.py,sha256=WZBN9QkYj6PgETeFT3-yQS7j38dBIvfJ2CxcFnaVSLc,10725
567
578
  oscura/visualization/time_axis.py,sha256=rWzDV2wofJo1VsZg4WP6FSNbdAWOuFg6PjhTM6yukrc,8871
568
579
  oscura/visualization/waveform.py,sha256=jkZbBQb2I3f_6r27xifkoYzIQ5Mj1XosLMx6WFYty9s,12842
569
- oscura/workflows/__init__.py,sha256=22ezDRxuMrR860oFg1s4tyD2QDbJoHNemKCVen32Ldk,1696
580
+ oscura/workflows/__init__.py,sha256=4MClVAhD-_n_maeMR8PPhuNj7ozaGOpxiPOs4alK2cQ,1750
570
581
  oscura/workflows/complete_re.py,sha256=CeI2R8GF1idmRmZ34ecVGlxKw9TYH3WJZdjsaQe7hWw,36960
571
582
  oscura/workflows/compliance.py,sha256=Tr0WlJJ9oDFQrwveRdc3qdIQTnabwQ2FCvj6VS9RFQw,9149
572
583
  oscura/workflows/digital.py,sha256=P0Cd9RQ1isFKbQvxboS9nmf6srseocivE--S2d31u-c,12913
@@ -575,6 +586,7 @@ oscura/workflows/power.py,sha256=AoP_RiQcNIdvh-hu8DIEHT2FKULSnNZ-7257ZoAiNxA,537
575
586
  oscura/workflows/protocol.py,sha256=94eFMrX6ZQVRnIN0y-BDNxlwWNPuhsKvgonlKTfGgBA,15939
576
587
  oscura/workflows/reverse_engineering.py,sha256=5GXMc3BwbNt9WA8Tzi7FEW7LciPjOZNm0Mm1Ej6iygg,25137
577
588
  oscura/workflows/signal_integrity.py,sha256=TQ5CWnS2iyzS5TU32TfLzNilQT2fhY8EPy3E_RM4o-I,9699
589
+ oscura/workflows/waveform.py,sha256=neuAZlkKjpRr01dIAYdWjo2AqIwfDiZg9cptUxpgDZk,31162
578
590
  oscura/workflows/batch/__init__.py,sha256=ngm5GSV8cC-T0nfigyQVkRkqJM5dpaxMTH6s3NZN67c,1260
579
591
  oscura/workflows/batch/advanced.py,sha256=_CvDg_flQMdmWePnXGccboCy2K5sempO3RNubR8q-W0,23656
580
592
  oscura/workflows/batch/aggregate.py,sha256=4Ql2GGVsmy9yxgST_SeRF-aFd8kfKtrorrgK1dcrDNo,15741
@@ -583,8 +595,8 @@ oscura/workflows/batch/logging.py,sha256=6YkTrOA2OSiRjYHmtRn-lL2wyNpya0sggVkgxsz
583
595
  oscura/workflows/batch/metrics.py,sha256=InbxaZmFQrANpp_RCcx5F3va55UaiQjhFJ-_SEKAS20,17322
584
596
  oscura/workflows/legacy/__init__.py,sha256=PqHw8AIWfP4-1lJEjCDC4c_O8GXYOcWodK9ciOnGJaU,409
585
597
  oscura/workflows/legacy/dag.py,sha256=tEhiWmOSdcEYKmrwYUETC0P5yN-_Cy9fEysPwTDVZ3A,12337
586
- oscura-0.6.0.dist-info/METADATA,sha256=CtuxIm7lD1gUhOP9qjFRhIm4WhucoiUSjCxtzOHqLNE,32904
587
- oscura-0.6.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
588
- oscura-0.6.0.dist-info/entry_points.txt,sha256=QLBxd-iTjBQ5HidaVSkLBwvUsqxSG1ZTJ6i-0juu960,48
589
- oscura-0.6.0.dist-info/licenses/LICENSE,sha256=p1_oEK-oqWDXMFSv5mKbyYkgW-CPbCnFUvdICu490aY,1077
590
- oscura-0.6.0.dist-info/RECORD,,
598
+ oscura-0.8.0.dist-info/METADATA,sha256=EmnMxn_jjx354rcHvzv3mM9W4galkREil_IZttzyjxs,34518
599
+ oscura-0.8.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
600
+ oscura-0.8.0.dist-info/entry_points.txt,sha256=QLBxd-iTjBQ5HidaVSkLBwvUsqxSG1ZTJ6i-0juu960,48
601
+ oscura-0.8.0.dist-info/licenses/LICENSE,sha256=p1_oEK-oqWDXMFSv5mKbyYkgW-CPbCnFUvdICu490aY,1077
602
+ oscura-0.8.0.dist-info/RECORD,,
File without changes