ttnn-visualizer 0.25.0__py3-none-any.whl → 0.26.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{_ as o,a as _,b as i,p as c,I as u}from"./index-D0kD885Y.js";var p=function(n,s){return o(void 0,void 0,void 0,function(){var a,r;return _(this,function(e){switch(e.label){case 0:return a=c(n),s!==u.STANDARD?[3,2]:[4,i(()=>import("./index-BVMreIQm.js").then(t=>t.I),[])];case 1:return r=e.sent(),[3,4];case 2:return[4,i(()=>import("./index-Do7YB6C4.js").then(t=>t.I),[])];case 3:r=e.sent(),e.label=4;case 4:return[2,r[a]]}})})};export{p as splitPathsBySizeLoader};
1
+ import{_ as o,a as _,b as i,p as c,I as u}from"./index-rIoXC5rS.js";var p=function(n,s){return o(void 0,void 0,void 0,function(){var a,r;return _(this,function(e){switch(e.label){case 0:return a=c(n),s!==u.STANDARD?[3,2]:[4,i(()=>import("./index-BVMreIQm.js").then(t=>t.I),[])];case 1:return r=e.sent(),[3,4];case 2:return[4,i(()=>import("./index-Do7YB6C4.js").then(t=>t.I),[])];case 3:r=e.sent(),e.label=4;case 4:return[2,r[a]]}})})};export{p as splitPathsBySizeLoader};
@@ -6,7 +6,7 @@
6
6
  name="viewport"
7
7
  content="width=device-width, initial-scale=1.0"
8
8
  />
9
- <title>TTNN Visualizer</title>
9
+ <title>TT-NN Visualizer</title>
10
10
 
11
11
  <link
12
12
  rel="icon"
@@ -27,8 +27,8 @@
27
27
  name="theme-color"
28
28
  content="#33333d"
29
29
  />
30
- <script type="module" crossorigin src="/assets/index-D0kD885Y.js"></script>
31
- <link rel="stylesheet" crossorigin href="/assets/index-C6f3UdbP.css">
30
+ <script type="module" crossorigin src="/assets/index-rIoXC5rS.js"></script>
31
+ <link rel="stylesheet" crossorigin href="/assets/index-S-_ELv4m.css">
32
32
  </head>
33
33
  <body>
34
34
  <div id="root"></div>
ttnn_visualizer/utils.py CHANGED
@@ -106,6 +106,12 @@ def get_report_path(active_report, current_app, remote_connection=None):
106
106
  else:
107
107
  return ""
108
108
 
109
+ def get_npe_path(npe_name, current_app):
110
+ local_dir = Path(current_app.config["LOCAL_DATA_DIRECTORY"])
111
+
112
+ npe_path = local_dir / "npe"
113
+
114
+ return str(npe_path)
109
115
 
110
116
  def read_last_synced_file(directory: str) -> Optional[int]:
111
117
  """Reads the '.last-synced' file in the specified directory and returns the timestamp as an integer, or None if not found."""
ttnn_visualizer/views.py CHANGED
@@ -21,6 +21,7 @@ from ttnn_visualizer.enums import ConnectionTestStates
21
21
  from ttnn_visualizer.exceptions import RemoteConnectionException
22
22
  from ttnn_visualizer.file_uploads import (
23
23
  extract_report_name,
24
+ extract_npe_name,
24
25
  save_uploaded_files,
25
26
  validate_files,
26
27
  )
@@ -456,7 +457,6 @@ def create_report_files():
456
457
  status=ConnectionTestStates.OK, message="Success."
457
458
  ).model_dump()
458
459
 
459
-
460
460
  @api.route("/local/upload/profile", methods=["POST"])
461
461
  def create_profile_files():
462
462
  files = request.files.getlist("files")
@@ -507,6 +507,31 @@ def create_profile_files():
507
507
  ).model_dump()
508
508
 
509
509
 
510
+ @api.route("/local/upload/npe", methods=["POST"])
511
+ def create_npe_files():
512
+ files = request.files.getlist("files")
513
+ report_directory = current_app.config["LOCAL_DATA_DIRECTORY"]
514
+
515
+ for file in files:
516
+ if not file.filename.endswith(".json"):
517
+ return StatusMessage(
518
+ status=ConnectionTestStates.FAILED,
519
+ message="NPE requires a valid JSON file",
520
+ ).model_dump()
521
+
522
+ npe_name = extract_npe_name(files)
523
+ target_directory = report_directory / "npe"
524
+ target_directory.mkdir(parents=True, exist_ok=True)
525
+
526
+ save_uploaded_files(files, target_directory, npe_name)
527
+
528
+ tab_id = request.args.get("tabId")
529
+ update_tab_session(tab_id=tab_id, npe_name=npe_name, clear_remote=True)
530
+
531
+ return StatusMessage(
532
+ status=ConnectionTestStates.OK, message="Success"
533
+ ).model_dump()
534
+
510
535
  @api.route("/remote/folder", methods=["POST"])
511
536
  def get_remote_folders():
512
537
  connection = RemoteConnection.model_validate(request.json, strict=False)
@@ -792,3 +817,19 @@ def health_check():
792
817
  def get_tab_session(session: TabSession):
793
818
  # Used to gate UI functions if no report is active
794
819
  return session.model_dump()
820
+
821
+ @api.route("/npe", methods=["GET"])
822
+ @with_session
823
+ @timer
824
+ def get_npe_data(session: TabSession):
825
+ if not session.npe_path:
826
+ logger.error("NPE path is not set in the session.")
827
+ return Response(status=HTTPStatus.NOT_FOUND)
828
+
829
+ npe_file = Path(f"{session.npe_path}/{session.active_report.npe_name}.json")
830
+ if not npe_file.exists():
831
+ logger.error(f"NPE file does not exist: {npe_file}")
832
+ return Response(status=HTTPStatus.NOT_FOUND)
833
+ with open(npe_file, "r") as file:
834
+ npe_data = json.load(file)
835
+ return jsonify(npe_data)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ttnn_visualizer
3
- Version: 0.25.0
3
+ Version: 0.26.0
4
4
  Summary: TT Visualizer
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -57,10 +57,11 @@ TT-NN Visualizer can be installed from PyPI:
57
57
 
58
58
  After installation run `ttnn-visualizer` to start the application.
59
59
 
60
- It is recommended to do this within a virtual environment. The minimum Python version is 3.10.
60
+ It is recommended to do this within a virtual environment. The minimum Python version is **3.10**.
61
61
 
62
- Please see the [getting started](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/getting-started.md) guide
63
- for further information on getting up and running with TT-NN Visualizer.
62
+ 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.
63
+
64
+ 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.
64
65
 
65
66
  ## Features
66
67
 
@@ -86,7 +87,7 @@ For the latest updates and features, please see [releases](https://github.com/te
86
87
 
87
88
  https://github.com/user-attachments/assets/d00a2629-0bd1-4ee1-bb12-bd796d85221d
88
89
 
89
- | L1 Summary with Tensor highlight | Operation inputs and ouputs |
90
+ | L1 Summary with Tensor highlight | Operation inputs and outputs |
90
91
  |-----------------------------------------------|------------------------------------------|
91
92
  | <img width="400" alt="L1 Summary with Tensor highlight" src="https://github.com/user-attachments/assets/73c0aff8-16b2-4d1e-85a8-81c434012d36" /> | <img width="400" alt="Operation inputs and outputs" src="https://github.com/user-attachments/assets/e9480ad2-7e24-436b-932b-050c6b489516" /> |
92
93
 
@@ -114,10 +115,6 @@ https://github.com/user-attachments/assets/d00a2629-0bd1-4ee1-bb12-bd796d85221d
114
115
  |-----------------------------------------------|------------------------------------------|
115
116
  | <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/1f4441c6-9d9e-4834-9e71-edec1955243c" /> | <img width="400" alt="NPE" src="https://github.com/user-attachments/assets/7159992e-7691-41cf-a152-8bc6a3606ade" /> |
116
117
 
117
- ## Remote Querying
118
-
119
- Use [remote querying](https://github.com/tenstorrent/ttnn-visualizer/blob/main/docs/remote-querying.md) instead of syncing the report data to your local file system.
120
-
121
118
  ## Sample reports
122
119
 
123
120
  You may test the application using the following sample reports.
@@ -5,30 +5,30 @@ ttnn_visualizer/decorators.py,sha256=XKGByL3_CUwuoU93CcRaFFT8VOK3N6X5UOgK0umy6_A
5
5
  ttnn_visualizer/enums.py,sha256=XTWZGvPFtKmIhPXGCbbzi6bxFgRpLrAZGrrR5YvGYjY,203
6
6
  ttnn_visualizer/exceptions.py,sha256=iATY-bfcSQL1Af4aLSN2d0fLD5NcS19NKwoB3JyLp4A,960
7
7
  ttnn_visualizer/extensions.py,sha256=jovwo_j9toJVuXDVq4iPpXJMRXPpzSliNpE1TOJMDHI,380
8
- ttnn_visualizer/file_uploads.py,sha256=VV1y8AlNlY5SiG64hGGYwzzOh1qw0-TRAP_o1lsKFJ4,2468
9
- ttnn_visualizer/models.py,sha256=7O96nIVlHrNjaX6-d_KL_Tv0B9Syi_XpLqQzcws1lfg,7230
8
+ ttnn_visualizer/file_uploads.py,sha256=s7gKQVpc2j1qFKY_AOYr9yoISjjUer5FjvsZyQZ_1P0,2603
9
+ ttnn_visualizer/models.py,sha256=6vvg5YRoAXzH6ikhm7Ixz7QGVM8Xb7sIULNI4hzqLso,7551
10
10
  ttnn_visualizer/queries.py,sha256=eQTRrdGlfKdKuZuNQXM6Awn3w4mkDhynzxf1JHyZiDg,13626
11
11
  ttnn_visualizer/remote_sqlite_setup.py,sha256=Zd7U7q_N92rD0P2qb1GIXuZjhV4LXqfq7Bhg0MTLS5k,3269
12
12
  ttnn_visualizer/requirements.txt,sha256=LiycuPs-Oh8PZ1qM6v1KlUPQG86nQyQFz_x7dU8DSpA,370
13
13
  ttnn_visualizer/serializers.py,sha256=smY3CgbqaAXsovoYZ-A9fgPXih5lUS2HD_3aIZMcFS4,7821
14
- ttnn_visualizer/sessions.py,sha256=2Xh77mZy8-nDDQ7A7OeeGqYMKiBOzMiHdQjXmYUInqU,7082
15
- ttnn_visualizer/settings.py,sha256=WwAG9aVYBe9iSySWnjBtZsYjKaTfUiJZPwT5WIm4Lt8,3841
14
+ ttnn_visualizer/sessions.py,sha256=8cGQAbT4QSU7ISdZzLWevXVrtSuU7NBR0-7i9HszQlo,7510
15
+ ttnn_visualizer/settings.py,sha256=kC0mBNrZDq1S7RPeRGnPcGZxGuM515A1upsWRrKl5k8,3841
16
16
  ttnn_visualizer/sftp_operations.py,sha256=RrzCGo__2sQ2g4r90qlyFBEq4v6ooX2ntJ7VDKuynC0,17659
17
17
  ttnn_visualizer/sockets.py,sha256=gpLZiZFpmHz_bfNkrYOU_op4-tQrT0YNYDKk77jrgow,3509
18
18
  ttnn_visualizer/ssh_client.py,sha256=KRLuIk6wxrZZQUQKfC8QWMhXGJQvfKKeyxLThgRX6ak,2679
19
- ttnn_visualizer/utils.py,sha256=NUxjGtxCcEDCAWIYYMYVPp1o8HO4KwXnTOQGXSw2JSo,6206
20
- ttnn_visualizer/views.py,sha256=82H4TNb9i_ugYeCCzXoiN7mhi_8giNBwzJmqamw6poc,26498
19
+ ttnn_visualizer/utils.py,sha256=zD8_B7Dd8sgOQF52LNQ5HrLxuvfZg-YnxLrZOpuA5Lw,6372
20
+ ttnn_visualizer/views.py,sha256=TMEXEW9lKllj9ChijDgemimpDKeX05lMpmE-Ur8rcXA,27937
21
21
  ttnn_visualizer/bin/docker-entrypoint-web,sha256=uuv6aubpMCfOcuvDBxwBDITE8PN39teuwyJ2zA5KWuw,413
22
22
  ttnn_visualizer/bin/pip3-install,sha256=nbSRT4GfJQIQ9KTNO3j-6b5WM4lrx9XA4GBlAURRMws,502
23
- ttnn_visualizer/static/index.html,sha256=2Hf13ldjKvG22dyu-dwOVew8h1esthm911jbv9W7HEM,922
24
- ttnn_visualizer/static/assets/allPaths-DCydHV9G.js,sha256=sigtGSOAJlfe0qgVTNJ_6rjNdFDPnAh8jzKQoUEmpOU,309
25
- ttnn_visualizer/static/assets/allPathsLoader-XdAstF0k.js,sha256=6pO6OPwtkZz_DoSVfxuvFZ1K1-74PxsYEmURaRZRcZ0,550
23
+ ttnn_visualizer/static/index.html,sha256=n0ShdWmvCjykVewExEJfjJGYUVrSYd8iNdl54J2IBeg,923
24
+ ttnn_visualizer/static/assets/allPaths-egCeGMYd.js,sha256=aMH3_-EDUZs3p6ePGb_M8OFzseBibgVui_RI3rOW0VU,309
25
+ ttnn_visualizer/static/assets/allPathsLoader-ChZ_kotC.js,sha256=Gqj32OtKMw46dZSJk0idTcCy5vo6cvpSj4ExxMfv6nw,550
26
26
  ttnn_visualizer/static/assets/index-BVMreIQm.js,sha256=QJTBb4VVCMoLPYsWdru3heJX1VtMJQYJGx-tq8gZNTw,280965
27
- ttnn_visualizer/static/assets/index-C6f3UdbP.css,sha256=IUhjRkmhDOJ6qIkduTxONW6_D_6NLr7FmENQwpNjbAE,614348
28
- ttnn_visualizer/static/assets/index-D0kD885Y.js,sha256=a-eHiRgtcaz_JxJEXOHgIgNjzdlOGr5cvl81hxuLkew,6980259
29
27
  ttnn_visualizer/static/assets/index-Do7YB6C4.js,sha256=10jCIy7zph8mPB2htGfhXJBV7LO2FFrGhfz7xoQyh00,289378
28
+ ttnn_visualizer/static/assets/index-S-_ELv4m.css,sha256=kxiQqeXqJGktQJBJoh-Tz9Nl8LBscsNrDzyUIlwDsYc,615142
29
+ ttnn_visualizer/static/assets/index-rIoXC5rS.js,sha256=f5GLHBcuD9P2x4TNwE_kaIj6TWgSCIyvNesqZ11tMFA,6983612
30
30
  ttnn_visualizer/static/assets/site-BTBrvHC5.webmanifest,sha256=Uy_XmnGuYFVf-OZuma2NvgEPdrCrevb3HZvaxSIHoA0,456
31
- ttnn_visualizer/static/assets/splitPathsBySizeLoader-B81xALt1.js,sha256=lbUSoX2AirbjtZMlUN_sDgSgFiXbCfNTqhAQ6hYHA-U,472
31
+ ttnn_visualizer/static/assets/splitPathsBySizeLoader-BfocwQsJ.js,sha256=B3X2znUloZgu_6P5okv4n5ymUANxM5B0s0XPbiiZK2I,472
32
32
  ttnn_visualizer/static/favicon/android-chrome-192x192.png,sha256=BZWA09Zxaa3fXbaeS6nhWo2e-DUSjm9ElzNQ_xTB5XU,6220
33
33
  ttnn_visualizer/static/favicon/android-chrome-512x512.png,sha256=HBiJSZyguB3o8fMJuqIGcpeBy_9JOdImme3wD02UYCw,62626
34
34
  ttnn_visualizer/static/favicon/favicon-32x32.png,sha256=Zw201qUsczQv1UvoQvJf5smQ2ss10xaTeWxmQNYCGtY,480
@@ -37,10 +37,10 @@ ttnn_visualizer/static/sample-data/cluster-desc.yaml,sha256=LMxOmsRUXtVVU5ogzYkX
37
37
  ttnn_visualizer/tests/__init__.py,sha256=qn9AwfHTxYYK0Icz-q2Q41Xo9ET6oc6anZzgh02PhK4,94
38
38
  ttnn_visualizer/tests/test_queries.py,sha256=OoINMZezyJkpiQuM1Owp4DlMoJGTl6OgsUbPa2Rxqc0,16546
39
39
  ttnn_visualizer/tests/test_serializers.py,sha256=966AJkXLAwzsceSQ9QR-Sy7VrEbE71AtfMF3y9ZIIWc,18490
40
- ttnn_visualizer-0.25.0.dist-info/LICENSE,sha256=7_uV4foXIbLyroI1M6NdIySajtLuPwayZr1UN2ItErI,11353
41
- ttnn_visualizer-0.25.0.dist-info/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
42
- ttnn_visualizer-0.25.0.dist-info/METADATA,sha256=SUZEJylpuLHD-RafYoPyI4D_MxSwvNizCk-J6LTF8jU,7155
43
- ttnn_visualizer-0.25.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
44
- ttnn_visualizer-0.25.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
45
- ttnn_visualizer-0.25.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
46
- ttnn_visualizer-0.25.0.dist-info/RECORD,,
40
+ ttnn_visualizer-0.26.0.dist-info/LICENSE,sha256=7_uV4foXIbLyroI1M6NdIySajtLuPwayZr1UN2ItErI,11353
41
+ ttnn_visualizer-0.26.0.dist-info/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
42
+ ttnn_visualizer-0.26.0.dist-info/METADATA,sha256=_RilFsWQY7ptm2JGC48RfBWJp_bZwWdz2eOpmLM81iM,7297
43
+ ttnn_visualizer-0.26.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
44
+ ttnn_visualizer-0.26.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
45
+ ttnn_visualizer-0.26.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
46
+ ttnn_visualizer-0.26.0.dist-info/RECORD,,