ttnn-visualizer 0.49.0__py3-none-any.whl → 0.64.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.
- ttnn_visualizer/app.py +151 -49
- ttnn_visualizer/csv_queries.py +154 -45
- ttnn_visualizer/decorators.py +0 -9
- ttnn_visualizer/exceptions.py +0 -7
- ttnn_visualizer/models.py +20 -1
- ttnn_visualizer/queries.py +8 -0
- ttnn_visualizer/serializers.py +53 -9
- ttnn_visualizer/settings.py +24 -10
- ttnn_visualizer/ssh_client.py +1 -4
- ttnn_visualizer/static/assets/allPaths-DWjqav_8.js +1 -0
- ttnn_visualizer/static/assets/allPathsLoader-B0eRT9aL.js +2 -0
- ttnn_visualizer/static/assets/index-BE2R-cuu.css +1 -0
- ttnn_visualizer/static/assets/index-BZITDwoa.js +1 -0
- ttnn_visualizer/static/assets/{index-DVrPLQJ7.js → index-DDrUX09k.js} +274 -479
- ttnn_visualizer/static/assets/index-voJy5fZe.js +1 -0
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-_GpmIkFm.js +1 -0
- ttnn_visualizer/static/index.html +2 -2
- ttnn_visualizer/tests/test_serializers.py +2 -0
- ttnn_visualizer/tests/test_utils.py +362 -0
- ttnn_visualizer/utils.py +142 -0
- ttnn_visualizer/views.py +181 -87
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/METADATA +58 -30
- ttnn_visualizer-0.64.0.dist-info/RECORD +44 -0
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/licenses/LICENSE +6 -0
- ttnn_visualizer/remote_sqlite_setup.py +0 -100
- ttnn_visualizer/static/assets/allPaths-G_CNx_x1.js +0 -1
- ttnn_visualizer/static/assets/allPathsLoader-s_Yfmxfp.js +0 -2
- ttnn_visualizer/static/assets/index-CnPrfHYh.js +0 -1
- ttnn_visualizer/static/assets/index-Cnc1EkDo.js +0 -1
- ttnn_visualizer/static/assets/index-UuXdrHif.css +0 -7
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-ivxxaHxa.js +0 -1
- ttnn_visualizer-0.49.0.dist-info/RECORD +0 -44
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/WHEEL +0 -0
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/entry_points.txt +0 -0
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/licenses/LICENSE_understanding.txt +0 -0
- {ttnn_visualizer-0.49.0.dist-info → ttnn_visualizer-0.64.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ttnn_visualizer
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.64.0
|
|
4
4
|
Summary: TT-NN Visualizer
|
|
5
5
|
Classifier: Programming Language :: Python :: 3
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -23,7 +23,7 @@ Requires-Dist: pydantic_core==2.27.1
|
|
|
23
23
|
Requires-Dist: pydantic==2.10.3
|
|
24
24
|
Requires-Dist: python-dotenv==1.0.1
|
|
25
25
|
Requires-Dist: PyYAML==6.0.2
|
|
26
|
-
Requires-Dist: tt-perf-report==1.
|
|
26
|
+
Requires-Dist: tt-perf-report==1.1.11
|
|
27
27
|
Requires-Dist: uvicorn==0.30.1
|
|
28
28
|
Requires-Dist: zstd==1.5.7.0
|
|
29
29
|
Provides-Extra: dev
|
|
@@ -32,6 +32,13 @@ Requires-Dist: isort==6.0.1; extra == "dev"
|
|
|
32
32
|
Requires-Dist: mypy; extra == "dev"
|
|
33
33
|
Requires-Dist: playwright==1.48.0; extra == "dev"
|
|
34
34
|
Requires-Dist: pytest==8.4.1; extra == "dev"
|
|
35
|
+
Provides-Extra: docs
|
|
36
|
+
Requires-Dist: myst_parser==4.0.1; extra == "docs"
|
|
37
|
+
Requires-Dist: nbsphinx==0.9.7; extra == "docs"
|
|
38
|
+
Requires-Dist: sphinx_rtd_theme==3.0.2; extra == "docs"
|
|
39
|
+
Requires-Dist: sphinx_sitemap==2.9.0; extra == "docs"
|
|
40
|
+
Requires-Dist: sphinx==8.1.3; extra == "docs"
|
|
41
|
+
Requires-Dist: sphinxcontrib.email==0.3.6; extra == "docs"
|
|
35
42
|
Dynamic: license-file
|
|
36
43
|
|
|
37
44
|
|
|
@@ -51,7 +58,7 @@ A tool for visualizing the Tenstorrent Neural Network model (TT-NN)
|
|
|
51
58
|
|
|
52
59
|
<h2>
|
|
53
60
|
|
|
54
|
-
[Buy Hardware](https://tenstorrent.com/cards/) | [Install TT-NN](https://
|
|
61
|
+
[Buy Hardware](https://tenstorrent.com/cards/) | [Install TT-NN](https://docs.tenstorrent.com/tt-metal/latest/ttnn/ttnn/installing.html) | [Discord](https://discord.gg/tvhGzHQwaj) | [Join Us](https://boards.greenhouse.io/tenstorrent/jobs/4155609007)
|
|
55
62
|
|
|
56
63
|
</h2>
|
|
57
64
|
|
|
@@ -67,27 +74,52 @@ After installation run `ttnn-visualizer` to start the application.
|
|
|
67
74
|
|
|
68
75
|
It is recommended to do this within a virtual environment. The minimum Python version is **3.10**.
|
|
69
76
|
|
|
70
|
-
Please see the [
|
|
77
|
+
Please see the [install guide](https://docs.tenstorrent.com/ttnn-visualizer/src/installing.html) guide for further information on getting up and running with TT-NN Visualizer.
|
|
71
78
|
|
|
72
|
-
If you want to test out TT-NN Visualizer you can try some of the [sample data](https://github.com/tenstorrent/ttnn-visualizer/tree/main?tab=readme-ov-file#sample-reports). See [loading data](https://
|
|
79
|
+
If you want to test out TT-NN Visualizer you can try some of the [sample data](https://github.com/tenstorrent/ttnn-visualizer/tree/main?tab=readme-ov-file#sample-reports). See [loading data](https://docs.tenstorrent.com/ttnn-visualizer/src/installing.html#loading-data) for instructions on how to use this.
|
|
73
80
|
|
|
74
81
|
## Features
|
|
75
82
|
|
|
76
83
|
For the latest updates and features, please see [releases](https://github.com/tenstorrent/ttnn-visualizer/releases).
|
|
77
84
|
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
85
|
+
### Reports
|
|
86
|
+
- Upload reports from the local file system or sync remotely via SSH
|
|
87
|
+
- Switch seamlessly between previously uploaded or synced reports
|
|
88
|
+
- Run multiple instances of the application concurrently with different data
|
|
89
|
+
- Set data ranges for both memory and performance traces
|
|
90
|
+
- Display physical topology and configuration of Tenstorrent chip clusters
|
|
91
|
+
|
|
92
|
+
### Operations
|
|
93
|
+
- Filterable list of all operations in the model
|
|
94
|
+
- Interactive memory and tensor visualizations, including per core allocations, memory layout, allocation over time
|
|
95
|
+
- Input/output tensors details per operation including allocation details per core
|
|
96
|
+
- Navigable device operation tree with associated buffers and circular buffers
|
|
97
|
+
|
|
98
|
+
### Tensors
|
|
99
|
+
- List of tensor details filterable by buffer type
|
|
100
|
+
- Flagging of high consumer or late deallocated tensors
|
|
101
|
+
|
|
102
|
+
### Buffers
|
|
103
|
+
- Visual overview of all buffers for the entire model run by L1 or DRAM memory
|
|
104
|
+
- Toggle additional overlays such as memory layouts or late deallocated tensors
|
|
105
|
+
- Ease of navigation to the relevant operation
|
|
106
|
+
- Track a specific buffer in the data across the application
|
|
107
|
+
- Filterable table view for a more schematic look at buffers
|
|
108
|
+
|
|
109
|
+
### Graph
|
|
110
|
+
- Interactive model graph view showing all operations and connecting tensors
|
|
111
|
+
- Filter out deallocated operations
|
|
112
|
+
- Find all operations by name
|
|
113
|
+
|
|
114
|
+
### Performance
|
|
115
|
+
- Integration with tt-perf-report and rendering of performance analysis
|
|
116
|
+
- Interactive charts and tables
|
|
117
|
+
- Multiple filtering options of performance data
|
|
118
|
+
- Compare multiple performance traces
|
|
119
|
+
|
|
120
|
+
### NPE
|
|
121
|
+
- Network-on-chip performance estimator (NPE) for Tenstorrent Tensix-based devices
|
|
122
|
+
- Dedicated NPE visualizations: zones, transfers, congestion, timelines with elaborate filtering capability
|
|
91
123
|
|
|
92
124
|
### Demo
|
|
93
125
|
|
|
@@ -97,32 +129,31 @@ https://github.com/user-attachments/assets/4e51a636-c6d6-46df-bf34-a06bca13c0b3
|
|
|
97
129
|
|
|
98
130
|
| L1 Summary with Tensor highlight | Operation inputs and outputs |
|
|
99
131
|
|-----------------------------------------------|------------------------------------------|
|
|
100
|
-
| <img width="400" alt="L1 Summary with Tensor highlight" src="https://github.com/user-attachments/assets/
|
|
132
|
+
| <img width="400" alt="L1 Summary with Tensor highlight" src="https://github.com/user-attachments/assets/7c6a3558-1084-492b-ac0b-f5f910487c8f" /> | <img width="400" alt="Operation inputs and outputs" src="https://github.com/user-attachments/assets/48197e65-4831-4005-9da8-99574c47d5c7" /> |
|
|
101
133
|
|
|
102
134
|
| Device operations with memory consumption | DRAM memory allocation |
|
|
103
135
|
|-----------------------------------------------|------------------------------------------|
|
|
104
|
-
| <img width="400" alt="Device operations with memory consumption" src="https://github.com/user-attachments/assets/
|
|
136
|
+
| <img width="400" alt="Device operations with memory consumption" src="https://github.com/user-attachments/assets/4b8cefb9-fd75-4291-9e64-ab2f2c866c51" />| <img width="400" alt="DRAM memory allocations" src="https://github.com/user-attachments/assets/a9ad8b1d-200c-4c10-b1d8-5d76900c688c" /> |
|
|
105
137
|
|
|
106
138
|
| Operation graph view | Model buffer summary |
|
|
107
139
|
|-----------------------------------------------|------------------------------------------|
|
|
108
|
-
| <img width="400" alt="Operation graph view" src="https://github.com/user-attachments/assets/
|
|
140
|
+
| <img width="400" alt="Operation graph view" src="https://github.com/user-attachments/assets/422f1591-4232-4d16-a783-726960261443" /> | <img width="400" alt="Model buffer summary" src="https://github.com/user-attachments/assets/9afa48b2-628d-4dad-ac89-42fda762aee6" /> |
|
|
109
141
|
|
|
110
142
|
| Per core allocation details | Per core allocation details for individual tensors |
|
|
111
143
|
|-----------------------------------------------|------------------------------------------|
|
|
112
|
-
| <img width="400" alt="Per core allocation details" src="https://github.com/user-attachments/assets/
|
|
144
|
+
| <img width="400" alt="Per core allocation details" src="https://github.com/user-attachments/assets/681c8d0e-c628-4839-afca-f31ff9d53f73" /> | <img width="400" alt="Per core allocation details for individual tensor" src="https://github.com/user-attachments/assets/a9d66f2d-2457-4ced-b777-6e8f0c54eb86" /> |
|
|
113
145
|
|
|
114
146
|
| Tensor details list | Performance report |
|
|
115
147
|
|-----------------------------------------------|------------------------------------------|
|
|
116
|
-
| <img width="400" alt="Tensor details list" src="https://github.com/user-attachments/assets/
|
|
148
|
+
| <img width="400" alt="Tensor details list" src="https://github.com/user-attachments/assets/315089ff-ae75-4615-87b9-19c45431871c" /> | <img width="400" alt="Performnance analysis" src="https://github.com/user-attachments/assets/468b0acb-733e-4891-8e16-781c47889017" /> |
|
|
117
149
|
|
|
118
150
|
| Performance charts | |
|
|
119
151
|
|-----------------------------------------------|------------------------------------------|
|
|
120
|
-
| <img width="400" alt="Performance charts" src="https://github.com/user-attachments/assets/
|
|
152
|
+
| <img width="400" alt="Performance charts" src="https://github.com/user-attachments/assets/19f6bd6f-8f48-48dd-b9ee-726b1a1e40e3" /> | <img width="400" alt="Performance charts" src="https://github.com/user-attachments/assets/bc6ae03b-f143-4ee5-9f14-834ddf8b0cde" /> |
|
|
121
153
|
|
|
122
154
|
| NPE | |
|
|
123
155
|
|-----------------------------------------------|------------------------------------------|
|
|
124
|
-
| <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/
|
|
125
|
-
|
|
156
|
+
| <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/5f45c1bf-565d-4003-b3b7-0ddd90cbdeca" /> | <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/8a3e9a09-4c86-45a6-9916-52fba16debc6" />
|
|
126
157
|
|
|
127
158
|
## Sample reports
|
|
128
159
|
|
|
@@ -147,9 +178,6 @@ Unzip the files into their own directories and select them with the local folder
|
|
|
147
178
|
**T3K synthetic**
|
|
148
179
|
[synthetic_t3k_small.json.zip](https://github.com/user-attachments/files/20491459/synthetic_t3k_small.json.zip)
|
|
149
180
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
181
|
## Contributing
|
|
154
182
|
|
|
155
|
-
How to run [TT-NN Visualizer](https://
|
|
183
|
+
How to run [TT-NN Visualizer](https://docs.tenstorrent.com/ttnn-visualizer/src/running-from-source.html) from source.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
ttnn_visualizer/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
|
2
|
+
ttnn_visualizer/app.py,sha256=M7kXzWjfMekaIfskFwa0YtKSFJIj5C7mqe1N-cda8TU,12565
|
|
3
|
+
ttnn_visualizer/csv_queries.py,sha256=hcgxk53SXhiTq1B-6yEKNvDbOG5MJAv1ARWxxT3t_cU,19596
|
|
4
|
+
ttnn_visualizer/decorators.py,sha256=6xBg2J6kJrwc01fcHepLbFJoUhcEKBL410gfaR8YZuM,5383
|
|
5
|
+
ttnn_visualizer/enums.py,sha256=SEIqp1tlc_zw2vQ8nHH9YTaV0m3Cb8fjn_goqz5wurE,203
|
|
6
|
+
ttnn_visualizer/exceptions.py,sha256=KVZzb7YaWbq51DNMKPBcJHwG74RMYj_29WTSYOlXXeU,2096
|
|
7
|
+
ttnn_visualizer/extensions.py,sha256=6OIRJ8-_ccfjOaXSruRXiS29jEbxp4Pyk-0JlD8IHBQ,379
|
|
8
|
+
ttnn_visualizer/file_uploads.py,sha256=HFcC6TBt5I0oBkiKgM2Qw1W7hpixE8TOTACS5N-rmGE,5013
|
|
9
|
+
ttnn_visualizer/instances.py,sha256=XctQgQXdlwtuXWFXFletRoX1m1lGUZdiW3TwIIjY0uw,11564
|
|
10
|
+
ttnn_visualizer/models.py,sha256=udECbVuxseZ2n6wkLCJnBxMOYq10mbHkQXmhLIECaxk,8376
|
|
11
|
+
ttnn_visualizer/pytest_plugin.py,sha256=bEG0cbqH0HUuZT5Ox9tFoexFNTyimBBPpI_jp75b54c,2629
|
|
12
|
+
ttnn_visualizer/queries.py,sha256=j9PYYwzJBKJF32Fa-hyV00cPApw1_Xr_y6MpqFGBI3k,9867
|
|
13
|
+
ttnn_visualizer/serializers.py,sha256=mKxcDu9g4gAxHB6wP_1l5VJvIBmnYDIJTikiaMYXupg,9374
|
|
14
|
+
ttnn_visualizer/settings.py,sha256=FvfSqzuXEOLDH3i_mXZODHjYQEJBE6V_mPQcqz6P6zA,5168
|
|
15
|
+
ttnn_visualizer/sftp_operations.py,sha256=9HwbPJPSO1UUQ98d5zeWAkEwR0zFPryUakcI68GqkVw,30181
|
|
16
|
+
ttnn_visualizer/sockets.py,sha256=_Hdne33r4FrB2tg58Vw87FWLbgQ_ikICVp4o1Mkv2mo,4789
|
|
17
|
+
ttnn_visualizer/ssh_client.py,sha256=x-BUUnsaKGReuOrSpHdcIaoH6RdGiQQYWx2_pOkGzJ0,13410
|
|
18
|
+
ttnn_visualizer/utils.py,sha256=rYQuPXdIYj5O2_U9_rqoPkU7croyXcAomdr6sOYHmgA,18291
|
|
19
|
+
ttnn_visualizer/views.py,sha256=hHrsVdRWWq-FxDUk2QaJhAPgOtda_zqwE_330hEP59k,48348
|
|
20
|
+
ttnn_visualizer/static/index.html,sha256=79w5Up5r86chLQba68cIDWCyqRLIoxvujia-HO75Ovc,1135
|
|
21
|
+
ttnn_visualizer/static/assets/allPaths-DWjqav_8.js,sha256=3X0scflty02C4E1O25OygkYwtV751bwpy-zyINWUYLE,255
|
|
22
|
+
ttnn_visualizer/static/assets/allPathsLoader-B0eRT9aL.js,sha256=3DaduTOIYjrZ14Yzqs4tR6QXJYglQpBzXYqnNy_Ilok,477
|
|
23
|
+
ttnn_visualizer/static/assets/index-BE2R-cuu.css,sha256=sRIyVGj6fHjhBZALw7r25cstDfth2d5HIWG1oEp0C4A,630398
|
|
24
|
+
ttnn_visualizer/static/assets/index-BZITDwoa.js,sha256=ax1pY3gjtvqTUiQSBZ6ZN9M6P9VJ4-eXzZ-C9F46Ozg,303183
|
|
25
|
+
ttnn_visualizer/static/assets/index-DDrUX09k.js,sha256=TytlYsQKKFPSwA2vvhNYixWWs3x8H3Q-SkoUTjnQybY,7919047
|
|
26
|
+
ttnn_visualizer/static/assets/index-voJy5fZe.js,sha256=4MEkPCpdjZkMgT0Kmxfdh5DCtJWMf-TAVQ3rc28BtEQ,293910
|
|
27
|
+
ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
|
|
28
|
+
ttnn_visualizer/static/assets/splitPathsBySizeLoader-_GpmIkFm.js,sha256=Zv8b0FWYGHtAUSg5OyUNLD80xS7Ok2-vtahHMrZ37lI,281
|
|
29
|
+
ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
|
|
30
|
+
ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
|
|
31
|
+
ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
|
|
32
|
+
ttnn_visualizer/static/favicon/favicon.svg,sha256=wDPY3VrekJ_DE1TnJ2vUy602K3S4Xe9TgrdZ7jXK9c8,633
|
|
33
|
+
ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkXUozB3dg2IzqIRJQpV_O5qMU,29618
|
|
34
|
+
ttnn_visualizer/tests/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
|
35
|
+
ttnn_visualizer/tests/test_queries.py,sha256=HqaDXwudZpXiigJdHkdJP8oiUc-PtHASbpLnQQpbD7A,13792
|
|
36
|
+
ttnn_visualizer/tests/test_serializers.py,sha256=xwWaiH-uQN-yiEkOScCsF-JEmQliQ62eKTURijdDPBo,18820
|
|
37
|
+
ttnn_visualizer/tests/test_utils.py,sha256=9vUuCNg1mwhtB5RZKdJf-vo0lt9M5niHwkSezFwmklk,11186
|
|
38
|
+
ttnn_visualizer-0.64.0.dist-info/licenses/LICENSE,sha256=VHSLFZL7Jyfvyrl2flFqBgHbBK9AiL_qy0ApbEbE8vc,20459
|
|
39
|
+
ttnn_visualizer-0.64.0.dist-info/licenses/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
|
|
40
|
+
ttnn_visualizer-0.64.0.dist-info/METADATA,sha256=iniwDgKX4ruuTML_MB0CoX8aa0FDME1FTZBfTPoEErQ,8912
|
|
41
|
+
ttnn_visualizer-0.64.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
|
|
42
|
+
ttnn_visualizer-0.64.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
|
|
43
|
+
ttnn_visualizer-0.64.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
|
|
44
|
+
ttnn_visualizer-0.64.0.dist-info/RECORD,,
|
|
@@ -166,6 +166,8 @@ The following separate and independent dependencies are utilized by this project
|
|
|
166
166
|
- gunicorn - MIT - https://github.com/benoitc/gunicorn/blob/master/LICENSE
|
|
167
167
|
- isort - MIT - https://github.com/PyCQA/isort/blob/main/LICENSE
|
|
168
168
|
- mypy - MIT - https://github.com/python/mypy/blob/master/LICENSE
|
|
169
|
+
- myst_parser - MIT - https://github.com/executablebooks/MyST-Parser
|
|
170
|
+
- nbsphinx - MIT - https://github.com/spatialaudio/nbsphinx/
|
|
169
171
|
- orjson - Dual-license Apache-2.0 or MIT - https://github.com/ijl/orjson/blob/master/LICENSE-APACHE and https://github.com/ijl/orjson/blob/master/LICENSE-MIT
|
|
170
172
|
- pandas - BSD‑3‑Clause - https://github.com/pandas-dev/pandas/blob/main/LICENSE
|
|
171
173
|
- playwright - Apache-2.0 - https://github.com/microsoft/playwright-python/blob/main/LICENSE
|
|
@@ -176,6 +178,10 @@ The following separate and independent dependencies are utilized by this project
|
|
|
176
178
|
- python-dotenv - BSD‑3‑Clause - https://github.com/theskumar/python-dotenv/blob/main/LICENSE
|
|
177
179
|
- PyYAML - MIT - https://github.com/yaml/pyyaml/blob/main/LICENSE
|
|
178
180
|
- setuptools - MIT - https://github.com/pypa/setuptools/blob/main/LICENSE
|
|
181
|
+
- sphinx - BSD-2-Clause - https://github.com/sphinx-doc/sphinx
|
|
182
|
+
- sphinx_rtd_theme - MIT - https://github.com/readthedocs/sphinx_rtd_theme
|
|
183
|
+
- sphinx_sitemap - MIT - https://github.com/jdillard/sphinx-sitemap
|
|
184
|
+
- sphinxcontrib.email - BSD-3-Clause - https://github.com/sphinx-contrib/email
|
|
179
185
|
- tt-perf-report - MIT - https://opensource.org/license/mit
|
|
180
186
|
- uvicorn - BSD‑3‑Clause - https://github.com/encode/uvicorn/blob/master/LICENSE.md
|
|
181
187
|
- wheel - MIT - https://opensource.org/license/mit
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
-
#
|
|
3
|
-
# SPDX-FileCopyrightText: © 2025 Tenstorrent AI ULC
|
|
4
|
-
|
|
5
|
-
import re
|
|
6
|
-
|
|
7
|
-
from ttnn_visualizer.decorators import remote_exception_handler
|
|
8
|
-
from ttnn_visualizer.enums import ConnectionTestStates
|
|
9
|
-
from ttnn_visualizer.exceptions import RemoteSqliteException, SSHException
|
|
10
|
-
from ttnn_visualizer.models import RemoteConnection
|
|
11
|
-
from ttnn_visualizer.ssh_client import SSHClient
|
|
12
|
-
|
|
13
|
-
MINIMUM_SQLITE_VERSION = "3.38.0"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def _execute_ssh_command(remote_connection: RemoteConnection, command: str) -> str:
|
|
17
|
-
"""Execute an SSH command and return the output."""
|
|
18
|
-
ssh_client = SSHClient(remote_connection)
|
|
19
|
-
try:
|
|
20
|
-
return ssh_client.execute_command(command, timeout=30)
|
|
21
|
-
except SSHException as e:
|
|
22
|
-
raise RemoteSqliteException(
|
|
23
|
-
message=str(e),
|
|
24
|
-
status=ConnectionTestStates.FAILED,
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def find_sqlite_binary(connection):
|
|
29
|
-
"""Check if SQLite is installed on the remote machine and return its path."""
|
|
30
|
-
try:
|
|
31
|
-
output = _execute_ssh_command(connection, "which sqlite3")
|
|
32
|
-
binary_path = output.strip()
|
|
33
|
-
if binary_path:
|
|
34
|
-
print(f"SQLite binary found at: {binary_path}")
|
|
35
|
-
return binary_path
|
|
36
|
-
return None
|
|
37
|
-
except RemoteSqliteException:
|
|
38
|
-
# Re-raise RemoteSqliteException as-is
|
|
39
|
-
raise
|
|
40
|
-
except Exception as e:
|
|
41
|
-
raise RemoteSqliteException(
|
|
42
|
-
message=f"Error finding SQLite binary: {str(e)}",
|
|
43
|
-
status=ConnectionTestStates.FAILED,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def is_sqlite_executable(remote_connection: RemoteConnection, binary_path):
|
|
48
|
-
"""Check if the SQLite binary is executable by trying to run it."""
|
|
49
|
-
try:
|
|
50
|
-
output = _execute_ssh_command(remote_connection, f"{binary_path} --version")
|
|
51
|
-
version_output = output.strip()
|
|
52
|
-
|
|
53
|
-
version = get_sqlite_version(version_output)
|
|
54
|
-
if not is_version_at_least(version, MINIMUM_SQLITE_VERSION):
|
|
55
|
-
raise Exception(
|
|
56
|
-
f"SQLite version {version} is below the required minimum of {MINIMUM_SQLITE_VERSION}."
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
print(f"SQLite binary at {binary_path} is executable. Version: {version}")
|
|
60
|
-
return True
|
|
61
|
-
|
|
62
|
-
except RemoteSqliteException:
|
|
63
|
-
# Re-raise RemoteSqliteException as-is
|
|
64
|
-
raise
|
|
65
|
-
except Exception as e:
|
|
66
|
-
raise Exception(f"Error checking SQLite executability: {str(e)}")
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def get_sqlite_version(version_output):
|
|
70
|
-
"""Extract and return the SQLite version number from the output."""
|
|
71
|
-
match = re.search(r"(\d+\.\d+\.\d+)", version_output)
|
|
72
|
-
if match:
|
|
73
|
-
return match.group(1)
|
|
74
|
-
else:
|
|
75
|
-
raise ValueError("Could not parse SQLite version from output.")
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
def is_version_at_least(version, minimum_version):
|
|
79
|
-
"""Check if the provided version is at least the minimum version."""
|
|
80
|
-
version_parts = [int(v) for v in version.split(".")]
|
|
81
|
-
minimum_parts = [int(v) for v in minimum_version.split(".")]
|
|
82
|
-
|
|
83
|
-
return version_parts >= minimum_parts
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
@remote_exception_handler
|
|
87
|
-
def check_sqlite_path(remote_connection: RemoteConnection):
|
|
88
|
-
try:
|
|
89
|
-
is_sqlite_executable(remote_connection, remote_connection.sqliteBinaryPath)
|
|
90
|
-
except Exception as e:
|
|
91
|
-
raise RemoteSqliteException(message=str(e), status=ConnectionTestStates.FAILED)
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
def get_sqlite_path(connection: RemoteConnection):
|
|
95
|
-
try:
|
|
96
|
-
path = find_sqlite_binary(connection)
|
|
97
|
-
if path:
|
|
98
|
-
return path
|
|
99
|
-
except Exception as e:
|
|
100
|
-
raise RemoteSqliteException(message=str(e), status=ConnectionTestStates.FAILED)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./index-CnPrfHYh.js";import{I as r}from"./index-Cnc1EkDo.js";import{p as n,I as c}from"./index-DVrPLQJ7.js";function p(t,a){const o=n(t);return a===c.STANDARD?s[o]:r[o]}export{s as IconSvgPaths16,r as IconSvgPaths20,p as getIconPaths};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-G_CNx_x1.js","assets/index-CnPrfHYh.js","assets/index-Cnc1EkDo.js","assets/index-DVrPLQJ7.js","assets/index-UuXdrHif.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as e}from"./index-DVrPLQJ7.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-G_CNx_x1.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};
|