toucan-plot 0.2.0__tar.gz → 0.2.1__tar.gz

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 (41) hide show
  1. toucan_plot-0.2.1/PKG-INFO +134 -0
  2. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/pyproject.toml +2 -1
  3. toucan_plot-0.2.1/src/toucan_plot.egg-info/PKG-INFO +134 -0
  4. toucan_plot-0.2.0/PKG-INFO +0 -16
  5. toucan_plot-0.2.0/src/toucan_plot.egg-info/PKG-INFO +0 -16
  6. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/LICENSE +0 -0
  7. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/README.md +0 -0
  8. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/setup.cfg +0 -0
  9. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/__main__.py +0 -0
  10. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/adjustments-dark.svg +0 -0
  11. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/adjustments-light.svg +0 -0
  12. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-autofit-height-dark.svg +0 -0
  13. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-autofit-height-light.svg +0 -0
  14. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-narrow-left-dark.svg +0 -0
  15. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-narrow-left-light.svg +0 -0
  16. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-narrow-right-dark.svg +0 -0
  17. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/arrow-narrow-right-light.svg +0 -0
  18. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/device-floppy-dark.svg +0 -0
  19. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/device-floppy-light.svg +0 -0
  20. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/hand-stop-dark.svg +0 -0
  21. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/hand-stop-light.svg +0 -0
  22. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/home-dark.svg +0 -0
  23. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/home-light.svg +0 -0
  24. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/ico/toucan-plot.ico +0 -0
  25. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/layout-grid-add-dark.svg +0 -0
  26. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/layout-grid-add-light.svg +0 -0
  27. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/math-function-dark.svg +0 -0
  28. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/math-function-light.svg +0 -0
  29. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/ruler-measure-dark.svg +0 -0
  30. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/ruler-measure-light.svg +0 -0
  31. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/zoom-dark.svg +0 -0
  32. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/assets/zoom-light.svg +0 -0
  33. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/main.py +0 -0
  34. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/utils/__init__.py +0 -0
  35. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/utils/loaders.py +0 -0
  36. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot/utils/styles.py +0 -0
  37. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot.egg-info/SOURCES.txt +0 -0
  38. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot.egg-info/dependency_links.txt +0 -0
  39. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot.egg-info/entry_points.txt +0 -0
  40. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot.egg-info/requires.txt +0 -0
  41. {toucan_plot-0.2.0 → toucan_plot-0.2.1}/src/toucan_plot.egg-info/top_level.txt +0 -0
@@ -0,0 +1,134 @@
1
+ Metadata-Version: 2.4
2
+ Name: toucan-plot
3
+ Version: 0.2.1
4
+ Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.11
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: pyqt6>=6.0
10
+ Requires-Dist: matplotlib>=3.0
11
+ Requires-Dist: numpy>=1.20
12
+ Requires-Dist: pyqtdarktheme>=2.1.0
13
+ Requires-Dist: scienceplots>=2.2.1
14
+ Requires-Dist: python-can>=4.0
15
+ Requires-Dist: cantools>=39.0
16
+ Requires-Dist: asammdf>=7.0
17
+ Dynamic: license-file
18
+
19
+ # Toucan-Plot
20
+
21
+ An interactive PyQt6 + Matplotlib plotting tool for CSV, SMV, and CAN bus log files.
22
+
23
+ ![Python](https://img.shields.io/badge/python-3.11+-blue)
24
+ ![License](https://img.shields.io/badge/license-MIT-green)
25
+
26
+ ## Features
27
+
28
+ ### Supported File Formats
29
+
30
+ | Format | Description |
31
+ |--------|-------------|
32
+ | `.csv` / `.smv` | Comma or semicolon delimited data (auto-detected) |
33
+ | `.mf4` / `.mf4z` | ASAM MDF v4 measurement data (via asammdf) |
34
+ | `.blf` | CAN bus binary log |
35
+ | `.trc` | CAN bus trace log |
36
+ | `.asc` | CAN bus ASCII log |
37
+ | `.dbc` | CAN database for signal decoding (required with BLF/TRC/ASC) |
38
+
39
+ - Auto-detects `Time` / `timestamp` columns as the default X axis
40
+ - CAN signals are forward-fill interpolated and named as `Message.Signal`
41
+
42
+ ### Plot Interaction
43
+
44
+ - **Shared X axis** across all subplots with linked panning and zooming
45
+ - **Secondary Y axis** support per series
46
+ - **Double-click** a subplot to edit its series, or **right-click** for a context menu
47
+ - **Measure cursors** — two draggable vertical cursors with a live delta table
48
+ - **Expression evaluator** — create computed series from math expressions (e.g. `sin("series_A") + "series_B" * 2`)
49
+ - **Multi-file merge** — overlay series from different files, each in its own tab
50
+ - **X axis switching** — reassign the X column without losing subplot configuration
51
+ - **Per-series properties** (label, color, linewidth, linestyle, marker) persisted across all redraws
52
+ - Live mouse coordinates in the status bar
53
+
54
+ ### Toolbar
55
+
56
+ | Button | Action |
57
+ |--------|--------|
58
+ | Home | Auto-fit all axes |
59
+ | Back / Forward | Navigate view history |
60
+ | Pan | Pan mode |
61
+ | Zoom | Zoom rectangle mode |
62
+ | Customize | Matplotlib per-curve property editor |
63
+ | Save | Export figure to file |
64
+ | Add subplot | Open the series selector |
65
+ | Fit Y | Auto-fit Y axis keeping current X range |
66
+ | Measure | Toggle measure cursors |
67
+ | X axis | Select X axis column |
68
+
69
+ ### Menus
70
+
71
+ - **File → Open** (`Ctrl+O`) — open one or more files (multi-select)
72
+ - **File → Merge** (`Ctrl+M`) — append files to the current session
73
+ - **Style → Customize plot style** — preset, line mode, marker, text size, grid, legend
74
+ - **Style → Theme** — Dark / Light (icons swap automatically)
75
+
76
+ ### Right-Click Context Menu
77
+
78
+ - Add subplot above / below
79
+ - Delete subplot
80
+ - Legend: show/hide, position (14 options), orientation, text size
81
+ - Line style: plot / step
82
+
83
+ ### Style Presets
84
+
85
+ Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
86
+
87
+ ## Installation
88
+
89
+ ### From source (recommended)
90
+
91
+ ```shell
92
+ pip install .
93
+ ```
94
+
95
+ ### With uv
96
+
97
+ ```shell
98
+ uv pip install .
99
+ ```
100
+
101
+ ## Usage
102
+
103
+ ```shell
104
+ # Open a CSV file
105
+ toucan-plot data.csv
106
+
107
+ # Open an MF4 measurement file
108
+ toucan-plot recording.mf4
109
+
110
+ # Open a CAN log with DBC decoding
111
+ toucan-plot recording.blf signals.dbc
112
+
113
+ # Open multiple files (merge mode)
114
+ toucan-plot file1.csv file2.csv
115
+
116
+ # Launch without files
117
+ toucan-plot
118
+ ```
119
+
120
+ ## Requirements
121
+
122
+ - Python ≥ 3.11
123
+ - PyQt6
124
+ - Matplotlib
125
+ - NumPy
126
+ - pyqtdarktheme
127
+ - SciencePlots
128
+ - python-can (for CAN log files)
129
+ - cantools (for DBC decoding)
130
+ - asammdf (for MF4 files)
131
+
132
+ ## License
133
+
134
+ MIT
@@ -1,8 +1,9 @@
1
1
  [project]
2
2
  name = "toucan-plot"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  description = "A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files."
5
5
  license = "MIT"
6
+ readme = { file = "README.md", content-type = "text/markdown" }
6
7
  requires-python = ">=3.11"
7
8
  dependencies = [
8
9
  "pyqt6>=6.0",
@@ -0,0 +1,134 @@
1
+ Metadata-Version: 2.4
2
+ Name: toucan-plot
3
+ Version: 0.2.1
4
+ Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
5
+ License-Expression: MIT
6
+ Requires-Python: >=3.11
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: pyqt6>=6.0
10
+ Requires-Dist: matplotlib>=3.0
11
+ Requires-Dist: numpy>=1.20
12
+ Requires-Dist: pyqtdarktheme>=2.1.0
13
+ Requires-Dist: scienceplots>=2.2.1
14
+ Requires-Dist: python-can>=4.0
15
+ Requires-Dist: cantools>=39.0
16
+ Requires-Dist: asammdf>=7.0
17
+ Dynamic: license-file
18
+
19
+ # Toucan-Plot
20
+
21
+ An interactive PyQt6 + Matplotlib plotting tool for CSV, SMV, and CAN bus log files.
22
+
23
+ ![Python](https://img.shields.io/badge/python-3.11+-blue)
24
+ ![License](https://img.shields.io/badge/license-MIT-green)
25
+
26
+ ## Features
27
+
28
+ ### Supported File Formats
29
+
30
+ | Format | Description |
31
+ |--------|-------------|
32
+ | `.csv` / `.smv` | Comma or semicolon delimited data (auto-detected) |
33
+ | `.mf4` / `.mf4z` | ASAM MDF v4 measurement data (via asammdf) |
34
+ | `.blf` | CAN bus binary log |
35
+ | `.trc` | CAN bus trace log |
36
+ | `.asc` | CAN bus ASCII log |
37
+ | `.dbc` | CAN database for signal decoding (required with BLF/TRC/ASC) |
38
+
39
+ - Auto-detects `Time` / `timestamp` columns as the default X axis
40
+ - CAN signals are forward-fill interpolated and named as `Message.Signal`
41
+
42
+ ### Plot Interaction
43
+
44
+ - **Shared X axis** across all subplots with linked panning and zooming
45
+ - **Secondary Y axis** support per series
46
+ - **Double-click** a subplot to edit its series, or **right-click** for a context menu
47
+ - **Measure cursors** — two draggable vertical cursors with a live delta table
48
+ - **Expression evaluator** — create computed series from math expressions (e.g. `sin("series_A") + "series_B" * 2`)
49
+ - **Multi-file merge** — overlay series from different files, each in its own tab
50
+ - **X axis switching** — reassign the X column without losing subplot configuration
51
+ - **Per-series properties** (label, color, linewidth, linestyle, marker) persisted across all redraws
52
+ - Live mouse coordinates in the status bar
53
+
54
+ ### Toolbar
55
+
56
+ | Button | Action |
57
+ |--------|--------|
58
+ | Home | Auto-fit all axes |
59
+ | Back / Forward | Navigate view history |
60
+ | Pan | Pan mode |
61
+ | Zoom | Zoom rectangle mode |
62
+ | Customize | Matplotlib per-curve property editor |
63
+ | Save | Export figure to file |
64
+ | Add subplot | Open the series selector |
65
+ | Fit Y | Auto-fit Y axis keeping current X range |
66
+ | Measure | Toggle measure cursors |
67
+ | X axis | Select X axis column |
68
+
69
+ ### Menus
70
+
71
+ - **File → Open** (`Ctrl+O`) — open one or more files (multi-select)
72
+ - **File → Merge** (`Ctrl+M`) — append files to the current session
73
+ - **Style → Customize plot style** — preset, line mode, marker, text size, grid, legend
74
+ - **Style → Theme** — Dark / Light (icons swap automatically)
75
+
76
+ ### Right-Click Context Menu
77
+
78
+ - Add subplot above / below
79
+ - Delete subplot
80
+ - Legend: show/hide, position (14 options), orientation, text size
81
+ - Line style: plot / step
82
+
83
+ ### Style Presets
84
+
85
+ Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
86
+
87
+ ## Installation
88
+
89
+ ### From source (recommended)
90
+
91
+ ```shell
92
+ pip install .
93
+ ```
94
+
95
+ ### With uv
96
+
97
+ ```shell
98
+ uv pip install .
99
+ ```
100
+
101
+ ## Usage
102
+
103
+ ```shell
104
+ # Open a CSV file
105
+ toucan-plot data.csv
106
+
107
+ # Open an MF4 measurement file
108
+ toucan-plot recording.mf4
109
+
110
+ # Open a CAN log with DBC decoding
111
+ toucan-plot recording.blf signals.dbc
112
+
113
+ # Open multiple files (merge mode)
114
+ toucan-plot file1.csv file2.csv
115
+
116
+ # Launch without files
117
+ toucan-plot
118
+ ```
119
+
120
+ ## Requirements
121
+
122
+ - Python ≥ 3.11
123
+ - PyQt6
124
+ - Matplotlib
125
+ - NumPy
126
+ - pyqtdarktheme
127
+ - SciencePlots
128
+ - python-can (for CAN log files)
129
+ - cantools (for DBC decoding)
130
+ - asammdf (for MF4 files)
131
+
132
+ ## License
133
+
134
+ MIT
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: toucan-plot
3
- Version: 0.2.0
4
- Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
5
- License-Expression: MIT
6
- Requires-Python: >=3.11
7
- License-File: LICENSE
8
- Requires-Dist: pyqt6>=6.0
9
- Requires-Dist: matplotlib>=3.0
10
- Requires-Dist: numpy>=1.20
11
- Requires-Dist: pyqtdarktheme>=2.1.0
12
- Requires-Dist: scienceplots>=2.2.1
13
- Requires-Dist: python-can>=4.0
14
- Requires-Dist: cantools>=39.0
15
- Requires-Dist: asammdf>=7.0
16
- Dynamic: license-file
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: toucan-plot
3
- Version: 0.2.0
4
- Summary: A versatile PyQt6 and Matplotlib-based plotting tool for CSV and SMV data files.
5
- License-Expression: MIT
6
- Requires-Python: >=3.11
7
- License-File: LICENSE
8
- Requires-Dist: pyqt6>=6.0
9
- Requires-Dist: matplotlib>=3.0
10
- Requires-Dist: numpy>=1.20
11
- Requires-Dist: pyqtdarktheme>=2.1.0
12
- Requires-Dist: scienceplots>=2.2.1
13
- Requires-Dist: python-can>=4.0
14
- Requires-Dist: cantools>=39.0
15
- Requires-Dist: asammdf>=7.0
16
- Dynamic: license-file
File without changes
File without changes
File without changes