toucan-plot 0.2.0__tar.gz → 0.2.2__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.2/PKG-INFO +130 -0
  2. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/README.md +3 -7
  3. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/pyproject.toml +2 -1
  4. toucan_plot-0.2.2/src/toucan_plot.egg-info/PKG-INFO +130 -0
  5. toucan_plot-0.2.0/PKG-INFO +0 -16
  6. toucan_plot-0.2.0/src/toucan_plot.egg-info/PKG-INFO +0 -16
  7. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/LICENSE +0 -0
  8. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/setup.cfg +0 -0
  9. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/__main__.py +0 -0
  10. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/adjustments-dark.svg +0 -0
  11. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/adjustments-light.svg +0 -0
  12. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-dark.svg +0 -0
  13. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-autofit-height-light.svg +0 -0
  14. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-left-dark.svg +0 -0
  15. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-left-light.svg +0 -0
  16. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-right-dark.svg +0 -0
  17. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/arrow-narrow-right-light.svg +0 -0
  18. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/device-floppy-dark.svg +0 -0
  19. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/device-floppy-light.svg +0 -0
  20. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/hand-stop-dark.svg +0 -0
  21. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/hand-stop-light.svg +0 -0
  22. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/home-dark.svg +0 -0
  23. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/home-light.svg +0 -0
  24. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ico/toucan-plot.ico +0 -0
  25. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/layout-grid-add-dark.svg +0 -0
  26. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/layout-grid-add-light.svg +0 -0
  27. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/math-function-dark.svg +0 -0
  28. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/math-function-light.svg +0 -0
  29. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ruler-measure-dark.svg +0 -0
  30. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/ruler-measure-light.svg +0 -0
  31. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/zoom-dark.svg +0 -0
  32. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/assets/zoom-light.svg +0 -0
  33. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/main.py +0 -0
  34. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/__init__.py +0 -0
  35. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/loaders.py +0 -0
  36. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot/utils/styles.py +0 -0
  37. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/SOURCES.txt +0 -0
  38. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/dependency_links.txt +0 -0
  39. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/entry_points.txt +0 -0
  40. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/requires.txt +0 -0
  41. {toucan_plot-0.2.0 → toucan_plot-0.2.2}/src/toucan_plot.egg-info/top_level.txt +0 -0
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: toucan-plot
3
+ Version: 0.2.2
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 PyPI (recommended)
90
+
91
+ Install the released package from PyPI:
92
+
93
+ ```shell
94
+ pip install toucan-plot
95
+ ```
96
+
97
+ ## Usage
98
+
99
+ ```shell
100
+ # Open a CSV file
101
+ toucan-plot data.csv
102
+
103
+ # Open an MF4 measurement file
104
+ toucan-plot recording.mf4
105
+
106
+ # Open a CAN log with DBC decoding
107
+ toucan-plot recording.blf signals.dbc
108
+
109
+ # Open multiple files (merge mode)
110
+ toucan-plot file1.csv file2.csv
111
+
112
+ # Launch without files
113
+ toucan-plot
114
+ ```
115
+
116
+ ## Requirements
117
+
118
+ - Python ≥ 3.11
119
+ - PyQt6
120
+ - Matplotlib
121
+ - NumPy
122
+ - pyqtdarktheme
123
+ - SciencePlots
124
+ - python-can (for CAN log files)
125
+ - cantools (for DBC decoding)
126
+ - asammdf (for MF4 files)
127
+
128
+ ## License
129
+
130
+ MIT
@@ -68,16 +68,12 @@ Four built-in presets: **Default**, **Style 1**, **IEEE**, **Other**.
68
68
 
69
69
  ## Installation
70
70
 
71
- ### From source (recommended)
71
+ ### From PyPI (recommended)
72
72
 
73
- ```shell
74
- pip install .
75
- ```
76
-
77
- ### With uv
73
+ Install the released package from PyPI:
78
74
 
79
75
  ```shell
80
- uv pip install .
76
+ pip install toucan-plot
81
77
  ```
82
78
 
83
79
  ## Usage
@@ -1,8 +1,9 @@
1
1
  [project]
2
2
  name = "toucan-plot"
3
- version = "0.2.0"
3
+ version = "0.2.2"
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,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: toucan-plot
3
+ Version: 0.2.2
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 PyPI (recommended)
90
+
91
+ Install the released package from PyPI:
92
+
93
+ ```shell
94
+ pip install toucan-plot
95
+ ```
96
+
97
+ ## Usage
98
+
99
+ ```shell
100
+ # Open a CSV file
101
+ toucan-plot data.csv
102
+
103
+ # Open an MF4 measurement file
104
+ toucan-plot recording.mf4
105
+
106
+ # Open a CAN log with DBC decoding
107
+ toucan-plot recording.blf signals.dbc
108
+
109
+ # Open multiple files (merge mode)
110
+ toucan-plot file1.csv file2.csv
111
+
112
+ # Launch without files
113
+ toucan-plot
114
+ ```
115
+
116
+ ## Requirements
117
+
118
+ - Python ≥ 3.11
119
+ - PyQt6
120
+ - Matplotlib
121
+ - NumPy
122
+ - pyqtdarktheme
123
+ - SciencePlots
124
+ - python-can (for CAN log files)
125
+ - cantools (for DBC decoding)
126
+ - asammdf (for MF4 files)
127
+
128
+ ## License
129
+
130
+ 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