ttnn-visualizer 0.61.0__py3-none-any.whl → 0.63.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 +86 -50
- ttnn_visualizer/csv_queries.py +7 -2
- ttnn_visualizer/settings.py +11 -6
- ttnn_visualizer/static/assets/allPaths-D6ZQWDaz.js +1 -0
- ttnn_visualizer/static/assets/allPathsLoader-KltlmKXl.js +2 -0
- ttnn_visualizer/static/assets/index-BZITDwoa.js +1 -0
- ttnn_visualizer/static/assets/index-BzMUwfVf.css +1 -0
- ttnn_visualizer/static/assets/{index-BB1xqCSF.js → index-DhooSFaT.js} +199 -406
- ttnn_visualizer/static/assets/index-voJy5fZe.js +1 -0
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-L-TfP1JT.js +1 -0
- ttnn_visualizer/static/index.html +2 -2
- ttnn_visualizer/tests/test_utils.py +106 -0
- ttnn_visualizer/utils.py +79 -0
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/METADATA +51 -22
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/RECORD +20 -19
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/licenses/LICENSE +6 -0
- ttnn_visualizer/static/assets/allPaths-CoeJF6Is.js +0 -1
- ttnn_visualizer/static/assets/allPathsLoader-XPrfioNE.js +0 -2
- ttnn_visualizer/static/assets/index-BgzQ1XP9.js +0 -1
- ttnn_visualizer/static/assets/index-DXdc2oG2.js +0 -1
- ttnn_visualizer/static/assets/index-OTxEdcXc.css +0 -7
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-i1iU99s1.js +0 -1
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/WHEEL +0 -0
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/entry_points.txt +0 -0
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/licenses/LICENSE_understanding.txt +0 -0
- {ttnn_visualizer-0.61.0.dist-info → ttnn_visualizer-0.63.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as r,I as s,_ as a}from"./index-DhooSFaT.js";const n=async(o,_)=>{const i=r(o);let t;return _===s.STANDARD?t=await a(()=>import("./index-voJy5fZe.js").then(e=>e.I),[]):t=await a(()=>import("./index-BZITDwoa.js").then(e=>e.I),[]),t[i]};export{n as splitPathsBySizeLoader};
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
/* SERVER_CONFIG */
|
|
35
35
|
</script>
|
|
36
36
|
|
|
37
|
-
<script type="module" crossorigin src="/static/assets/index-
|
|
38
|
-
<link rel="stylesheet" crossorigin href="/static/assets/index-
|
|
37
|
+
<script type="module" crossorigin src="/static/assets/index-DhooSFaT.js"></script>
|
|
38
|
+
<link rel="stylesheet" crossorigin href="/static/assets/index-BzMUwfVf.css">
|
|
39
39
|
</head>
|
|
40
40
|
<body>
|
|
41
41
|
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
#
|
|
3
|
+
# SPDX-FileCopyrightText: © 2025 Tenstorrent AI ULC
|
|
4
|
+
|
|
5
|
+
from unittest.mock import patch
|
|
6
|
+
|
|
7
|
+
from ttnn_visualizer.utils import find_gunicorn_path
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@patch("sys.argv", ["/home/user/.local/bin/ttnn-visualizer"])
|
|
11
|
+
@patch("os.access")
|
|
12
|
+
@patch("pathlib.Path.exists")
|
|
13
|
+
@patch("pathlib.Path.is_file")
|
|
14
|
+
@patch("shutil.which")
|
|
15
|
+
def test_find_gunicorn_in_same_directory(
|
|
16
|
+
mock_which, mock_is_file, mock_exists, mock_access
|
|
17
|
+
):
|
|
18
|
+
"""Test finding gunicorn in the same directory as ttnn-visualizer."""
|
|
19
|
+
mock_exists.return_value = True
|
|
20
|
+
mock_is_file.return_value = True
|
|
21
|
+
mock_access.return_value = True
|
|
22
|
+
mock_which.return_value = None # Not in PATH
|
|
23
|
+
|
|
24
|
+
gunicorn_path, warning = find_gunicorn_path()
|
|
25
|
+
|
|
26
|
+
assert gunicorn_path.endswith("/home/user/.local/bin/gunicorn")
|
|
27
|
+
assert warning is None
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@patch("sys.argv", ["/home/user/.local/bin/ttnn-visualizer"])
|
|
31
|
+
@patch("os.access")
|
|
32
|
+
@patch("pathlib.Path.exists")
|
|
33
|
+
@patch("pathlib.Path.is_file")
|
|
34
|
+
@patch("shutil.which")
|
|
35
|
+
def test_find_multiple_gunicorn_installations(
|
|
36
|
+
mock_which, mock_is_file, mock_exists, mock_access
|
|
37
|
+
):
|
|
38
|
+
"""Test warning when multiple gunicorn installations are detected."""
|
|
39
|
+
mock_exists.return_value = True
|
|
40
|
+
mock_is_file.return_value = True
|
|
41
|
+
mock_access.return_value = True
|
|
42
|
+
mock_which.return_value = "/usr/bin/gunicorn" # Different one in PATH
|
|
43
|
+
|
|
44
|
+
gunicorn_path, warning = find_gunicorn_path()
|
|
45
|
+
|
|
46
|
+
assert gunicorn_path.endswith("/home/user/.local/bin/gunicorn")
|
|
47
|
+
assert warning is not None
|
|
48
|
+
assert "Multiple gunicorn installations detected" in warning
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@patch("sys.argv", ["/home/user/.local/bin/ttnn-visualizer"])
|
|
52
|
+
@patch("os.access")
|
|
53
|
+
@patch("pathlib.Path.exists")
|
|
54
|
+
@patch("pathlib.Path.is_file")
|
|
55
|
+
@patch("shutil.which")
|
|
56
|
+
def test_gunicorn_not_executable(mock_which, mock_is_file, mock_exists, mock_access):
|
|
57
|
+
"""Test when gunicorn exists but is not executable."""
|
|
58
|
+
mock_exists.return_value = True
|
|
59
|
+
mock_is_file.return_value = True
|
|
60
|
+
mock_access.return_value = False # Not executable
|
|
61
|
+
mock_which.return_value = "/usr/bin/gunicorn"
|
|
62
|
+
|
|
63
|
+
gunicorn_path, warning = find_gunicorn_path()
|
|
64
|
+
|
|
65
|
+
assert gunicorn_path == "/usr/bin/gunicorn"
|
|
66
|
+
assert warning is not None
|
|
67
|
+
assert "not executable" in warning
|
|
68
|
+
assert "chmod +x" in warning
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
@patch("sys.argv", ["/home/user/.local/bin/ttnn-visualizer"])
|
|
72
|
+
@patch("os.access")
|
|
73
|
+
@patch("pathlib.Path.exists")
|
|
74
|
+
@patch("pathlib.Path.is_file")
|
|
75
|
+
@patch("shutil.which")
|
|
76
|
+
def test_fallback_to_path(mock_which, mock_is_file, mock_exists, mock_access):
|
|
77
|
+
"""Test falling back to PATH when not in same directory."""
|
|
78
|
+
mock_exists.return_value = False
|
|
79
|
+
mock_is_file.return_value = False
|
|
80
|
+
mock_which.return_value = "/usr/bin/gunicorn"
|
|
81
|
+
|
|
82
|
+
gunicorn_path, warning = find_gunicorn_path()
|
|
83
|
+
|
|
84
|
+
assert gunicorn_path == "/usr/bin/gunicorn"
|
|
85
|
+
assert warning is not None
|
|
86
|
+
assert "not found in" in warning
|
|
87
|
+
assert "Falling back" in warning
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@patch("sys.argv", ["/home/user/.local/bin/ttnn-visualizer"])
|
|
91
|
+
@patch("os.access")
|
|
92
|
+
@patch("pathlib.Path.exists")
|
|
93
|
+
@patch("pathlib.Path.is_file")
|
|
94
|
+
@patch("shutil.which")
|
|
95
|
+
def test_gunicorn_not_found(mock_which, mock_is_file, mock_exists, mock_access):
|
|
96
|
+
"""Test when gunicorn is not found anywhere."""
|
|
97
|
+
mock_exists.return_value = False
|
|
98
|
+
mock_is_file.return_value = False
|
|
99
|
+
mock_which.return_value = None
|
|
100
|
+
|
|
101
|
+
gunicorn_path, warning = find_gunicorn_path()
|
|
102
|
+
|
|
103
|
+
assert gunicorn_path == "gunicorn"
|
|
104
|
+
assert warning is not None
|
|
105
|
+
assert "ERROR" in warning
|
|
106
|
+
assert "not found" in warning
|
ttnn_visualizer/utils.py
CHANGED
|
@@ -6,7 +6,10 @@ import dataclasses
|
|
|
6
6
|
import enum
|
|
7
7
|
import json
|
|
8
8
|
import logging
|
|
9
|
+
import os
|
|
9
10
|
import re
|
|
11
|
+
import shutil
|
|
12
|
+
import sys
|
|
10
13
|
import time
|
|
11
14
|
from functools import wraps
|
|
12
15
|
from pathlib import Path
|
|
@@ -18,6 +21,82 @@ logger = logging.getLogger(__name__)
|
|
|
18
21
|
LAST_SYNCED_FILE_NAME = ".last-synced"
|
|
19
22
|
|
|
20
23
|
|
|
24
|
+
def find_gunicorn_path() -> tuple[str, Optional[str]]:
|
|
25
|
+
"""
|
|
26
|
+
Find the gunicorn executable, prioritizing the same bin directory as ttnn-visualizer.
|
|
27
|
+
|
|
28
|
+
Returns:
|
|
29
|
+
tuple: (gunicorn_path, warning_message)
|
|
30
|
+
- gunicorn_path: Full path to the gunicorn executable to use
|
|
31
|
+
- warning_message: Warning message if there are any issues finding gunicorn
|
|
32
|
+
(e.g., multiple installations, falling back to PATH, or not found),
|
|
33
|
+
or None if found without conflicts.
|
|
34
|
+
"""
|
|
35
|
+
# Get the directory where ttnn-visualizer was run from
|
|
36
|
+
ttnn_visualizer_path = Path(sys.argv[0]).resolve()
|
|
37
|
+
bin_dir = ttnn_visualizer_path.parent
|
|
38
|
+
|
|
39
|
+
# Look for gunicorn in the same directory
|
|
40
|
+
expected_gunicorn = bin_dir / "gunicorn"
|
|
41
|
+
|
|
42
|
+
if (
|
|
43
|
+
expected_gunicorn.exists()
|
|
44
|
+
and expected_gunicorn.is_file()
|
|
45
|
+
and os.access(expected_gunicorn, os.X_OK)
|
|
46
|
+
):
|
|
47
|
+
# Found gunicorn in the same bin directory and it's executable
|
|
48
|
+
gunicorn_path = str(expected_gunicorn)
|
|
49
|
+
|
|
50
|
+
# Check if there's a different gunicorn in PATH
|
|
51
|
+
path_gunicorn = shutil.which("gunicorn")
|
|
52
|
+
warning_message = None
|
|
53
|
+
|
|
54
|
+
if path_gunicorn and Path(path_gunicorn).resolve() != expected_gunicorn:
|
|
55
|
+
warning_message = (
|
|
56
|
+
f"⚠️ WARNING: Multiple gunicorn installations detected!\n"
|
|
57
|
+
f" Using: {gunicorn_path}\n"
|
|
58
|
+
f" Found in PATH: {path_gunicorn}\n"
|
|
59
|
+
f" This may cause version conflicts. Consider using a virtual environment."
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
return gunicorn_path, warning_message
|
|
63
|
+
|
|
64
|
+
# If file exists but isn't executable, add a warning about that
|
|
65
|
+
if expected_gunicorn.exists() and expected_gunicorn.is_file():
|
|
66
|
+
warning_message = (
|
|
67
|
+
f"⚠️ WARNING: gunicorn found at {expected_gunicorn} but it's not executable!\n"
|
|
68
|
+
f" Falling back to PATH. Fix permissions with: chmod +x {expected_gunicorn}"
|
|
69
|
+
)
|
|
70
|
+
path_gunicorn = shutil.which("gunicorn")
|
|
71
|
+
if path_gunicorn:
|
|
72
|
+
return path_gunicorn, warning_message
|
|
73
|
+
# If not in PATH either, return error with permission hint
|
|
74
|
+
error_message = (
|
|
75
|
+
f"❌ ERROR: gunicorn found at {expected_gunicorn} but it's not executable!\n"
|
|
76
|
+
f" Not found in PATH either.\n"
|
|
77
|
+
f" Fix permissions with: chmod +x {expected_gunicorn}"
|
|
78
|
+
)
|
|
79
|
+
return "gunicorn", error_message
|
|
80
|
+
|
|
81
|
+
# Fall back to PATH
|
|
82
|
+
path_gunicorn = shutil.which("gunicorn")
|
|
83
|
+
|
|
84
|
+
if path_gunicorn:
|
|
85
|
+
warning_message = (
|
|
86
|
+
f"⚠️ WARNING: gunicorn not found in {bin_dir}\n"
|
|
87
|
+
f" Falling back to gunicorn from PATH: {path_gunicorn}\n"
|
|
88
|
+
f" This may cause issues if different versions are installed."
|
|
89
|
+
)
|
|
90
|
+
return path_gunicorn, warning_message
|
|
91
|
+
|
|
92
|
+
# Not found anywhere - return "gunicorn" and let subprocess.run fail with a clear error
|
|
93
|
+
warning_message = (
|
|
94
|
+
f"❌ ERROR: gunicorn not found!\n"
|
|
95
|
+
f" Expected location: {expected_gunicorn}\n"
|
|
96
|
+
)
|
|
97
|
+
return "gunicorn", warning_message
|
|
98
|
+
|
|
99
|
+
|
|
21
100
|
class PathResolver:
|
|
22
101
|
"""Centralized path resolution for both TT-Metal and upload/sync modes."""
|
|
23
102
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ttnn_visualizer
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.63.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.1.
|
|
26
|
+
Requires-Dist: tt-perf-report==1.1.9
|
|
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
|
|
|
@@ -146,9 +178,6 @@ Unzip the files into their own directories and select them with the local folder
|
|
|
146
178
|
**T3K synthetic**
|
|
147
179
|
[synthetic_t3k_small.json.zip](https://github.com/user-attachments/files/20491459/synthetic_t3k_small.json.zip)
|
|
148
180
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
181
|
## Contributing
|
|
153
182
|
|
|
154
|
-
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
ttnn_visualizer/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
|
2
|
-
ttnn_visualizer/app.py,sha256=
|
|
3
|
-
ttnn_visualizer/csv_queries.py,sha256=
|
|
2
|
+
ttnn_visualizer/app.py,sha256=LnCbmCDhmKftHuU3sEDPE35zzc1iFfYTEgMMkHWBHUc,10254
|
|
3
|
+
ttnn_visualizer/csv_queries.py,sha256=vG4z0dVPKa0JwoFICOPZaQLtXyoRBLRyR5gR3HAgP8M,19343
|
|
4
4
|
ttnn_visualizer/decorators.py,sha256=6xBg2J6kJrwc01fcHepLbFJoUhcEKBL410gfaR8YZuM,5383
|
|
5
5
|
ttnn_visualizer/enums.py,sha256=SEIqp1tlc_zw2vQ8nHH9YTaV0m3Cb8fjn_goqz5wurE,203
|
|
6
6
|
ttnn_visualizer/exceptions.py,sha256=KVZzb7YaWbq51DNMKPBcJHwG74RMYj_29WTSYOlXXeU,2096
|
|
@@ -11,21 +11,21 @@ ttnn_visualizer/models.py,sha256=udECbVuxseZ2n6wkLCJnBxMOYq10mbHkQXmhLIECaxk,837
|
|
|
11
11
|
ttnn_visualizer/pytest_plugin.py,sha256=bEG0cbqH0HUuZT5Ox9tFoexFNTyimBBPpI_jp75b54c,2629
|
|
12
12
|
ttnn_visualizer/queries.py,sha256=j9PYYwzJBKJF32Fa-hyV00cPApw1_Xr_y6MpqFGBI3k,9867
|
|
13
13
|
ttnn_visualizer/serializers.py,sha256=mKxcDu9g4gAxHB6wP_1l5VJvIBmnYDIJTikiaMYXupg,9374
|
|
14
|
-
ttnn_visualizer/settings.py,sha256=
|
|
14
|
+
ttnn_visualizer/settings.py,sha256=XuK6c8QWVilA5wCKA6AuCxyNKFPW59XezTCz5wCmplQ,4995
|
|
15
15
|
ttnn_visualizer/sftp_operations.py,sha256=9HwbPJPSO1UUQ98d5zeWAkEwR0zFPryUakcI68GqkVw,30181
|
|
16
16
|
ttnn_visualizer/sockets.py,sha256=_Hdne33r4FrB2tg58Vw87FWLbgQ_ikICVp4o1Mkv2mo,4789
|
|
17
17
|
ttnn_visualizer/ssh_client.py,sha256=x-BUUnsaKGReuOrSpHdcIaoH6RdGiQQYWx2_pOkGzJ0,13410
|
|
18
|
-
ttnn_visualizer/utils.py,sha256=
|
|
18
|
+
ttnn_visualizer/utils.py,sha256=zDj4e7IAQtu_mbEGLlp_sDPBI9bkr1dt5WdeYAjbk1U,16073
|
|
19
19
|
ttnn_visualizer/views.py,sha256=oN7fxl1_z19P7f6EFHgmE2tn4tCSbsY-16rVgziD658,48111
|
|
20
|
-
ttnn_visualizer/static/index.html,sha256=
|
|
21
|
-
ttnn_visualizer/static/assets/allPaths-
|
|
22
|
-
ttnn_visualizer/static/assets/allPathsLoader-
|
|
23
|
-
ttnn_visualizer/static/assets/index-
|
|
24
|
-
ttnn_visualizer/static/assets/index-
|
|
25
|
-
ttnn_visualizer/static/assets/index-
|
|
26
|
-
ttnn_visualizer/static/assets/index-
|
|
20
|
+
ttnn_visualizer/static/index.html,sha256=MYynux16I0vbVU_WhqXK5ICjZxGBh-w4tkQyFaabQno,1135
|
|
21
|
+
ttnn_visualizer/static/assets/allPaths-D6ZQWDaz.js,sha256=WNuoIok_I7mbp6TToTSEh-APJHL4kJc7KoVfW3zrj18,255
|
|
22
|
+
ttnn_visualizer/static/assets/allPathsLoader-KltlmKXl.js,sha256=-uDm0YvMKTMtZzX_DQITayy7aj8KkUprSpXEQz--EZY,477
|
|
23
|
+
ttnn_visualizer/static/assets/index-BZITDwoa.js,sha256=ax1pY3gjtvqTUiQSBZ6ZN9M6P9VJ4-eXzZ-C9F46Ozg,303183
|
|
24
|
+
ttnn_visualizer/static/assets/index-BzMUwfVf.css,sha256=VXXCPzkYVnvLdjrZ1dL3MQLMgU9QpG-t14IG9pV3vsI,630080
|
|
25
|
+
ttnn_visualizer/static/assets/index-DhooSFaT.js,sha256=55YDX5OUPvsozJE_xVl-Z4812WD6HVx15Nr-h9nHgEk,7917748
|
|
26
|
+
ttnn_visualizer/static/assets/index-voJy5fZe.js,sha256=4MEkPCpdjZkMgT0Kmxfdh5DCtJWMf-TAVQ3rc28BtEQ,293910
|
|
27
27
|
ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
|
|
28
|
-
ttnn_visualizer/static/assets/splitPathsBySizeLoader-
|
|
28
|
+
ttnn_visualizer/static/assets/splitPathsBySizeLoader-L-TfP1JT.js,sha256=gTU7-u1bYHG2OgRWIueahdFUXTWOsLF6ip5lsZb6k9c,281
|
|
29
29
|
ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
|
|
30
30
|
ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
|
|
31
31
|
ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
|
|
@@ -34,10 +34,11 @@ ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkX
|
|
|
34
34
|
ttnn_visualizer/tests/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
|
|
35
35
|
ttnn_visualizer/tests/test_queries.py,sha256=HqaDXwudZpXiigJdHkdJP8oiUc-PtHASbpLnQQpbD7A,13792
|
|
36
36
|
ttnn_visualizer/tests/test_serializers.py,sha256=xwWaiH-uQN-yiEkOScCsF-JEmQliQ62eKTURijdDPBo,18820
|
|
37
|
-
ttnn_visualizer
|
|
38
|
-
ttnn_visualizer-0.
|
|
39
|
-
ttnn_visualizer-0.
|
|
40
|
-
ttnn_visualizer-0.
|
|
41
|
-
ttnn_visualizer-0.
|
|
42
|
-
ttnn_visualizer-0.
|
|
43
|
-
ttnn_visualizer-0.
|
|
37
|
+
ttnn_visualizer/tests/test_utils.py,sha256=baQ40pz7kN9UUx6KtxUVun7hhCWjfbp6p04alLCvI7U,3507
|
|
38
|
+
ttnn_visualizer-0.63.0.dist-info/licenses/LICENSE,sha256=VHSLFZL7Jyfvyrl2flFqBgHbBK9AiL_qy0ApbEbE8vc,20459
|
|
39
|
+
ttnn_visualizer-0.63.0.dist-info/licenses/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
|
|
40
|
+
ttnn_visualizer-0.63.0.dist-info/METADATA,sha256=m4GR3syL51lq4C2j2Dadm0msPxLec3pBYX8bnQdeSA0,8911
|
|
41
|
+
ttnn_visualizer-0.63.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
|
|
42
|
+
ttnn_visualizer-0.63.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
|
|
43
|
+
ttnn_visualizer-0.63.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
|
|
44
|
+
ttnn_visualizer-0.63.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 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./index-DXdc2oG2.js";import{I as r}from"./index-BgzQ1XP9.js";import{p as n,I as c}from"./index-BB1xqCSF.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-CoeJF6Is.js","assets/index-DXdc2oG2.js","assets/index-BgzQ1XP9.js","assets/index-BB1xqCSF.js","assets/index-OTxEdcXc.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as e}from"./index-BB1xqCSF.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-CoeJF6Is.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};
|