ttnn-visualizer 0.64.0__py3-none-any.whl → 0.65.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-DDrUX09k.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-DMzz7de9.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-DDrUX09k.js"></script>
38
- <link rel="stylesheet" crossorigin href="/static/assets/index-BE2R-cuu.css">
37
+ <script type="module" crossorigin src="/static/assets/index-DMzz7de9.js"></script>
38
+ <link rel="stylesheet" crossorigin href="/static/assets/index-C7m_PE7l.css">
39
39
  </head>
40
40
  <body>
41
41
 
ttnn_visualizer/views.py CHANGED
@@ -729,8 +729,10 @@ def get_performance_results_report(instance: Instance):
729
729
  name = request.args.get("name", None)
730
730
  start_signpost = request.args.get("start_signpost", None)
731
731
  end_signpost = request.args.get("end_signpost", None)
732
+ print_signposts = str_to_bool(request.args.get("print_signposts", "true"))
732
733
  stack_by_in0 = str_to_bool(request.args.get("stack_by_in0", "true"))
733
734
  hide_host_ops = str_to_bool(request.args.get("hide_host_ops", "true"))
735
+ merge_devices = str_to_bool(request.args.get("merge_devices", "true"))
734
736
 
735
737
  if name and not current_app.config["SERVER_MODE"]:
736
738
  performance_path = Path(instance.performance_path).parent / name
@@ -742,8 +744,10 @@ def get_performance_results_report(instance: Instance):
742
744
  instance,
743
745
  stack_by_in0=stack_by_in0,
744
746
  start_signpost=start_signpost,
747
+ print_signposts=print_signposts,
745
748
  end_signpost=end_signpost,
746
749
  hide_host_ops=hide_host_ops,
750
+ merge_devices=merge_devices,
747
751
  )
748
752
  except DataFormatError:
749
753
  return Response(status=HTTPStatus.UNPROCESSABLE_ENTITY)
@@ -751,6 +755,7 @@ def get_performance_results_report(instance: Instance):
751
755
  return Response(orjson.dumps(report), mimetype="application/json")
752
756
 
753
757
 
758
+ # this is no longer used atm. keeping for now until confirmed "not needed"
754
759
  @api.route("/performance/device-log/raw", methods=["GET"])
755
760
  @with_instance
756
761
  def get_performance_data_raw(instance: Instance):
@@ -773,6 +778,53 @@ def get_performance_data_raw(instance: Instance):
773
778
  )
774
779
 
775
780
 
781
+ @api.route("/performance/device-log/meta", methods=["GET"])
782
+ @with_instance
783
+ def get_performance_device_meta(instance: Instance):
784
+ def get_first_line(file_path: Path) -> str:
785
+ with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
786
+ return f.readline().strip()
787
+
788
+ def parse_arch_and_freq(line: str):
789
+ arch_match = re.search(r"ARCH:\s*([\w\d_]+)", line)
790
+ freq_match = re.search(r"CHIP_FREQ\[MHz\]:\s*(\d+)", line)
791
+
792
+ architecture = arch_match.group(1) if arch_match else None
793
+ frequency = int(freq_match.group(1)) if freq_match else None
794
+
795
+ return {
796
+ "architecture": architecture,
797
+ "frequency": frequency,
798
+ }
799
+
800
+ name = request.args.get("name", None)
801
+
802
+ if not instance.performance_path:
803
+ return Response(status=HTTPStatus.NOT_FOUND)
804
+
805
+ if name and not current_app.config["SERVER_MODE"]:
806
+ performance_path = Path(instance.performance_path).parent / name
807
+ instance.performance_path = str(performance_path)
808
+ logger.info(f"************ Performance path set to {instance.performance_path}")
809
+
810
+ file_path = Path(
811
+ instance.performance_path,
812
+ DeviceLogProfilerQueries.DEVICE_LOG_FILE,
813
+ )
814
+
815
+ if not file_path.exists():
816
+ return Response(status=HTTPStatus.NOT_FOUND)
817
+
818
+ try:
819
+ first_line = get_first_line(file_path)
820
+ meta = parse_arch_and_freq(first_line)
821
+ return jsonify(meta)
822
+
823
+ except Exception as e:
824
+ logger.exception("Failed to parse device meta")
825
+ return Response(str(e), status=HTTPStatus.INTERNAL_SERVER_ERROR)
826
+
827
+
776
828
  @api.route("/performance/npe/manifest", methods=["GET"])
777
829
  @with_instance
778
830
  def get_npe_manifest(instance: Instance):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ttnn_visualizer
3
- Version: 0.64.0
3
+ Version: 0.65.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.11
26
+ Requires-Dist: tt-perf-report==1.1.14
27
27
  Requires-Dist: uvicorn==0.30.1
28
28
  Requires-Dist: zstd==1.5.7.0
29
29
  Provides-Extra: dev
@@ -1,6 +1,6 @@
1
1
  ttnn_visualizer/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5upDx0,93
2
2
  ttnn_visualizer/app.py,sha256=M7kXzWjfMekaIfskFwa0YtKSFJIj5C7mqe1N-cda8TU,12565
3
- ttnn_visualizer/csv_queries.py,sha256=hcgxk53SXhiTq1B-6yEKNvDbOG5MJAv1ARWxxT3t_cU,19596
3
+ ttnn_visualizer/csv_queries.py,sha256=9wlkYNnwA5eKgCp4hA5Q-RLT_ZYaBl2oZWAdIzXtSAc,20422
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
@@ -16,16 +16,16 @@ ttnn_visualizer/sftp_operations.py,sha256=9HwbPJPSO1UUQ98d5zeWAkEwR0zFPryUakcI68
16
16
  ttnn_visualizer/sockets.py,sha256=_Hdne33r4FrB2tg58Vw87FWLbgQ_ikICVp4o1Mkv2mo,4789
17
17
  ttnn_visualizer/ssh_client.py,sha256=x-BUUnsaKGReuOrSpHdcIaoH6RdGiQQYWx2_pOkGzJ0,13410
18
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
19
+ ttnn_visualizer/views.py,sha256=tq887jrIPREOnFftEVL789N-0C1o5HNnQ7KoQq2zhR0,50267
20
+ ttnn_visualizer/static/index.html,sha256=xtA8s6m9CNChhpiLtXwzK9fX7K3Hhb6bz6rAsZNyXRs,1135
21
+ ttnn_visualizer/static/assets/allPaths-B6-2k5TG.js,sha256=N0Xj4yyme5_7OXzSViiXW-6AszdqbwnAT0cPcn_0gB8,255
22
+ ttnn_visualizer/static/assets/allPathsLoader-Cylj0kPO.js,sha256=boLureHSp7YelQPB6kk3rtw8xWeYFVgdEtNGfK8U9mI,477
24
23
  ttnn_visualizer/static/assets/index-BZITDwoa.js,sha256=ax1pY3gjtvqTUiQSBZ6ZN9M6P9VJ4-eXzZ-C9F46Ozg,303183
25
- ttnn_visualizer/static/assets/index-DDrUX09k.js,sha256=TytlYsQKKFPSwA2vvhNYixWWs3x8H3Q-SkoUTjnQybY,7919047
24
+ ttnn_visualizer/static/assets/index-C7m_PE7l.css,sha256=ZJCWCItLuUZxYxnj45YIq4b2X0xBSnCVaXY-BHVZeKo,630529
25
+ ttnn_visualizer/static/assets/index-DMzz7de9.js,sha256=xjTnTxf8zQgRq-mhdVIqMCC0a3CqYrzmx6xFVSDu_5Q,7899967
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-_GpmIkFm.js,sha256=Zv8b0FWYGHtAUSg5OyUNLD80xS7Ok2-vtahHMrZ37lI,281
28
+ ttnn_visualizer/static/assets/splitPathsBySizeLoader-BVbD9Udb.js,sha256=9F4l3tvgOl20DJmhho4jcP5afUBXzDeUje-C69ecEJ0,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
@@ -35,10 +35,10 @@ ttnn_visualizer/tests/__init__.py,sha256=FCQeTWnXsf-Wx-fay53-lQsm0y5-GcPMUmzhE5u
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
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,,
38
+ ttnn_visualizer-0.65.0.dist-info/licenses/LICENSE,sha256=73btFSS9sVfj4HGhNlBx6nYo4rkKnOlWOi8H1MpDoSE,20286
39
+ ttnn_visualizer-0.65.0.dist-info/licenses/LICENSE_understanding.txt,sha256=pymi-yb_RvYM9p2ZA4iSNsImcvhDBBxlGuJCY9dTq7M,233
40
+ ttnn_visualizer-0.65.0.dist-info/METADATA,sha256=NcKfAnEkkKKNRvuAW_GnI7Poh1G6qQOCF0sqptNqW7Y,8912
41
+ ttnn_visualizer-0.65.0.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
42
+ ttnn_visualizer-0.65.0.dist-info/entry_points.txt,sha256=QpuUpkmQ_mEHJTMqOBdU0MH2Z4WF_9iFsGACeyyAO1E,61
43
+ ttnn_visualizer-0.65.0.dist-info/top_level.txt,sha256=M1EGkvDOuIfbhDbcUdz2-TSdmCtDoQ2Uyag9k5JLDSY,16
44
+ ttnn_visualizer-0.65.0.dist-info/RECORD,,
@@ -91,7 +91,6 @@ The following separate and independent dependencies are utilized by this project
91
91
  - @testing-library/dom - MIT - https://github.com/testing-library/dom-testing-library/blob/main/LICENSE
92
92
  - @testing-library/jest-dom - MIT - https://github.com/testing-library/jest-dom/blob/main/LICENSE
93
93
  - @testing-library/react - MIT - https://github.com/testing-library/react-testing-library/blob/main/LICENSE
94
- - @types/papaparse - MIT - https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
95
94
  - @types/react - MIT - https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
96
95
  - @types/react-dom - MIT - https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
97
96
  - @types/react-plotly.js - MIT - https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/LICENSE
@@ -130,7 +129,6 @@ The following separate and independent dependencies are utilized by this project
130
129
  - mini-svg-data-uri - MIT - https://github.com/tigt/mini-svg-data-uri/blob/master/LICENSE
131
130
  - normalize.css - MIT - https://github.com/necolas/normalize.css/blob/master/LICENSE.md
132
131
  - only-allow - MIT - https://github.com/pnpm/only-allow/blob/master/LICENSE
133
- - papaparse - MIT - https://github.com/mholt/PapaParse/blob/master/LICENSE
134
132
  - plotly.js - MIT - https://github.com/plotly/plotly.js/blob/master/LICENSE
135
133
  - prettier - MIT - https://github.com/prettier/eslint-config-prettier/blob/main/LICENSE
136
134
  - react - MIT - https://github.com/facebook/react/blob/main/LICENSE
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-DWjqav_8.js","assets/index-voJy5fZe.js","assets/index-BZITDwoa.js","assets/index-DDrUX09k.js","assets/index-BE2R-cuu.css"])))=>i.map(i=>d[i]);
2
- import{_ as e}from"./index-DDrUX09k.js";const s=async(t,a)=>{const{getIconPaths:o}=await e(async()=>{const{getIconPaths:r}=await import("./allPaths-DWjqav_8.js");return{getIconPaths:r}},__vite__mapDeps([0,1,2,3,4]));return o(t,a)};export{s as allPathsLoader};