ttnn-visualizer 0.62.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.
@@ -1 +1 @@
1
- import{p as r,I as s,_ as a}from"./index-Bixx4Hi-.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};
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-Bixx4Hi-.js"></script>
38
- <link rel="stylesheet" crossorigin href="/static/assets/index-Cz8iCC8X.css">
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.62.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.8
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://github.com/tenstorrent/tt-metal/blob/main/INSTALLING.md) | [Discord](https://discord.gg/tvhGzHQwaj) | [Join Us](https://boards.greenhouse.io/tenstorrent/jobs/4155609007)
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 [getting started](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md) guide for further information on getting up and running with TT-NN Visualizer.
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://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md#loading-data) for instructions on how to use this.
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
- - Comprehensive list of all operations in the model
79
- - Interactive graph visualization of operations
80
- - Detailed and interactive L1, DRAM, and circular buffer memory plots
81
- - Filterable list of tensor details
82
- - Overview of all buffers for the entire model run
83
- - Visualization of input and output tensors with core tiling and sharding details
84
- - Visualize inputs/outputs per tensor or tensor allocation across each core
85
- - Detailed insights into L1 peak memory consumption, with an interactive graph of allocation over time
86
- - Navigate a tree of device operations with associated buffers and circular buffers
87
- - Operation flow graph for a holistic view of model execution
88
- - Load reports via the local file system or through an SSH connection
89
- - Supports multiple instances of the application running concurrently
90
- - BETA: Network-on-chip performance estimator (NPE) for Tenstorrent Tensix-based devices
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://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/contributing.md) from source.
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=w5jkzJO6d6SKKrUKnWJlBu3Jw8K-aHCaZ1wsxhlne3o,8793
3
- ttnn_visualizer/csv_queries.py,sha256=H7TKc8Qe4UouGp34hcPb074ikxJMVvh0a_nhqrxrGhQ,19212
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=zs9qWfB83XY-KeEwfeaouKx81eSUjlxxAbIZ3nAj3_g,4719
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=_W990vRnup9zlWJ-g_Bggyo-wDjCYF49p0nPxWNgxrE,12934
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=vMcCMoz5cHR1zwVTRbT8J2Rx1fo_TatuTzh-_Q2_lzg,1135
21
- ttnn_visualizer/static/assets/allPaths-BCkFOWKv.js,sha256=2Sh1GCGjmOMJpm__8NBp55Scg2KpGdNvFxxcAxaCBfw,255
22
- ttnn_visualizer/static/assets/allPathsLoader-83spAXtq.js,sha256=wrO_ElWLlkIlsrZUfpLD2XQC3_w7DswRRSrBXSDJd7A,477
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
23
  ttnn_visualizer/static/assets/index-BZITDwoa.js,sha256=ax1pY3gjtvqTUiQSBZ6ZN9M6P9VJ4-eXzZ-C9F46Ozg,303183
24
- ttnn_visualizer/static/assets/index-Bixx4Hi-.js,sha256=lzibtenD0xlRAGRKmShyq2cuftwp3w0wRiffA4rfTE8,7916719
25
- ttnn_visualizer/static/assets/index-Cz8iCC8X.css,sha256=7xHuYhl1luk77R6Qm0bfcqufqaS5-ZP-JWOoNxxwZgk,628694
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
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-e7ZU8yKQ.js,sha256=NWoHUg6aB2hUyFtjhvzhhlG0Nf2yDfAgY-D8V_xoTCA,281
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-0.62.0.dist-info/licenses/LICENSE,sha256=bapl7NysYmv8aYSVxr5qFDya0vCqppyjkyyNJYosBdc,20044
38
- ttnn_visualizer-0.62.0.dist-info/licenses/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
39
- ttnn_visualizer-0.62.0.dist-info/METADATA,sha256=6BOJB3l7g-n1OsQ_mlqQA5kZ05RarTXJ2MF8yZTNHOE,7779
40
- ttnn_visualizer-0.62.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
41
- ttnn_visualizer-0.62.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
42
- ttnn_visualizer-0.62.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
43
- ttnn_visualizer-0.62.0.dist-info/RECORD,,
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,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-BCkFOWKv.js","assets/index-voJy5fZe.js","assets/index-BZITDwoa.js","assets/index-Bixx4Hi-.js","assets/index-Cz8iCC8X.css"])))=>i.map(i=>d[i]);
2
- import{_ as e}from"./index-Bixx4Hi-.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-BCkFOWKv.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};