Compare commits
5 Commits
e1b817252c
...
7cbf75d6a8
| Author | SHA1 | Date | |
|---|---|---|---|
| 7cbf75d6a8 | |||
| ed17d6e2d6 | |||
| a601fb414c | |||
| 474482a752 | |||
| 2fc0d000b6 |
+26
@@ -0,0 +1,26 @@
|
||||
.PHONY: help install sync run clean
|
||||
|
||||
help:
|
||||
@echo "Please use `make <target> -f Makefile.mk` where <target> is one of"
|
||||
@echo " install to install dependencies using uv"
|
||||
@echo " sync to sync dependencies using uv"
|
||||
@echo " run to run the application"
|
||||
@echo " clean to remove temporary files"
|
||||
|
||||
# Install dependencies
|
||||
install:
|
||||
uv pip install -r requirements.txt
|
||||
|
||||
# Sync dependencies
|
||||
sync:
|
||||
uv pip sync requirements.txt
|
||||
|
||||
# Run the application
|
||||
run:
|
||||
uv run python main.py
|
||||
|
||||
# Clean up temporary files
|
||||
clean:
|
||||
find . -type f -name "*.py[co]" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
rm -rf .ipynb_checkpoints
|
||||
Vendored
+6
File diff suppressed because one or more lines are too long
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from dash.development.component_generator import cli
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(cli())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from dash.development.update_components import cli
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(cli())
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from numpy.f2py.f2py2e import main
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(main())
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from flask.cli import main
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(main())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from charset_normalizer.cli import cli_detect
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(cli_detect())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from numpy._configtool import main
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(main())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from plotly.io._kaleido import plotly_get_chrome
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(plotly_get_chrome())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from babel.messages.frontend import main
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(main())
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/Users/jackleene/code/2024-dash_v1/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import sys
|
||||
from dash.development.build_process import renderer
|
||||
if __name__ == "__main__":
|
||||
if sys.argv[0].endswith("-script.pyw"):
|
||||
sys.argv[0] = sys.argv[0][:-11]
|
||||
elif sys.argv[0].endswith(".exe"):
|
||||
sys.argv[0] = sys.argv[0][:-4]
|
||||
sys.exit(renderer())
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"Startup":"program to make life easier",
|
||||
"DATA_PATH":"./data/transactions.csv.gz"
|
||||
"DATA_PATH":"./data/blank.csv"
|
||||
}
|
||||
|
||||
Regular → Executable
Executable
+208
@@ -0,0 +1,208 @@
|
||||
,System,Customer,Root Error,Year,Week_Number,Year_Week_Number,Date,SDT_Timestamp,Description,EPmID,Duration,FC,SO,AIR,link,AIR_issue_confirmed,AIR_FC,Air_issue_description,Close_notes,WY,P_Hits,U_Hits,Reconciled,AIR2,Event_code,Category,XLD,Week_Diff,In_MTBFP_AND_Ulist,Link_Timestamp,Check_P_U,NomolaPos
|
||||
0,GY86,Intel,RQ-8120,2024,52,202452,2024-12-24,09:07:00,EpmID:104643| SCN - Lot Abort for RS-Reinit (Lot Abort) | RQ-8120 |,104643.0,14.866667,FC-004,,P847221,P847221,7,0,[Intel][RS] Online PF Residual out of limits due to SS dynamics link drift,RCA,202452,Y,Y,GY86,P847221,1,EpmID:104643| SCN - Lot Abort for RS-Reinit (Lot Abort) | RQ-8120 |,,-37,,2024-12-24_09:07:00_GY86,Y,0
|
||||
1,CR51,Intel,MEP-0106,2024,52,202452,2024-12-24,05:30:00,EpmID:104638| SRC - Down after Lot Abort | MEP-0106 |,104638.0,5.833333,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,Y,Y,CR51,P851510,1,EpmID:104638| SRC - Down after Lot Abort | MEP-0106 |,,-37,,2024-12-24_05:30:00_CR51,Y,0
|
||||
2,CR51,Intel,LSP-01B3,2024,52,202452,2024-12-24,14:05:00,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,105038.0,2.3,FC-712,53013308,,53013308,0,no AIR,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,0,202452,N,Y,CR51,53013308,1,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,,-37,,2024-12-24_14:05:00_CR51,N,0
|
||||
3,CR51,Intel,DW-56C6,2024,52,202452,2024-12-25,00:25:00,EpmID:105030| SCN - DW-56C6 Lot Abort | DW-56C6 |,105030.0,4.45,,,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202452,Y,Y,CR51,P820381,1,EpmID:105030| SCN - DW-56C6 Lot Abort | DW-56C6 |,,-37,,2024-12-25_00:25:00_CR51,Y,0
|
||||
4,CR51,Intel,LAB-002D,2024,52,202452,2024-12-26,00:14:00,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,105044.0,1.633333,FC-712,53016044,P851510,P851510,7,0,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,RCA,202452,Y,Y,CR51,P851510,1,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,,-37,,2024-12-26_00:14:00_CR51,Y,0
|
||||
5,GY86,Intel,RQ-8120,2024,52,202452,2024-12-27,00:55:00,EpmID:105095| SCN - Lot abort for PF residue OOL | RQ-8120 |,105095.0,2.883333,,,P847221,P847221,7,0,[Intel][RS] Online PF Residual out of limits due to SS dynamics link drift,RCA,202452,Y,Y,GY86,P847221,1,EpmID:105095| SCN - Lot abort for PF residue OOL | RQ-8120 |,,-37,,2024-12-27_00:55:00_GY86,Y,0
|
||||
6,CR51,Intel,LAB-002D,2024,52,202452,2024-12-27,09:42:00,EpmID:105031| CO2 - TRUC RF error | LAB-002D |,105031.0,0.783333,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,N,Y,CR51,P851510,1,EpmID:105031| CO2 - TRUC RF error | LAB-002D |,,-37,,2024-12-27_09:42:00_CR51,N,0
|
||||
7,GY86,Intel,ZH-221D,2024,52,202452,2024-12-28,13:39:00,EpmID:105070| SCN - Lot Abort for ZH-221D | ZH-221D |,105070.0,6.033333,FC-025,,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,Y,Y,GY86,P814232,1,EpmID:105070| SCN - Lot Abort for ZH-221D | ZH-221D |,,-37,,2024-12-28_13:39:00_GY86,Y,0
|
||||
8,GY86,Intel,ZH-221D,2024,52,202452,2024-12-28,06:12:00,EpmID:105077| SCN - Lot abort ZH-221D | ZH-221D |,105077.0,5.35,FC-025,,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,Y,Y,GY86,P814232,1,EpmID:105077| SCN - Lot abort ZH-221D | ZH-221D |,,-37,,2024-12-28_06:12:00_GY86,Y,0
|
||||
9,GY86,Intel,KV-9211,2024,52,202452,2024-12-28,21:36:00,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,105088.0,1.933333,FC-062,53016490,,53016490,0,no AIR,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,0,202452,N,Y,GY86,53016490,1,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,,-37,,2024-12-28_21:36:00_GY86,N,0
|
||||
10,CR51,Intel,LAB-002D,2024,52,202452,2024-12-28,02:25:00,EpmID:105043| SRC- TRUC RF laser generation driver NOK (Lot Abort) | LAB-002D |,105043.0,0.766667,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,Y,Y,CR51,P851510,1,EpmID:105043| SRC- TRUC RF laser generation driver NOK (Lot Abort) | LAB-002D |,,-37,,2024-12-28_02:25:00_CR51,Y,0
|
||||
11,GY86,Intel,ZH-221D,2024,52,202452,2024-12-29,21:17:00,EpmID:105050| SCN - HSSL_failed_during MX | ZH-221D |,105050.0,2.916667,FC-025,,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,N,Y,GY86,P814232,1,EpmID:105050| SCN - HSSL_failed_during MX | ZH-221D |,,-37,,2024-12-29_21:17:00_GY86,N,0
|
||||
12,CR51,Intel,RQ-9002,2025,1,202501,2024-12-30,05:22:00,EpmID:105018| SCN - Lot Abort | RQ-9002 |,105018.0,4.316667,FC-004,,P757279,P757279,7,0,P757279 - [EXE Proto1] Lot failed with error PG-7404 - CTRL_Z_FORCE_OVER_LI,RCA,202501,Y,Y,CR51,P757279,RQ-9002,EpmID:105018| SCN - Lot Abort | RQ-9002 |,,-36,,2024-12-30_05:22:00_CR51,Y,0
|
||||
13,GY86,Intel,ZH-221D,2025,1,202501,2024-12-30,06:50:00,EpmID:105047| SCN - lot abort Ilias sensor | ZH-221D |,105047.0,4.233333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105047| SCN - lot abort Ilias sensor | ZH-221D |,,-36,,2024-12-30_06:50:00_GY86,Y,0
|
||||
14,GY86,Intel,ZH-221D,2025,1,202501,2024-12-30,17:48:00,EpmID:105083| SCN - lot abort Ilias sensor | ZH-221D |,105083.0,1.083333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105083| SCN - lot abort Ilias sensor | ZH-221D |,,-36,,2024-12-30_17:48:00_GY86,Y,0
|
||||
15,GY86,Intel,ZH-221D,2025,1,202501,2024-12-31,20:59:00,EpmID:105045| SCN - ZH-221D Recovery and Containment (Lot Abort) | ZH-221D |,105045.0,4.366667,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105045| SCN - ZH-221D Recovery and Containment (Lot Abort) | ZH-221D |,,-36,,2024-12-31_20:59:00_GY86,Y,0
|
||||
16,CR51,Intel,WH-2626,2025,1,202501,2024-12-31,00:30:00,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,104984.0,0.5,FC-001,,Lot Failed to Start,Lot Failed to Start,19,not found,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,,202501,N,Y,CR51,Lot Failed to Start,WH-2626,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,,-36,,2024-12-31_00:30:00_CR51,N,0
|
||||
17,GY86,Intel,ZF-4392,2025,1,202501,2025-01-01,12:43:00,EpmID:105061| SCN - lot aborted by ZF-4392 | ZF-4392 |,105061.0,4.683333,FC-008,,P839414,P839414,7,0,"P839414 - ZF-4392 Communication failure on GY86, Exception handling needed.",RCA,202501,Y,Y,GY86,P839414,ZF-4392,EpmID:105061| SCN - lot aborted by ZF-4392 | ZF-4392 |,,-36,,2025-01-01_12:43:00_GY86,Y,0
|
||||
18,GY86,Intel,ZH-221D,2025,1,202501,2025-01-01,05:59:00,EpmID:105058| SCN - ZH-221D Recovery (Lot Abort) | ZH-221D |,105058.0,0.816667,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105058| SCN - ZH-221D Recovery (Lot Abort) | ZH-221D |,,-36,,2025-01-01_05:59:00_GY86,Y,0
|
||||
19,GY86,Intel,Track-Comm,2025,1,202501,2025-01-01,21:02:00,EpmID:105075| SCN - Recovery from track out of sync | ND |,105075.0,0.066667,FC-001,53020028,,53020028,0,no AIR,EpmID:105075| SCN - Recovery from track out of sync | ND |,0,202501,N,Y,GY86,53020028,Track-Comm,EpmID:105075| SCN - Recovery from track out of sync | ND |,,-36,,2025-01-01_21:02:00_GY86,N,0
|
||||
20,CR51,Intel,LAB-002D,2025,1,202501,2025-01-02,06:28:00,EpmID:104990| SRC - Lot abort recovery for DL error+ POB setup recovery | LAB-002D |,104990.0,11.383333,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202501,Y,Y,CR51,P851510,LAB-002D,EpmID:104990| SRC - Lot abort recovery for DL error+ POB setup recovery | LAB-002D |,,-36,,2025-01-02_06:28:00_CR51,Y,0
|
||||
21,GY86,Intel,PG-6206,2025,1,202501,2025-01-02,18:00:00,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,105389.0,0.183333,FC-001,53020963,,53020963,0,no AIR,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,0,202501,N,Y,GY86,53020963,PG-6206,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,,-36,,2025-01-02_18:00:00_GY86,N,0
|
||||
22,GY86,Intel,BP-3900,2025,1,202501,2025-01-02,20:08:43,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 | ,105494.0,18.998056,FC-002,53013086,,53013086,0,no AIR,no AIR,0,202501,Y,Y,GY86,53013086,BP-3900,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 | ,XLD,-36,0.0,2025-01-02_20:08:43_GY86,Y,0
|
||||
23,CR51,Intel,LAB-002D,2025,1,202501,2025-01-03,16:22:00,EpmID:105495| CO2 - DLBB Flow too low LAB-002D | LAB-002D |,105495.0,0.933333,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202501,N,Y,CR51,P851510,LAB-002D,EpmID:105495| CO2 - DLBB Flow too low LAB-002D | LAB-002D |,,-36,,2025-01-03_16:22:00_CR51,N,0
|
||||
24,CR51,Intel,BP-3900,2025,1,202501,2025-01-04,03:49:00,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 |,105494.0,3.3,FC-002,,P825866,P825866,7,BD,[E100][EZ60] Remove 500ms check on auxiliary contactors during HV ON and HV OFF,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202501,Y,Y,CR51,P825866,BP-3900,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 |,,-36,,2025-01-04_03:49:00_CR51,Y,0
|
||||
25,GY86,Intel,ZH-221D,2025,1,202501,2025-01-04,05:04:00,EpmID:105505| SCN - Lot aborted | ZH-221D |,105505.0,0.816667,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105505| SCN - Lot aborted | ZH-221D |,,-36,,2025-01-04_05:04:00_GY86,Y,0
|
||||
26,GY86,Intel,LO-105B,2025,1,202501,2025-01-05,00:25:00,EpmID:105516| SCN - LO-105B Happy Stop | LO-105B |,105516.0,8.416667,FC-042,53022419,,53022419,0,no AIR,no AIR,0,202501,N,Y,GY86,53022419,LO-105B,EpmID:105516| SCN - LO-105B Happy Stop | LO-105B |,,-36,,2025-01-05_00:25:00_GY86,N,0
|
||||
27,GY86,Intel,PG-6206,2025,1,202501,2025-01-05,10:38:00,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,105507.0,0.283333,FC-001,53022653,,53022653,0,no AIR,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,0,202501,N,Y,GY86,53022653,PG-6206,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,,-36,,2025-01-05_10:38:00_GY86,N,0
|
||||
28,CR51,Intel,DW-0004,2025,2,202502,2025-01-06,06:32:00,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,105498.0,3.133333,FC-009,53003175,P825866,P825866,7,BD,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202502,N,Y,CR51,P825866,DW-0004,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,Short down,-35,,2025-01-06_06:32:00_CR51,N,0
|
||||
29,GY86,Intel,ZH-221D,2025,2,202502,2025-01-06,01:44:00,EpmID:105512| SCN - ZH-221D Error Recovery | ZH-221D |,105512.0,0.733333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202502,Y,Y,GY86,P853275,ZH-221D,EpmID:105512| SCN - ZH-221D Error Recovery | ZH-221D |,Short down,-35,,2025-01-06_01:44:00_GY86,Y,0
|
||||
30,GY86,Intel,IS-1363,2025,2,202502,2025-01-07,06:19:00,EpmID:105646| SCN - IS-1363 Lot Abort | IS-1363 |,105646.0,14.766667,TIS,,P817298,P817298,7,0,EQHBMI (Coarse POB Calibration) Fails due to [CN-00C0] Closed connection due to read timeo,sp 22,202502,Y,Y,GY86,P817298,IS-1363,EpmID:105646| SCN - IS-1363 Lot Abort | IS-1363 |,XLD,-35,,2025-01-07_06:19:00_GY86,Y,0
|
||||
31,GY86,Intel,ZH-221D,2025,2,202502,2025-01-07,02:24:00,EpmID:105650| SCN - ZH-221D error (Lot Abort) | ZH-221D |,105650.0,1.15,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202502,Y,Y,GY86,P853275,ZH-221D,EpmID:105650| SCN - ZH-221D error (Lot Abort) | ZH-221D |,Short down,-35,,2025-01-07_02:24:00_GY86,Y,0
|
||||
32,CR51,Intel,DW-56C6,2025,2,202502,2025-01-09,16:29:00,EpmID:106262| SCN - Lot Abort for Real Time Sensor Link communication error | DW-56C6 |,106262.0,3.7,DC,,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202502,N,Y,CR51,P820381,DW-56C6,EpmID:106262| SCN - Lot Abort for Real Time Sensor Link communication error | DW-56C6 |,Short down,-35,,2025-01-09_16:29:00_CR51,N,0
|
||||
33,GY86,Intel,LAA-010B,2025,2,202502,2025-01-09,21:22:00,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,106269.0,0.616667,FC-712,53029042,P732021,P732021,7,BD,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,"[intake 2430]
|
||||
wk34.3: Comeback in wk35 for robust solution for SPA 141
|
||||
wk32.2 As mentioned today in 9am, project agreed to investigate solution direction for this issue ( check if we can add timing delay in the SF 15 side for MX).
|
||||
Comeback expected in W",202502,N,Y,GY86,P732021,LAA-010B,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,Short down,-35,,2025-01-09_21:22:00_GY86,N,0
|
||||
34,CR51,Intel,LO-STOP,2025,2,202502,2025-01-10,22:31:00,EpmID:106345| SCN - LOT failed to start | |,106345.0,0.516667,,53021877,Lot_Stop,Lot_Stop,8,not found,EpmID:106345| SCN - LOT failed to start | |,,202502,N,Y,CR51,Lot_Stop,LO-STOP,EpmID:106345| SCN - LOT failed to start | |,Short down,-35,,2025-01-10_22:31:00_CR51,N,0
|
||||
35,GY86,Intel,LAA-010B,2025,2,202502,2025-01-11,18:22:00,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,106384.0,0.916667,FC-712,53006997,P825866,P825866,7,BD,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202502,N,Y,GY86,P825866,LAA-010B,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,Short down,-35,,2025-01-11_18:22:00_GY86,N,0
|
||||
36,GY86,Intel,TinRefill,2025,2,202502,2025-01-11,01:48:00,EpmID:106382| SRC- HWO | | Tin refill reload,106382.0,0.316667,FC-002,53018449,TiN Refill,TiN Refill,10,not found,EpmID:106382| SRC- HWO | | Tin refill reload,,202502,N,Y,GY86,TiN Refill,TinRefill,EpmID:106382| SRC- HWO | | Tin refill reload,Short down,-35,,2025-01-11_01:48:00_GY86,N,0
|
||||
37,GY86,Intel,ZF-4392,2025,3,202503,2025-01-13,23:16:00,EpmID:106509| SCN - Lot abort for ZF-4392 HSSL Timeout | ZF-4392 |,106509.0,1.316667,FC-008,53016336,P853275,P853275,7,0,P814232 is related and partial solved,Firmware delivered W19 (COB swap done),202503,N,Y,GY86,P853275,ZF-4392,EpmID:106509| SCN - Lot abort for ZF-4392 HSSL Timeout | ZF-4392 |,Short down,-34,,2025-01-13_23:16:00_GY86,N,0
|
||||
38,CR51,Intel,RU-0D31,2025,3,202503,2025-01-19,17:56:00,EpmID:107162| SCN - RS Stamping | | Scanner Repairs,107162.0,6.066667,FC-002,53035983,DefectD,DefectD,7,not found,,,202503,N,Y,CR51,DefectD,RU-0D31,EpmID:107162| SCN - RS Stamping | | Scanner Repairs,Short down,-34,,2025-01-19_17:56:00_CR51,N,0
|
||||
39,CR51,Intel,KN-0605,2025,4,202504,2025-01-20,00:45:00,EpmID:107146| SCN - KGHDMIS task died | |,107146.0,0.833333,Metro,53036577,P844961,P844961,7,0,related to P840013?,closed,202504,N,Y,CR51,P844961,KN-0605,EpmID:107146| SCN - KGHDMIS task died | |,Short down,-33,,2025-01-20_00:45:00_CR51,N,0
|
||||
40,CR51,Intel,RU-0D31,2025,4,202504,2025-01-20,14:35:00,EpmID:107163| SCN - RS Stamping | | Scanner Repairs,107163.0,3.5,FC-002,53035983,,53035983,0,no AIR,,0,202504,N,Y,CR51,53035983,RU-0D31,EpmID:107163| SCN - RS Stamping | | Scanner Repairs,Short down,-33,,2025-01-20_14:35:00_CR51,N,0
|
||||
41,GY86,Intel,OO-000B,2025,4,202504,2025-01-20,09:07:00,EpmID:107207| SCN - WXRO lost connection lot abort | OO-000B |,107207.0,1.2,FC-027,53036923,P850771,P850771,7,0,WXRO task died unexpectedly,open,202504,N,Y,GY86,P850771,OO-000B,EpmID:107207| SCN - WXRO lost connection lot abort | OO-000B |,Short down,-33,,2025-01-20_09:07:00_GY86,N,0
|
||||
42,GY86,Intel,LAA-010B,2025,4,202504,2025-01-20,23:34:00,"EpmID:107222| SRC - MX actions failed, IS DO intermittent error | LAA-010B |",107222.0,12.98333,FC-712,,P825866,P825866,7,BD,Released already at intel,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202504,N,Y,GY86,P825866,LAA-010B,"EpmID:107222| SRC - MX actions failed, IS DO intermittent error | LAA-010B |",XLD,-33,,2025-01-20_23:34:00_GY86,N,0
|
||||
43,GY86,Intel,LAA-010B,2025,4,202504,2025-01-20,20:16:00,"EpmID:107223| SRC - Lot abort, IS DO intermittent error | LAA-010B |",107223.0,0.766667,FC-712,,P825866,P825866,7,BD,Released already at intel,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202504,N,Y,GY86,P825866,LAA-010B,"EpmID:107223| SRC - Lot abort, IS DO intermittent error | LAA-010B |",Short down,-33,,2025-01-20_20:16:00_GY86,N,0
|
||||
44,CR51,Intel,RH-98A3,2025,4,202504,2025-01-22,06:00:00,EpmID:107515| SCN - Reticle stuck in LDLK | |,107515.0,2.333333,FC-002,53039410,P851550,P851550,7,0,,sp 22,202504,N,Y,CR51,P851550,RH-98A3,EpmID:107515| SCN - Reticle stuck in LDLK | |,Short down,-33,,2025-01-22_06:00:00_CR51,N,0
|
||||
45,CR51,Intel,RU-465E,2025,4,202504,2025-01-23,22:38:00,EpmID:107821| SCN - LOAD LOCK ERROR | |,107821.0,0.566667,FC-002,53041233,P852254,P852254,7,0,OVR cross talk with LDLK / P838000,RU-465E dp/dt violation during venting,202504,N,Y,CR51,P852254,RU-465E,EpmID:107821| SCN - LOAD LOCK ERROR | |,Short down,-33,,2025-01-23_22:38:00_CR51,N,0
|
||||
46,GY86,Intel,ZF-370B,2025,4,202504,2025-01-24,18:12:00,EpmID:107901| SCN - Lot Abort for MCD Communication issue | ZF-370B |,107901.0,5.966667,FC-008,,P853275,P853275,7,0,,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZF-370B,EpmID:107901| SCN - Lot Abort for MCD Communication issue | ZF-370B |,Short down,-33,,2025-01-24_18:12:00_GY86,N,0
|
||||
47,GY86,Intel,ZH-221D,2025,4,202504,2025-01-24,10:27:00,EpmID:107925| SCN - Lot Abort for HSSL error | ZH-221D |,107925.0,1.133333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZH-221D,EpmID:107925| SCN - Lot Abort for HSSL error | ZH-221D |,Short down,-33,,2025-01-24_10:27:00_GY86,N,0
|
||||
48,GY86,Intel,ZF-370B,2025,4,202504,2025-01-26,10:55:00,EpmID:107924| SCN - Lot abort | ZF-370B |,107924.0,0.883333,FC-008,,P853275,P853275,7,0,,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZF-370B,EpmID:107924| SCN - Lot abort | ZF-370B |,Short down,-33,,2025-01-26_10:55:00_GY86,N,0
|
||||
49,GY86,Intel,ZH-221D,2025,4,202504,2025-01-26,08:24:00,EpmID:107902| SCN - ZH-221D lot abort | ZH-221D |,107902.0,0.966667,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZH-221D,EpmID:107902| SCN - ZH-221D lot abort | ZH-221D |,Short down,-33,,2025-01-26_08:24:00_GY86,N,0
|
||||
50,GY86,Intel,PG-7407,2025,5,202505,2025-01-27,12:48:00,EpmID:108151| SCN - Unalbe to load reticle via oht | PG-7407 | ,108151.0,0.866667,FC-002,53043348,P853301,P853301,7,0,IPT auto recovery feature,2513.5,202505,N,Y,GY86,P853301,PG-7407,EpmID:108151| SCN - Unalbe to load reticle via oht | PG-7407 | ,Short down,-32,0.0,2025-01-27_12:48:00_GY86,N,0
|
||||
51,CR51,Intel,DW-5A01,2025,5,202505,2025-01-27,12:46:00,EpmID:108143| SCN - lot abort on DW-5A01 | DW-5A01 | ,108143.0,0.133333,FC-002,53043277,P792003,P792003,7,0,EXE NOK w/ Dose Eval Enabled - Buffer Size != nr Samples,fixed in 5200 Firmware!,202505,Y,Y,CR51,P792003,DW-5A01,EpmID:108143| SCN - lot abort on DW-5A01 | DW-5A01 | ,Short down,-32,0.0,2025-01-27_12:46:00_CR51,Y,0
|
||||
52,GY86,Intel,MX-0000,2025,5,202505,2025-01-28,10:54:00,EpmID:108347| SCN - Lot abort for mxex not init | MX-0000 | ,108347.0,4.083333,FC-002,53043759,P853207,P853207,7,0,EXE GY86 Intel - Lot abort due to MX-000 and WDMA dying unexpectedly. ,containment do not run asm_collect_all at next occurrence?,202505,Y,Y,GY86,P853207,MX-0000,EpmID:108347| SCN - Lot abort for mxex not init | MX-0000 | ,Short down,-32,0.0,2025-01-28_10:54:00_GY86,Y,0
|
||||
53,CR51,Intel,RU-465E,2025,5,202505,2025-01-29,17:52:00,EpmID:108552| SCN - LDLK failed | RU-465E | ,108552.0,0.583333,FC-002,53044466,P852254,P852254,7,0,RU-465E dp/dt violation during venting,RU-465E dp/dt violation during venting,202505,N,Y,CR51,P852254,RU-465E,EpmID:108552| SCN - LDLK failed | RU-465E | ,Short down,-32,0.0,2025-01-29_17:52:00_CR51,N,0
|
||||
54,GY86,Intel,WH-3106,2025,5,202505,2025-01-29,15:44:00,EpmID:108563| SCN - lot abort due to WH | WH-3106 | ,108563.0,0.416667,FC-001,53044425,,53044425,0,no AIR,WH-1CDE,0,202505,Y,Y,GY86,53044425,WH-3106,EpmID:108563| SCN - lot abort due to WH | WH-3106 | ,Short down,-32,0.0,2025-01-29_15:44:00_GY86,Y,0
|
||||
55,GY86,Intel,CG-A34D,2025,5,202505,2025-01-30,07:33:00,EpmID:108561| SCN - Lot abort for CG-A34D | CG-A34D | ,108561.0,3.65,,53044836,P838726,P838726,7,PR,PCBR-HPPX-S6B2 (bad batch),MID reject,202505,Y,Y,GY86,P838726,CG-A34D,EpmID:108561| SCN - Lot abort for CG-A34D | CG-A34D | ,Short down,-32,0.0,2025-01-30_07:33:00_GY86,Y,0
|
||||
56,CR51,Intel,RH-C177,2025,5,202505,2025-01-30,17:15:00,EpmID:108607| SCN - 2DBC Read Fail | RH-C177 | Barcode reader fail,108607.0,1.016667,FC-002,53045135,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202505,N,Y,CR51,P823264,RH-C177,EpmID:108607| SCN - 2DBC Read Fail | RH-C177 | Barcode reader fail,Short down,-32,,2025-01-30_17:15:00_CR51,N,0
|
||||
57,CR51,Intel,RBI,2025,5,202505,2025-02-01,19:55:00,EpmID:108695| SCN - Reticle Failed RBI | ND | ,108695.0,8.633333,FC-002,53046271,,53046271,0,no AIR,no AIR,0,202505,N,Y,CR51,53046271,RBI,EpmID:108695| SCN - Reticle Failed RBI | ND | ,Short down,-32,0.0,2025-02-01_19:55:00_CR51,N,0
|
||||
58,GY86,Intel,BP-3900,2025,5,202505,2025-02-01,20:41:00,EpmID:108719| SCN - Lot Abort BFSR Issue | BP-3900 | NotSet,108719.0,0.266667,FC-002,53046103,P856575,P856575,7,0,Loss of BFSR communication triggered a false water leak alarm which tripped SH042/059/087,25.17,202505,Y,Y,GY86,P856575,BP-3900,EpmID:108719| SCN - Lot Abort BFSR Issue | BP-3900 | NotSet,Short down,-32,0.0,2025-02-01_20:41:00_GY86,Y,0
|
||||
59,CR51,Intel,LAB-002B,2025,5,202505,2025-02-02,21:00:00,EpmID:108699| SRC - Lot abort for PA1 Error | LAB-002B |,108699.0,5.461111,FC-712,53046894,,53046894,0,no AIR,slow purge valve replaced,0,202505,Y,Y,CR51,53046894,LAB-002B,EpmID:108699| SRC - Lot abort for PA1 Error | LAB-002B |,Short down,-32,0.0,2025-02-02_21:00:00_CR51,Y,0
|
||||
60,GY86,Intel,OE-2401,2025,6,202506,2025-02-03,19:40:00,EpmID:108937| SCN - Lot Abort PX-B6FC | OE-2401 |,108937.0,3.1,FC-028,53047844,P859023,P859023,7,0,reassigned from P820514: 19-2-2025,RCA,202506,Y,Y,GY86,P859023,OE-2401,EpmID:108937| SCN - Lot Abort PX-B6FC | OE-2401 |,Short down,-31,0.0,2025-02-03_19:40:00_GY86,Y,0
|
||||
61,CR51,Intel,WE-0C04,2025,6,202506,2025-02-05,14:12:00,EpmID:109360| SCN - lot abort | WE-0C04 | BGDS,109360.0,69.883333,FC-001,53049826,P656698,P656698,7,0,BGDS manifolds fail during use due to broken solenoids on quick release valve,BGDS manifold fails during use due to broken solonoid,202506,Y,Y,CR51,P656698,WE-0C04,EpmID:109360| SCN - lot abort | WE-0C04 | BGDS,XLD,-31,0.0,2025-02-05_14:12:00_CR51,Y,0
|
||||
62,GY86,Intel,ZH-221D,2025,6,202506,2025-02-08,01:42:00,EpmID:109458| SCN - LOT aborted | ZH-221D | NotSet,109458.0,0.983333,FC-025,53016336,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202506,Y,Y,GY86,P853275,ZH-221D,EpmID:109458| SCN - LOT aborted | ZH-221D | NotSet,Short down,-31,0.0,2025-02-08_01:42:00_GY86,Y,0
|
||||
63,GY86,Intel,ZH-221D,2025,7,202507,2025-02-12,23:39:00,EpmID:110234| SCN - lot abort zh-221D | ZH-221D |,110234.0,3.083333,FC-025,53016336,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202507,Y,Y,GY86,P853275,ZH-221D,EpmID:110234| SCN - lot abort zh-221D | ZH-221D |,Short down,-30,0.0,2025-02-12_23:39:00_GY86,Y,0
|
||||
64,CR51,Intel,RU-1F2E,2025,7,202507,2025-02-13,16:00:00,EpmID:110305| SCN - LDLK1 Failed to open ATM | RU-1F2E |,110305.0,0.316667,FC-002,53057455,P838000,P838000,7,0,moved retilce to 2nd loadport and adjusted X-over setpoint,sp23,202507,N,Y,CR51,P838000,RU-1F2E,EpmID:110305| SCN - LDLK1 Failed to open ATM | RU-1F2E |,Short down,-30,0.0,2025-02-13_16:00:00_CR51,N,0
|
||||
65,GY86,Intel,DW-56C6,2025,7,202507,2025-02-14,01:47:00,EpmID:110310| SCN - lot ops failed dw-56c6 (Lot Abort)| DW-56C6 |,110310.0,2.383333,DC,53058093,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202507,Y,Y,GY86,P820381,DW-56C6,EpmID:110310| SCN - lot ops failed dw-56c6 (Lot Abort)| DW-56C6 |,Short down,-30,0.0,2025-02-14_01:47:00_GY86,Y,0
|
||||
66,GY86,Intel,ZH-221D,2025,8,202508,2025-02-18,13:48:00,EpmID:110600| SCN - Lot Abort ZH-221D | ZH-221D |,110600.0,3.333333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202508,Y,Y,GY86,P853275,ZH-221D,EpmID:110600| SCN - Lot Abort ZH-221D | ZH-221D |,Short down,-29,0.0,2025-02-18_13:48:00_GY86,Y,0
|
||||
67,GY86,Intel,RM-3246,2025,8,202508,2025-02-21,10:55:00,EpmID:111036| SCN - Lot abort for VS / RCW error | RM-3246 |,111036.0,26.966667,,53064643,P861609,P861609,7,0,Change default RCWC-XL BLD trip level to mitigate VolDiff value fluctuations,RCA,202508,Y,Y,GY86,P861609,RM-3246,EpmID:111036| SCN - Lot abort for VS / RCW error | RM-3246 |,XLD,-29,0.0,2025-02-21_10:55:00_GY86,Y,0
|
||||
68,GY86,Intel,ZF-4392,2025,8,202508,2025-02-21,04:01:00,EpmID:110955| SCN - Lot abort ZF-4392 | ZF-4392 |,110955.0,2.55,FC-008,53064450,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202508,Y,Y,GY86,P853275,ZF-4392,EpmID:110955| SCN - Lot abort ZF-4392 | ZF-4392 |,Short down,-29,0.0,2025-02-21_04:01:00_GY86,Y,0
|
||||
69,GY86,Intel,RH-C177,2025,8,202508,2025-02-23,15:00:00,EpmID:111037| SCN - Reticle handler task faliure RH-9DDE | RH-9DDE |,111037.0,,,53065474,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202508,N,Y,GY86,P823264,RH-C177,EpmID:111037| SCN - Reticle handler task faliure RH-9DDE | RH-9DDE |,Short down,-29,0.0,2025-02-23_15:00:00_GY86,N,0
|
||||
70,CR51,Intel,RU-1B22,2025,9,202509,2025-02-24,16:35:00,EpmID:111214| SCN - lot abort on RU-1B22 | RU-1b22 |,111214.0,4.15,TIS,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202509,Y,Y,CR51,P860660,RU-1B22,EpmID:111214| SCN - lot abort on RU-1B22 | RU-1b22 |,Short down,-28,0.0,2025-02-24_16:35:00_CR51,Y,0
|
||||
71,GY86,Intel,DW-56C6,2025,9,202509,2025-03-02,06:46:00,EpmID:111679| SCN - Lot Abort | DW-56C6 |,111679.0,3.866667,DC,53071899,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202509,Y,Y,GY86,P820381,DW-56C6,EpmID:111679| SCN - Lot Abort | DW-56C6 |,Short down,-28,0.0,2025-03-02_06:46:00_GY86,Y,0
|
||||
72,CR51,Intel,RU-1B22,2025,10,202510,2025-03-08,15:40:00,EpmID:112401| SCN - lot abort RU-1B22 | RU-1B22 |,112401.0,2.733333,Reticle ,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202510,Y,Y,CR51,P860660,RU-1B22,EpmID:112401| SCN - lot abort RU-1B22 | RU-1B22 |,Short down,-27,0.0,2025-03-08_15:40:00_CR51,Y,0
|
||||
73,CR51,Intel,IS-1367,2025,10,202510,2025-03-09,20:34:00,EpmID:112410| SCN - Lot abort TIS scan failed | IS-1367 |,112410.0,6.2625,TIS,53078920,P844973,P844973,7,0, [PBS18823] WS ZJM Delivery,WS ZJM delivery PBS 18823/SP23,202510,Y,Y,CR51,P844973,IS-1367,EpmID:112410| SCN - Lot abort TIS scan failed | IS-1367 |,Short down,-27,0.0,2025-03-09_20:34:00_CR51,Y,0
|
||||
74,CR51,Intel,RQ-F000,2025,10,202510,2025-03-09,03:53:00,EpmID:112393| SCN - RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 Error of state-machine RQRRNE.APP.RS'),112393.0,1.733333,RS,53078276,P866623,P866623,7,0,RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 E,RCA,202510,Y,Y,CR51,P866623,RQ-F000,EpmID:112393| SCN - RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 Error of state-machine RQRRNE.APP.RS'),Short down,-27,0.0,2025-03-09_03:53:00_CR51,Y,0
|
||||
75,GY86,Intel,CN-00AF,2025,11,202511,2025-03-10,04:08:00,EpmID:112437| SCN - WHFF Failed | CN-00AF |,112437.0,0.2,,53079553,P815894,P815894,7,0,[Proto2][SCN] Full drivers init keeps failing on WHAS DisEntangExt due to PG-7406 SUB CODE: [[X1:0xFB7CE5A9,PCS WZ-0D04,202511,N,Y,GY86,P815894,CN-00AF,EpmID:112437| SCN - WHFF Failed | CN-00AF |,Short down,-26,0.0,2025-03-10_04:08:00_GY86,N,0
|
||||
76,GY86,Intel,ZH-221D,2025,11,202511,2025-03-11,10:49:00,EpmID:112689| SCN - lot abort ZH-221D | ZH-221D |,112689.0,5.516667,ILIAS,53080794,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:112689| SCN - lot abort ZH-221D | ZH-221D |,Short down,-26,0.0,2025-03-11_10:49:00_GY86,Y,0
|
||||
77,GY86,Intel,ZH-221D,2025,11,202511,2025-03-11,22:01:00,EpmID:112938| SCN - ZH-221D Lot Abort | ZH-221D |,112938.0,1.316667,ILIAS,53080794,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:112938| SCN - ZH-221D Lot Abort | ZH-221D |,Short down,-26,0.0,2025-03-11_22:01:00_GY86,Y,0
|
||||
78,GY86,Intel,CN-0001,2025,11,202511,2025-03-13,23:36:00,EpmID:113196| SCN - lot abort CN-0001 - ULSM_syncApp | CN-0001 |,113196.0,8.033333,ILLUM,53083396,P867917,P867917,7,0,Lot abort due to ULTHIF_DNTR driver memory leak (RCA needed),RCA,202511,Y,Y,GY86,P867917,CN-0001,EpmID:113196| SCN - lot abort CN-0001 - ULSM_syncApp | CN-0001 |,Short down,-26,0.0,2025-03-13_23:36:00_GY86,Y,0
|
||||
79,CR51,Intel,WH-252E,2025,11,202511,2025-03-14,03:19:00,EpmID:113189| SCN - CU_DO_LOT_Aborted (Lot Abort) | WH-252E |,113189.0,2.883333,FC-001,53083711,P841602,P841602,7,WH,mET18_SO52992004_Lot abort by WH-252E,[intake 2450],202511,Y,Y,CR51,P841602,WH-252E,EpmID:113189| SCN - CU_DO_LOT_Aborted (Lot Abort) | WH-252E |,Short down,-26,1.0,2025-03-14_03:19:00_CR51,Y,0
|
||||
80,CR51,Intel,RH-C177,2025,11,202511,2025-03-16,11:03:00,EpmID:113226| SCN - Reticle 2D Barcode not read | RH-C177 |,113226.0,0.333333,,53084849,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202511,N,Y,CR51,P823264,RH-C177,EpmID:113226| SCN - Reticle 2D Barcode not read | RH-C177 |,Short down,-26,0.0,2025-03-16_11:03:00_CR51,N,0
|
||||
81,GY86,Intel,TN-0054,2025,11,202511,2025-03-16,14:49:00,EpmID:113259| SCN - WPPD for PWEDNE crash | TN-0054 |,113259.0,1.95,,53084962,P835372,P835372,7,0,PWEDNE task dying during PWEDNE CPD run ,Likely incident not CPD related,202511,N,Y,GY86,P835372,TN-0054,EpmID:113259| SCN - WPPD for PWEDNE crash | TN-0054 |,Short down,-26,0.0,2025-03-16_14:49:00_GY86,N,0
|
||||
82,GY86,Intel,ZH-221D,2025,11,202511,2025-03-16,17:25:00,EpmID:113245| SCN - Lot Abort ZH-221D | ZH-221D |,113245.0,1.183333,ILIAS,53041611,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:113245| SCN - Lot Abort ZH-221D | ZH-221D |,Short down,-26,0.0,2025-03-16_17:25:00_GY86,Y,0
|
||||
83,CR51,Intel,RU-1B22,2025,12,202512,2025-03-18,19:32:54,EpmID:113813| SCN - Lot Abort+POB/WPPD Recovery | RU-1B22 |,113813.0,2.95,,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202512,Y,Y,CR51,P860660,RU-1B22,EpmID:113813| SCN - Lot Abort+POB/WPPD Recovery | RU-1B22 |,Short down,-25,0.0,2025-03-18_19:32:54_CR51,Y,0
|
||||
84,CR51,Intel,RU-1B22,2025,12,202512,2025-03-19,01:38:00,EpmID:113811| SCN - Re-Run NERSTD | RU-1B22 |,113811.0,0.38,,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202512,N,Y,CR51,P860660,RU-1B22,EpmID:113811| SCN - Re-Run NERSTD | RU-1B22 |,Short down,-25,0.0,2025-03-19_01:38:00_CR51,N,0
|
||||
85,CR51,Intel,WX-2508,2025,12,202512,2025-03-20,`,EpmID:114082| SCN - Lot abort WX-2508 | WX-2508 |,114082.0,4.349722,FC-001,53089256,P834708,P834708,7,WH,Tracking - Lot Aborted by WE-0406 WH SUR HIPA error,"[intake 2446]
|
||||
wk50.2: Continue to monitor to ensure solution works
|
||||
wk49.2: Being investigated and info coming in from LT.",202512,Y,Y,CR51,P834708,WX-2508,EpmID:114082| SCN - Lot abort WX-2508 | WX-2508 |,Short down,-25,1.0,2025-03-20_`_CR51,Y,0
|
||||
86,GY86,Intel,PG-7406,2025,12,202512,2025-03-21,17:14:00,EpmID:114164| SCN- Lot ops start failed RM MMDC | PG-7406 |,114164.0,3.65,FC-025,53090447,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202512,N,Y,GY86,P870861,PG-7406,EpmID:114164| SCN- Lot ops start failed RM MMDC | PG-7406 |,Short down,-25,0.0,2025-03-21_17:14:00_GY86,N,0
|
||||
87,GY86,Intel,RM-3246,2025,12,202512,2025-03-23,07:52:00,EpmID:114178| SCN - Lot Abort for RM MMDC error | RM-3246 |,114178.0,2.0,,53090447,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202512,Y,Y,GY86,P870861,RM-3246,EpmID:114178| SCN - Lot Abort for RM MMDC error | RM-3246 |,Short down,-25,0.0,2025-03-23_07:52:00_GY86,Y,0
|
||||
88,GY86,Intel,WXP-021 ,2025,13,202513,2025-03-25,03:51:00,EpmID:114415| SCN - Lot Abort | WXP-021 | P871351,114415.0,6.016667,SRC,53092592,P871028,P871028,7,0,GY86: Lot abort caused by PCW Temp Sensor! (41R2 +41R1),RCA,202513,Y,Y,GY86,P871028,WXP-021 ,EpmID:114415| SCN - Lot Abort | WXP-021 | P871351,Short down,-24,0.0,2025-03-25_03:51:00_GY86,Y,0
|
||||
89,CR51,Intel,PX-B6FC,2025,13,202513,2025-03-26,07:54:00,EpmID:115016| SCN - Wafer movement stopped due to PX error and wafer rejects | PX-B6FC |,115016.0,1.833333,POB,53095001,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202513,Y,Y,CR51,P820514,PX-B6FC,EpmID:115016| SCN - Wafer movement stopped due to PX error and wafer rejects | PX-B6FC |,Short down,-24,0.0,2025-03-26_07:54:00_CR51,Y,0
|
||||
90,CR51,Intel,RU-2B1D,2025,13,202513,2025-03-28,11:18:00,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,115133.0,3.816667,RS,53097371,P873253,P873253,7,0,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,Waiting on intake,202513,Y,Y,CR51,P873253,RU-2B1D,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,Short down,-24,0.0,2025-03-28_11:18:00_CR51,Y,0
|
||||
91,CR51,Intel,WP-2C1D,2025,14,202514,2025-03-31,21:59:00,EpmID:115267| SCN - Lot abort for WS MMDC+Daily MX Actions+BMMO/ABF | WP-2C1D |,115267.0,17.183333,FC-003,53100110,P872290,P872290,7,0,[EXE] [CR51] WP-2C1D HIPA internal 12V low error,Needs intake,202514,Y,Y,CR51,P872290,WP-2C1D,EpmID:115267| SCN - Lot abort for WS MMDC+Daily MX Actions+BMMO/ABF | WP-2C1D |,XLD,-23,0.0,2025-03-31_21:59:00_CR51,Y,0
|
||||
92,GY86,Intel,KU-5113,2025,14,202514,2025-03-31,16:23:00,EpmID:115277| SCN - Lot abort for KU-5113 error | KU-5113 |,115277.0,0.8,FC-064,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:115277| SCN - Lot abort for KU-5113 error | KU-5113 |,Short down,-23,0.0,2025-03-31_16:23:00_GY86,Y,0
|
||||
93,GY86,Intel,KU-5113,2025,14,202514,2025-03-31,09:43:00,EpmID:115283| SCN - Lot abort for KU-5113 error | KU-5113 |,115283.0,4.133333,FC-064,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:115283| SCN - Lot abort for KU-5113 error | KU-5113 |,Short down,-23,0.0,2025-03-31_09:43:00_GY86,Y,0
|
||||
94,CR51,Intel,RU-1B22,2025,14,202514,2025-04-01,18:30:00,EpmID:115718| SCN - Lot abort for RH error | RU-1B22 |,115718.0,20.016667,,53100110,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:115718| SCN - Lot abort for RH error | RU-1B22 |,XLD,-23,0.0,2025-04-01_18:30:00_CR51,Y,0
|
||||
95,CR51,Intel,KN-0605,2025,14,202514,2025-04-04,22:03:00,EpmID:116029| SCN - Lot abort KN-0605 | KN-0605 |,116029.0,2.883333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202514,Y,Y,CR51,P860104,KN-0605,EpmID:116029| SCN - Lot abort KN-0605 | KN-0605 |,Short down,-23,0.0,2025-04-04_22:03:00_CR51,Y,0
|
||||
96,GY86,Intel,KU-5113,2025,14,202514,2025-04-04,09:37:00,EpmID:116068| SCN - lot aborted for KU-5113 error | KU-5113 |,116068.0,0.583333,FC-064,53104021,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:116068| SCN - lot aborted for KU-5113 error | KU-5113 |,Short down,-23,0.0,2025-04-04_09:37:00_GY86,Y,0
|
||||
97,CR51,Intel,RU-1B22,2025,14,202514,2025-04-05,21:37:00,EpmID:116052| SCN - Lot Abort RU-1B22 | RU-1B22 |,116052.0,5.733333,,53104401,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:116052| SCN - Lot Abort RU-1B22 | RU-1B22 |,Short down,-23,0.0,2025-04-05_21:37:00_CR51,Y,0
|
||||
98,CR51,Intel,RU-1B22,2025,14,202514,2025-04-05,08:32:00,EpmID:116054| SCN - Lot Abort RU-1B22 | RU-1B22 |,116054.0,3.65,,53104401,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:116054| SCN - Lot Abort RU-1B22 | RU-1B22 |,Short down,-23,0.0,2025-04-05_08:32:00_CR51,Y,0
|
||||
99,GY86,Intel,CN-0001,2025,14,202514,2025-04-05,11:59:00,EpmID:116059| SCN - Wafer Load from VPU NOK+Lot abort VPA timeout+HYCO PM Block | CN-0001 |,116059.0,53.977222,#ND#,53104424,P656698,P656698,7,0,BGDS manifolds fail during use due to broken solenoids on quick release valve,BGDS manifold fails during use due to broken solonoid,202514,Y,Y,GY86,P656698,CN-0001,EpmID:116059| SCN - Wafer Load from VPU NOK+Lot abort VPA timeout+HYCO PM Block | CN-0001 |,XLD,-23,0.0,2025-04-05_11:59:00_GY86,Y,0
|
||||
100,CR51,Intel,IS-1367,2025,14,202514,2025-04-06,18:18:00,EpmID:116045| SCN - Lot Abort IS-1367 | IS-1367 |,116045.0,2.683333,,53078920,P844973,P844973,7,0, [PBS18823] WS ZJM Delivery,WS ZJM delivery PBS 18823/SP23,202514,Y,Y,CR51,P844973,IS-1367,EpmID:116045| SCN - Lot Abort IS-1367 | IS-1367 |,Short down,-23,0.0,2025-04-06_18:18:00_CR51,Y,0
|
||||
101,CR51,Intel,KN-0605,2025,14,202514,2025-04-06,07:34:00,EpmID:116041| SCN - Lot abort KN-0605 | KN-0605 |,116041.0,2.733333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202514,Y,Y,CR51,P860104,KN-0605,EpmID:116041| SCN - Lot abort KN-0605 | KN-0605 |,Short down,-23,0.0,2025-04-06_07:34:00_CR51,Y,0
|
||||
102,CR51,Intel,KN-0605,2025,15,202515,2025-04-07,14:44:00,EpmID:116175| SCN - Lot Abort for KN-0605 | kn-0605 |,116175.0,2.433333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202515,Y,Y,CR51,P860104,KN-0605,EpmID:116175| SCN - Lot Abort for KN-0605 | kn-0605 |,Short down,-22,0.0,2025-04-07_14:44:00_CR51,Y,0
|
||||
103,GY86,Intel,RH-C1D0,2025,15,202515,2025-04-11,01:29:00,EpmID:116880| SCN - CU_OT_RET_LOAD_ERR | ND |,116880.0,3.25,FC-002,53110291,P869352,P869352,7,0,[EX04] 2DBCR Failed to Read Barcode with active focus error,Working on diagnostic patch to continue RCA,202515,N,Y,GY86,P869352,RH-C1D0,EpmID:116880| SCN - CU_OT_RET_LOAD_ERR | ND |,Short down,-22,0.0,2025-04-11_01:29:00_GY86,N,0
|
||||
104,GY86,Intel,RR-1110,2025,15,202515,2025-04-12,09:56:00,EpmID:116986| SCN - LOT abort RR-1110 | RR-1110 |,116986.0,5.883333,FC-009,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202515,Y,Y,GY86,P872439,RR-1110,EpmID:116986| SCN - LOT abort RR-1110 | RR-1110 |,Short down,-22,0.0,2025-04-12_09:56:00_GY86,Y,0
|
||||
105,CR51,Intel,RH-C177,2025,16,202516,2025-04-14,20:18:00,EpmID:117138| SCN - Move customer reticle | RH-C177 | RH 2DBC,117138.0,0.616667,FC-002,53018437,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202516,N,Y,CR51,P823264,RH-C177,EpmID:117138| SCN - Move customer reticle | RH-C177 | RH 2DBC,Short down,-21,0.0,2025-04-14_20:18:00_CR51,N,0
|
||||
106,GY86,Intel,LZ-2004,2025,16,202516,2025-04-15,14:38:00,EpmID:117331| SCN - Lot Abort LZ-2004 | LZ-2004 |,117331.0,7.083333,FC-007,53114003,P877184,P877184,7,0,mGY86 LZ-2004 Lot abort,Containment available additional tracing needed,202516,Y,Y,GY86,P877184,LZ-2004,EpmID:117331| SCN - Lot Abort LZ-2004 | LZ-2004 |,Short down,-21,0.0,2025-04-15_14:38:00_GY86,Y,0
|
||||
107,CR51,Intel,RU-1B22,2025,16,202516,2025-04-15,06:45:00,EpmID:117141| SCN - REMA BLADE FAILED RM-3183 | RU-1B22 |,117141.0,3.25,,53113754,P862294,P862294,7,0,EMFCMI fails on RM-3183 in EXE Proto2 (mEX04),Containment available RC,202516,N,Y,CR51,P862294,RU-1B22,EpmID:117141| SCN - REMA BLADE FAILED RM-3183 | RU-1B22 |,Short down,-21,0.0,2025-04-15_06:45:00_CR51,N,0
|
||||
108,CR51,Intel,RU-1B22,2025,17,202517,2025-04-21,00:50:00,EpmID:117807| SCN - RU-1B22 Failed | RU-1B22 | ARR NOK,117807.0,1.95,,53118871,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202517,N,Y,CR51,P860660,RU-1B22,EpmID:117807| SCN - RU-1B22 Failed | RU-1B22 | ARR NOK,Short down,-20,0.0,2025-04-21_00:50:00_CR51,N,0
|
||||
109,GY86,Intel,DD-0000,2025,17,202517,2025-04-22,18:29:00,EpmID:118241| SCN - Lot Abort out of memory DD-0000 | DD-0000 |,118241.0,1.2,FC-027,53120389,P856296,P856296,7,0,memory leak on task DWDT (SP40),Available in QBL from wk2510,202517,Y,Y,GY86,P856296,DD-0000,EpmID:118241| SCN - Lot Abort out of memory DD-0000 | DD-0000 |,Short down,-20,0.0,2025-04-22_18:29:00_GY86,Y,0
|
||||
110,CR51,Intel,WX-2B11,2025,17,202517,2025-04-23,21:43:00,EpmID:118621| SCN - Lot abort | WX-2B11 |,118621.0,16.666667,FC-001,53121688,,53121688,0,0,WP-2C1D MMDCWSPC1 MPAC PCW in temperature too high,PCW MPAC incoming too high Temp,202517,Y,Y,CR51,53121688,WX-2B11,EpmID:118621| SCN - Lot abort | WX-2B11 |,XLD,-20,0.0,2025-04-23_21:43:00_CR51,Y,0
|
||||
111,CR51,Intel,RH-C177,2025,17,202517,2025-04-26,08:31:00,EpmID:118729| SCN - 2DBC unknown reticle ID | RH-C177 |,118729.0,0.416667,FC-002,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202517,N,Y,CR51,P823264,RH-C177,EpmID:118729| SCN - 2DBC unknown reticle ID | RH-C177 |,Short down,-20,0.0,2025-04-26_08:31:00_CR51,N,0
|
||||
112,CR51,Intel,RH-C177,2025,18,202518,2025-04-28,17:00:00,EpmID:118922| SCN - 2DBC unknown reticle ID | RH-C177 |,118922.0,0.2,FC-002,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202518,N,Y,CR51,P823264,RH-C177,EpmID:118922| SCN - 2DBC unknown reticle ID | RH-C177 |,Short down,-19,0.0,2025-04-28_17:00:00_CR51,N,0
|
||||
113,CR51,Intel,PL-7005,2025,18,202518,2025-05-01,10:55:00,EpmID:119428| SCN - lot aborted by SRC error+HSD Lot Abort+Daily MX | PL-7005 |,119428.0,15.75,FC-024,53128749,P885598,P885598,7,0,[FDQ PDU] FDQ 4 channel module failure/error leads to long down time,AP-13624 f DQ module swap if issue persists (after 2 hit within 8hrs),202518,Y,Y,CR51,P885598,PL-7005,EpmID:119428| SCN - lot aborted by SRC error+HSD Lot Abort+Daily MX | PL-7005 |,XLD,-19,0.0,2025-05-01_10:55:00_CR51,Y,0
|
||||
114,GY86,Intel,RH-C1E0,2025,18,202518,2025-05-01,07:59:00,EpmID:119408| SCN - FOXY Not able to scan in 2DBC | RH-C1E0 |,119408.0,0.25,,no-SO,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202518,N,Y,GY86,P823264,RH-C1E0,EpmID:119408| SCN - FOXY Not able to scan in 2DBC | RH-C1E0 |,Short down,-19,0.0,2025-05-01_07:59:00_GY86,N,0
|
||||
115,CR51,Intel,CN-0067,2025,19,202519,2025-05-10,05:33:00,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,120204.0,5.0,SW,53136082,P884438,P884438,7,not found,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,,202519,N,Y,CR51,P884438,CN-0067,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,Short down,-18,0.0,2025-05-10_05:33:00_CR51,N,0
|
||||
116,CR51,Intel,LSH-00AC,2025,19,202519,2025-05-11,16:25:00,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,120211.0,15.77,FC-712,53136685,P885744,P885744,7,0,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,"Monitoring XER logs, request local team provide master panel screenshot and try",202519,Y,Y,CR51,P885744,LSH-00AC,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,XLD,-18,0.0,2025-05-11_16:25:00_CR51,Y,0
|
||||
117,GY86,Intel,CN-0001,2025,20,202520,2025-05-13,11:16:00,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 | ,120748.0,2.97,ILLUM,53138964,P867917,P867917,7,0,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 |,According to the SO a weekly host reset is needed,202520,Y,Y,GY86,P867917,CN-0001,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 | ,Short down,-17,0.0,2025-05-13_11:16:00_GY86,Y,0
|
||||
118,GY86,Intel,CG-A309,2025,20,202520,2025-05-13,21:12:00,EpmID:120751| SCN - Lot Abort CG-A309 | CG-A309 | ,120751.0,4.23,FC-025,53139381,P885590,P885590,7,0,"Large ER_Event_log pollution due to PG-5271, PG-5270, PG-",SP 23 fix,202520,Y,Y,GY86,P885590,CG-A309,EpmID:120751| SCN - Lot Abort CG-A309 | CG-A309 | ,Short down,-17,0.0,2025-05-13_21:12:00_GY86,Y,0
|
||||
119,GY86,Intel,PG-4B47,2025,20,202520,2025-05-14,09:04:00,EpmID:120786| SCN - Lot abort Unicom Error for PG-4B47 | PG-4B47 | ,120786.0,2.92,FC-025,53140043,P885590,P885590,7,0,"Large ER_Event_log pollution due to PG-5271, PG-5270, PG-",SP 23 fix,202520,Y,Y,GY86,P885590,PG-4B47,EpmID:120786| SCN - Lot abort Unicom Error for PG-4B47 | PG-4B47 | ,Short down,-17,0.0,2025-05-14_09:04:00_GY86,Y,0
|
||||
120,CR51,Intel,RU-1B22,2025,20,202520,2025-05-18,04:50:00,EpmID:120857| SCN - error unloading reticle from stage RU-1B22 | RU-1B22 | ,120857.0,1.35,,53142773,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202520,N,Y,CR51,P860660,RU-1B22,EpmID:120857| SCN - error unloading reticle from stage RU-1B22 | RU-1B22 | ,Short down,-17,0.0,2025-05-18_04:50:00_CR51,N,0
|
||||
121,GY86,Intel,LAB-002D,2025,21,202521,2025-05-19,13:12:00,EpmID:121092| SCN - lot abort on LAB-002D | LAB-002D | ,121092.0,3.3,FC-712,53144187,P829173,P829173,7,0,"MC53 DC-Link error limit NOK, causing downtime and MC53 swaps for US voltag",US adapt FW release 23,202521,Y,Y,GY86,P829173,LAB-002D,EpmID:121092| SCN - lot abort on LAB-002D | LAB-002D | ,Short down,-16,0.0,2025-05-19_13:12:00_GY86,Y,0
|
||||
122,CR51,Intel,#ND#,2025,21,202521,2025-05-19,14:23:00,EpmID:121089| SRC - Soft ramp interlock trip (Lot Abort) | ND | ,121089.0,1.82,Drive Laser,53144175,P829173,P829173,7,0,"MC53 DC-Link error limit NOK, causing downtime and MC53 swaps for US voltag",US adapt FW release 23,202521,Y,Y,CR51,P829173,#ND#,EpmID:121089| SRC - Soft ramp interlock trip (Lot Abort) | ND | ,Short down,-16,0.0,2025-05-19_14:23:00_CR51,Y,0
|
||||
123,GY86,Intel,ZF-4392,2025,21,202521,2025-05-21,03:39:00,EpmID:121324| SCN - Lot Abort ZF-4392 | ZF-4392 | ,121324.0,4.87,FC-008,53146443,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202521,Y,Y,GY86,P853275,ZF-4392,EpmID:121324| SCN - Lot Abort ZF-4392 | ZF-4392 | ,Short down,-16,0.0,2025-05-21_03:39:00_GY86,Y,1
|
||||
124,CR51,Intel,UL-90EA,2025,21,202521,2025-05-23,19:37:00,EpmID:121774| SCN - LOT ABORT UL-9101 | UL-90EA | ,121774.0,3.92,F&T and layout,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202521,Y,Y,CR51,P863919,UL-90EA,EpmID:121774| SCN - LOT ABORT UL-9101 | UL-90EA | ,Short down,-16,0.0,2025-05-23_19:37:00_CR51,Y,0
|
||||
125,CR51,Intel,UL-90EA,2025,21,202521,2025-05-24,19:49:00,EpmID:121771| SCN - Lot Abort for UL-90EA | UL-90EA | ,121771.0,3.43,,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202521,Y,Y,CR51,P863919,UL-90EA,EpmID:121771| SCN - Lot Abort for UL-90EA | UL-90EA | ,Short down,-16,0.0,2025-05-24_19:49:00_CR51,Y,0
|
||||
126,CR51,Intel,UL-90EA,2025,22,202522,2025-05-26,15:45:00,EpmID:121781| SCN - lot abort on UL-90EA | UL-90EA | ,121781.0,4.08,F&T and layout,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202522,Y,Y,CR51,P863919,UL-90EA,EpmID:121781| SCN - lot abort on UL-90EA | UL-90EA | ,Short down,-15,0.0,2025-05-26_15:45:00_CR51,Y,0
|
||||
127,GY86,Intel,PX-B6FC,2025,22,202522,2025-05-27,17:04:00,EpmID:122055| SCN - lot abort recovery PX-B6FC | PX-B6FC | ,122055.0,0.63,,53152113,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202522,Y,Y,GY86,P820514,PX-B6FC,EpmID:122055| SCN - lot abort recovery PX-B6FC | PX-B6FC | ,Short down,-15,0.0,2025-05-27_17:04:00_GY86,Y,0
|
||||
128,GT69,TSMC,LBB-2004,2025,23,202523,2025-06-05,22:50:11,BTS N2 purge interlock tripped / Replace EP10,,26.78,FC-072,53160039,P891530,P891530,7,0,"FFA-FU: LBB-2004 Temperature switch discrepancy detected, but can not find root cause by official T/S Wo",0,202523,Y,Y,GT69,P891530,LBB-2004,BTS N2 purge interlock tripped / Replace EP10,XLD,-14,0.0,2025-06-05_22:50:11_GT69,Y,0
|
||||
129,GT69,TSMC,WE-0406,2025,23,202523,2025-06-08,14:54:57,HIPA SLR/P/C VWH,,3.98,FC-001,53161866,,53161866,0,no AIR,no AIR,0,202523,N,Y,GT69,53161866,WE-0406,HIPA SLR/P/C VWH,Short down,-14,0.0,2025-06-08_14:54:57_GT69,N,0
|
||||
130,CR51,Intel,RH-C1C7,2025,24,202524,2025-06-10,06:49:00,EpmID:123440| SCN - Barcode read failed | RH-C1C7 | ,123440.0,0.63,,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202524,N,Y,CR51,P823264,RH-C1C7,EpmID:123440| SCN - Barcode read failed | RH-C1C7 | ,Short down,-13,0.0,2025-06-10_06:49:00_CR51,N,0
|
||||
131,CR51,Intel,RM-3246,2025,24,202524,2025-06-11,09:32:00,EpmID:123763| SCN - lot failed on RM-3246+REMA health check (Lot Abort) | RM-3246 | NotSet ,123763.0,6.42,,53165239,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202524,Y,Y,CR51,P913030,RM-3246,EpmID:123763| SCN - lot failed on RM-3246+REMA health check (Lot Abort) | RM-3246 | NotSet ,Short down,-13,0.0,2025-06-11_09:32:00_CR51,Y,0
|
||||
132,GT69,TSMC,WX-803D,2025,24,202524,2025-06-12,18:38:16,BSLr-Overlay lot queue can not start,,0.55,,noSO,RCA,RCA,3,not found,BSLr-Overlay lot queue can not start,Callibration issue Post EQ,202524,N,Y,GT69,EQ,WX-803D,BSLr-Overlay lot queue can not start,Short down,-13,0.0,2025-06-12_18:38:16_GT69,N,0
|
||||
133,CR51,Intel,RU-14C5,2025,25,202525,2025-06-16,03:22:00,EpmID:123923| SCN - Lot Abort RU-14C5+NJ-94D3 Laser HW Failure | RU-14C5 |,123923.0,14.366667,SPM,53169138,P889696,P889696,7,0,[EXE][GN93][Pil7] RETEX22 RELIAB queue failed on reticle unload - RU-14C5,Monitoring waiting for next fail to load /reticle mis align(2 hits),202525,Y,Y,CR51,P889696,RU-14C5,EpmID:123923| SCN - Lot Abort RU-14C5+NJ-94D3 Laser HW Failure | RU-14C5 |,XLD,-12,0.0,2025-06-16_03:22:00_CR51,Y,0
|
||||
134,GT69,TSMC,RU-4629,2025,25,202525,2025-06-19,18:23:16,RH LL PG Servo error,,1.198056,FC-002,53163700,P892467,P892467,7,0,[GT69] Intermittent RH MMDC LDLK EIP PRS PLB Sensor,Active Sensor health needed (current containment reinit),202525,N,Y,GT69,P892467,RU-4629,RH LL PG Servo error,Short down,-12,0.0,2025-06-19_18:23:16_GT69,N,0
|
||||
135,CR51,Intel,MOI-0045,2025,25,202525,2025-06-20,09:08:00,EpmID:124617| SRC - Lot Abort for SRC Laser Control | MOI-0045 |,124617.0,4.1,#ND#,53173690,P897069,P897069,7,0,CR51 lot abort MOI-0045: SRC - Lot Abort for SRC Laser Control ,RCA monitoring,202525,Y,Y,CR51,P897069,MOI-0045,EpmID:124617| SRC - Lot Abort for SRC Laser Control | MOI-0045 |,Short down,-12,0.0,2025-06-20_09:08:00_CR51,Y,0
|
||||
136,GT69,TSMC,IS-1363,2025,25,202525,2025-06-20,06:53:08,Failed TIS scan fit sanity acceptance check / Run WPPD & NJCAWS re-init,,3.15,#ND#,53172635,P817298,P817298,7,0,EQHBMI (Coarse POB Calibration) Fails due to [CN-00C0] Closed connection due to read timeo,sp 22,202525,Y,Y,GT69,P817298,IS-1363,Failed TIS scan fit sanity acceptance check / Run WPPD & NJCAWS re-init,Short down,-12,0.0,2025-06-20_06:53:08_GT69,Y,1
|
||||
137,GY86,Intel,SF-4514,2025,25,202525,2025-06-21,09:07:00,EpmID:124640| SCN - Lot Abort for SF Error | SF-4514 |,124640.0,9.116667,FC-005,53174183,P855852,P855852,7,0,[SF-4514] ALSC NOK caused AS-055A lot aborts,0,202525,Y,Y,GY86,P855852,SF-4514,EpmID:124640| SCN - Lot Abort for SF Error | SF-4514 |,Short down,-12,0.0,2025-06-21_09:07:00_GY86,Y,0
|
||||
138,GY86,Intel,CN-00C0,2025,26,202526,2025-06-23,15:12:00,EpmID:124896| SCN - lot abort on CN-00C0 | CN-00C0 |,124896.0,3.7,#ND#,53175883,,53175883,0,no AIR,CU_OT_Lot Abort for NJCAWS timeout,0,202526,Y,Y,GY86,53175883,CN-00C0,EpmID:124896| SCN - lot abort on CN-00C0 | CN-00C0 |,Short down,-11,0.0,2025-06-23_15:12:00_GY86,Y,0
|
||||
139,GT69,TSMC,CN-0001,2025,26,202526,2025-06-24,08:19:10,WH timeout,,1.2,WH,53176225,,53176225,0,no AIR,"SYSTEM ERROR: CN-0001 DEFAULT,[[S2:WH, T1:WH AV",0,202526,Y,Y,GT69,53176225,CN-0001,WH timeout,Short down,-11,0.0,2025-06-24_08:19:10_GT69,Y,0
|
||||
140,GT69,TSMC,PG-6208,2025,26,202526,2025-06-24,18:00:00,MLS&IPT driver error,,0.838056,FC-025,53176903,,53176903,0,no AIR,"After Overlay-MML readout at 18:00 ,MLS&IPT driver get error whenunloading reticle.",0,202526,N,Y,GT69,53176903,PG-6208,MLS&IPT driver error,Short down,-11,0.0,2025-06-24_18:00:00_GT69,N,0
|
||||
141,CR51,Intel,PG-73EA,2025,26,202526,2025-06-26,19:00:00,EpmID:125345| SCN - Lot abort IVR MMDC | PG-73EA |,125345.0,0.55,FC-025,53179636,P691987,P691987,7,0,"P691987 - (PTR1, XETR) IVR failed to init during reliability init/term cycling - Brake box internal",RCA monitoring,202526,Y,Y,CR51,P691987,PG-73EA,EpmID:125345| SCN - Lot abort IVR MMDC | PG-73EA |,Short down,-11,0.0,2025-06-26_19:00:00_CR51,Y,0
|
||||
142,GT69,TSMC,SM-6003,2025,26,202526,2025-06-27,00:50:24,JNMW save failure / System restart,,21.727222,FC-027,53179413,,53179413,0,no AIR,"NJCAWS task died so JNMW CPD save MCs failed,Try hp host reset-->invalid",0,202526,N,Y,GT69,53179413,SM-6003,JNMW save failure / System restart,XLD,-11,0.0,2025-06-27_00:50:24_GT69,N,0
|
||||
143,CR51,Intel,LSA-0251,2025,27,202527,2025-07-05,20:05:00,EpmID:126094,126094.0,2.58,,53188036,,53188036,0,no AIR,SU_OT_Lot_Abort_LSA-0251,0,202527,Y,Y,CR51,53188036,LSA-0251,EpmID:126094,Short down,-10,0.0,2025-07-05_20:05:00_CR51,Y,0
|
||||
144,CR51,Intel,PX-B6FC,2025,27,202527,2025-07-06,23:09:00,EpmID:126082 | SCN - Lot Pause PX-B6FC,126082.0,0.27,FC-012,53188984,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202527,Y,Y,CR51,P820514,PX-B6FC,EpmID:126082 | SCN - Lot Pause PX-B6FC,Short down,-10,0.0,2025-07-06_23:09:00_CR51,Y,0
|
||||
145,CR51,Intel,KN-0605,2025,29,202529,2025-07-14,19:10:00,EpmID:127039| SCN - Lot Abort for KN-0605 Error | KN-0605 |,127039.0,13.216667,FC-064,53196092,P756444,P756444,7,0,[VHV][Proto2] NJTL fails on tunable laser HW error NJ-94D3,Overheating Laser,202529,Y,Y,CR51,P756444,KN-0605,EpmID:127039| SCN - Lot Abort for KN-0605 Error | KN-0605 |,XLD,-8,0.0,2025-07-14_19:10:00_CR51,Y,0
|
||||
146,GT69,TSMC,#ND#,2025,29,202529,2025-07-16,17:47:00,BSL abnormal / fingerprint Overlay unstable,,6.464722,#ND#,53196805,P833115,P833115,7,0,"EXE 5000 POB Mini-setup (Phase 1: enable automatic triggering, include tilt dependencies)",SP24 solution to include auto cal after init,202529,N,Y,GT69,P833115,#ND#,BSL abnormal / fingerprint Overlay unstable,Short down,-8,0.0,2025-07-16_17:47:00_GT69,N,0
|
||||
147,GT69,TSMC,#ND#,2025,29,202529,2025-07-16,01:00:29,BSL abnormal / fingerprint,,10.991944,#ND#,53196805,P833115,P833115,7,0,"EXE 5000 POB Mini-setup (Phase 1: enable automatic triggering, include tilt dependencies)",SP24 solution to include auto cal after init,202529,N,Y,GT69,P833115,#ND#,BSL abnormal / fingerprint,Short down,-8,0.0,2025-07-16_01:00:29_GT69,N,0
|
||||
148,CR51,Intel,LZ-321B,2025,29,202529,2025-07-16,14:20:00,EpmID:127427| SCN - LZ-321B lot abort | LZ-321B |,127427.0,49.466667,FC-007,53197978,P904073,P904073,7,0,LZ-321B UVLS purge pressure Oos during lot production. would only get wafer reject. Need to escalate to lot abort,RCA monitoring,202529,N,Y,CR51,P904073,LZ-321B,EpmID:127427| SCN - LZ-321B lot abort | LZ-321B |,XLD,-8,0.0,2025-07-16_14:20:00_CR51,N,0
|
||||
149,CR51,Intel,RU-14C5,2025,29,202529,2025-07-20,17:40:00,EpmID:128536| SCN - Lot Abort RU-14C5 | RU-14C5 |,128536.0,2.633333,#ND#,53169138,P907669,P907669,7,0,Reticle sticks to RS during Unload due to charged RS clamp and/or reticle backside,Monitoring RCA,202529,Y,Y,CR51,P907669,RU-14C5,EpmID:128536| SCN - Lot Abort RU-14C5 | RU-14C5 |,Short down,-8,0.0,2025-07-20_17:40:00_CR51,Y,0
|
||||
150,GY86,Intel,RU-1B75,2025,30,202530,2025-07-21,03:50:00,EpmID:128542| SCN - Lot Abort for RU-1B75 | RU-1B75 |,128542.0,2.616667,#ND#,53201826,P904929,P904929,7,0,mGY86 SWD RPAS performance is out of population,0,202530,Y,Y,GY86,P904929,RU-1B75,EpmID:128542| SCN - Lot Abort for RU-1B75 | RU-1B75 |,Short down,-7,0.0,2025-07-21_03:50:00_GY86,Y,0
|
||||
151,GY86,Intel,ZH-221D,2025,30,202530,2025-07-23,21:41:00,EpmID:129332| SCN - Lot error | ZH-221D |,129332.0,1.783333,FC-025,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202530,Y,Y,GY86,P853275,ZH-221D,EpmID:129332| SCN - Lot error | ZH-221D |,Short down,-7,0.0,2025-07-23_21:41:00_GY86,Y,1
|
||||
152,GT69,TSMC,RU-2B23,2025,30,202530,2025-07-23,06:37:41,LDLK2 EIP Presence and Placed Badly Reflective Sensor,,0.853333,#ND#,53163700,P892467,P892467,7,0,[GT69] Intermittent RH MMDC LDLK EIP PRS PLB Sensor,Active Sensor health needed (current containment reinit),202530,Y,Y,GT69,P892467,RU-2B23,LDLK2 EIP Presence and Placed Badly Reflective Sensor,Short down,-7,0.0,2025-07-23_06:37:41_GT69,Y,0
|
||||
153,GT69,TSMC,RU-2B23,2025,30,202530,2025-07-23,08:00:28,LDLK2 EIP Presence and Placed Badly Reflective Sensor/LDLK2 EIP PRS PLB AMP swap,,5.923333,#ND#,53179413,P892057,P892057,7,0,System suffer RH-8550 data store mismatch after unload POD from LDPT2,Active Sensor health needed (current containment reinit),202530,N,Y,GT69,P892057,RU-2B23,LDLK2 EIP Presence and Placed Badly Reflective Sensor/LDLK2 EIP PRS PLB AMP swap,Short down,-7,0.0,2025-07-23_08:00:28_GT69,N,0
|
||||
154,CR51,Intel,RU-14C5,2025,30,202530,2025-07-23,06:06:00,EpmID:129119| SCN - Lot abort due to RU-14C5 | RU-14C5 |,129119.0,2.8,#ND#,53204067,P907669,P907669,7,0,Reticle sticks to RS during Unload due to charged RS clamp and/or reticle backside,Monitoring RCA,202530,Y,Y,CR51,P907669,RU-14C5,EpmID:129119| SCN - Lot abort due to RU-14C5 | RU-14C5 |,Short down,-7,0.0,2025-07-23_06:06:00_CR51,Y,0
|
||||
155,GT69,TSMC,LAW-1001,2025,30,202530,2025-07-24,00:49:56,PA1 pressure too high,,7.713611,FC-712,53204135,,53204135,0,no AIR,no AIR,Slow purge valve stuck (core replaced),202530,N,Y,GT69,53204135,LAW-1001,PA1 pressure too high,Short down,-7,0.0,2025-07-24_00:49:56_GT69,N,0
|
||||
156,GT69,TSMC,RH-8550,2025,30,202530,2025-07-25,13:47:17,2DBCR reading error,,2.939444,FC-002,53205870,P906475,P906475,7,0,System suffer RH-8550 data store mismatch after unload POD from LDPT2,Monitoring alignment,202530,N,Y,GT69,P906475,RH-8550,2DBCR reading error,Short down,-7,0.0,2025-07-25_13:47:17_GT69,N,0
|
||||
157,GT69,TSMC,RU-1BA5,2025,31,202531,2025-07-28,14:17:44,Prealignment not valid for current reticle,,2.828889,#ND#,53208036,P906799,P906799,7,0, [GT69] RPAS Pre-alignment step skipped during lot operation/RetEx fails because reticle pre-align not completed ,Should be fixed during RETEX 22 intro,202531,Y,Y,GT69,P906799,RU-1BA5,Prealignment not valid for current reticle,Short down,-6,0.0,2025-07-28_14:17:44_GT69,Y,0
|
||||
158,GT69,TSMC,UR-04AE,2025,31,202531,2025-07-30,23:56:15,IPT hang up,,2.765556,#ND#,53210596,P907514,P907514,7,0,UR-04AE mGT69 IPT hang up/Database integrity issue: #reticles ,0,202531,N,N,GT69,P907514,UR-04AE,IPT hang up,Short down,-6,0.0,2025-07-30_23:56:15_GT69,N,0
|
||||
159,GT69,TSMC,UR-04AE,2025,31,202531,2025-07-31,03:34:03,IPT hang up,,0.389444,#ND#,53157326,P907514,P907514,7,0,UR-04AE mGT69 IPT hang up/Database integrity issue: #reticles ,0,202531,N,N,GT69,P907514,UR-04AE,IPT hang up,Short down,-6,0.0,2025-07-31_03:34:03_GT69,N,0
|
||||
160,GT69,TSMC,UR-04AE,2025,31,202531,2025-07-31,07:36:44,IPT hang up/host reset,,1.410278,#ND#,53210596,,53210596,0,no AIR,no AIR,0,202531,N,N,GT69,53210596,UR-04AE,IPT hang up/host reset,Short down,-6,0.0,2025-07-31_07:36:44_GT69,N,0
|
||||
161,GT69,TSMC,RU-1BA5,2025,31,202531,2025-08-03,14:36:49,Prealignment not valid for current reticle/one button re init,,1.636389,#ND#,53208036,P906799,P906799,7,0, [GT69] RPAS Pre-alignment step skipped during lot operation/RetEx fails because reticle pre-align not completed ,Should be fixed during RETEX 22 intro,202531,Y,Y,GT69,P906799,RU-1BA5,Prealignment not valid for current reticle/one button re init,Short down,-6,0.0,2025-08-03_14:36:49_GT69,Y,0
|
||||
162,GT69,TSMC,WZ-0D04,2025,31,202531,2025-08-03,12:56:38,ALR moving error/host reset WH,,1.339444,#ND#,53213625,,53213625,0,no AIR,no AIR,0,202531,Y,Y,GT69,53213625,WZ-0D04,ALR moving error/host reset WH,Short down,-6,0.0,2025-08-03_12:56:38_GT69,Y,0
|
||||
163,GY86,Intel,PG-6206,2025,32,202532,2025-08-05,21:58:00,EpmID:130743| SCN - PG-6206 lot abort | PG-6206 |,130743.0,1.166667,,53216548,,53216548,0,no AIR,no AIR,0,202532,Y,Y,GY86,53216548,PG-6206,SLR postion error,Short down,-5,0.0,2025-08-05_21:58:00_GY86,Y,0
|
||||
164,GT69,TSMC,WP-2C1D,2025,32,202532,2025-08-10,17:14:48,DYPL failed/,,6.425278,,53219953,,53219953,0,no AIR,no AIR,0,202532,N,Y,GT69,53219953,WP-2C1D,DYPL failed/,Short down,-5,0.0,2025-08-10_17:14:48_GT69,N,0
|
||||
165,GY86,Intel,ZH-221D,2025,33,202533,2025-08-12,09:19:00,EpmID:131371| SCN - Lot abort ZH-221D | ZH-221D |,131371.0,1.566667,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZH-221D,EpmID:131371| SCN - Lot abort ZH-221D | ZH-221D |,Short down,-4,0.0,2025-08-12_09:19:00_GY86,Y,1
|
||||
166,GY86,Intel,ZF-4392,2025,33,202533,2025-08-12,18:50:00,EpmID:131366| SCN - Lot Abort ZF-4392 | ZF-4392 |,131366.0,1.333333,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,N,Y,GY86,P853275,ZF-4392,EpmID:131366| SCN - Lot Abort ZF-4392 | ZF-4392 |,Short down,-4,0.0,2025-08-12_18:50:00_GY86,N,1
|
||||
167,GT69,TSMC,DW-5C01,2025,33,202533,2025-08-13,11:09:27,lot abort by DW-5C01,,2.923889,,53227023,P915697,P915697,7,not found,not found,,202533,Y,Y,GT69,P915697,DW-5C01,lot abort by DW-5C01,Short down,-4,0.0,2025-08-13_11:09:27_GT69,Y,0
|
||||
168,GY86,Intel,ZF-4392,2025,33,202533,2025-08-14,06:39:00,EpmID:131885| SCN - lot abort ZF-4392 | ZF-4392 |,131885.0,8.25,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZF-4392,EpmID:131885| SCN - lot abort ZF-4392 | ZF-4392 |,Short down,-4,0.0,2025-08-14_06:39:00_GY86,Y,1
|
||||
169,GT69,TSMC,DW-5C01,2025,33,202533,2025-08-15,18:49:28,lot abort by DW-5C01,,3.938889,,53227023,P915697,P915697,7,not found,not found,,202533,Y,Y,GT69,P915697,DW-5C01,lot abort by DW-5C01,Short down,-4,0.0,2025-08-15_18:49:28_GT69,Y,0
|
||||
170,CR51,Intel,SM-2307,2025,33,202533,2025-08-15,14:56:00,EpmID:131953| SCN - Lot abort lost heatbeat SM-2307 | SM-2307 |,131953.0,6.616667,FC-002,53225256,P809193,P809193,7,0,[CR51][RS][SN-150B] Lot abort occurred due to Subsystem failed to send SARA or MSR reply in time.,0,202533,Y,Y,CR51,P809193,SM-2307,EpmID:131953| SCN - Lot abort lost heatbeat SM-2307 | SM-2307 |,Short down,-4,0.0,2025-08-15_14:56:00_CR51,Y,0
|
||||
171,GY86,Intel,ZH-221D,2025,33,202533,2025-08-17,06:39:00,EpmID:131958| SCN - Lot Abort | ZH-221D |,131958.0,1.383333,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZH-221D,EpmID:131958| SCN - Lot Abort | ZH-221D |,Short down,-4,0.0,2025-08-17_06:39:00_GY86,Y,1
|
||||
172,GT69,TSMC,DW-2405,2025,34,202534,2025-08-18,13:11:18,mGT69 machine suffer DW-2405 (adjusting flow during pellicle test),,4.281667,FC-009,53227023,,53227023,0,no AIR,no AIR,0,202534,Y,Y,GT69,53227023,DW-2405,mGT69 machine suffer DW-2405 (adjusting flow during pellicle test),Short down,-3,0.0,2025-08-18_13:11:18_GT69,Y,1
|
||||
173,GT69,TSMC,KE-9504,2025,34,202534,2025-08-18,17:28:13,mGT69 EMSIMI failed by KE-9504/P/C AL/IS/ILIAS (MMCR) and initial ok,,2.81,FC-064,53227557,,53227557,0,no AIR,no AIR,0,202534,N,Y,GT69,53227557,KE-9504,mGT69 EMSIMI failed by KE-9504/P/C AL/IS/ILIAS (MMCR) and initial ok,Short down,-3,0.0,2025-08-18_17:28:13_GT69,N,1
|
||||
174,GT69,TSMC,WP-2C1D,2025,34,202534,2025-08-19,03:43:00,mGT69 DYPL test fail by WP-2C1D / system restart required,,3.768333,FC-003,53219953,,53219953,0,no AIR,no AIR,0,202534,N,Y,GT69,53219953,WP-2C1D,mGT69 DYPL test fail by WP-2C1D / system restart required,Short down,-3,0.0,2025-08-19_03:43:00_GT69,N,1
|
||||
175,CR51,Intel,RM-3247,2025,34,202534,2025-08-19,16:21:00,EpmID:132407| SCN - lot abort on RM-3247 | RM-3247 |,132407.0,1.9,#ND#,53228504,P915252,P915252,7,0,EpmID:132407| SCN - lot abort on RM-3247 | RM-3247 | CR51 19/08/2025,0,202534,Y,Y,CR51,P915252,RM-3247,EpmID:132407| SCN - lot abort on RM-3247 | RM-3247 |,Short down,-3,0.0,2025-08-19_16:21:00_CR51,Y,1
|
||||
176,GT69,TSMC,OO-000B,2025,34,202534,2025-08-24,15:24:00,mGT69 Task LOUDQT died on OO-000B MTBI hit,,6.902778,FC-027,53232580,P879404,P879404,7,not found,not found,,202534,N,Y,GT69,P879404,OO-000B,mGT69 Task LOUDQT died on OO-000B MTBI hit,Short down,-3,0.0,2025-08-24_15:24:00_GT69,N,1
|
||||
177,GY86,Intel,DFO-1F00,2025,35,202535,2025-08-25,00:00:00,EpmID:133450| SRC - droplet unstable | |,133450.0,1.966667,,53184261,,53184261,0,no AIR,no AIR,0,202535,N,Y,GY86,53184261,DFO-1F00,EpmID:133450| SRC - droplet unstable | |,Short down,-2,0.0,2025-08-25_00:00:00_GY86,N,1
|
||||
178,CR51,Intel,ZF-36B7,2025,35,202535,2025-08-25,06:44:57,EpmID:133160| SCN - MX failed for KE-9504 | ZF-36B7 |,133160.0,183.199167,FC-008,53234125,,53234125,0,no AIR,no AIR,0,202535,N,Y,CR51,53234125,ZF-36B7,EpmID:133160| SCN - MX failed for KE-9504 | ZF-36B7 |,XLD,-2,0.0,2025-08-25_06:44:57_CR51,N,1
|
||||
|
Executable
BIN
Binary file not shown.
+3
-1
@@ -1,2 +1,4 @@
|
||||
timestamp,category,comment
|
||||
2025-09-07 20:02:38,groceries,"ABZT please change this air to P1231313"
|
||||
2025-09-11 05:15:04,dashboard_table,"AIR: P853275 - most smaller issues related to this air should be eliminated"
|
||||
2025-09-11 05:15:52,source_table,"SO: 53013308 - this should be erraddicated"
|
||||
2025-09-11 05:37:58,dashboard_table,"AIR: P892467 - ABZT: need some more explanation"
|
||||
|
||||
|
Regular → Executable
Regular → Executable
Regular → Executable
Executable
+201
@@ -0,0 +1,201 @@
|
||||
System,Customer,Root Error,Year,Week_Number,Year_Week_Number,Date,SDT_Timestamp,Description,EPmID,Duration,FC,SO,AIR,link,AIR_issue_confirmed,AIR_FC,Air_issue_description,Close_notes,WY,P_Hits,U_Hits,Reconciled,AIR2,Event_code,Category,XLD,Week_Diff,In_MTBFP_AND_Ulist,Link_Timestamp,Check_P_U,NomolaPos
|
||||
GY86,Intel,RQ-8120,2024,52,202452,24/12/2024,09:07:00,EpmID:104643| SCN - Lot Abort for RS-Reinit (Lot Abort) | RQ-8120 |,104643,14.87,FC-004,,P847221,P847221,7,0,[Intel][RS] Online PF Residual out of limits due to SS dynamics link drift,RCA,202452,Y,Y,GY86,P847221,1,EpmID:104643| SCN - Lot Abort for RS-Reinit (Lot Abort) | RQ-8120 |,,-35,,2024-12-24_09:07:00_GY86,Y,0
|
||||
CR51,Intel,MEP-0106,2024,52,202452,24/12/2024,05:30:00,EpmID:104638| SRC - Down after Lot Abort | MEP-0106 |,104638,5.83,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,Y,Y,CR51,P851510,1,EpmID:104638| SRC - Down after Lot Abort | MEP-0106 |,,-35,,2024-12-24_05:30:00_CR51,Y,0
|
||||
CR51,Intel,LSP-01B3,2024,52,202452,24/12/2024,14:05:00,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,105038,2.30,FC-712,53013308,,53013308,0,no AIR,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,0,202452,N,Y,CR51,53013308,1,EpmID:105038| SRC - DL error unable to load customer jobs. | LSP-01B3 |,,-35,,2024-12-24_14:05:00_CR51,N,0
|
||||
CR51,Intel,DW-56C6,2024,52,202452,25/12/2024,00:25:00,EpmID:105030| SCN - DW-56C6 Lot Abort | DW-56C6 |,105030,4.45,,,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202452,Y,Y,CR51,P820381,1,EpmID:105030| SCN - DW-56C6 Lot Abort | DW-56C6 |,,-35,,2024-12-25_00:25:00_CR51,Y,0
|
||||
CR51,Intel,LAB-002D,2024,52,202452,26/12/2024,00:14:00,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,105044,1.63,FC-712,53016044,P851510,P851510,7,0,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,RCA,202452,Y,Y,CR51,P851510,1,EpmID:105044| SRC - Lot abort for SRC error | LAB-002D |,,-35,,2024-12-26_00:14:00_CR51,Y,0
|
||||
GY86,Intel,RQ-8120,2024,52,202452,27/12/2024,00:55:00,EpmID:105095| SCN - Lot abort for PF residue OOL | RQ-8120 |,105095,2.88,,,P847221,P847221,7,0,[Intel][RS] Online PF Residual out of limits due to SS dynamics link drift,RCA,202452,Y,Y,GY86,P847221,1,EpmID:105095| SCN - Lot abort for PF residue OOL | RQ-8120 |,,-35,,2024-12-27_00:55:00_GY86,Y,0
|
||||
CR51,Intel,LAB-002D,2024,52,202452,27/12/2024,09:42:00,EpmID:105031| CO2 - TRUC RF error | LAB-002D |,105031,0.78,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,N,Y,CR51,P851510,1,EpmID:105031| CO2 - TRUC RF error | LAB-002D |,,-35,,2024-12-27_09:42:00_CR51,N,0
|
||||
GY86,Intel,ZH-221D,2024,52,202452,28/12/2024,13:39:00,EpmID:105070| SCN - Lot Abort for ZH-221D | ZH-221D |,105070,6.03,FC-025,#REF!,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,Y,Y,GY86,P814232,1,EpmID:105070| SCN - Lot Abort for ZH-221D | ZH-221D |,,-35,,2024-12-28_13:39:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2024,52,202452,28/12/2024,06:12:00,EpmID:105077| SCN - Lot abort ZH-221D | ZH-221D |,105077,5.35,FC-025,#REF!,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,Y,Y,GY86,P814232,1,EpmID:105077| SCN - Lot abort ZH-221D | ZH-221D |,,-35,,2024-12-28_06:12:00_GY86,Y,0
|
||||
GY86,Intel,KV-9211,2024,52,202452,28/12/2024,21:36:00,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,105088,1.93,FC-062,53016490,,53016490,0,no AIR,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,0,202452,N,Y,GY86,53016490,1,EpmID:105088| SCN - lot ops failed for mx action | KV-9211 |,,-35,,2024-12-28_21:36:00_GY86,N,0
|
||||
CR51,Intel,LAB-002D,2024,52,202452,28/12/2024,02:25:00,EpmID:105043| SRC- TRUC RF laser generation driver NOK (Lot Abort) | LAB-002D |,105043,0.77,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202452,Y,Y,CR51,P851510,1,EpmID:105043| SRC- TRUC RF laser generation driver NOK (Lot Abort) | LAB-002D |,,-35,,2024-12-28_02:25:00_CR51,Y,0
|
||||
GY86,Intel,ZH-221D,2024,52,202452,29/12/2024,21:17:00,EpmID:105050| SCN - HSSL_failed_during MX | ZH-221D |,105050,2.92,FC-025,#REF!,P814232,P814232,7,ZK,[EXE][NXE 3800] [NXE3600] -ILIAS PARIS sensor failing on Destination Violation error,"[intake 2447]
|
||||
wk48.5 Test plan available, expecting to test in wk49 (EXE system)",202452,N,Y,GY86,P814232,1,EpmID:105050| SCN - HSSL_failed_during MX | ZH-221D |,,-35,,2024-12-29_21:17:00_GY86,N,0
|
||||
CR51,Intel,RQ-9002,2025,1,202501,30/12/2024,05:22:00,EpmID:105018| SCN - Lot Abort | RQ-9002 |,105018,4.32,FC-004,,P757279,P757279,7,0,P757279 - [EXE Proto1] Lot failed with error PG-7404 - CTRL_Z_FORCE_OVER_LI,RCA,202501,Y,Y,CR51,P757279,RQ-9002,EpmID:105018| SCN - Lot Abort | RQ-9002 |,,-34,,2024-12-30_05:22:00_CR51,Y,0
|
||||
GY86,Intel,ZH-221D,2025,1,202501,30/12/2024,06:50:00,EpmID:105047| SCN - lot abort Ilias sensor | ZH-221D |,105047,4.23,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105047| SCN - lot abort Ilias sensor | ZH-221D |,,-34,,2024-12-30_06:50:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,1,202501,30/12/2024,17:48:00,EpmID:105083| SCN - lot abort Ilias sensor | ZH-221D |,105083,1.08,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105083| SCN - lot abort Ilias sensor | ZH-221D |,,-34,,2024-12-30_17:48:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,1,202501,31/12/2024,20:59:00,EpmID:105045| SCN - ZH-221D Recovery and Containment (Lot Abort) | ZH-221D |,105045,4.37,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105045| SCN - ZH-221D Recovery and Containment (Lot Abort) | ZH-221D |,,-34,,2024-12-31_20:59:00_GY86,Y,0
|
||||
CR51,Intel,WH-2626,2025,1,202501,31/12/2024,00:30:00,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,104984,0.50,FC-001,#REF!,Lot Failed to Start,Lot Failed to Start,19,not found,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,#N/A,202501,N,Y,CR51,Lot Failed to Start,WH-2626,EpmID:104984| SCN - Refresh Closing wafer | WH-2626 | Scanner Repairs,,-34,,2024-12-31_00:30:00_CR51,N,0
|
||||
GY86,Intel,ZF-4392,2025,1,202501,1/01/2025,12:43:00,EpmID:105061| SCN - lot aborted by ZF-4392 | ZF-4392 |,105061,4.68,FC-008,#REF!,P839414,P839414,7,0,"P839414 - ZF-4392 Communication failure on GY86, Exception handling needed.",RCA,202501,Y,Y,GY86,P839414,ZF-4392,EpmID:105061| SCN - lot aborted by ZF-4392 | ZF-4392 |,,-34,,2025-01-01_12:43:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,1,202501,1/01/2025,05:59:00,EpmID:105058| SCN - ZH-221D Recovery (Lot Abort) | ZH-221D |,105058,0.82,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105058| SCN - ZH-221D Recovery (Lot Abort) | ZH-221D |,,-34,,2025-01-01_05:59:00_GY86,Y,0
|
||||
GY86,Intel,Track-Comm,2025,1,202501,1/01/2025,21:02:00,EpmID:105075| SCN - Recovery from track out of sync | ND |,105075,0.07,FC-001,53020028,,53020028,0,no AIR,EpmID:105075| SCN - Recovery from track out of sync | ND |,0,202501,N,Y,GY86,53020028,Track-Comm,EpmID:105075| SCN - Recovery from track out of sync | ND |,,-34,,2025-01-01_21:02:00_GY86,N,0
|
||||
CR51,Intel,LAB-002D,2025,1,202501,2/01/2025,06:28:00,EpmID:104990| SRC - Lot abort recovery for DL error+ POB setup recovery | LAB-002D |,104990,11.38,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202501,Y,Y,CR51,P851510,LAB-002D,EpmID:104990| SRC - Lot abort recovery for DL error+ POB setup recovery | LAB-002D |,,-34,,2025-01-02_06:28:00_CR51,Y,0
|
||||
GY86,Intel,PG-6206,2025,1,202501,2/01/2025,18:00:00,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,105389,0.18,FC-001,53020963,,53020963,0,no AIR,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,0,202501,N,Y,GY86,53020963,PG-6206,EpmID:105389| SCN - WH error during CH unlock | PG-6206 |,,-34,,2025-01-02_18:00:00_GY86,N,0
|
||||
GY86,Intel,BP-3900,2025,1,202501,2/01/2025,20:08:43,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 | ,105494,18.998056,FC-002,53013086,,53013086,0,no AIR,no AIR,0,202501,Y,Y,GY86,53013086,BP-3900,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 | ,XLD,-34,0,2025-01-02_20:08:43_GY86,Y,0
|
||||
CR51,Intel,LAB-002D,2025,1,202501,3/01/2025,16:22:00,EpmID:105495| CO2 - DLBB Flow too low LAB-002D | LAB-002D |,105495,0.93,FC-712,53013086,P851510,P851510,7,0, P851510 - [EXE 5000] [CR51] Request to investigate and add failure mode to DDF: Incorrect or no flow,RCA,202501,N,Y,CR51,P851510,LAB-002D,EpmID:105495| CO2 - DLBB Flow too low LAB-002D | LAB-002D |,,-34,,2025-01-03_16:22:00_CR51,N,0
|
||||
CR51,Intel,BP-3900,2025,1,202501,4/01/2025,03:49:00,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 |,105494,3.30,FC-002,#REF!,P825866,P825866,7,BD,[E100][EZ60] Remove 500ms check on auxiliary contactors during HV ON and HV OFF,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202501,Y,Y,CR51,P825866,BP-3900,EpmID:105494| SRC - Lot abort for SRC error | BP-3900 |,,-34,,2025-01-04_03:49:00_CR51,Y,0
|
||||
GY86,Intel,ZH-221D,2025,1,202501,4/01/2025,05:04:00,EpmID:105505| SCN - Lot aborted | ZH-221D |,105505,0.82,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202501,Y,Y,GY86,P853275,ZH-221D,EpmID:105505| SCN - Lot aborted | ZH-221D |,,-34,,2025-01-04_05:04:00_GY86,Y,0
|
||||
GY86,Intel,LO-105B,2025,1,202501,5/01/2025,00:25:00,EpmID:105516| SCN - LO-105B Happy Stop | LO-105B |,105516,8.42,FC-042,53022419,,53022419,0,no AIR,no AIR,0,202501,N,Y,GY86,53022419,LO-105B,EpmID:105516| SCN - LO-105B Happy Stop | LO-105B |,,-34,,2025-01-05_00:25:00_GY86,N,0
|
||||
GY86,Intel,PG-6206,2025,1,202501,5/01/2025,10:38:00,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,105507,0.28,FC-001,53022653,,53022653,0,no AIR,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,0,202501,N,Y,GY86,53022653,PG-6206,EpmID:105507| SCN - Failed to load foup on BMWL | PG-6206 |,,-34,,2025-01-05_10:38:00_GY86,N,0
|
||||
CR51,Intel,DW-0004,2025,2,202502,6/01/2025,06:32:00,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,105498,3.13,FC-009,53003175,P825866,P825866,7,BD,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202502,N,Y,CR51,P825866,DW-0004,EpmID:105498| SRC - Lot abort SRC not operational+Daily MX+Handover Checks | DW-0004 |,Short down,-33,,2025-01-06_06:32:00_CR51,N,0
|
||||
GY86,Intel,ZH-221D,2025,2,202502,6/01/2025,01:44:00,EpmID:105512| SCN - ZH-221D Error Recovery | ZH-221D |,105512,0.73,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202502,Y,Y,GY86,P853275,ZH-221D,EpmID:105512| SCN - ZH-221D Error Recovery | ZH-221D |,Short down,-33,,2025-01-06_01:44:00_GY86,Y,0
|
||||
GY86,Intel,IS-1363,2025,2,202502,7/01/2025,06:19:00,EpmID:105646| SCN - IS-1363 Lot Abort | IS-1363 |,105646,14.77,TIS,#REF!,P817298,P817298,7,0,EQHBMI (Coarse POB Calibration) Fails due to [CN-00C0] Closed connection due to read timeo,sp 22,202502,Y,Y,GY86,P817298,IS-1363,EpmID:105646| SCN - IS-1363 Lot Abort | IS-1363 |,XLD,-33,,2025-01-07_06:19:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,2,202502,7/01/2025,02:24:00,EpmID:105650| SCN - ZH-221D error (Lot Abort) | ZH-221D |,105650,1.15,FC-025,#REF!,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202502,Y,Y,GY86,P853275,ZH-221D,EpmID:105650| SCN - ZH-221D error (Lot Abort) | ZH-221D |,Short down,-33,,2025-01-07_02:24:00_GY86,Y,0
|
||||
CR51,Intel,DW-56C6,2025,2,202502,9/01/2025,16:29:00,EpmID:106262| SCN - Lot Abort for Real Time Sensor Link communication error | DW-56C6 |,106262,3.70,DC,#REF!,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202502,N,Y,CR51,P820381,DW-56C6,EpmID:106262| SCN - Lot Abort for Real Time Sensor Link communication error | DW-56C6 |,Short down,-33,,2025-01-09_16:29:00_CR51,N,0
|
||||
GY86,Intel,LAA-010B,2025,2,202502,9/01/2025,21:22:00,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,106269,0.62,FC-712,53029042,P732021,P732021,7,BD,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,"[intake 2430]
|
||||
wk34.3: Comeback in wk35 for robust solution for SPA 141
|
||||
wk32.2 As mentioned today in 9am, project agreed to investigate solution direction for this issue ( check if we can add timing delay in the SF 15 side for MX).
|
||||
Comeback expected in W",202502,N,Y,GY86,P732021,LAA-010B,EpmID:106269| SRC - laser failed for LAA-010B | LAA-010B |,Short down,-33,,2025-01-09_21:22:00_GY86,N,0
|
||||
CR51,Intel,LO-STOP,2025,2,202502,10/01/2025,22:31:00,EpmID:106345| SCN - LOT failed to start | |,106345,0.52,NA,53021877,Lot_Stop,Lot_Stop,8,not found,EpmID:106345| SCN - LOT failed to start | |,#N/A,202502,N,Y,CR51,Lot_Stop,LO-STOP,EpmID:106345| SCN - LOT failed to start | |,Short down,-33,,2025-01-10_22:31:00_CR51,N,0
|
||||
GY86,Intel,LAA-010B,2025,2,202502,11/01/2025,18:22:00,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,106384,0.92,FC-712,53006997,P825866,P825866,7,BD,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202502,N,Y,GY86,P825866,LAA-010B,EpmID:106384| DL - Lot Abort - IS Intermittent DO Error | LAA-010B |,Short down,-33,,2025-01-11_18:22:00_GY86,N,0
|
||||
GY86,Intel,TinRefill,2025,2,202502,11/01/2025,01:48:00,EpmID:106382| SRC- HWO | | Tin refill reload,106382,0.32,FC-002,53018449,TiN Refill,TiN Refill,10,not found,EpmID:106382| SRC- HWO | | Tin refill reload,#N/A,202502,N,Y,GY86,TiN Refill,TinRefill,EpmID:106382| SRC- HWO | | Tin refill reload,Short down,-33,,2025-01-11_01:48:00_GY86,N,0
|
||||
GY86,Intel,ZF-4392,2025,3,202503,13/01/2025,23:16:00,EpmID:106509| SCN - Lot abort for ZF-4392 HSSL Timeout | ZF-4392 |,106509,1.32,FC-008,53016336,P853275,P853275,7,0,P814232 is related and partial solved,Firmware delivered W19 (COB swap done),202503,N,Y,GY86,P853275,ZF-4392,EpmID:106509| SCN - Lot abort for ZF-4392 HSSL Timeout | ZF-4392 |,Short down,-32,,2025-01-13_23:16:00_GY86,N,0
|
||||
CR51,Intel,RU-0D31,2025,3,202503,19/01/2025,17:56:00,EpmID:107162| SCN - RS Stamping | | Scanner Repairs,107162,6.07,FC-002,53035983,DefectD,DefectD,7,not found,,#N/A,202503,N,Y,CR51,DefectD,RU-0D31,EpmID:107162| SCN - RS Stamping | | Scanner Repairs,Short down,-32,,2025-01-19_17:56:00_CR51,N,0
|
||||
CR51,Intel,KN-0605,2025,4,202504,20/01/2025,00:45:00,EpmID:107146| SCN - KGHDMIS task died | |,107146,0.83,Metro,53036577,P844961,P844961,7,0,related to P840013?,closed,202504,N,Y,CR51,P844961,KN-0605,EpmID:107146| SCN - KGHDMIS task died | |,Short down,-31,,2025-01-20_00:45:00_CR51,N,0
|
||||
CR51,Intel,RU-0D31,2025,4,202504,20/01/2025,14:35:00,EpmID:107163| SCN - RS Stamping | | Scanner Repairs,107163,3.50,FC-002,53035983,,53035983,0,no AIR,,0,202504,N,Y,CR51,53035983,RU-0D31,EpmID:107163| SCN - RS Stamping | | Scanner Repairs,Short down,-31,,2025-01-20_14:35:00_CR51,N,0
|
||||
GY86,Intel,OO-000B,2025,4,202504,20/01/2025,09:07:00,EpmID:107207| SCN - WXRO lost connection lot abort | OO-000B |,107207,1.20,FC-027,53036923,P850771,P850771,7,0,WXRO task died unexpectedly,open,202504,N,Y,GY86,P850771,OO-000B,EpmID:107207| SCN - WXRO lost connection lot abort | OO-000B |,Short down,-31,,2025-01-20_09:07:00_GY86,N,0
|
||||
GY86,Intel,LAA-010B,2025,4,202504,20/01/2025,23:34:00,"EpmID:107222| SRC - MX actions failed, IS DO intermittent error | LAA-010B |",107222,12.98,FC-712,,P825866,P825866,7,BD,Released already at intel,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202504,N,Y,GY86,P825866,LAA-010B,"EpmID:107222| SRC - MX actions failed, IS DO intermittent error | LAA-010B |",XLD,-31,,2025-01-20_23:34:00_GY86,N,0
|
||||
GY86,Intel,LAA-010B,2025,4,202504,20/01/2025,20:16:00,"EpmID:107223| SRC - Lot abort, IS DO intermittent error | LAA-010B |",107223,0.77,FC-712,,P825866,P825866,7,BD,Released already at intel,"[intake 2442]
|
||||
Wk42: New issue, intake ongoing
|
||||
wk42.3 Investigation ongoing, expected feedback by Trumpf wk42.4
|
||||
wk43.3: RC understood. SW Patch currently only for EZ60 as containment. Need to still find a solution direction
|
||||
wk44.3: Hardware as root cause ",202504,N,Y,GY86,P825866,LAA-010B,"EpmID:107223| SRC - Lot abort, IS DO intermittent error | LAA-010B |",Short down,-31,,2025-01-20_20:16:00_GY86,N,0
|
||||
CR51,Intel,RH-98A3,2025,4,202504,22/01/2025,06:00:00,EpmID:107515| SCN - Reticle stuck in LDLK | |,107515,2.33,FC-002,53039410,P851550,P851550,7,0,,sp 22,202504,N,Y,CR51,P851550,RH-98A3,EpmID:107515| SCN - Reticle stuck in LDLK | |,Short down,-31,,2025-01-22_06:00:00_CR51,N,0
|
||||
CR51,Intel,RU-465E,2025,4,202504,23/01/2025,22:38:00,EpmID:107821| SCN - LOAD LOCK ERROR | |,107821,0.57,FC-002,53041233,P852254,P852254,7,0,OVR cross talk with LDLK / P838000,RU-465E dp/dt violation during venting,202504,N,Y,CR51,P852254,RU-465E,EpmID:107821| SCN - LOAD LOCK ERROR | |,Short down,-31,,2025-01-23_22:38:00_CR51,N,0
|
||||
GY86,Intel,ZF-370B,2025,4,202504,24/01/2025,18:12:00,EpmID:107901| SCN - Lot Abort for MCD Communication issue | ZF-370B |,107901,5.97,FC-008,,P853275,P853275,7,0,,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZF-370B,EpmID:107901| SCN - Lot Abort for MCD Communication issue | ZF-370B |,Short down,-31,,2025-01-24_18:12:00_GY86,N,0
|
||||
GY86,Intel,ZH-221D,2025,4,202504,24/01/2025,10:27:00,EpmID:107925| SCN - Lot Abort for HSSL error | ZH-221D |,107925,1.13,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZH-221D,EpmID:107925| SCN - Lot Abort for HSSL error | ZH-221D |,Short down,-31,,2025-01-24_10:27:00_GY86,N,0
|
||||
GY86,Intel,ZF-370B,2025,4,202504,26/01/2025,10:55:00,EpmID:107924| SCN - Lot abort | ZF-370B |,107924,0.883333,FC-008,,P853275,P853275,7,0,,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZF-370B,EpmID:107924| SCN - Lot abort | ZF-370B |,Short down,-31,,2025-01-26_10:55:00_GY86,N,0
|
||||
GY86,Intel,ZH-221D,2025,4,202504,26/01/2025,08:24:00,EpmID:107902| SCN - ZH-221D lot abort | ZH-221D |,107902,0.966667,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202504,N,Y,GY86,P853275,ZH-221D,EpmID:107902| SCN - ZH-221D lot abort | ZH-221D |,Short down,-31,,2025-01-26_08:24:00_GY86,N,0
|
||||
GY86,Intel,PG-7407,2025,5,202505,27/01/2025,12:48:00,EpmID:108151| SCN - Unalbe to load reticle via oht | PG-7407 | ,108151,0.866667,FC-002,53043348,P853301,P853301,7,0,IPT auto recovery feature,2513.5,202505,N,Y,GY86,P853301,PG-7407,EpmID:108151| SCN - Unalbe to load reticle via oht | PG-7407 | ,Short down,-30,0,2025-01-27_12:48:00_GY86,N,0
|
||||
CR51,Intel,DW-5A01,2025,5,202505,27/01/2025,12:46:00,EpmID:108143| SCN - lot abort on DW-5A01 | DW-5A01 | ,108143,0.133333,FC-002,53043277,P792003,P792003,7,0,EXE NOK w/ Dose Eval Enabled - Buffer Size != nr Samples,fixed in 5200 Firmware!,202505,Y,Y,CR51,P792003,DW-5A01,EpmID:108143| SCN - lot abort on DW-5A01 | DW-5A01 | ,Short down,-30,0,2025-01-27_12:46:00_CR51,Y,0
|
||||
GY86,Intel,MX-0000,2025,5,202505,28/01/2025,10:54:00,EpmID:108347| SCN - Lot abort for mxex not init | MX-0000 | ,108347,4.083333,FC-002,53043759,P853207,P853207,7,0,EXE GY86 Intel - Lot abort due to MX-000 and WDMA dying unexpectedly. ,containment do not run asm_collect_all at next occurrence?,202505,Y,Y,GY86,P853207,MX-0000,EpmID:108347| SCN - Lot abort for mxex not init | MX-0000 | ,Short down,-30,0,2025-01-28_10:54:00_GY86,Y,0
|
||||
CR51,Intel,RU-465E,2025,5,202505,29/01/2025,17:52:00,EpmID:108552| SCN - LDLK failed | RU-465E | ,108552,0.583333,FC-002,53044466,P852254,P852254,7,0,RU-465E dp/dt violation during venting,RU-465E dp/dt violation during venting,202505,N,Y,CR51,P852254,RU-465E,EpmID:108552| SCN - LDLK failed | RU-465E | ,Short down,-30,0,2025-01-29_17:52:00_CR51,N,0
|
||||
GY86,Intel,WH-3106,2025,5,202505,29/01/2025,15:44:00,EpmID:108563| SCN - lot abort due to WH | WH-3106 | ,108563,0.416667,FC-001,53044425,,53044425,0,no AIR,WH-1CDE,0,202505,Y,Y,GY86,53044425,WH-3106,EpmID:108563| SCN - lot abort due to WH | WH-3106 | ,Short down,-30,0,2025-01-29_15:44:00_GY86,Y,0
|
||||
GY86,Intel,CG-A34D,2025,5,202505,30/01/2025,07:33:00,EpmID:108561| SCN - Lot abort for CG-A34D | CG-A34D | ,108561,3.65,NA,53044836,P838726,P838726,7,PR,PCBR-HPPX-S6B2 (bad batch),MID reject,202505,Y,Y,GY86,P838726,CG-A34D,EpmID:108561| SCN - Lot abort for CG-A34D | CG-A34D | ,Short down,-30,0,2025-01-30_07:33:00_GY86,Y,0
|
||||
CR51,Intel,RH-C177,2025,5,202505,30/01/2025,17:15:00,EpmID:108607| SCN - 2DBC Read Fail | RH-C177 | Barcode reader fail,108607,1.016667,FC-002,53045135,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202505,N,Y,CR51,P823264,RH-C177,EpmID:108607| SCN - 2DBC Read Fail | RH-C177 | Barcode reader fail,Short down,-30,,2025-01-30_17:15:00_CR51,N,0
|
||||
CR51,Intel,RBI,2025,5,202505,1/02/2025,19:55:00,EpmID:108695| SCN - Reticle Failed RBI | ND | ,108695,8.633333,FC-002,53046271,,53046271,0,no AIR,no AIR,0,202505,N,Y,CR51,53046271,RBI,EpmID:108695| SCN - Reticle Failed RBI | ND | ,Short down,-30,0,2025-02-01_19:55:00_CR51,N,0
|
||||
GY86,Intel,BP-3900,2025,5,202505,1/02/2025,20:41:00,EpmID:108719| SCN - Lot Abort BFSR Issue | BP-3900 | NotSet,108719,0.266667,FC-002,53046103,P856575,P856575,7,0,Loss of BFSR communication triggered a false water leak alarm which tripped SH042/059/087,25.17,202505,Y,Y,GY86,P856575,BP-3900,EpmID:108719| SCN - Lot Abort BFSR Issue | BP-3900 | NotSet,Short down,-30,0,2025-02-01_20:41:00_GY86,Y,0
|
||||
CR51,Intel,LAB-002B,2025,5,202505,2/02/2025,21:00:00,EpmID:108699| SRC - Lot abort for PA1 Error | LAB-002B |,108699,5.461111,FC-712,53046894,,53046894,0,no AIR,slow purge valve replaced,0,202505,Y,Y,CR51,53046894,LAB-002B,EpmID:108699| SRC - Lot abort for PA1 Error | LAB-002B |,Short down,-30,0,2025-02-02_21:00:00_CR51,Y,0
|
||||
CR51,Intel,WE-0C04,2025,6,202506,05/02/2025,14:12:00,EpmID:109360| SCN - lot abort | WE-0C04 | BGDS,109360,69.883333,FC-001,53049826,P656698,P656698,7,0,BGDS manifolds fail during use due to broken solenoids on quick release valve,BGDS manifold fails during use due to broken solonoid,202506,Y,Y,CR51,P656698,WE-0C04,EpmID:109360| SCN - lot abort | WE-0C04 | BGDS,XLD,-29,0,2025-02-05_14:12:00_CR51,Y,0
|
||||
GY86,Intel,ZH-221D,2025,6,202506,08/02/2025,01:42:00,EpmID:109458| SCN - LOT aborted | ZH-221D | NotSet,109458,0.983333,FC-025,53016336,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202506,Y,Y,GY86,P853275,ZH-221D,EpmID:109458| SCN - LOT aborted | ZH-221D | NotSet,Short down,-29,0,2025-02-08_01:42:00_GY86,Y,0
|
||||
GY86,Intel,OE-2401,2025,6,202506,03/02/2025,19:40:00,EpmID:108937| SCN - Lot Abort PX-B6FC | OE-2401 |,108937,3.1,FC-028,53047844,P859023,P859023,7,0,reassigned from P820514: 19-2-2025,RCA,202506,Y,Y,GY86,P859023,OE-2401,EpmID:108937| SCN - Lot Abort PX-B6FC | OE-2401 |,Short down,-29,0,2025-02-03_19:40:00_GY86,Y,0
|
||||
CR51,Intel,RU-1F2E,2025,7,202507,13/02/2025,16:00:00,EpmID:110305| SCN - LDLK1 Failed to open ATM | RU-1F2E |,110305,0.316667,FC-002,53057455,P838000,P838000,7,0,moved retilce to 2nd loadport and adjusted X-over setpoint,sp23,202507,N,Y,CR51,P838000,RU-1F2E,EpmID:110305| SCN - LDLK1 Failed to open ATM | RU-1F2E |,Short down,-28,0,2025-02-13_16:00:00_CR51,N,0
|
||||
GY86,Intel,DW-56C6,2025,7,202507,14/02/2025,01:47:00,EpmID:110310| SCN - lot ops failed dw-56c6 (Lot Abort)| DW-56C6 |,110310,2.383333,DC,53058093,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202507,Y,Y,GY86,P820381,DW-56C6,EpmID:110310| SCN - lot ops failed dw-56c6 (Lot Abort)| DW-56C6 |,Short down,-28,0,2025-02-14_01:47:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,7,202507,12/02/2025,23:39:00,EpmID:110234| SCN - lot abort zh-221D | ZH-221D |,110234,3.083333,FC-025,53016336,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202507,Y,Y,GY86,P853275,ZH-221D,EpmID:110234| SCN - lot abort zh-221D | ZH-221D |,Short down,-28,0,2025-02-12_23:39:00_GY86,Y,0
|
||||
GY86,Intel,RM-3246,2025,8,202508,21/02/2025,10:55:00,EpmID:111036| SCN - Lot abort for VS / RCW error | RM-3246 |,111036,26.966667,NA,53064643,P861609,P861609,7,0,Change default RCWC-XL BLD trip level to mitigate VolDiff value fluctuations,RCA,202508,Y,Y,GY86,P861609,RM-3246,EpmID:111036| SCN - Lot abort for VS / RCW error | RM-3246 |,XLD,-27,0,2025-02-21_10:55:00_GY86,Y,0
|
||||
GY86,Intel,ZF-4392,2025,8,202508,21/02/2025,04:01:00,EpmID:110955| SCN - Lot abort ZF-4392 | ZF-4392 |,110955,2.55,FC-008,53064450,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202508,Y,Y,GY86,P853275,ZF-4392,EpmID:110955| SCN - Lot abort ZF-4392 | ZF-4392 |,Short down,-27,0,2025-02-21_04:01:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,8,202508,18/02/2025,13:48:00,EpmID:110600| SCN - Lot Abort ZH-221D | ZH-221D |,110600,3.333333,FC-025,,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202508,Y,Y,GY86,P853275,ZH-221D,EpmID:110600| SCN - Lot Abort ZH-221D | ZH-221D |,Short down,-27,0,2025-02-18_13:48:00_GY86,Y,0
|
||||
CR51,Intel,RU-1B22,2025,9,202509,24/02/2025,16:35:00,EpmID:111214| SCN - lot abort on RU-1B22 | RU-1b22 |,111214,4.15,TIS,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202509,Y,Y,CR51,P860660,RU-1B22,EpmID:111214| SCN - lot abort on RU-1B22 | RU-1b22 |,Short down,-26,0,2025-02-24_16:35:00_CR51,Y,0
|
||||
GY86,Intel,DW-56C6,2025,9,202509,02/03/2025,06:46:00,EpmID:111679| SCN - Lot Abort | DW-56C6 |,111679,3.866667,DC,53071899,P820381,P820381,7,0,P820381 - |Proto2| |VHV| |mEX04| Lot Abort Due to DW-56C6 Real Time Sensor Link communication with D,Containment in SP22 since not occurred,202509,Y,Y,GY86,P820381,DW-56C6,EpmID:111679| SCN - Lot Abort | DW-56C6 |,Short down,-26,0,2025-03-02_06:46:00_GY86,Y,0
|
||||
GY86,Intel,RH-C177,2025,8,202508,23/02/2025,15:00:00,EpmID:111037| SCN - Reticle handler task faliure RH-9DDE | RH-9DDE |,111037,,NA,53065474,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202508,N,Y,GY86,P823264,RH-C177,EpmID:111037| SCN - Reticle handler task faliure RH-9DDE | RH-9DDE |,Short down,-27,0,2025-02-23_15:00:00_GY86,N,0
|
||||
CR51,Intel,IS-1367,2025,10,202510,09/03/2025,20:34:00,EpmID:112410| SCN - Lot abort TIS scan failed | IS-1367 |,112410,6.2625,TIS,53078920,P844973,P844973,7,0, [PBS18823] WS ZJM Delivery,WS ZJM delivery PBS 18823/SP23,202510,Y,Y,CR51,P844973,IS-1367,EpmID:112410| SCN - Lot abort TIS scan failed | IS-1367 |,Short down,-25,0,2025-03-09_20:34:00_CR51,Y,0
|
||||
CR51,Intel,RU-1B22,2025,10,202510,08/03/2025,15:40:00,EpmID:112401| SCN - lot abort RU-1B22 | RU-1B22 |,112401,2.733333,Reticle ,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202510,Y,Y,CR51,P860660,RU-1B22,EpmID:112401| SCN - lot abort RU-1B22 | RU-1B22 |,Short down,-25,0,2025-03-08_15:40:00_CR51,Y,0
|
||||
CR51,Intel,RQ-F000,2025,10,202510,09/03/2025,03:53:00,EpmID:112393| SCN - RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 Error of state-machine RQRRNE.APP.RS'),112393,1.733333,RS,53078276,P866623,P866623,7,0,RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 E,RCA,202510,Y,Y,CR51,P866623,RQ-F000,EpmID:112393| SCN - RS related lot abort | RQ-F000 | (03/09/2025 03:09:56.4002 RQ-F000 Error of state-machine RQRRNE.APP.RS'),Short down,-25,0,2025-03-09_03:53:00_CR51,Y,0
|
||||
CR51,Intel,RH-C177,2025,11,202511,16/03/2025,11:03:00,EpmID:113226| SCN - Reticle 2D Barcode not read | RH-C177 |,113226,0.333333,NA,53084849,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202511,N,Y,CR51,P823264,RH-C177,EpmID:113226| SCN - Reticle 2D Barcode not read | RH-C177 |,Short down,-24,0,2025-03-16_11:03:00_CR51,N,0
|
||||
GY86,Intel,TN-0054,2025,11,202511,16/03/2025,14:49:00,EpmID:113259| SCN - WPPD for PWEDNE crash | TN-0054 |,113259,1.95,NA,53084962,P835372,P835372,7,0,PWEDNE task dying during PWEDNE CPD run ,Likely incident not CPD related,202511,N,Y,GY86,P835372,TN-0054,EpmID:113259| SCN - WPPD for PWEDNE crash | TN-0054 |,Short down,-24,0,2025-03-16_14:49:00_GY86,N,0
|
||||
GY86,Intel,CN-00AF,2025,11,202511,10/03/2025,04:08:00,EpmID:112437| SCN - WHFF Failed | CN-00AF |,112437,0.2,NA,53079553,P815894,P815894,7,0,[Proto2][SCN] Full drivers init keeps failing on WHAS DisEntangExt due to PG-7406 SUB CODE: [[X1:0xFB7CE5A9,PCS WZ-0D04,202511,N,Y,GY86,P815894,CN-00AF,EpmID:112437| SCN - WHFF Failed | CN-00AF |,Short down,-24,0,2025-03-10_04:08:00_GY86,N,0
|
||||
CR51,Intel,WH-252E,2025,11,202511,14/03/2025,03:19:00,EpmID:113189| SCN - CU_DO_LOT_Aborted (Lot Abort) | WH-252E |,113189,2.883333,FC-001,53083711,P841602,P841602,7,WH,mET18_SO52992004_Lot abort by WH-252E,[intake 2450],202511,Y,Y,CR51,P841602,WH-252E,EpmID:113189| SCN - CU_DO_LOT_Aborted (Lot Abort) | WH-252E |,Short down,-24,1,2025-03-14_03:19:00_CR51,Y,0
|
||||
GY86,Intel,CN-0001,2025,11,202511,13/03/2025,23:36:00,EpmID:113196| SCN - lot abort CN-0001 - ULSM_syncApp | CN-0001 |,113196,8.033333,ILLUM,53083396,P867917,P867917,7,0,Lot abort due to ULTHIF_DNTR driver memory leak (RCA needed),RCA,202511,Y,Y,GY86,P867917,CN-0001,EpmID:113196| SCN - lot abort CN-0001 - ULSM_syncApp | CN-0001 |,Short down,-24,0,2025-03-13_23:36:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,11,202511,11/03/2025,10:49:00,EpmID:112689| SCN - lot abort ZH-221D | ZH-221D |,112689,5.516667,ILIAS,53080794,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:112689| SCN - lot abort ZH-221D | ZH-221D |,Short down,-24,0,2025-03-11_10:49:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,11,202511,11/03/2025,22:01:00,EpmID:112938| SCN - ZH-221D Lot Abort | ZH-221D |,112938,1.316667,ILIAS,53080794,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:112938| SCN - ZH-221D Lot Abort | ZH-221D |,Short down,-24,0,2025-03-11_22:01:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,11,202511,16/03/2025,17:25:00,EpmID:113245| SCN - Lot Abort ZH-221D | ZH-221D |,113245,1.183333,ILIAS,53041611,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202511,Y,Y,GY86,P853275,ZH-221D,EpmID:113245| SCN - Lot Abort ZH-221D | ZH-221D |,Short down,-24,0,2025-03-16_17:25:00_GY86,Y,0
|
||||
CR51,Intel,RU-1B22,2025,12,202512,18/03/2025,19:32:54,EpmID:113813| SCN - Lot Abort+POB/WPPD Recovery | RU-1B22 |,113813,2.95,,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202512,Y,Y,CR51,P860660,RU-1B22,EpmID:113813| SCN - Lot Abort+POB/WPPD Recovery | RU-1B22 |,Short down,-23,0,2025-03-18_19:32:54_CR51,Y,0
|
||||
CR51,Intel,RU-1B22,2025,12,202512,19/03/2025,1:38:00,EpmID:113811| SCN - Re-Run NERSTD | RU-1B22 |,113811,0.38,,53064691,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202512,N,Y,CR51,P860660,RU-1B22,EpmID:113811| SCN - Re-Run NERSTD | RU-1B22 |,Short down,-23,0,2025-03-19_01:38:00_CR51,N,0
|
||||
CR51,Intel,WX-2508,2025,12,202512,20/03/2025,`,EpmID:114082| SCN - Lot abort WX-2508 | WX-2508 |,114082,4.349722,FC-001,53089256,P834708,P834708,7,WH,Tracking - Lot Aborted by WE-0406 WH SUR HIPA error,"[intake 2446]
|
||||
wk50.2: Continue to monitor to ensure solution works
|
||||
wk49.2: Being investigated and info coming in from LT.",202512,Y,Y,CR51,P834708,WX-2508,EpmID:114082| SCN - Lot abort WX-2508 | WX-2508 |,Short down,-23,1,2025-03-20_`_CR51,Y,0
|
||||
GY86,Intel,PG-7406,2025,12,202512,21/03/2025,17:14:00,EpmID:114164| SCN- Lot ops start failed RM MMDC | PG-7406 |,114164,3.65,FC-025,53090447,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202512,N,Y,GY86,P870861,PG-7406,EpmID:114164| SCN- Lot ops start failed RM MMDC | PG-7406 |,Short down,-23,0,2025-03-21_17:14:00_GY86,N,0
|
||||
GY86,Intel,RM-3246,2025,12,202512,23/03/2025,07:52:00,EpmID:114178| SCN - Lot Abort for RM MMDC error | RM-3246 |,114178,2,,53090447,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202512,Y,Y,GY86,P870861,RM-3246,EpmID:114178| SCN - Lot Abort for RM MMDC error | RM-3246 |,Short down,-23,0,2025-03-23_07:52:00_GY86,Y,0
|
||||
CR51,Intel,PX-B6FC,2025,13,202513,26/03/2025,07:54:00,EpmID:115016| SCN - Wafer movement stopped due to PX error and wafer rejects | PX-B6FC |,115016,1.833333,POB,53095001,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202513,Y,Y,CR51,P820514,PX-B6FC,EpmID:115016| SCN - Wafer movement stopped due to PX error and wafer rejects | PX-B6FC |,Short down,-22,0,2025-03-26_07:54:00_CR51,Y,0
|
||||
CR51,Intel,RU-2B1D,2025,13,202513,28/03/2025,11:18:00,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,115133,3.816667,RS,53097371,P873253,P873253,7,0,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,Waiting on intake,202513,Y,Y,CR51,P873253,RU-2B1D,EpmID:115133| SCN - Lot Abort for RED MMDC | RU-2B1D | PG-6208,Short down,-22,0,2025-03-28_11:18:00_CR51,Y,0
|
||||
GY86,Intel,WXP-021 ,2025,13,202513,25/03/2025,03:51:00,EpmID:114415| SCN - Lot Abort | WXP-021 | P871351,114415,6.016667,SRC,53092592,P871028,P871028,7,0,GY86: Lot abort caused by PCW Temp Sensor! (41R2 +41R1),RCA,202513,Y,Y,GY86,P871028,WXP-021 ,EpmID:114415| SCN - Lot Abort | WXP-021 | P871351,Short down,-22,0,2025-03-25_03:51:00_GY86,Y,0
|
||||
CR51,Intel,IS-1367,2025,14,202514,6/04/2025,18:18:00,EpmID:116045| SCN - Lot Abort IS-1367 | IS-1367 |,116045,2.683333,,53078920,P844973,P844973,7,0, [PBS18823] WS ZJM Delivery,WS ZJM delivery PBS 18823/SP23,202514,Y,Y,CR51,P844973,IS-1367,EpmID:116045| SCN - Lot Abort IS-1367 | IS-1367 |,Short down,-21,0,2025-04-06_18:18:00_CR51,Y,0
|
||||
CR51,Intel,RU-1B22,2025,14,202514,1/04/2025,18:30:00,EpmID:115718| SCN - Lot abort for RH error | RU-1B22 |,115718,20.016667,,53100110,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:115718| SCN - Lot abort for RH error | RU-1B22 |,XLD,-21,0,2025-04-01_18:30:00_CR51,Y,0
|
||||
CR51,Intel,RU-1B22,2025,14,202514,5/04/2025,21:37:00,EpmID:116052| SCN - Lot Abort RU-1B22 | RU-1B22 |,116052,5.733333,,53104401,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:116052| SCN - Lot Abort RU-1B22 | RU-1B22 |,Short down,-21,0,2025-04-05_21:37:00_CR51,Y,0
|
||||
CR51,Intel,RU-1B22,2025,14,202514,5/04/2025,08:32:00,EpmID:116054| SCN - Lot Abort RU-1B22 | RU-1B22 |,116054,3.65,,53104401,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202514,Y,Y,CR51,P860660,RU-1B22,EpmID:116054| SCN - Lot Abort RU-1B22 | RU-1B22 |,Short down,-21,0,2025-04-05_08:32:00_CR51,Y,0
|
||||
CR51,Intel,WP-2C1D,2025,14,202514,31/03/2025,21:59:00,EpmID:115267| SCN - Lot abort for WS MMDC+Daily MX Actions+BMMO/ABF | WP-2C1D |,115267,17.183333,FC-003,53100110,P872290,P872290,7,0,[EXE] [CR51] WP-2C1D HIPA internal 12V low error,Needs intake,202514,Y,Y,CR51,P872290,WP-2C1D,EpmID:115267| SCN - Lot abort for WS MMDC+Daily MX Actions+BMMO/ABF | WP-2C1D |,XLD,-21,0,2025-03-31_21:59:00_CR51,Y,0
|
||||
CR51,Intel,KN-0605,2025,14,202514,4/04/2025,22:03:00,EpmID:116029| SCN - Lot abort KN-0605 | KN-0605 |,116029,2.883333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202514,Y,Y,CR51,P860104,KN-0605,EpmID:116029| SCN - Lot abort KN-0605 | KN-0605 |,Short down,-21,0,2025-04-04_22:03:00_CR51,Y,0
|
||||
CR51,Intel,KN-0605,2025,14,202514,6/04/2025,07:34:00,EpmID:116041| SCN - Lot abort KN-0605 | KN-0605 |,116041,2.733333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202514,Y,Y,CR51,P860104,KN-0605,EpmID:116041| SCN - Lot abort KN-0605 | KN-0605 |,Short down,-21,0,2025-04-06_07:34:00_CR51,Y,0
|
||||
GY86,Intel,CN-0001,2025,14,202514,5/04/2025,11:59:00,EpmID:116059| SCN - Wafer Load from VPU NOK+Lot abort VPA timeout+HYCO PM Block | CN-0001 |,116059,53.977222,#ND#,53104424,P656698,P656698,7,0,BGDS manifolds fail during use due to broken solenoids on quick release valve,BGDS manifold fails during use due to broken solonoid,202514,Y,Y,GY86,P656698,CN-0001,EpmID:116059| SCN - Wafer Load from VPU NOK+Lot abort VPA timeout+HYCO PM Block | CN-0001 |,XLD,-21,0,2025-04-05_11:59:00_GY86,Y,0
|
||||
GY86,Intel,KU-5113,2025,14,202514,31/03/2025,16:23:00,EpmID:115277| SCN - Lot abort for KU-5113 error | KU-5113 |,115277,0.8,FC-064,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:115277| SCN - Lot abort for KU-5113 error | KU-5113 |,Short down,-21,0,2025-03-31_16:23:00_GY86,Y,0
|
||||
GY86,Intel,KU-5113,2025,14,202514,31/03/2025,09:43:00,EpmID:115283| SCN - Lot abort for KU-5113 error | KU-5113 |,115283,4.133333,FC-064,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:115283| SCN - Lot abort for KU-5113 error | KU-5113 |,Short down,-21,0,2025-03-31_09:43:00_GY86,Y,0
|
||||
GY86,Intel,KU-5113,2025,14,202514,4/04/2025,09:37:00,EpmID:116068| SCN - lot aborted for KU-5113 error | KU-5113 |,116068,0.583333,FC-064,53104021,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202514,Y,Y,GY86,P872439,KU-5113,EpmID:116068| SCN - lot aborted for KU-5113 error | KU-5113 |,Short down,-21,0,2025-04-04_09:37:00_GY86,Y,0
|
||||
CR51,Intel,KN-0605,2025,15,202515,07/04/2025,14:44:00,EpmID:116175| SCN - Lot Abort for KN-0605 | kn-0605 |,116175,2.433333,FC-064,53104194,P860104,P860104,7,0,[exe5000] KN-0605 scan predictor error causing lot aborts: KXTRMI improvement,Solution in SP22,202515,Y,Y,CR51,P860104,KN-0605,EpmID:116175| SCN - Lot Abort for KN-0605 | kn-0605 |,Short down,-20,0,2025-04-07_14:44:00_CR51,Y,0
|
||||
GY86,Intel,RR-1110,2025,15,202515,12/04/2025,09:56:00,EpmID:116986| SCN - LOT abort RR-1110 | RR-1110 |,116986,5.883333,FC-009,53099631,P872439,P872439,7,0,SP21 changed wafer reject behavior to a lot abort behavior KU-5113 ==> RR-1110,SP23 500K solution in SP22,202515,Y,Y,GY86,P872439,RR-1110,EpmID:116986| SCN - LOT abort RR-1110 | RR-1110 |,Short down,-20,0,2025-04-12_09:56:00_GY86,Y,0
|
||||
GY86,Intel,RH-C1D0,2025,15,202515,11/04/2025,01:29:00,EpmID:116880| SCN - CU_OT_RET_LOAD_ERR | ND |,116880,3.25,FC-002,53110291,P869352,P869352,7,0,[EX04] 2DBCR Failed to Read Barcode with active focus error,Working on diagnostic patch to continue RCA,202515,N,Y,GY86,P869352,RH-C1D0,EpmID:116880| SCN - CU_OT_RET_LOAD_ERR | ND |,Short down,-20,0,2025-04-11_01:29:00_GY86,N,0
|
||||
GY86,Intel,LZ-2004,2025,16,202516,15/04/2025,14:38:00,EpmID:117331| SCN - Lot Abort LZ-2004 | LZ-2004 |,117331,7.083333,FC-007,53114003,P877184,P877184,7,0,mGY86 LZ-2004 Lot abort,Containment available additional tracing needed,202516,Y,Y,GY86,P877184,LZ-2004,EpmID:117331| SCN - Lot Abort LZ-2004 | LZ-2004 |,Short down,-19,0,2025-04-15_14:38:00_GY86,Y,0
|
||||
CR51,Intel,RU-1B22,2025,16,202516,15/04/2025,06:45:00,EpmID:117141| SCN - REMA BLADE FAILED RM-3183 | RU-1B22 |,117141,3.25,,53113754,P862294,P862294,7,0,EMFCMI fails on RM-3183 in EXE Proto2 (mEX04),Containment available RC,202516,N,Y,CR51,P862294,RU-1B22,EpmID:117141| SCN - REMA BLADE FAILED RM-3183 | RU-1B22 |,Short down,-19,0,2025-04-15_06:45:00_CR51,N,0
|
||||
CR51,Intel,RH-C177,2025,16,202516,14/04/2025,20:18:00,EpmID:117138| SCN - Move customer reticle | RH-C177 | RH 2DBC,117138,0.616667,FC-002,53018437,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202516,N,Y,CR51,P823264,RH-C177,EpmID:117138| SCN - Move customer reticle | RH-C177 | RH 2DBC,Short down,-19,0,2025-04-14_20:18:00_CR51,N,0
|
||||
CR51,Intel,WX-2B11,2025,17,202517,23/04/2025,21:43:00,EpmID:118621| SCN - Lot abort | WX-2B11 |,118621,16.666667,FC-001,53121688,,53121688,0,0,WP-2C1D MMDCWSPC1 MPAC PCW in temperature too high,PCW MPAC incoming too high Temp,202517,Y,Y,CR51,53121688,WX-2B11,EpmID:118621| SCN - Lot abort | WX-2B11 |,XLD,-18,0,2025-04-23_21:43:00_CR51,Y,0
|
||||
GY86,Intel,DD-0000,2025,17,202517,22/04/2025,18:29:00,EpmID:118241| SCN - Lot Abort out of memory DD-0000 | DD-0000 |,118241,1.2,FC-027,53120389,P856296,P856296,7,0,memory leak on task DWDT (SP40),Available in QBL from wk2510,202517,Y,Y,GY86,P856296,DD-0000,EpmID:118241| SCN - Lot Abort out of memory DD-0000 | DD-0000 |,Short down,-18,0,2025-04-22_18:29:00_GY86,Y,0
|
||||
CR51,Intel,RU-1B22,2025,17,202517,21/04/2025,00:50:00,EpmID:117807| SCN - RU-1B22 Failed | RU-1B22 | ARR NOK,117807,1.95,,53118871,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202517,N,Y,CR51,P860660,RU-1B22,EpmID:117807| SCN - RU-1B22 Failed | RU-1B22 | ARR NOK,Short down,-18,0,2025-04-21_00:50:00_CR51,N,0
|
||||
CR51,Intel,RH-C177,2025,17,202517,26/04/2025,08:31:00,EpmID:118729| SCN - 2DBC unknown reticle ID | RH-C177 |,118729,0.416667,FC-002,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202517,N,Y,CR51,P823264,RH-C177,EpmID:118729| SCN - 2DBC unknown reticle ID | RH-C177 |,Short down,-18,0,2025-04-26_08:31:00_CR51,N,0
|
||||
CR51,Intel,RH-C177,2025,18,202518,28/04/2025,17:00:00,EpmID:118922| SCN - 2DBC unknown reticle ID | RH-C177 |,118922,0.20,FC-002,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202518,N,Y,CR51,P823264,RH-C177,EpmID:118922| SCN - 2DBC unknown reticle ID | RH-C177 |,Short down,-17,0,2025-04-28_17:00:00_CR51,N,0
|
||||
CR51,Intel,PL-7005,2025,18,202518,01/05/2025,10:55:00,EpmID:119428| SCN - lot aborted by SRC error+HSD Lot Abort+Daily MX | PL-7005 |,119428,15.75,FC-024,53128749,P885598,P885598,7,0,[FDQ PDU] FDQ 4 channel module failure/error leads to long down time,AP-13624 f DQ module swap if issue persists (after 2 hit within 8hrs),202518,Y,Y,CR51,P885598,PL-7005,EpmID:119428| SCN - lot aborted by SRC error+HSD Lot Abort+Daily MX | PL-7005 |,XLD,-17,0,2025-05-01_10:55:00_CR51,Y,0
|
||||
GY86,Intel,RH-C1E0,2025,18,202518,01/05/2025,07:59:00,EpmID:119408| SCN - FOXY Not able to scan in 2DBC | RH-C1E0 |,119408,0.25,,no-SO,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202518,N,Y,GY86,P823264,RH-C1E0,EpmID:119408| SCN - FOXY Not able to scan in 2DBC | RH-C1E0 |,Short down,-17,0,2025-05-01_07:59:00_GY86,N,0
|
||||
CR51,Intel,CN-0067,2025,19,202519,10/05/2025,5:33:00,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,120204,5.00,SW,53136082,P884438,P884438,7,not found,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,#N/A,202519,N,Y,CR51,P884438,CN-0067,EpmID:120204| SCN - MLETs failed to start+POB Mighty Setup | CN-0067 | ,Short down,-16,0,2025-05-10_05:33:00_CR51,N,0
|
||||
CR51,Intel,LSH-00AC,2025,19,202519,11/05/2025,16:25:00,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,120211,15.77,FC-712,53136685,P885744,P885744,7,0,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,"Monitoring XER logs, request local team provide master panel screenshot and try",202519,Y,Y,CR51,P885744,LSH-00AC,EpmID:120211| SRC - lot abort LSH-00AC | LSH-00AC | ,XLD,-16,0,2025-05-11_16:25:00_CR51,Y,0
|
||||
GY86,Intel,CN-0001,2025,20,202520,13/05/2025,11:16:00,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 | ,120748,2.97,ILLUM,53138964,P867917,P867917,7,0,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 |,According to the SO a weekly host reset is needed,202520,Y,Y,GY86,P867917,CN-0001,EpmID:120748| SCN - lot abort on CN-0001 | CN-0001 | ,Short down,-15,0,2025-05-13_11:16:00_GY86,Y,0
|
||||
GY86,Intel,CG-A309,2025,20,202520,13/05/2025,21:12:00,EpmID:120751| SCN - Lot Abort CG-A309 | CG-A309 | ,120751,4.23,FC-025,53139381,P885590,P885590,7,0,"Large ER_Event_log pollution due to PG-5271, PG-5270, PG-",SP 23 fix,202520,Y,Y,GY86,P885590,CG-A309,EpmID:120751| SCN - Lot Abort CG-A309 | CG-A309 | ,Short down,-15,0,2025-05-13_21:12:00_GY86,Y,0
|
||||
GY86,Intel,PG-4B47,2025,20,202520,14/05/2025,9:04:00,EpmID:120786| SCN - Lot abort Unicom Error for PG-4B47 | PG-4B47 | ,120786,2.92,FC-025,53140043,P885590,P885590,7,0,"Large ER_Event_log pollution due to PG-5271, PG-5270, PG-",SP 23 fix,202520,Y,Y,GY86,P885590,PG-4B47,EpmID:120786| SCN - Lot abort Unicom Error for PG-4B47 | PG-4B47 | ,Short down,-15,0,2025-05-14_09:04:00_GY86,Y,0
|
||||
CR51,Intel,RU-1B22,2025,20,202520,18/05/2025,4:50:00,EpmID:120857| SCN - error unloading reticle from stage RU-1B22 | RU-1B22 | ,120857,1.35,null,53142773,P860660,P860660,7,0, [CR51] Lot abort unload fail RU-1B22 after ARR,Planned patch W19 to mitigate clamp charge,202520,N,Y,CR51,P860660,RU-1B22,EpmID:120857| SCN - error unloading reticle from stage RU-1B22 | RU-1B22 | ,Short down,-15,0,2025-05-18_04:50:00_CR51,N,0
|
||||
GY86,Intel,LAB-002D,2025,21,202521,19/05/2025,13:12:00,EpmID:121092| SCN - lot abort on LAB-002D | LAB-002D | ,121092,3.30,FC-712,53144187,P829173,P829173,7,0,"MC53 DC-Link error limit NOK, causing downtime and MC53 swaps for US voltag",US adapt FW release 23,202521,Y,Y,GY86,P829173,LAB-002D,EpmID:121092| SCN - lot abort on LAB-002D | LAB-002D | ,Short down,-14,0,2025-05-19_13:12:00_GY86,Y,0
|
||||
CR51,Intel,#ND#,2025,21,202521,19/05/2025,14:23:00,EpmID:121089| SRC - Soft ramp interlock trip (Lot Abort) | ND | ,121089,1.82,Drive Laser,53144175,P829173,P829173,7,0,"MC53 DC-Link error limit NOK, causing downtime and MC53 swaps for US voltag",US adapt FW release 23,202521,Y,Y,CR51,P829173,#ND#,EpmID:121089| SRC - Soft ramp interlock trip (Lot Abort) | ND | ,Short down,-14,0,2025-05-19_14:23:00_CR51,Y,0
|
||||
GY86,Intel,ZF-4392,2025,21,202521,21/05/2025,3:39:00,EpmID:121324| SCN - Lot Abort ZF-4392 | ZF-4392 | ,121324,4.87,FC-008,53146443,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202521,Y,Y,GY86,P853275,ZF-4392,EpmID:121324| SCN - Lot Abort ZF-4392 | ZF-4392 | ,Short down,-14,0,2025-05-21_03:39:00_GY86,Y,1
|
||||
CR51,Intel,UL-90EA,2025,21,202521,23/05/2025,19:37:00,EpmID:121774| SCN - LOT ABORT UL-9101 | UL-90EA | ,121774,3.92,F&T and layout,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202521,Y,Y,CR51,P863919,UL-90EA,EpmID:121774| SCN - LOT ABORT UL-9101 | UL-90EA | ,Short down,-14,0,2025-05-23_19:37:00_CR51,Y,0
|
||||
CR51,Intel,UL-90EA,2025,21,202521,24/05/2025,19:49:00,EpmID:121771| SCN - Lot Abort for UL-90EA | UL-90EA | ,121771,3.43,null,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202521,Y,Y,CR51,P863919,UL-90EA,EpmID:121771| SCN - Lot Abort for UL-90EA | UL-90EA | ,Short down,-14,0,2025-05-24_19:49:00_CR51,Y,0
|
||||
CR51,Intel,UL-90EA,2025,22,202522,26/05/2025,15:45:00,EpmID:121781| SCN - lot abort on UL-90EA | UL-90EA | ,121781,4.08,F&T and layout,53145688,P863919,P863919,7,0,Too high RCW flow on NxZ12 & PxZ10 (PX side) WaterFlow (Supply Valve 54: MM1 NX & PX) on OMM testrig 2 (BH88 - pilot 2),SP 23 fix,202522,Y,Y,CR51,P863919,UL-90EA,EpmID:121781| SCN - lot abort on UL-90EA | UL-90EA | ,Short down,-13,0,2025-05-26_15:45:00_CR51,Y,0
|
||||
GY86,Intel,PX-B6FC,2025,22,202522,27/05/2025,17:04:00,EpmID:122055| SCN - lot abort recovery PX-B6FC | PX-B6FC | ,122055,0.63,,53152113,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202522,Y,Y,GY86,P820514,PX-B6FC,EpmID:122055| SCN - lot abort recovery PX-B6FC | PX-B6FC | ,Short down,-13,0,2025-05-27_17:04:00_GY86,Y,0
|
||||
GT69,TSMC,LBB-2004,2025,23,202523,5/06/2025,22:50:11,BTS N2 purge interlock tripped / Replace EP10,#VALUE!,26.78,FC-072,53160039,P891530,P891530,7,0,"FFA-FU: LBB-2004 Temperature switch discrepancy detected, but can not find root cause by official T/S Wo",0,202523,Y,Y,GT69,P891530,LBB-2004,BTS N2 purge interlock tripped / Replace EP10,XLD,-12,0,2025-06-05_22:50:11_GT69,Y,0
|
||||
GT69,TSMC,WE-0406,2025,23,202523,8/06/2025,14:54:57,HIPA SLR/P/C VWH,#VALUE!,3.98,FC-001,53161866,,53161866,0,no AIR,no AIR,0,202523,N,Y,GT69,53161866,WE-0406,HIPA SLR/P/C VWH,Short down,-12,0,2025-06-08_14:54:57_GT69,N,0
|
||||
CR51,Intel,RH-C1C7,2025,24,202524,6/10/2025,6:49:00,EpmID:123440| SCN - Barcode read failed | RH-C1C7 | ,123440,0.63,,53123912,P823264,P823264,7,0,Reticle Inventory fails due to 2DBCR cannot read barcode,Working on diagnostic patch to continue RCA,202524,N,Y,CR51,P823264,RH-C1C7,EpmID:123440| SCN - Barcode read failed | RH-C1C7 | ,Short down,-11,0,2025-06-10_06:49:00_CR51,N,0
|
||||
CR51,Intel,RM-3246,2025,24,202524,6/11/2025,9:32:00,EpmID:123763| SCN - lot failed on RM-3246+REMA health check (Lot Abort) | RM-3246 | NotSet ,123763,6.42,,53165239,P870861,P870861,7,0,MMDC for X mutual crash protection can give false positive trips after MRE2OC calibration,RCA,202524,Y,Y,CR51,P870861,RM-3246,EpmID:123763| SCN - lot failed on RM-3246+REMA health check (Lot Abort) | RM-3246 | NotSet ,Short down,-11,0,2025-06-11_09:32:00_CR51,Y,0
|
||||
GT69,TSMC,WX-803D,2025,24,202524,6/12/2025,18:38:16,BSLr-Overlay lot queue can not start,#VALUE!,0.55,,noSO,RCA,RCA,3,not found,BSLr-Overlay lot queue can not start,Callibration issue Post EQ,202524,N,Y,GT69,EQ,WX-803D,BSLr-Overlay lot queue can not start,Short down,-11,0,2025-06-12_18:38:16_GT69,N,0
|
||||
CR51,Intel,RU-14C5,2025,25,202525,6/16/2025,03:22:00,EpmID:123923| SCN - Lot Abort RU-14C5+NJ-94D3 Laser HW Failure | RU-14C5 |,123923,14.37,SPM,53169138,P889696,P889696,7,0,[EXE][GN93][Pil7] RETEX22 RELIAB queue failed on reticle unload - RU-14C5,Monitoring waiting for next fail to load /reticle mis align(2 hits),202525,Y,Y,CR51,P889696,RU-14C5,EpmID:123923| SCN - Lot Abort RU-14C5+NJ-94D3 Laser HW Failure | RU-14C5 |,XLD,-10,0,2025-06-16_03:22:00_CR51,Y,0
|
||||
GT69,TSMC,RU-4629,2025,25,202525,6/19/2025,18:23:16,RH LL PG Servo error,#VALUE!,1.20,FC-002,53163700,P892467,P892467,7,0,[GT69] Intermittent RH MMDC LDLK EIP PRS PLB Sensor,Active Sensor health needed (current containment reinit),202525,N,Y,GT69,P892467,RU-4629,RH LL PG Servo error,Short down,-10,0,2025-06-19_18:23:16_GT69,N,0
|
||||
CR51,Intel,MOI-0045,2025,25,202525,6/20/2025,09:08:00,EpmID:124617| SRC - Lot Abort for SRC Laser Control | MOI-0045 |,124617,4.10,#ND#,53173690,P897069,P897069,7,0,CR51 lot abort MOI-0045: SRC - Lot Abort for SRC Laser Control ,RCA monitoring,202525,Y,Y,CR51,P897069,MOI-0045,EpmID:124617| SRC - Lot Abort for SRC Laser Control | MOI-0045 |,Short down,-10,0,2025-06-20_09:08:00_CR51,Y,0
|
||||
GT69,TSMC,IS-1363,2025,25,202525,6/20/2025,06:53:08,Failed TIS scan fit sanity acceptance check / Run WPPD & NJCAWS re-init,#VALUE!,3.15,#ND#,53172635,P817298,P817298,7,0,EQHBMI (Coarse POB Calibration) Fails due to [CN-00C0] Closed connection due to read timeo,sp 22,202525,Y,Y,GT69,P817298,IS-1363,Failed TIS scan fit sanity acceptance check / Run WPPD & NJCAWS re-init,Short down,-10,0,2025-06-20_06:53:08_GT69,Y,1
|
||||
GY86,Intel,SF-4514,2025,25,202525,6/21/2025,09:07:00,EpmID:124640| SCN - Lot Abort for SF Error | SF-4514 |,124640,9.12,FC-005,53174183,P855852,P855852,7,0,[SF-4514] ALSC NOK caused AS-055A lot aborts,0,202525,Y,Y,GY86,P855852,SF-4514,EpmID:124640| SCN - Lot Abort for SF Error | SF-4514 |,Short down,-10,0,2025-06-21_09:07:00_GY86,Y,0
|
||||
GT69,TSMC,CN-0001,2025,26,202526,6/24/2025,08:19:10,WH timeout,,1.20,WH,53176225,,53176225,0,no AIR,"SYSTEM ERROR: CN-0001 DEFAULT,[[S2:WH, T1:WH AV",0,202526,Y,Y,GT69,53176225,CN-0001,WH timeout,Short down,-9,0,2025-06-24_08:19:10_GT69,Y,0
|
||||
GT69,TSMC,PG-6208,2025,26,202526,6/24/2025,18:00:00,MLS&IPT driver error,,0.84,FC-025,53176903,,53176903,0,no AIR,"After Overlay-MML readout at 18:00 ,MLS&IPT driver get error whenunloading reticle.",0,202526,N,Y,GT69,53176903,PG-6208,MLS&IPT driver error,Short down,-9,0,2025-06-24_18:00:00_GT69,N,0
|
||||
GT69,TSMC,SM-6003,2025,26,202526,6/27/2025,00:50:24,JNMW save failure / System restart,,21.73,FC-027,53179413,,53179413,0,no AIR,"NJCAWS task died so JNMW CPD save MCs failed,Try hp host reset-->invalid",0,202526,N,Y,GT69,53179413,SM-6003,JNMW save failure / System restart,XLD,-9,0,2025-06-27_00:50:24_GT69,N,0
|
||||
GY86,Intel,CN-00C0,2025,26,202526,6/23/2025,15:12:00,EpmID:124896| SCN - lot abort on CN-00C0 | CN-00C0 |,124896,3.70,#ND#,53175883,,53175883,0,no AIR,CU_OT_Lot Abort for NJCAWS timeout,0,202526,Y,Y,GY86,53175883,CN-00C0,EpmID:124896| SCN - lot abort on CN-00C0 | CN-00C0 |,Short down,-9,0,2025-06-23_15:12:00_GY86,Y,0
|
||||
CR51,Intel,PG-73EA,2025,26,202526,6/26/2025,19:00:00,EpmID:125345| SCN - Lot abort IVR MMDC | PG-73EA |,125345,0.55,FC-025,53179636,P691987,P691987,7,0,"P691987 - (PTR1, XETR) IVR failed to init during reliability init/term cycling - Brake box internal",RCA monitoring,202526,Y,Y,CR51,P691987,PG-73EA,EpmID:125345| SCN - Lot abort IVR MMDC | PG-73EA |,Short down,-9,0,2025-06-26_19:00:00_CR51,Y,0
|
||||
CR51,Intel,PX-B6FC,2025,27,202527,7/6/2025,23:09:00,EpmID:126082 | SCN - Lot Pause PX-B6FC,126082,0.27,FC-012,53188984,P820514,P820514,7,0,[GY86] PX-B6FC Laser amplifier error: HILA Response communication error detected.,Target release SP23,202527,Y,Y,CR51,P820514,PX-B6FC,EpmID:126082 | SCN - Lot Pause PX-B6FC,Short down,-8,0,2025-07-06_23:09:00_CR51,Y,0
|
||||
CR51,Intel,LSA-0251,2025,27,202527,7/5/2025,20:05:00,EpmID:126094,126094,2.58,,53188036,,53188036,0,no AIR,SU_OT_Lot_Abort_LSA-0251,0,202527,Y,Y,CR51,53188036,LSA-0251,EpmID:126094,Short down,-8,0,2025-07-05_20:05:00_CR51,Y,0
|
||||
GT69,TSMC,#ND#,2025,29,202529,7/16/2025,17:47:00,BSL abnormal / fingerprint Overlay unstable,#VALUE!,6.46,#ND#,53196805,P833115,P833115,7,0,"EXE 5000 POB Mini-setup (Phase 1: enable automatic triggering, include tilt dependencies)",SP24 solution to include auto cal after init,202529,N,Y,GT69,P833115,#ND#,BSL abnormal / fingerprint Overlay unstable,Short down,-6,0,2025-07-16_17:47:00_GT69,N,0
|
||||
GT69,TSMC,#ND#,2025,29,202529,7/16/2025,01:00:29,BSL abnormal / fingerprint,#VALUE!,10.99,#ND#,53196805,P833115,P833115,7,0,"EXE 5000 POB Mini-setup (Phase 1: enable automatic triggering, include tilt dependencies)",SP24 solution to include auto cal after init,202529,N,Y,GT69,P833115,#ND#,BSL abnormal / fingerprint,Short down,-6,0,2025-07-16_01:00:29_GT69,N,0
|
||||
CR51,Intel,RU-14C5,2025,29,202529,7/20/2025,17:40:00,EpmID:128536| SCN - Lot Abort RU-14C5 | RU-14C5 |,128536,2.63,#ND#,53169138,P907669,P907669,7,0,Reticle sticks to RS during Unload due to charged RS clamp and/or reticle backside,Monitoring RCA,202529,Y,Y,CR51,P907669,RU-14C5,EpmID:128536| SCN - Lot Abort RU-14C5 | RU-14C5 |,Short down,-6,0,2025-07-20_17:40:00_CR51,Y,0
|
||||
CR51,Intel,KN-0605,2025,29,202529,7/14/2025,19:10:00,EpmID:127039| SCN - Lot Abort for KN-0605 Error | KN-0605 |,127039,13.22,FC-064,53196092,P756444,P756444,7,0,[VHV][Proto2] NJTL fails on tunable laser HW error NJ-94D3,Overheating Laser,202529,Y,Y,CR51,P756444,KN-0605,EpmID:127039| SCN - Lot Abort for KN-0605 Error | KN-0605 |,XLD,-6,0,2025-07-14_19:10:00_CR51,Y,0
|
||||
CR51,Intel,LZ-321B,2025,29,202529,7/16/2025,14:20:00,EpmID:127427| SCN - LZ-321B lot abort | LZ-321B |,127427,49.47,FC-007,53197978,P904073,P904073,7,0,LZ-321B UVLS purge pressure Oos during lot production. would only get wafer reject. Need to escalate to lot abort,RCA monitoring,202529,N,Y,CR51,P904073,LZ-321B,EpmID:127427| SCN - LZ-321B lot abort | LZ-321B |,XLD,-6,0,2025-07-16_14:20:00_CR51,N,0
|
||||
GY86,Intel,RU-1B75,2025,30,202530,21/07/2025,03:50:00,EpmID:128542| SCN - Lot Abort for RU-1B75 | RU-1B75 |,128542,2.62,#ND#,53201826,P904929,P904929,7,0,mGY86 SWD RPAS performance is out of population,0,202530,Y,Y,GY86,P904929,RU-1B75,EpmID:128542| SCN - Lot Abort for RU-1B75 | RU-1B75 |,Short down,-5,0,2025-07-21_03:50:00_GY86,Y,0
|
||||
GY86,Intel,ZH-221D,2025,30,202530,23/07/2025,21:41:00,EpmID:129332| SCN - Lot error | ZH-221D |,129332,1.78,FC-025,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202530,Y,Y,GY86,P853275,ZH-221D,EpmID:129332| SCN - Lot error | ZH-221D |,Short down,-5,0,2025-07-23_21:41:00_GY86,Y,1
|
||||
GT69,TSMC,RU-2B23,2025,30,202530,23/07/2025,06:37:41,LDLK2 EIP Presence and Placed Badly Reflective Sensor,#VALUE!,0.85,#ND#,53163700,P892467,P892467,7,0,[GT69] Intermittent RH MMDC LDLK EIP PRS PLB Sensor,Active Sensor health needed (current containment reinit),202530,Y,Y,GT69,P892467,RU-2B23,LDLK2 EIP Presence and Placed Badly Reflective Sensor,Short down,-5,0,2025-07-23_06:37:41_GT69,Y,0
|
||||
GT69,TSMC,RU-2B23,2025,30,202530,23/07/2025,08:00:28,LDLK2 EIP Presence and Placed Badly Reflective Sensor/LDLK2 EIP PRS PLB AMP swap,#VALUE!,5.92,#ND#,53179413,P892467,P892467,7,0,[GT69] Intermittent RH MMDC LDLK EIP PRS PLB Sensor,Active Sensor health needed (current containment reinit),202530,N,Y,GT69,P892467,RU-2B23,LDLK2 EIP Presence and Placed Badly Reflective Sensor/LDLK2 EIP PRS PLB AMP swap,Short down,-5,0,2025-07-23_08:00:28_GT69,N,0
|
||||
GT69,TSMC,RH-8550,2025,30,202530,25/07/2025,13:47:17,2DBCR reading error,#VALUE!,2.94,FC-002,53205870,P906475,P906475,7,0,System suffer RH-8550 data store mismatch after unload POD from LDPT2,Monitoring alignment,202530,N,Y,GT69,P906475,RH-8550,2DBCR reading error,Short down,-5,0,2025-07-25_13:47:17_GT69,N,0
|
||||
GT69,TSMC,LAW-1001,2025,30,202530,24/07/2025,00:49:56,PA1 pressure too high,#VALUE!,7.71,FC-712,53204135,,53204135,0,no AIR,no AIR,Slow purge valve stuck (core replaced),202530,N,Y,GT69,53204135,LAW-1001,PA1 pressure too high,Short down,-5,0,2025-07-24_00:49:56_GT69,N,0
|
||||
CR51,Intel,RU-14C5,2025,30,202530,23/07/2025,06:06:00,EpmID:129119| SCN - Lot abort due to RU-14C5 | RU-14C5 |,129119,2.8,#ND#,53204067,P907669,P907669,7,0,Reticle sticks to RS during Unload due to charged RS clamp and/or reticle backside,Monitoring RCA,202530,Y,Y,CR51,P907669,RU-14C5,EpmID:129119| SCN - Lot abort due to RU-14C5 | RU-14C5 |,Short down,-5,0,2025-07-23_06:06:00_CR51,Y,0
|
||||
GT69,TSMC,RU-1BA5,2025,31,202531,28/07/2025,14:17:44,Prealignment not valid for current reticle,#VALUE!,2.828889,#ND#,53208036,P906799,P906799,7,0, [GT69] RPAS Pre-alignment step skipped during lot operation/RetEx fails because reticle pre-align not completed ,Should be fixed during RETEX 22 intro,202531,Y,Y,GT69,P906799,RU-1BA5,Prealignment not valid for current reticle,Short down,-4,0,2025-07-28_14:17:44_GT69,Y,0
|
||||
GT69,TSMC,RU-1BA5,2025,31,202531,03/08/2025,14:36:49,Prealignment not valid for current reticle/one button re init,#VALUE!,1.636389,#ND#,53208036,P906799,P906799,7,0, [GT69] RPAS Pre-alignment step skipped during lot operation/RetEx fails because reticle pre-align not completed ,Should be fixed during RETEX 22 intro,202531,Y,Y,GT69,P906799,RU-1BA5,Prealignment not valid for current reticle/one button re init,Short down,-4,0,2025-08-03_14:36:49_GT69,Y,0
|
||||
GT69,TSMC,WZ-0D04,2025,31,202531,03/08/2025,12:56:38,ALR moving error/host reset WH,#VALUE!,1.339444,#ND#,53213625,,53213625,0,no AIR,no AIR,0,202531,Y,Y,GT69,53213625,WZ-0D04,ALR moving error/host reset WH,Short down,-4,0,2025-08-03_12:56:38_GT69,Y,0
|
||||
GT69,TSMC,UR-04AE,2025,31,202531,31/07/2025,03:34:03,IPT hang up,#VALUE!,0.389444,#ND#,53157326,P907514,P907514,7,0,UR-04AE mGT69 IPT hang up/Database integrity issue: #reticles ,0,202531,N,N,GT69,P907514,UR-04AE,IPT hang up,Short down,-4,0,2025-07-31_03:34:03_GT69,N,0
|
||||
GT69,TSMC,UR-04AE,2025,31,202531,30/07/2025,23:56:15,IPT hang up,#VALUE!,2.765556,#ND#,53210596,P907514,P907514,7,0,UR-04AE mGT69 IPT hang up/Database integrity issue: #reticles ,0,202531,N,N,GT69,P907514,UR-04AE,IPT hang up,Short down,-4,0,2025-07-30_23:56:15_GT69,N,0
|
||||
GT69,TSMC,UR-04AE,2025,31,202531,31/07/2025,07:36:44,IPT hang up/host reset,#VALUE!,1.410278,#ND#,53210596,,53210596,0,no AIR,no AIR,0,202531,N,N,GT69,53210596,UR-04AE,IPT hang up/host reset,Short down,-4,0,2025-07-31_07:36:44_GT69,N,0
|
||||
GY86,Intel,PG-6206,2025,32,202532,05/08/2025,21:58:00,EpmID:130743| SCN - PG-6206 lot abort | PG-6206 |,130743,1.166667,,53216548,,53216548,0,no AIR,no AIR,0,202532,Y,Y,GY86,53216548,PG-6206,SLR postion error,Short down,-3,0,2025-08-05_21:58:00_GY86,Y,0
|
||||
GT69,TSMC,WP-2C1D,2025,32,202532,10/08/2025,17:14:48,DYPL failed/,#VALUE!,6.425278,,53219953,,53219953,0,no AIR,no AIR,0,202532,N,Y,GT69,53219953,WP-2C1D,DYPL failed/,Short down,-3,0,2025-08-10_17:14:48_GT69,N,0
|
||||
GY86,Intel,ZF-4392,2025,33,202533,14/08/2025,06:39:00,EpmID:131885| SCN - lot abort ZF-4392 | ZF-4392 |,131885,8.25,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZF-4392,EpmID:131885| SCN - lot abort ZF-4392 | ZF-4392 |,Short down,-2,0,2025-08-14_06:39:00_GY86,Y,1
|
||||
GY86,Intel,ZH-221D,2025,33,202533,12/08/2025,09:19:00,EpmID:131371| SCN - Lot abort ZH-221D | ZH-221D |,131371,1.566667,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZH-221D,EpmID:131371| SCN - Lot abort ZH-221D | ZH-221D |,Short down,-2,0,2025-08-12_09:19:00_GY86,Y,1
|
||||
GY86,Intel,ZH-221D,2025,33,202533,17/08/2025,06:39:00,EpmID:131958| SCN - Lot Abort | ZH-221D |,131958,1.383333,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,Y,Y,GY86,P853275,ZH-221D,EpmID:131958| SCN - Lot Abort | ZH-221D |,Short down,-2,0,2025-08-17_06:39:00_GY86,Y,1
|
||||
GY86,Intel,ZF-4392,2025,33,202533,12/08/2025,18:50:00,EpmID:131366| SCN - Lot Abort ZF-4392 | ZF-4392 |,131366,1.333333,,53204682,P853275,P853275,7,0,P853275 - NXE:3800E and EXE:5000 Destination Violation Error ZH-221D,Firmware delivered W19 (COB swap done),202533,N,Y,GY86,P853275,ZF-4392,EpmID:131366| SCN - Lot Abort ZF-4392 | ZF-4392 |,Short down,-2,0,2025-08-12_18:50:00_GY86,N,1
|
||||
GT69,TSMC,DW-5C01,2025,33,202533,13/08/2025,11:09:27,lot abort by DW-5C01,#VALUE!,2.923889,,53227023,,53227023,0,no AIR,no AIR,0,202533,Y,Y,GT69,53227023,DW-5C01,lot abort by DW-5C01,Short down,-2,0,2025-08-13_11:09:27_GT69,Y,0
|
||||
GT69,TSMC,DW-5C01,2025,33,202533,15/08/2025,18:49:28,lot abort by DW-5C01,#VALUE!,3.938889,,53227023,,53227023,0,no AIR,no AIR,0,202533,Y,Y,GT69,53227023,DW-5C01,lot abort by DW-5C01,Short down,-2,0,2025-08-15_18:49:28_GT69,Y,0
|
||||
CR51,Intel,SM-2307,2025,33,202533,15/08/2025,14:56:00,EpmID:131953| SCN - Lot abort lost heatbeat SM-2307 | SM-2307 |,131953,6.616667,,53225256,,53225256,0,no AIR,no AIR,0,202533,Y,Y,CR51,53225256,SM-2307,EpmID:131953| SCN - Lot abort lost heatbeat SM-2307 | SM-2307 |,Short down,-2,0,2025-08-15_14:56:00_CR51,Y,0
|
||||
|
Executable
BIN
Binary file not shown.
Regular → Executable
Regular → Executable
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"load_extensions": {
|
||||
"dash/main": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2018-2025 Faculty Science Limited
|
||||
Copyright 2025 the dash-bootstrap-components maintainers
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -0,0 +1 @@
|
||||
uv
|
||||
@@ -0,0 +1,28 @@
|
||||
Copyright 2010 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,92 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: MarkupSafe
|
||||
Version: 3.0.2
|
||||
Summary: Safely add untrusted strings to HTML/XML markup.
|
||||
Maintainer-email: Pallets <contact@palletsprojects.com>
|
||||
License: Copyright 2010 Pallets
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Project-URL: Donate, https://palletsprojects.com/donate
|
||||
Project-URL: Documentation, https://markupsafe.palletsprojects.com/
|
||||
Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/
|
||||
Project-URL: Source, https://github.com/pallets/markupsafe/
|
||||
Project-URL: Chat, https://discord.gg/pallets
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
||||
Classifier: Topic :: Text Processing :: Markup :: HTML
|
||||
Classifier: Typing :: Typed
|
||||
Requires-Python: >=3.9
|
||||
Description-Content-Type: text/markdown
|
||||
License-File: LICENSE.txt
|
||||
|
||||
# MarkupSafe
|
||||
|
||||
MarkupSafe implements a text object that escapes characters so it is
|
||||
safe to use in HTML and XML. Characters that have special meanings are
|
||||
replaced so that they display as the actual characters. This mitigates
|
||||
injection attacks, meaning untrusted user input can safely be displayed
|
||||
on a page.
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
```pycon
|
||||
>>> from markupsafe import Markup, escape
|
||||
|
||||
>>> # escape replaces special characters and wraps in Markup
|
||||
>>> escape("<script>alert(document.cookie);</script>")
|
||||
Markup('<script>alert(document.cookie);</script>')
|
||||
|
||||
>>> # wrap in Markup to mark text "safe" and prevent escaping
|
||||
>>> Markup("<strong>Hello</strong>")
|
||||
Markup('<strong>hello</strong>')
|
||||
|
||||
>>> escape(Markup("<strong>Hello</strong>"))
|
||||
Markup('<strong>hello</strong>')
|
||||
|
||||
>>> # Markup is a str subclass
|
||||
>>> # methods and operators escape their arguments
|
||||
>>> template = Markup("Hello <em>{name}</em>")
|
||||
>>> template.format(name='"World"')
|
||||
Markup('Hello <em>"World"</em>')
|
||||
```
|
||||
|
||||
## Donate
|
||||
|
||||
The Pallets organization develops and supports MarkupSafe and other
|
||||
popular packages. In order to grow the community of contributors and
|
||||
users, and allow the maintainers to devote more time to the projects,
|
||||
[please donate today][].
|
||||
|
||||
[please donate today]: https://palletsprojects.com/donate
|
||||
@@ -0,0 +1,13 @@
|
||||
MarkupSafe-3.0.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
||||
MarkupSafe-3.0.2.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475
|
||||
MarkupSafe-3.0.2.dist-info/METADATA,sha256=aAwbZhSmXdfFuMM-rEHpeiHRkBOGESyVLJIuwzHP-nw,3975
|
||||
MarkupSafe-3.0.2.dist-info/RECORD,,
|
||||
MarkupSafe-3.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
MarkupSafe-3.0.2.dist-info/WHEEL,sha256=wZi4olA0NR6c8yfzURN7DX9ImcSoHfH-g7UT7-9uFnE,109
|
||||
MarkupSafe-3.0.2.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11
|
||||
markupsafe/__init__.py,sha256=sr-U6_27DfaSrj5jnHYxWN-pvhM27sjlDplMDPZKm7k,13214
|
||||
markupsafe/_native.py,sha256=hSLs8Jmz5aqayuengJJ3kdT5PwNpBWpKrmQSdipndC8,210
|
||||
markupsafe/_speedups.c,sha256=O7XulmTo-epI6n2FtMVOrJXl8EAaIwD2iNYmBI5SEoQ,4149
|
||||
markupsafe/_speedups.cpython-311-darwin.so,sha256=NHnXuz84IzAulUxl_VDkSUlQVKrzHXMIAWxCi0e01dM,50688
|
||||
markupsafe/_speedups.pyi,sha256=ENd1bYe7gbBUf2ywyYWOGUpnXOHNJ-cgTNqetlW8h5k,41
|
||||
markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (75.2.0)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp311-cp311-macosx_11_0_arm64
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
markupsafe
|
||||
@@ -0,0 +1,7 @@
|
||||
dash-bootstrap-components
|
||||
Copyright 2018-2025 Faculty Science Limited
|
||||
Copyright 2025 the dash-bootstrap-components maintainers
|
||||
|
||||
This product includes software originally developed at Faculty Science Limited (https://faculty.ai/).
|
||||
|
||||
The dash-bootstrap-components logo was originally designed by Bureau Bureau (https://bureaubureau.uk/).
|
||||
@@ -0,0 +1 @@
|
||||
uv
|
||||
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2017-2021 Ingy döt Net
|
||||
Copyright (c) 2006-2016 Kirill Simonov
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,46 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: PyYAML
|
||||
Version: 6.0.2
|
||||
Summary: YAML parser and emitter for Python
|
||||
Home-page: https://pyyaml.org/
|
||||
Download-URL: https://pypi.org/project/PyYAML/
|
||||
Author: Kirill Simonov
|
||||
Author-email: xi@resolvent.net
|
||||
License: MIT
|
||||
Project-URL: Bug Tracker, https://github.com/yaml/pyyaml/issues
|
||||
Project-URL: CI, https://github.com/yaml/pyyaml/actions
|
||||
Project-URL: Documentation, https://pyyaml.org/wiki/PyYAMLDocumentation
|
||||
Project-URL: Mailing lists, http://lists.sourceforge.net/lists/listinfo/yaml-core
|
||||
Project-URL: Source Code, https://github.com/yaml/pyyaml
|
||||
Platform: Any
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Cython
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: Text Processing :: Markup
|
||||
Requires-Python: >=3.8
|
||||
License-File: LICENSE
|
||||
|
||||
YAML is a data serialization format designed for human readability
|
||||
and interaction with scripting languages. PyYAML is a YAML parser
|
||||
and emitter for Python.
|
||||
|
||||
PyYAML features a complete YAML 1.1 parser, Unicode support, pickle
|
||||
support, capable extension API, and sensible error messages. PyYAML
|
||||
supports standard YAML tags and provides Python-specific tags that
|
||||
allow to represent an arbitrary Python object.
|
||||
|
||||
PyYAML is applicable for a broad range of tasks from complex
|
||||
configuration files to object serialization and persistence.
|
||||
@@ -0,0 +1,26 @@
|
||||
PyYAML-6.0.2.dist-info/INSTALLER,sha256=5hhM4Q4mYTT9z6QB6PGpUAW81PGNFrYrdXMj4oM_6ak,2
|
||||
PyYAML-6.0.2.dist-info/LICENSE,sha256=jTko-dxEkP1jVwfLiOsmvXZBAqcoKVQwfT5RZ6V36KQ,1101
|
||||
PyYAML-6.0.2.dist-info/METADATA,sha256=9-odFB5seu4pGPcEv7E8iyxNF51_uKnaNGjLAhz2lto,2060
|
||||
PyYAML-6.0.2.dist-info/RECORD,,
|
||||
PyYAML-6.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
PyYAML-6.0.2.dist-info/WHEEL,sha256=LFVzND6nAdWMS-norKkn42oL86bk-j1PiLvh1xzptX0,110
|
||||
PyYAML-6.0.2.dist-info/top_level.txt,sha256=rpj0IVMTisAjh_1vG3Ccf9v5jpCQwAz6cD1IVU5ZdhQ,11
|
||||
_yaml/__init__.py,sha256=04Ae_5osxahpJHa3XBZUAf4wi6XX32gR8D6X6p64GEA,1402
|
||||
yaml/__init__.py,sha256=N35S01HMesFTe0aRRMWkPj0Pa8IEbHpE9FK7cr5Bdtw,12311
|
||||
yaml/_yaml.cpython-311-darwin.so,sha256=YdahBTjS8KitV8Lm6bzs2ON1yRZtfHTI-UguNFhwElI,359272
|
||||
yaml/composer.py,sha256=_Ko30Wr6eDWUeUpauUGT3Lcg9QPBnOPVlTnIMRGJ9FM,4883
|
||||
yaml/constructor.py,sha256=kNgkfaeLUkwQYY_Q6Ff1Tz2XVw_pG1xVE9Ak7z-viLA,28639
|
||||
yaml/cyaml.py,sha256=6ZrAG9fAYvdVe2FK_w0hmXoG7ZYsoYUwapG8CiC72H0,3851
|
||||
yaml/dumper.py,sha256=PLctZlYwZLp7XmeUdwRuv4nYOZ2UBnDIUy8-lKfLF-o,2837
|
||||
yaml/emitter.py,sha256=jghtaU7eFwg31bG0B7RZea_29Adi9CKmXq_QjgQpCkQ,43006
|
||||
yaml/error.py,sha256=Ah9z-toHJUbE9j-M8YpxgSRM5CgLCcwVzJgLLRF2Fxo,2533
|
||||
yaml/events.py,sha256=50_TksgQiE4up-lKo_V-nBy-tAIxkIPQxY5qDhKCeHw,2445
|
||||
yaml/loader.py,sha256=UVa-zIqmkFSCIYq_PgSGm4NSJttHY2Rf_zQ4_b1fHN0,2061
|
||||
yaml/nodes.py,sha256=gPKNj8pKCdh2d4gr3gIYINnPOaOxGhJAUiYhGRnPE84,1440
|
||||
yaml/parser.py,sha256=ilWp5vvgoHFGzvOZDItFoGjD6D42nhlZrZyjAwa0oJo,25495
|
||||
yaml/reader.py,sha256=0dmzirOiDG4Xo41RnuQS7K9rkY3xjHiVasfDMNTqCNw,6794
|
||||
yaml/representer.py,sha256=IuWP-cAW9sHKEnS0gCqSa894k1Bg4cgTxaDwIcbRQ-Y,14190
|
||||
yaml/resolver.py,sha256=9L-VYfm4mWHxUD1Vg4X7rjDRK_7VZd6b92wzq7Y2IKY,9004
|
||||
yaml/scanner.py,sha256=YEM3iLZSaQwXcQRg2l2R4MdT0zGP2F9eHkKGKnHyWQY,51279
|
||||
yaml/serializer.py,sha256=ChuFgmhU01hj4xgI8GaKv6vfM2Bujwa9i7d2FAHj7cA,4165
|
||||
yaml/tokens.py,sha256=lTQIzSVw8Mg9wv459-TjiOQe6wVziqaRlqX2_89rp54,2573
|
||||
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: bdist_wheel (0.44.0)
|
||||
Root-Is-Purelib: false
|
||||
Tag: cp311-cp311-macosx_11_0_arm64
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
_yaml
|
||||
yaml
|
||||
@@ -0,0 +1,124 @@
|
||||
<p align="center">
|
||||
<a href="https://www.dash-bootstrap-components.com/">
|
||||
<img src="https://cdn.jsdelivr.net/gh/dbc-team/dash-bootstrap-components@main/readme-images/logo.png" alt="dash-bootstrap-components logo" width="200" height="200">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h3 align="center">Dash Bootstrap Components</h3>
|
||||
|
||||
<p align="center">
|
||||
Bootstrap components for Plotly Dash
|
||||
<br>
|
||||
<a href="https://www.dash-bootstrap-components.com/">Explore the documentation</a>
|
||||
·
|
||||
<a href="https://github.com/dbc-team/dash-bootstrap-components/issues/new?template=bug.md">Report a bug</a>
|
||||
·
|
||||
<a href="https://github.com/dbc-team/dash-bootstrap-components/issues/new?template=feature.md">Request a feature</a>
|
||||
<br>
|
||||
<br>
|
||||
<img alt="GitHub Actions" src="https://github.com/dbc-team/dash-bootstrap-components/actions/workflows/tests.yml/badge.svg">
|
||||
<img alt="GitHub" src="https://img.shields.io/github/license/dbc-team/dash-bootstrap-components">
|
||||
<img alt="PyPI" src="https://img.shields.io/pypi/v/dash-bootstrap-components">
|
||||
<img alt="Conda (channel only)" src="https://img.shields.io/conda/vn/conda-forge/dash-bootstrap-components">
|
||||
<img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/dash-bootstrap-components">
|
||||
</p>
|
||||
|
||||
_dash-bootstrap-components_ is a library of [Bootstrap][bootstrap-homepage]
|
||||
components for use with [Plotly Dash][dash-homepage], that makes it easier to
|
||||
build consistently styled Dash apps with complex, responsive layouts.
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [Installation](#installation)
|
||||
- [Quick start](#quick-start)
|
||||
- [Contributing](#contributing)
|
||||
- [Copyright and license](#copyright-and-license)
|
||||
|
||||
## Installation
|
||||
|
||||
### PyPI
|
||||
|
||||
You can install _dash-bootstrap-components_ with `pip`:
|
||||
|
||||
```sh
|
||||
pip install dash-bootstrap-components
|
||||
```
|
||||
|
||||
### Anaconda
|
||||
|
||||
You can also install _dash-bootstrap-components_ with `conda` through the
|
||||
conda-forge channel:
|
||||
|
||||
```sh
|
||||
conda install -c conda-forge dash-bootstrap-components
|
||||
```
|
||||
|
||||
## Quick start
|
||||
|
||||
To use _dash-bootstrap-components_ you must do two things:
|
||||
|
||||
- Link a Bootstrap v5 compatible stylesheet
|
||||
- Incorporate _dash-bootstrap-components_ into your layout
|
||||
|
||||
### Linking a stylesheet
|
||||
|
||||
_dash-bootstrap-components_ doesn't come with CSS included. This is to give you
|
||||
the freedom to use any Bootstrap v5 stylesheet of your choice. This means
|
||||
however that in order for the components to be styled properly, you must link
|
||||
to a stylesheet yourself.
|
||||
|
||||
For convenience, links to [BootstrapCDN][bootstrapcdn] for each theme are
|
||||
available through the `themes` module, which can be used as follows:
|
||||
|
||||
```python
|
||||
import dash
|
||||
import dash_bootstrap_components as dbc
|
||||
|
||||
app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])
|
||||
```
|
||||
|
||||
For more information on how to link local or external CSS, check out the
|
||||
[Dash documentation][dash-docs-external].
|
||||
|
||||
### Build the layout
|
||||
|
||||
With CSS linked, you can start building your app's layout with our Bootstrap
|
||||
components. These include layout components for organising the content of your app on the page, as well as UI components like navbars, cards, alerts and many more.
|
||||
|
||||

|
||||
|
||||
See our [_documentation_][docs-components] for a full list of available
|
||||
components.
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome contributions to _dash-bootstrap-components_. If you find a bug or
|
||||
something is unclear please [submit a bug report][bug-report], if you have ideas
|
||||
for new features please feel free to make a [feature request][feature-request].
|
||||
|
||||
If you would like to submit a pull request, please read our
|
||||
[contributing guide][contribution-guide], which contains instructions on how to
|
||||
build and install _dash-bootstrap-components_ locally, how to check your code
|
||||
will pass our linting checks, and how to submit the pull request itself.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
The _dash-bootstrap-components_ maintainers would like to thank [Faculty][faculty] for their early support in helping this project get off the ground. Since 2025, it has been maintained by the Dash community.
|
||||
|
||||
## Copyright and license
|
||||
|
||||
Copyright © 2018–2025 [Faculty Science Ltd.][faculty]
|
||||
Copyright © 2025 the _dash-bootstrap-components_ maintainers
|
||||
|
||||
Released under the [Apache 2.0 license](https://github.com/dbc-team/dash-bootstrap-components/blob/main/LICENSE).
|
||||
|
||||
|
||||
[dash-homepage]: https://dash.plotly.com/
|
||||
[dash-docs-external]: https://dash.plotly.com/external-resources
|
||||
[bootstrap-homepage]: https://getbootstrap.com/
|
||||
[docs-components]: https://www.dash-bootstrap-components.com/docs/components
|
||||
[bootstrapcdn]: https://www.bootstrapcdn.com/
|
||||
[faculty]: https://faculty.ai
|
||||
[bug-report]: https://github.com/dbc-team/dash-bootstrap-components/issues/new?template=bug.md
|
||||
[feature-request]: https://github.com/dbc-team/dash-bootstrap-components/issues/new?template=feature.md
|
||||
[contribution-guide]: https://github.com/dbc-team/dash-bootstrap-components/blob/main/.github/CONTRIBUTING.md
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,883 @@
|
||||
"""
|
||||
colors
|
||||
=====
|
||||
|
||||
Functions that manipulate colors and arrays of colors.
|
||||
|
||||
-----
|
||||
There are three basic types of color types: rgb, hex and tuple:
|
||||
|
||||
rgb - An rgb color is a string of the form 'rgb(a,b,c)' where a, b and c are
|
||||
integers between 0 and 255 inclusive.
|
||||
|
||||
hex - A hex color is a string of the form '#xxxxxx' where each x is a
|
||||
character that belongs to the set [0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f]. This is
|
||||
just the set of characters used in the hexadecimal numeric system.
|
||||
|
||||
tuple - A tuple color is a 3-tuple of the form (a,b,c) where a, b and c are
|
||||
floats between 0 and 1 inclusive.
|
||||
|
||||
-----
|
||||
Colormaps and Colorscales:
|
||||
A colormap or a colorscale is a correspondence between values - Pythonic
|
||||
objects such as strings and floats - to colors.
|
||||
|
||||
There are typically two main types of colormaps that exist: numerical and
|
||||
categorical colormaps.
|
||||
|
||||
Numerical:
|
||||
----------
|
||||
Numerical colormaps are used when the coloring column being used takes a
|
||||
spectrum of values or numbers.
|
||||
|
||||
A classic example from the Plotly library:
|
||||
```
|
||||
rainbow_colorscale = [
|
||||
[0, 'rgb(150,0,90)'], [0.125, 'rgb(0,0,200)'],
|
||||
[0.25, 'rgb(0,25,255)'], [0.375, 'rgb(0,152,255)'],
|
||||
[0.5, 'rgb(44,255,150)'], [0.625, 'rgb(151,255,0)'],
|
||||
[0.75, 'rgb(255,234,0)'], [0.875, 'rgb(255,111,0)'],
|
||||
[1, 'rgb(255,0,0)']
|
||||
]
|
||||
```
|
||||
|
||||
Notice that this colorscale is a list of lists with each inner list containing
|
||||
a number and a color. These left hand numbers in the nested lists go from 0 to
|
||||
1, and they are like pointers tell you when a number is mapped to a specific
|
||||
color.
|
||||
|
||||
If you have a column of numbers `col_num` that you want to plot, and you know
|
||||
|
||||
```
|
||||
min(col_num) = 0
|
||||
max(col_num) = 100
|
||||
```
|
||||
|
||||
then if you pull out the number `12.5` in the list and want to figure out what
|
||||
color the corresponding chart element (bar, scatter plot, etc) is going to be,
|
||||
you'll figure out that proportionally 12.5 to 100 is the same as 0.125 to 1.
|
||||
So, the point will be mapped to 'rgb(0,0,200)'.
|
||||
|
||||
All other colors between the pinned values in a colorscale are linearly
|
||||
interpolated.
|
||||
|
||||
Categorical:
|
||||
------------
|
||||
Alternatively, a categorical colormap is used to assign a specific value in a
|
||||
color column to a specific color everytime it appears in the dataset.
|
||||
|
||||
A column of strings in a panadas.dataframe that is chosen to serve as the
|
||||
color index would naturally use a categorical colormap. However, you can
|
||||
choose to use a categorical colormap with a column of numbers.
|
||||
|
||||
Be careful! If you have a lot of unique numbers in your color column you will
|
||||
end up with a colormap that is massive and may slow down graphing performance.
|
||||
"""
|
||||
|
||||
import decimal
|
||||
from numbers import Number
|
||||
|
||||
from _plotly_utils import exceptions
|
||||
|
||||
|
||||
# Built-in qualitative color sequences and sequential,
|
||||
# diverging and cyclical color scales.
|
||||
#
|
||||
# Initially ported over from plotly_express
|
||||
from . import ( # noqa: F401
|
||||
qualitative,
|
||||
sequential,
|
||||
diverging,
|
||||
cyclical,
|
||||
cmocean,
|
||||
colorbrewer,
|
||||
carto,
|
||||
plotlyjs,
|
||||
)
|
||||
|
||||
DEFAULT_PLOTLY_COLORS = [
|
||||
"rgb(31, 119, 180)",
|
||||
"rgb(255, 127, 14)",
|
||||
"rgb(44, 160, 44)",
|
||||
"rgb(214, 39, 40)",
|
||||
"rgb(148, 103, 189)",
|
||||
"rgb(140, 86, 75)",
|
||||
"rgb(227, 119, 194)",
|
||||
"rgb(127, 127, 127)",
|
||||
"rgb(188, 189, 34)",
|
||||
"rgb(23, 190, 207)",
|
||||
]
|
||||
|
||||
PLOTLY_SCALES = {
|
||||
"Greys": [[0, "rgb(0,0,0)"], [1, "rgb(255,255,255)"]],
|
||||
"YlGnBu": [
|
||||
[0, "rgb(8,29,88)"],
|
||||
[0.125, "rgb(37,52,148)"],
|
||||
[0.25, "rgb(34,94,168)"],
|
||||
[0.375, "rgb(29,145,192)"],
|
||||
[0.5, "rgb(65,182,196)"],
|
||||
[0.625, "rgb(127,205,187)"],
|
||||
[0.75, "rgb(199,233,180)"],
|
||||
[0.875, "rgb(237,248,217)"],
|
||||
[1, "rgb(255,255,217)"],
|
||||
],
|
||||
"Greens": [
|
||||
[0, "rgb(0,68,27)"],
|
||||
[0.125, "rgb(0,109,44)"],
|
||||
[0.25, "rgb(35,139,69)"],
|
||||
[0.375, "rgb(65,171,93)"],
|
||||
[0.5, "rgb(116,196,118)"],
|
||||
[0.625, "rgb(161,217,155)"],
|
||||
[0.75, "rgb(199,233,192)"],
|
||||
[0.875, "rgb(229,245,224)"],
|
||||
[1, "rgb(247,252,245)"],
|
||||
],
|
||||
"YlOrRd": [
|
||||
[0, "rgb(128,0,38)"],
|
||||
[0.125, "rgb(189,0,38)"],
|
||||
[0.25, "rgb(227,26,28)"],
|
||||
[0.375, "rgb(252,78,42)"],
|
||||
[0.5, "rgb(253,141,60)"],
|
||||
[0.625, "rgb(254,178,76)"],
|
||||
[0.75, "rgb(254,217,118)"],
|
||||
[0.875, "rgb(255,237,160)"],
|
||||
[1, "rgb(255,255,204)"],
|
||||
],
|
||||
"Bluered": [[0, "rgb(0,0,255)"], [1, "rgb(255,0,0)"]],
|
||||
# modified RdBu based on
|
||||
# www.sandia.gov/~kmorel/documents/ColorMaps/ColorMapsExpanded.pdf
|
||||
"RdBu": [
|
||||
[0, "rgb(5,10,172)"],
|
||||
[0.35, "rgb(106,137,247)"],
|
||||
[0.5, "rgb(190,190,190)"],
|
||||
[0.6, "rgb(220,170,132)"],
|
||||
[0.7, "rgb(230,145,90)"],
|
||||
[1, "rgb(178,10,28)"],
|
||||
],
|
||||
# Scale for non-negative numeric values
|
||||
"Reds": [
|
||||
[0, "rgb(220,220,220)"],
|
||||
[0.2, "rgb(245,195,157)"],
|
||||
[0.4, "rgb(245,160,105)"],
|
||||
[1, "rgb(178,10,28)"],
|
||||
],
|
||||
# Scale for non-positive numeric values
|
||||
"Blues": [
|
||||
[0, "rgb(5,10,172)"],
|
||||
[0.35, "rgb(40,60,190)"],
|
||||
[0.5, "rgb(70,100,245)"],
|
||||
[0.6, "rgb(90,120,245)"],
|
||||
[0.7, "rgb(106,137,247)"],
|
||||
[1, "rgb(220,220,220)"],
|
||||
],
|
||||
"Picnic": [
|
||||
[0, "rgb(0,0,255)"],
|
||||
[0.1, "rgb(51,153,255)"],
|
||||
[0.2, "rgb(102,204,255)"],
|
||||
[0.3, "rgb(153,204,255)"],
|
||||
[0.4, "rgb(204,204,255)"],
|
||||
[0.5, "rgb(255,255,255)"],
|
||||
[0.6, "rgb(255,204,255)"],
|
||||
[0.7, "rgb(255,153,255)"],
|
||||
[0.8, "rgb(255,102,204)"],
|
||||
[0.9, "rgb(255,102,102)"],
|
||||
[1, "rgb(255,0,0)"],
|
||||
],
|
||||
"Rainbow": [
|
||||
[0, "rgb(150,0,90)"],
|
||||
[0.125, "rgb(0,0,200)"],
|
||||
[0.25, "rgb(0,25,255)"],
|
||||
[0.375, "rgb(0,152,255)"],
|
||||
[0.5, "rgb(44,255,150)"],
|
||||
[0.625, "rgb(151,255,0)"],
|
||||
[0.75, "rgb(255,234,0)"],
|
||||
[0.875, "rgb(255,111,0)"],
|
||||
[1, "rgb(255,0,0)"],
|
||||
],
|
||||
"Portland": [
|
||||
[0, "rgb(12,51,131)"],
|
||||
[0.25, "rgb(10,136,186)"],
|
||||
[0.5, "rgb(242,211,56)"],
|
||||
[0.75, "rgb(242,143,56)"],
|
||||
[1, "rgb(217,30,30)"],
|
||||
],
|
||||
"Jet": [
|
||||
[0, "rgb(0,0,131)"],
|
||||
[0.125, "rgb(0,60,170)"],
|
||||
[0.375, "rgb(5,255,255)"],
|
||||
[0.625, "rgb(255,255,0)"],
|
||||
[0.875, "rgb(250,0,0)"],
|
||||
[1, "rgb(128,0,0)"],
|
||||
],
|
||||
"Hot": [
|
||||
[0, "rgb(0,0,0)"],
|
||||
[0.3, "rgb(230,0,0)"],
|
||||
[0.6, "rgb(255,210,0)"],
|
||||
[1, "rgb(255,255,255)"],
|
||||
],
|
||||
"Blackbody": [
|
||||
[0, "rgb(0,0,0)"],
|
||||
[0.2, "rgb(230,0,0)"],
|
||||
[0.4, "rgb(230,210,0)"],
|
||||
[0.7, "rgb(255,255,255)"],
|
||||
[1, "rgb(160,200,255)"],
|
||||
],
|
||||
"Earth": [
|
||||
[0, "rgb(0,0,130)"],
|
||||
[0.1, "rgb(0,180,180)"],
|
||||
[0.2, "rgb(40,210,40)"],
|
||||
[0.4, "rgb(230,230,50)"],
|
||||
[0.6, "rgb(120,70,20)"],
|
||||
[1, "rgb(255,255,255)"],
|
||||
],
|
||||
"Electric": [
|
||||
[0, "rgb(0,0,0)"],
|
||||
[0.15, "rgb(30,0,100)"],
|
||||
[0.4, "rgb(120,0,100)"],
|
||||
[0.6, "rgb(160,90,0)"],
|
||||
[0.8, "rgb(230,200,0)"],
|
||||
[1, "rgb(255,250,220)"],
|
||||
],
|
||||
"Viridis": [
|
||||
[0, "#440154"],
|
||||
[0.06274509803921569, "#48186a"],
|
||||
[0.12549019607843137, "#472d7b"],
|
||||
[0.18823529411764706, "#424086"],
|
||||
[0.25098039215686274, "#3b528b"],
|
||||
[0.3137254901960784, "#33638d"],
|
||||
[0.3764705882352941, "#2c728e"],
|
||||
[0.4392156862745098, "#26828e"],
|
||||
[0.5019607843137255, "#21918c"],
|
||||
[0.5647058823529412, "#1fa088"],
|
||||
[0.6274509803921569, "#28ae80"],
|
||||
[0.6901960784313725, "#3fbc73"],
|
||||
[0.7529411764705882, "#5ec962"],
|
||||
[0.8156862745098039, "#84d44b"],
|
||||
[0.8784313725490196, "#addc30"],
|
||||
[0.9411764705882353, "#d8e219"],
|
||||
[1, "#fde725"],
|
||||
],
|
||||
"Cividis": [
|
||||
[0.000000, "rgb(0,32,76)"],
|
||||
[0.058824, "rgb(0,42,102)"],
|
||||
[0.117647, "rgb(0,52,110)"],
|
||||
[0.176471, "rgb(39,63,108)"],
|
||||
[0.235294, "rgb(60,74,107)"],
|
||||
[0.294118, "rgb(76,85,107)"],
|
||||
[0.352941, "rgb(91,95,109)"],
|
||||
[0.411765, "rgb(104,106,112)"],
|
||||
[0.470588, "rgb(117,117,117)"],
|
||||
[0.529412, "rgb(131,129,120)"],
|
||||
[0.588235, "rgb(146,140,120)"],
|
||||
[0.647059, "rgb(161,152,118)"],
|
||||
[0.705882, "rgb(176,165,114)"],
|
||||
[0.764706, "rgb(192,177,109)"],
|
||||
[0.823529, "rgb(209,191,102)"],
|
||||
[0.882353, "rgb(225,204,92)"],
|
||||
[0.941176, "rgb(243,219,79)"],
|
||||
[1.000000, "rgb(255,233,69)"],
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def color_parser(colors, function):
|
||||
"""
|
||||
Takes color(s) and a function and applies the function on the color(s)
|
||||
|
||||
In particular, this function identifies whether the given color object
|
||||
is an iterable or not and applies the given color-parsing function to
|
||||
the color or iterable of colors. If given an iterable, it will only be
|
||||
able to work with it if all items in the iterable are of the same type
|
||||
- rgb string, hex string or tuple
|
||||
"""
|
||||
if isinstance(colors, str):
|
||||
return function(colors)
|
||||
|
||||
if isinstance(colors, tuple) and isinstance(colors[0], Number):
|
||||
return function(colors)
|
||||
|
||||
if hasattr(colors, "__iter__"):
|
||||
if isinstance(colors, tuple):
|
||||
new_color_tuple = tuple(function(item) for item in colors)
|
||||
return new_color_tuple
|
||||
|
||||
else:
|
||||
new_color_list = [function(item) for item in colors]
|
||||
return new_color_list
|
||||
|
||||
|
||||
def validate_colors(colors, colortype="tuple"):
|
||||
"""
|
||||
Validates color(s) and returns a list of color(s) of a specified type
|
||||
"""
|
||||
from numbers import Number
|
||||
|
||||
if colors is None:
|
||||
colors = DEFAULT_PLOTLY_COLORS
|
||||
|
||||
if isinstance(colors, str):
|
||||
if colors in PLOTLY_SCALES:
|
||||
colors_list = colorscale_to_colors(PLOTLY_SCALES[colors])
|
||||
# TODO: fix _gantt.py/_scatter.py so that they can accept the
|
||||
# actual colorscale and not just a list of the first and last
|
||||
# color in the plotly colorscale. In resolving this issue we
|
||||
# will be removing the immediate line below
|
||||
colors = [colors_list[0]] + [colors_list[-1]]
|
||||
elif "rgb" in colors or "#" in colors:
|
||||
colors = [colors]
|
||||
else:
|
||||
raise exceptions.PlotlyError(
|
||||
"If your colors variable is a string, it must be a "
|
||||
"Plotly scale, an rgb color or a hex color."
|
||||
)
|
||||
|
||||
elif isinstance(colors, tuple):
|
||||
if isinstance(colors[0], Number):
|
||||
colors = [colors]
|
||||
else:
|
||||
colors = list(colors)
|
||||
|
||||
# convert color elements in list to tuple color
|
||||
for j, each_color in enumerate(colors):
|
||||
if "rgb" in each_color:
|
||||
each_color = color_parser(each_color, unlabel_rgb)
|
||||
for value in each_color:
|
||||
if value > 255.0:
|
||||
raise exceptions.PlotlyError(
|
||||
"Whoops! The elements in your rgb colors "
|
||||
"tuples cannot exceed 255.0."
|
||||
)
|
||||
each_color = color_parser(each_color, unconvert_from_RGB_255)
|
||||
colors[j] = each_color
|
||||
|
||||
if "#" in each_color:
|
||||
each_color = color_parser(each_color, hex_to_rgb)
|
||||
each_color = color_parser(each_color, unconvert_from_RGB_255)
|
||||
|
||||
colors[j] = each_color
|
||||
|
||||
if isinstance(each_color, tuple):
|
||||
for value in each_color:
|
||||
if value > 1.0:
|
||||
raise exceptions.PlotlyError(
|
||||
"Whoops! The elements in your colors tuples cannot exceed 1.0."
|
||||
)
|
||||
colors[j] = each_color
|
||||
|
||||
if colortype == "rgb" and not isinstance(colors, str):
|
||||
for j, each_color in enumerate(colors):
|
||||
rgb_color = color_parser(each_color, convert_to_RGB_255)
|
||||
colors[j] = color_parser(rgb_color, label_rgb)
|
||||
|
||||
return colors
|
||||
|
||||
|
||||
def validate_colors_dict(colors, colortype="tuple"):
|
||||
"""
|
||||
Validates dictionary of color(s)
|
||||
"""
|
||||
# validate each color element in the dictionary
|
||||
for key in colors:
|
||||
if "rgb" in colors[key]:
|
||||
colors[key] = color_parser(colors[key], unlabel_rgb)
|
||||
for value in colors[key]:
|
||||
if value > 255.0:
|
||||
raise exceptions.PlotlyError(
|
||||
"Whoops! The elements in your rgb colors "
|
||||
"tuples cannot exceed 255.0."
|
||||
)
|
||||
colors[key] = color_parser(colors[key], unconvert_from_RGB_255)
|
||||
|
||||
if "#" in colors[key]:
|
||||
colors[key] = color_parser(colors[key], hex_to_rgb)
|
||||
colors[key] = color_parser(colors[key], unconvert_from_RGB_255)
|
||||
|
||||
if isinstance(colors[key], tuple):
|
||||
for value in colors[key]:
|
||||
if value > 1.0:
|
||||
raise exceptions.PlotlyError(
|
||||
"Whoops! The elements in your colors tuples cannot exceed 1.0."
|
||||
)
|
||||
|
||||
if colortype == "rgb":
|
||||
for key in colors:
|
||||
colors[key] = color_parser(colors[key], convert_to_RGB_255)
|
||||
colors[key] = color_parser(colors[key], label_rgb)
|
||||
|
||||
return colors
|
||||
|
||||
|
||||
def convert_colors_to_same_type(
|
||||
colors,
|
||||
colortype="rgb",
|
||||
scale=None,
|
||||
return_default_colors=False,
|
||||
num_of_defualt_colors=2,
|
||||
):
|
||||
"""
|
||||
Converts color(s) to the specified color type
|
||||
|
||||
Takes a single color or an iterable of colors, as well as a list of scale
|
||||
values, and outputs a 2-pair of the list of color(s) converted all to an
|
||||
rgb or tuple color type, aswell as the scale as the second element. If
|
||||
colors is a Plotly Scale name, then 'scale' will be forced to the scale
|
||||
from the respective colorscale and the colors in that colorscale will also
|
||||
be coverted to the selected colortype. If colors is None, then there is an
|
||||
option to return portion of the DEFAULT_PLOTLY_COLORS
|
||||
|
||||
:param (str|tuple|list) colors: either a plotly scale name, an rgb or hex
|
||||
color, a color tuple or a list/tuple of colors
|
||||
:param (list) scale: see docs for validate_scale_values()
|
||||
|
||||
:rtype (tuple) (colors_list, scale) if scale is None in the function call,
|
||||
then scale will remain None in the returned tuple
|
||||
"""
|
||||
colors_list = []
|
||||
|
||||
if colors is None and return_default_colors is True:
|
||||
colors_list = DEFAULT_PLOTLY_COLORS[0:num_of_defualt_colors]
|
||||
|
||||
if isinstance(colors, str):
|
||||
if colors in PLOTLY_SCALES:
|
||||
colors_list = colorscale_to_colors(PLOTLY_SCALES[colors])
|
||||
if scale is None:
|
||||
scale = colorscale_to_scale(PLOTLY_SCALES[colors])
|
||||
|
||||
elif "rgb" in colors or "#" in colors:
|
||||
colors_list = [colors]
|
||||
|
||||
elif isinstance(colors, tuple):
|
||||
if isinstance(colors[0], Number):
|
||||
colors_list = [colors]
|
||||
else:
|
||||
colors_list = list(colors)
|
||||
|
||||
elif isinstance(colors, list):
|
||||
colors_list = colors
|
||||
|
||||
# validate scale
|
||||
if scale is not None:
|
||||
validate_scale_values(scale)
|
||||
|
||||
if len(colors_list) != len(scale):
|
||||
raise exceptions.PlotlyError(
|
||||
"Make sure that the length of your scale matches the length "
|
||||
"of your list of colors which is {}.".format(len(colors_list))
|
||||
)
|
||||
|
||||
# convert all colors to rgb
|
||||
for j, each_color in enumerate(colors_list):
|
||||
if "#" in each_color:
|
||||
each_color = color_parser(each_color, hex_to_rgb)
|
||||
each_color = color_parser(each_color, label_rgb)
|
||||
colors_list[j] = each_color
|
||||
|
||||
elif isinstance(each_color, tuple):
|
||||
each_color = color_parser(each_color, convert_to_RGB_255)
|
||||
each_color = color_parser(each_color, label_rgb)
|
||||
colors_list[j] = each_color
|
||||
|
||||
if colortype == "rgb":
|
||||
return (colors_list, scale)
|
||||
elif colortype == "tuple":
|
||||
for j, each_color in enumerate(colors_list):
|
||||
each_color = color_parser(each_color, unlabel_rgb)
|
||||
each_color = color_parser(each_color, unconvert_from_RGB_255)
|
||||
colors_list[j] = each_color
|
||||
return (colors_list, scale)
|
||||
else:
|
||||
raise exceptions.PlotlyError(
|
||||
"You must select either rgb or tuple for your colortype variable."
|
||||
)
|
||||
|
||||
|
||||
def convert_dict_colors_to_same_type(colors_dict, colortype="rgb"):
|
||||
"""
|
||||
Converts a colors in a dictionary of colors to the specified color type
|
||||
|
||||
:param (dict) colors_dict: a dictionary whose values are single colors
|
||||
"""
|
||||
for key in colors_dict:
|
||||
if "#" in colors_dict[key]:
|
||||
colors_dict[key] = color_parser(colors_dict[key], hex_to_rgb)
|
||||
colors_dict[key] = color_parser(colors_dict[key], label_rgb)
|
||||
|
||||
elif isinstance(colors_dict[key], tuple):
|
||||
colors_dict[key] = color_parser(colors_dict[key], convert_to_RGB_255)
|
||||
colors_dict[key] = color_parser(colors_dict[key], label_rgb)
|
||||
|
||||
if colortype == "rgb":
|
||||
return colors_dict
|
||||
elif colortype == "tuple":
|
||||
for key in colors_dict:
|
||||
colors_dict[key] = color_parser(colors_dict[key], unlabel_rgb)
|
||||
colors_dict[key] = color_parser(colors_dict[key], unconvert_from_RGB_255)
|
||||
return colors_dict
|
||||
else:
|
||||
raise exceptions.PlotlyError(
|
||||
"You must select either rgb or tuple for your colortype variable."
|
||||
)
|
||||
|
||||
|
||||
def validate_scale_values(scale):
|
||||
"""
|
||||
Validates scale values from a colorscale
|
||||
|
||||
:param (list) scale: a strictly increasing list of floats that begins
|
||||
with 0 and ends with 1. Its usage derives from a colorscale which is
|
||||
a list of two-lists (a list with two elements) of the form
|
||||
[value, color] which are used to determine how interpolation weighting
|
||||
works between the colors in the colorscale. Therefore scale is just
|
||||
the extraction of these values from the two-lists in order
|
||||
"""
|
||||
if len(scale) < 2:
|
||||
raise exceptions.PlotlyError(
|
||||
"You must input a list of scale values that has at least two values."
|
||||
)
|
||||
|
||||
if (scale[0] != 0) or (scale[-1] != 1):
|
||||
raise exceptions.PlotlyError(
|
||||
"The first and last number in your scale must be 0.0 and 1.0 respectively."
|
||||
)
|
||||
|
||||
if not all(x < y for x, y in zip(scale, scale[1:])):
|
||||
raise exceptions.PlotlyError(
|
||||
"'scale' must be a list that contains a strictly increasing "
|
||||
"sequence of numbers."
|
||||
)
|
||||
|
||||
|
||||
def validate_colorscale(colorscale):
|
||||
"""Validate the structure, scale values and colors of colorscale."""
|
||||
if not isinstance(colorscale, list):
|
||||
# TODO Write tests for these exceptions
|
||||
raise exceptions.PlotlyError("A valid colorscale must be a list.")
|
||||
if not all(isinstance(innerlist, list) for innerlist in colorscale):
|
||||
raise exceptions.PlotlyError("A valid colorscale must be a list of lists.")
|
||||
colorscale_colors = colorscale_to_colors(colorscale)
|
||||
scale_values = colorscale_to_scale(colorscale)
|
||||
|
||||
validate_scale_values(scale_values)
|
||||
validate_colors(colorscale_colors)
|
||||
|
||||
|
||||
def make_colorscale(colors, scale=None):
|
||||
"""
|
||||
Makes a colorscale from a list of colors and a scale
|
||||
|
||||
Takes a list of colors and scales and constructs a colorscale based
|
||||
on the colors in sequential order. If 'scale' is left empty, a linear-
|
||||
interpolated colorscale will be generated. If 'scale' is a specificed
|
||||
list, it must be the same legnth as colors and must contain all floats
|
||||
For documentation regarding to the form of the output, see
|
||||
https://plot.ly/python/reference/#mesh3d-colorscale
|
||||
|
||||
:param (list) colors: a list of single colors
|
||||
"""
|
||||
colorscale = []
|
||||
|
||||
# validate minimum colors length of 2
|
||||
if len(colors) < 2:
|
||||
raise exceptions.PlotlyError(
|
||||
"You must input a list of colors that has at least two colors."
|
||||
)
|
||||
|
||||
if scale is None:
|
||||
scale_incr = 1.0 / (len(colors) - 1)
|
||||
return [[i * scale_incr, color] for i, color in enumerate(colors)]
|
||||
|
||||
else:
|
||||
if len(colors) != len(scale):
|
||||
raise exceptions.PlotlyError(
|
||||
"The length of colors and scale must be the same."
|
||||
)
|
||||
|
||||
validate_scale_values(scale)
|
||||
|
||||
colorscale = [list(tup) for tup in zip(scale, colors)]
|
||||
return colorscale
|
||||
|
||||
|
||||
def find_intermediate_color(lowcolor, highcolor, intermed, colortype="tuple"):
|
||||
"""
|
||||
Returns the color at a given distance between two colors
|
||||
|
||||
This function takes two color tuples, where each element is between 0
|
||||
and 1, along with a value 0 < intermed < 1 and returns a color that is
|
||||
intermed-percent from lowcolor to highcolor. If colortype is set to 'rgb',
|
||||
the function will automatically convert the rgb type to a tuple, find the
|
||||
intermediate color and return it as an rgb color.
|
||||
"""
|
||||
if colortype == "rgb":
|
||||
# convert to tuple color, eg. (1, 0.45, 0.7)
|
||||
lowcolor = unlabel_rgb(lowcolor)
|
||||
highcolor = unlabel_rgb(highcolor)
|
||||
|
||||
diff_0 = float(highcolor[0] - lowcolor[0])
|
||||
diff_1 = float(highcolor[1] - lowcolor[1])
|
||||
diff_2 = float(highcolor[2] - lowcolor[2])
|
||||
|
||||
inter_med_tuple = (
|
||||
lowcolor[0] + intermed * diff_0,
|
||||
lowcolor[1] + intermed * diff_1,
|
||||
lowcolor[2] + intermed * diff_2,
|
||||
)
|
||||
|
||||
if colortype == "rgb":
|
||||
# back to an rgb string, e.g. rgb(30, 20, 10)
|
||||
inter_med_rgb = label_rgb(inter_med_tuple)
|
||||
return inter_med_rgb
|
||||
|
||||
return inter_med_tuple
|
||||
|
||||
|
||||
def unconvert_from_RGB_255(colors):
|
||||
"""
|
||||
Return a tuple where each element gets divided by 255
|
||||
|
||||
Takes a (list of) color tuple(s) where each element is between 0 and
|
||||
255. Returns the same tuples where each tuple element is normalized to
|
||||
a value between 0 and 1
|
||||
"""
|
||||
return (colors[0] / (255.0), colors[1] / (255.0), colors[2] / (255.0))
|
||||
|
||||
|
||||
def convert_to_RGB_255(colors):
|
||||
"""
|
||||
Multiplies each element of a triplet by 255
|
||||
|
||||
Each coordinate of the color tuple is rounded to the nearest float and
|
||||
then is turned into an integer. If a number is of the form x.5, then
|
||||
if x is odd, the number rounds up to (x+1). Otherwise, it rounds down
|
||||
to just x. This is the way rounding works in Python 3 and in current
|
||||
statistical analysis to avoid rounding bias
|
||||
|
||||
:param (list) rgb_components: grabs the three R, G and B values to be
|
||||
returned as computed in the function
|
||||
"""
|
||||
rgb_components = []
|
||||
|
||||
for component in colors:
|
||||
rounded_num = decimal.Decimal(str(component * 255.0)).quantize(
|
||||
decimal.Decimal("1"), rounding=decimal.ROUND_HALF_EVEN
|
||||
)
|
||||
# convert rounded number to an integer from 'Decimal' form
|
||||
rounded_num = int(rounded_num)
|
||||
rgb_components.append(rounded_num)
|
||||
|
||||
return (rgb_components[0], rgb_components[1], rgb_components[2])
|
||||
|
||||
|
||||
def n_colors(lowcolor, highcolor, n_colors, colortype="tuple"):
|
||||
"""
|
||||
Splits a low and high color into a list of n_colors colors in it
|
||||
|
||||
Accepts two color tuples and returns a list of n_colors colors
|
||||
which form the intermediate colors between lowcolor and highcolor
|
||||
from linearly interpolating through RGB space. If colortype is 'rgb'
|
||||
the function will return a list of colors in the same form.
|
||||
"""
|
||||
if colortype == "rgb":
|
||||
# convert to tuple
|
||||
lowcolor = unlabel_rgb(lowcolor)
|
||||
highcolor = unlabel_rgb(highcolor)
|
||||
|
||||
diff_0 = float(highcolor[0] - lowcolor[0])
|
||||
incr_0 = diff_0 / (n_colors - 1)
|
||||
diff_1 = float(highcolor[1] - lowcolor[1])
|
||||
incr_1 = diff_1 / (n_colors - 1)
|
||||
diff_2 = float(highcolor[2] - lowcolor[2])
|
||||
incr_2 = diff_2 / (n_colors - 1)
|
||||
list_of_colors = []
|
||||
|
||||
def _constrain_color(c):
|
||||
if c > 255.0:
|
||||
return 255.0
|
||||
elif c < 0.0:
|
||||
return 0.0
|
||||
else:
|
||||
return c
|
||||
|
||||
for index in range(n_colors):
|
||||
new_tuple = (
|
||||
_constrain_color(lowcolor[0] + (index * incr_0)),
|
||||
_constrain_color(lowcolor[1] + (index * incr_1)),
|
||||
_constrain_color(lowcolor[2] + (index * incr_2)),
|
||||
)
|
||||
list_of_colors.append(new_tuple)
|
||||
|
||||
if colortype == "rgb":
|
||||
# back to an rgb string
|
||||
list_of_colors = color_parser(list_of_colors, label_rgb)
|
||||
|
||||
return list_of_colors
|
||||
|
||||
|
||||
def label_rgb(colors):
|
||||
"""
|
||||
Takes tuple (a, b, c) and returns an rgb color 'rgb(a, b, c)'
|
||||
"""
|
||||
return "rgb(%s, %s, %s)" % (colors[0], colors[1], colors[2])
|
||||
|
||||
|
||||
def unlabel_rgb(colors):
|
||||
"""
|
||||
Takes rgb color(s) 'rgb(a, b, c)' and returns tuple(s) (a, b, c)
|
||||
|
||||
This function takes either an 'rgb(a, b, c)' color or a list of
|
||||
such colors and returns the color tuples in tuple(s) (a, b, c)
|
||||
"""
|
||||
str_vals = ""
|
||||
for index in range(len(colors)):
|
||||
try:
|
||||
float(colors[index])
|
||||
str_vals = str_vals + colors[index]
|
||||
except ValueError:
|
||||
if colors[index] == "," or colors[index] == ".":
|
||||
str_vals = str_vals + colors[index]
|
||||
|
||||
str_vals = str_vals + ","
|
||||
numbers = []
|
||||
str_num = ""
|
||||
for char in str_vals:
|
||||
if char != ",":
|
||||
str_num = str_num + char
|
||||
else:
|
||||
numbers.append(float(str_num))
|
||||
str_num = ""
|
||||
return (numbers[0], numbers[1], numbers[2])
|
||||
|
||||
|
||||
def hex_to_rgb(value):
|
||||
"""
|
||||
Calculates rgb values from a hex color code.
|
||||
|
||||
:param (string) value: Hex color string
|
||||
|
||||
:rtype (tuple) (r_value, g_value, b_value): tuple of rgb values
|
||||
"""
|
||||
value = value.lstrip("#")
|
||||
hex_total_length = len(value)
|
||||
rgb_section_length = hex_total_length // 3
|
||||
return tuple(
|
||||
int(value[i : i + rgb_section_length], 16)
|
||||
for i in range(0, hex_total_length, rgb_section_length)
|
||||
)
|
||||
|
||||
|
||||
def colorscale_to_colors(colorscale):
|
||||
"""
|
||||
Extracts the colors from colorscale as a list
|
||||
"""
|
||||
color_list = []
|
||||
for item in colorscale:
|
||||
color_list.append(item[1])
|
||||
return color_list
|
||||
|
||||
|
||||
def colorscale_to_scale(colorscale):
|
||||
"""
|
||||
Extracts the interpolation scale values from colorscale as a list
|
||||
"""
|
||||
scale_list = []
|
||||
for item in colorscale:
|
||||
scale_list.append(item[0])
|
||||
return scale_list
|
||||
|
||||
|
||||
def convert_colorscale_to_rgb(colorscale):
|
||||
"""
|
||||
Converts the colors in a colorscale to rgb colors
|
||||
|
||||
A colorscale is an array of arrays, each with a numeric value as the
|
||||
first item and a color as the second. This function specifically is
|
||||
converting a colorscale with tuple colors (each coordinate between 0
|
||||
and 1) into a colorscale with the colors transformed into rgb colors
|
||||
"""
|
||||
for color in colorscale:
|
||||
color[1] = convert_to_RGB_255(color[1])
|
||||
|
||||
for color in colorscale:
|
||||
color[1] = label_rgb(color[1])
|
||||
return colorscale
|
||||
|
||||
|
||||
def named_colorscales():
|
||||
"""
|
||||
Returns lowercased names of built-in continuous colorscales.
|
||||
"""
|
||||
from _plotly_utils.basevalidators import ColorscaleValidator
|
||||
|
||||
return [c for c in ColorscaleValidator("", "").named_colorscales]
|
||||
|
||||
|
||||
def get_colorscale(name):
|
||||
"""
|
||||
Returns the colorscale for a given name. See `named_colorscales` for the
|
||||
built-in colorscales.
|
||||
"""
|
||||
from _plotly_utils.basevalidators import ColorscaleValidator
|
||||
|
||||
if not isinstance(name, str):
|
||||
raise exceptions.PlotlyError("Name argument have to be a string.")
|
||||
|
||||
name = name.lower()
|
||||
if name[-2:] == "_r":
|
||||
should_reverse = True
|
||||
name = name[:-2]
|
||||
else:
|
||||
should_reverse = False
|
||||
|
||||
if name in ColorscaleValidator("", "").named_colorscales:
|
||||
colorscale = ColorscaleValidator("", "").named_colorscales[name]
|
||||
else:
|
||||
raise exceptions.PlotlyError(f"Colorscale {name} is not a built-in scale.")
|
||||
|
||||
if should_reverse:
|
||||
colorscale = colorscale[::-1]
|
||||
return make_colorscale(colorscale)
|
||||
|
||||
|
||||
def sample_colorscale(colorscale, samplepoints, low=0.0, high=1.0, colortype="rgb"):
|
||||
"""
|
||||
Samples a colorscale at specific points.
|
||||
|
||||
Interpolates between colors in a colorscale to find the specific colors
|
||||
corresponding to the specified sample values. The colorscale can be specified
|
||||
as a list of `[scale, color]` pairs, as a list of colors, or as a named
|
||||
plotly colorscale. The samplepoints can be specefied as an iterable of specific
|
||||
points in the range [0.0, 1.0], or as an integer number of points which will
|
||||
be spaced equally between the low value (default 0.0) and the high value
|
||||
(default 1.0). The output is a list of colors, formatted according to the
|
||||
specified colortype.
|
||||
"""
|
||||
from bisect import bisect_left
|
||||
|
||||
try:
|
||||
validate_colorscale(colorscale)
|
||||
except exceptions.PlotlyError:
|
||||
if isinstance(colorscale, str):
|
||||
colorscale = get_colorscale(colorscale)
|
||||
else:
|
||||
colorscale = make_colorscale(colorscale)
|
||||
|
||||
scale = colorscale_to_scale(colorscale)
|
||||
validate_scale_values(scale)
|
||||
colors = colorscale_to_colors(colorscale)
|
||||
colors = validate_colors(colors, colortype="tuple")
|
||||
|
||||
if isinstance(samplepoints, int):
|
||||
samplepoints = [
|
||||
low + idx / (samplepoints - 1) * (high - low) for idx in range(samplepoints)
|
||||
]
|
||||
elif isinstance(samplepoints, float):
|
||||
samplepoints = [samplepoints]
|
||||
|
||||
sampled_colors = []
|
||||
for point in samplepoints:
|
||||
high = bisect_left(scale, point)
|
||||
low = high - 1
|
||||
interpolant = (point - scale[low]) / (scale[high] - scale[low])
|
||||
sampled_color = find_intermediate_color(colors[low], colors[high], interpolant)
|
||||
sampled_colors.append(sampled_color)
|
||||
return validate_colors(sampled_colors, colortype=colortype)
|
||||
@@ -0,0 +1,161 @@
|
||||
def _swatches(module_names, module_contents, template=None):
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
template : str or dict or plotly.graph_objects.layout.Template instance
|
||||
The figure template name or definition.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : graph_objects.Figure containing the displayed image
|
||||
A `Figure` object. This figure demonstrates the color scales and
|
||||
sequences in this module, as stacked bar charts.
|
||||
"""
|
||||
import plotly.graph_objs as go
|
||||
from plotly.express._core import apply_default_cascade
|
||||
|
||||
args = dict(template=template)
|
||||
apply_default_cascade(args)
|
||||
|
||||
sequences = [
|
||||
(k, v)
|
||||
for k, v in module_contents.items()
|
||||
if not (k.startswith("_") or k.startswith("swatches") or k.endswith("_r"))
|
||||
]
|
||||
|
||||
return go.Figure(
|
||||
data=[
|
||||
go.Bar(
|
||||
orientation="h",
|
||||
y=[name] * len(colors),
|
||||
x=[1] * len(colors),
|
||||
customdata=list(range(len(colors))),
|
||||
marker=dict(color=colors),
|
||||
hovertemplate="%{y}[%{customdata}] = %{marker.color}<extra></extra>",
|
||||
)
|
||||
for name, colors in reversed(sequences)
|
||||
],
|
||||
layout=dict(
|
||||
title="plotly.colors." + module_names.split(".")[-1],
|
||||
barmode="stack",
|
||||
barnorm="fraction",
|
||||
bargap=0.5,
|
||||
showlegend=False,
|
||||
xaxis=dict(range=[-0.02, 1.02], showticklabels=False, showgrid=False),
|
||||
height=max(600, 40 * len(sequences)),
|
||||
template=args["template"],
|
||||
margin=dict(b=10),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def _swatches_continuous(module_names, module_contents, template=None):
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
template : str or dict or plotly.graph_objects.layout.Template instance
|
||||
The figure template name or definition.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : graph_objects.Figure containing the displayed image
|
||||
A `Figure` object. This figure demonstrates the color scales and
|
||||
sequences in this module, as stacked bar charts.
|
||||
"""
|
||||
import plotly.graph_objs as go
|
||||
from plotly.express._core import apply_default_cascade
|
||||
|
||||
args = dict(template=template)
|
||||
apply_default_cascade(args)
|
||||
|
||||
sequences = [
|
||||
(k, v)
|
||||
for k, v in module_contents.items()
|
||||
if not (k.startswith("_") or k.startswith("swatches") or k.endswith("_r"))
|
||||
]
|
||||
|
||||
n = 100
|
||||
|
||||
return go.Figure(
|
||||
data=[
|
||||
go.Bar(
|
||||
orientation="h",
|
||||
y=[name] * n,
|
||||
x=[1] * n,
|
||||
customdata=[(x + 1) / n for x in range(n)],
|
||||
marker=dict(color=list(range(n)), colorscale=name, line_width=0),
|
||||
hovertemplate="%{customdata}",
|
||||
name=name,
|
||||
)
|
||||
for name, colors in reversed(sequences)
|
||||
],
|
||||
layout=dict(
|
||||
title="plotly.colors." + module_names.split(".")[-1],
|
||||
barmode="stack",
|
||||
barnorm="fraction",
|
||||
bargap=0.3,
|
||||
showlegend=False,
|
||||
xaxis=dict(range=[-0.02, 1.02], showticklabels=False, showgrid=False),
|
||||
height=max(600, 40 * len(sequences)),
|
||||
width=500,
|
||||
template=args["template"],
|
||||
margin=dict(b=10),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def _swatches_cyclical(module_names, module_contents, template=None):
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
template : str or dict or plotly.graph_objects.layout.Template instance
|
||||
The figure template name or definition.
|
||||
|
||||
Returns
|
||||
-------
|
||||
fig : graph_objects.Figure containing the displayed image
|
||||
A `Figure` object. This figure demonstrates the color scales and
|
||||
sequences in this module, as polar bar charts.
|
||||
"""
|
||||
import plotly.graph_objects as go
|
||||
from plotly.subplots import make_subplots
|
||||
from plotly.express._core import apply_default_cascade
|
||||
|
||||
args = dict(template=template)
|
||||
apply_default_cascade(args)
|
||||
|
||||
rows = 2
|
||||
cols = 4
|
||||
scales = [
|
||||
(k, v)
|
||||
for k, v in module_contents.items()
|
||||
if not (k.startswith("_") or k.startswith("swatches") or k.endswith("_r"))
|
||||
]
|
||||
names = [name for name, colors in scales]
|
||||
fig = make_subplots(
|
||||
rows=rows,
|
||||
cols=cols,
|
||||
subplot_titles=names,
|
||||
specs=[[{"type": "polar"}] * cols] * rows,
|
||||
)
|
||||
|
||||
for i, (name, scale) in enumerate(scales):
|
||||
fig.add_trace(
|
||||
go.Barpolar(
|
||||
r=[1] * int(360 / 5),
|
||||
theta=list(range(0, 360, 5)),
|
||||
marker_color=list(range(0, 360, 5)),
|
||||
marker_cmin=0,
|
||||
marker_cmax=360,
|
||||
marker_colorscale=name,
|
||||
name=name,
|
||||
),
|
||||
row=int(i / cols) + 1,
|
||||
col=i % cols + 1,
|
||||
)
|
||||
fig.update_traces(width=5.2, marker_line_width=0, base=0.5, showlegend=False)
|
||||
fig.update_polars(angularaxis_visible=False, radialaxis_visible=False)
|
||||
fig.update_layout(
|
||||
title="plotly.colors." + module_names.split(".")[-1], template=args["template"]
|
||||
)
|
||||
return fig
|
||||
@@ -0,0 +1,419 @@
|
||||
"""
|
||||
Color sequences and scales from CARTO's CartoColors
|
||||
|
||||
Learn more at https://github.com/CartoDB/CartoColor
|
||||
|
||||
CARTOColors are made available under a Creative Commons Attribution license: https://creativecommons.org/licenses/by/3.0/us/
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
Burg = [
|
||||
"rgb(255, 198, 196)",
|
||||
"rgb(244, 163, 168)",
|
||||
"rgb(227, 129, 145)",
|
||||
"rgb(204, 96, 125)",
|
||||
"rgb(173, 70, 108)",
|
||||
"rgb(139, 48, 88)",
|
||||
"rgb(103, 32, 68)",
|
||||
]
|
||||
|
||||
Burgyl = [
|
||||
"rgb(251, 230, 197)",
|
||||
"rgb(245, 186, 152)",
|
||||
"rgb(238, 138, 130)",
|
||||
"rgb(220, 113, 118)",
|
||||
"rgb(200, 88, 108)",
|
||||
"rgb(156, 63, 93)",
|
||||
"rgb(112, 40, 74)",
|
||||
]
|
||||
|
||||
Redor = [
|
||||
"rgb(246, 210, 169)",
|
||||
"rgb(245, 183, 142)",
|
||||
"rgb(241, 156, 124)",
|
||||
"rgb(234, 129, 113)",
|
||||
"rgb(221, 104, 108)",
|
||||
"rgb(202, 82, 104)",
|
||||
"rgb(177, 63, 100)",
|
||||
]
|
||||
|
||||
Oryel = [
|
||||
"rgb(236, 218, 154)",
|
||||
"rgb(239, 196, 126)",
|
||||
"rgb(243, 173, 106)",
|
||||
"rgb(247, 148, 93)",
|
||||
"rgb(249, 123, 87)",
|
||||
"rgb(246, 99, 86)",
|
||||
"rgb(238, 77, 90)",
|
||||
]
|
||||
|
||||
Peach = [
|
||||
"rgb(253, 224, 197)",
|
||||
"rgb(250, 203, 166)",
|
||||
"rgb(248, 181, 139)",
|
||||
"rgb(245, 158, 114)",
|
||||
"rgb(242, 133, 93)",
|
||||
"rgb(239, 106, 76)",
|
||||
"rgb(235, 74, 64)",
|
||||
]
|
||||
|
||||
Pinkyl = [
|
||||
"rgb(254, 246, 181)",
|
||||
"rgb(255, 221, 154)",
|
||||
"rgb(255, 194, 133)",
|
||||
"rgb(255, 166, 121)",
|
||||
"rgb(250, 138, 118)",
|
||||
"rgb(241, 109, 122)",
|
||||
"rgb(225, 83, 131)",
|
||||
]
|
||||
|
||||
Mint = [
|
||||
"rgb(228, 241, 225)",
|
||||
"rgb(180, 217, 204)",
|
||||
"rgb(137, 192, 182)",
|
||||
"rgb(99, 166, 160)",
|
||||
"rgb(68, 140, 138)",
|
||||
"rgb(40, 114, 116)",
|
||||
"rgb(13, 88, 95)",
|
||||
]
|
||||
|
||||
Blugrn = [
|
||||
"rgb(196, 230, 195)",
|
||||
"rgb(150, 210, 164)",
|
||||
"rgb(109, 188, 144)",
|
||||
"rgb(77, 162, 132)",
|
||||
"rgb(54, 135, 122)",
|
||||
"rgb(38, 107, 110)",
|
||||
"rgb(29, 79, 96)",
|
||||
]
|
||||
|
||||
Darkmint = [
|
||||
"rgb(210, 251, 212)",
|
||||
"rgb(165, 219, 194)",
|
||||
"rgb(123, 188, 176)",
|
||||
"rgb(85, 156, 158)",
|
||||
"rgb(58, 124, 137)",
|
||||
"rgb(35, 93, 114)",
|
||||
"rgb(18, 63, 90)",
|
||||
]
|
||||
|
||||
Emrld = [
|
||||
"rgb(211, 242, 163)",
|
||||
"rgb(151, 225, 150)",
|
||||
"rgb(108, 192, 139)",
|
||||
"rgb(76, 155, 130)",
|
||||
"rgb(33, 122, 121)",
|
||||
"rgb(16, 89, 101)",
|
||||
"rgb(7, 64, 80)",
|
||||
]
|
||||
|
||||
Aggrnyl = [
|
||||
"rgb(36, 86, 104)",
|
||||
"rgb(15, 114, 121)",
|
||||
"rgb(13, 143, 129)",
|
||||
"rgb(57, 171, 126)",
|
||||
"rgb(110, 197, 116)",
|
||||
"rgb(169, 220, 103)",
|
||||
"rgb(237, 239, 93)",
|
||||
]
|
||||
|
||||
Bluyl = [
|
||||
"rgb(247, 254, 174)",
|
||||
"rgb(183, 230, 165)",
|
||||
"rgb(124, 203, 162)",
|
||||
"rgb(70, 174, 160)",
|
||||
"rgb(8, 144, 153)",
|
||||
"rgb(0, 113, 139)",
|
||||
"rgb(4, 82, 117)",
|
||||
]
|
||||
|
||||
Teal = [
|
||||
"rgb(209, 238, 234)",
|
||||
"rgb(168, 219, 217)",
|
||||
"rgb(133, 196, 201)",
|
||||
"rgb(104, 171, 184)",
|
||||
"rgb(79, 144, 166)",
|
||||
"rgb(59, 115, 143)",
|
||||
"rgb(42, 86, 116)",
|
||||
]
|
||||
|
||||
Tealgrn = [
|
||||
"rgb(176, 242, 188)",
|
||||
"rgb(137, 232, 172)",
|
||||
"rgb(103, 219, 165)",
|
||||
"rgb(76, 200, 163)",
|
||||
"rgb(56, 178, 163)",
|
||||
"rgb(44, 152, 160)",
|
||||
"rgb(37, 125, 152)",
|
||||
]
|
||||
|
||||
Purp = [
|
||||
"rgb(243, 224, 247)",
|
||||
"rgb(228, 199, 241)",
|
||||
"rgb(209, 175, 232)",
|
||||
"rgb(185, 152, 221)",
|
||||
"rgb(159, 130, 206)",
|
||||
"rgb(130, 109, 186)",
|
||||
"rgb(99, 88, 159)",
|
||||
]
|
||||
|
||||
Purpor = [
|
||||
"rgb(249, 221, 218)",
|
||||
"rgb(242, 185, 196)",
|
||||
"rgb(229, 151, 185)",
|
||||
"rgb(206, 120, 179)",
|
||||
"rgb(173, 95, 173)",
|
||||
"rgb(131, 75, 160)",
|
||||
"rgb(87, 59, 136)",
|
||||
]
|
||||
|
||||
Sunset = [
|
||||
"rgb(243, 231, 155)",
|
||||
"rgb(250, 196, 132)",
|
||||
"rgb(248, 160, 126)",
|
||||
"rgb(235, 127, 134)",
|
||||
"rgb(206, 102, 147)",
|
||||
"rgb(160, 89, 160)",
|
||||
"rgb(92, 83, 165)",
|
||||
]
|
||||
|
||||
Magenta = [
|
||||
"rgb(243, 203, 211)",
|
||||
"rgb(234, 169, 189)",
|
||||
"rgb(221, 136, 172)",
|
||||
"rgb(202, 105, 157)",
|
||||
"rgb(177, 77, 142)",
|
||||
"rgb(145, 53, 125)",
|
||||
"rgb(108, 33, 103)",
|
||||
]
|
||||
|
||||
Sunsetdark = [
|
||||
"rgb(252, 222, 156)",
|
||||
"rgb(250, 164, 118)",
|
||||
"rgb(240, 116, 110)",
|
||||
"rgb(227, 79, 111)",
|
||||
"rgb(220, 57, 119)",
|
||||
"rgb(185, 37, 122)",
|
||||
"rgb(124, 29, 111)",
|
||||
]
|
||||
|
||||
Agsunset = [
|
||||
"rgb(75, 41, 145)",
|
||||
"rgb(135, 44, 162)",
|
||||
"rgb(192, 54, 157)",
|
||||
"rgb(234, 79, 136)",
|
||||
"rgb(250, 120, 118)",
|
||||
"rgb(246, 169, 122)",
|
||||
"rgb(237, 217, 163)",
|
||||
]
|
||||
|
||||
Brwnyl = [
|
||||
"rgb(237, 229, 207)",
|
||||
"rgb(224, 194, 162)",
|
||||
"rgb(211, 156, 131)",
|
||||
"rgb(193, 118, 111)",
|
||||
"rgb(166, 84, 97)",
|
||||
"rgb(129, 55, 83)",
|
||||
"rgb(84, 31, 63)",
|
||||
]
|
||||
|
||||
# Diverging schemes
|
||||
|
||||
Armyrose = [
|
||||
"rgb(121, 130, 52)",
|
||||
"rgb(163, 173, 98)",
|
||||
"rgb(208, 211, 162)",
|
||||
"rgb(253, 251, 228)",
|
||||
"rgb(240, 198, 195)",
|
||||
"rgb(223, 145, 163)",
|
||||
"rgb(212, 103, 128)",
|
||||
]
|
||||
|
||||
Fall = [
|
||||
"rgb(61, 89, 65)",
|
||||
"rgb(119, 136, 104)",
|
||||
"rgb(181, 185, 145)",
|
||||
"rgb(246, 237, 189)",
|
||||
"rgb(237, 187, 138)",
|
||||
"rgb(222, 138, 90)",
|
||||
"rgb(202, 86, 44)",
|
||||
]
|
||||
|
||||
Geyser = [
|
||||
"rgb(0, 128, 128)",
|
||||
"rgb(112, 164, 148)",
|
||||
"rgb(180, 200, 168)",
|
||||
"rgb(246, 237, 189)",
|
||||
"rgb(237, 187, 138)",
|
||||
"rgb(222, 138, 90)",
|
||||
"rgb(202, 86, 44)",
|
||||
]
|
||||
|
||||
Temps = [
|
||||
"rgb(0, 147, 146)",
|
||||
"rgb(57, 177, 133)",
|
||||
"rgb(156, 203, 134)",
|
||||
"rgb(233, 226, 156)",
|
||||
"rgb(238, 180, 121)",
|
||||
"rgb(232, 132, 113)",
|
||||
"rgb(207, 89, 126)",
|
||||
]
|
||||
|
||||
Tealrose = [
|
||||
"rgb(0, 147, 146)",
|
||||
"rgb(114, 170, 161)",
|
||||
"rgb(177, 199, 179)",
|
||||
"rgb(241, 234, 200)",
|
||||
"rgb(229, 185, 173)",
|
||||
"rgb(217, 137, 148)",
|
||||
"rgb(208, 88, 126)",
|
||||
]
|
||||
|
||||
Tropic = [
|
||||
"rgb(0, 155, 158)",
|
||||
"rgb(66, 183, 185)",
|
||||
"rgb(167, 211, 212)",
|
||||
"rgb(241, 241, 241)",
|
||||
"rgb(228, 193, 217)",
|
||||
"rgb(214, 145, 193)",
|
||||
"rgb(199, 93, 171)",
|
||||
]
|
||||
|
||||
Earth = [
|
||||
"rgb(161, 105, 40)",
|
||||
"rgb(189, 146, 90)",
|
||||
"rgb(214, 189, 141)",
|
||||
"rgb(237, 234, 194)",
|
||||
"rgb(181, 200, 184)",
|
||||
"rgb(121, 167, 172)",
|
||||
"rgb(40, 135, 161)",
|
||||
]
|
||||
|
||||
# Qualitative palettes
|
||||
|
||||
Antique = [
|
||||
"rgb(133, 92, 117)",
|
||||
"rgb(217, 175, 107)",
|
||||
"rgb(175, 100, 88)",
|
||||
"rgb(115, 111, 76)",
|
||||
"rgb(82, 106, 131)",
|
||||
"rgb(98, 83, 119)",
|
||||
"rgb(104, 133, 92)",
|
||||
"rgb(156, 156, 94)",
|
||||
"rgb(160, 97, 119)",
|
||||
"rgb(140, 120, 93)",
|
||||
"rgb(124, 124, 124)",
|
||||
]
|
||||
|
||||
Bold = [
|
||||
"rgb(127, 60, 141)",
|
||||
"rgb(17, 165, 121)",
|
||||
"rgb(57, 105, 172)",
|
||||
"rgb(242, 183, 1)",
|
||||
"rgb(231, 63, 116)",
|
||||
"rgb(128, 186, 90)",
|
||||
"rgb(230, 131, 16)",
|
||||
"rgb(0, 134, 149)",
|
||||
"rgb(207, 28, 144)",
|
||||
"rgb(249, 123, 114)",
|
||||
"rgb(165, 170, 153)",
|
||||
]
|
||||
|
||||
Pastel = [
|
||||
"rgb(102, 197, 204)",
|
||||
"rgb(246, 207, 113)",
|
||||
"rgb(248, 156, 116)",
|
||||
"rgb(220, 176, 242)",
|
||||
"rgb(135, 197, 95)",
|
||||
"rgb(158, 185, 243)",
|
||||
"rgb(254, 136, 177)",
|
||||
"rgb(201, 219, 116)",
|
||||
"rgb(139, 224, 164)",
|
||||
"rgb(180, 151, 231)",
|
||||
"rgb(179, 179, 179)",
|
||||
]
|
||||
|
||||
Prism = [
|
||||
"rgb(95, 70, 144)",
|
||||
"rgb(29, 105, 150)",
|
||||
"rgb(56, 166, 165)",
|
||||
"rgb(15, 133, 84)",
|
||||
"rgb(115, 175, 72)",
|
||||
"rgb(237, 173, 8)",
|
||||
"rgb(225, 124, 5)",
|
||||
"rgb(204, 80, 62)",
|
||||
"rgb(148, 52, 110)",
|
||||
"rgb(111, 64, 112)",
|
||||
"rgb(102, 102, 102)",
|
||||
]
|
||||
|
||||
Safe = [
|
||||
"rgb(136, 204, 238)",
|
||||
"rgb(204, 102, 119)",
|
||||
"rgb(221, 204, 119)",
|
||||
"rgb(17, 119, 51)",
|
||||
"rgb(51, 34, 136)",
|
||||
"rgb(170, 68, 153)",
|
||||
"rgb(68, 170, 153)",
|
||||
"rgb(153, 153, 51)",
|
||||
"rgb(136, 34, 85)",
|
||||
"rgb(102, 17, 0)",
|
||||
"rgb(136, 136, 136)",
|
||||
]
|
||||
|
||||
Vivid = [
|
||||
"rgb(229, 134, 6)",
|
||||
"rgb(93, 105, 177)",
|
||||
"rgb(82, 188, 163)",
|
||||
"rgb(153, 201, 69)",
|
||||
"rgb(204, 97, 176)",
|
||||
"rgb(36, 121, 108)",
|
||||
"rgb(218, 165, 27)",
|
||||
"rgb(47, 138, 196)",
|
||||
"rgb(118, 78, 159)",
|
||||
"rgb(237, 100, 90)",
|
||||
"rgb(165, 170, 153)",
|
||||
]
|
||||
|
||||
Aggrnyl_r = Aggrnyl[::-1]
|
||||
Agsunset_r = Agsunset[::-1]
|
||||
Antique_r = Antique[::-1]
|
||||
Armyrose_r = Armyrose[::-1]
|
||||
Blugrn_r = Blugrn[::-1]
|
||||
Bluyl_r = Bluyl[::-1]
|
||||
Bold_r = Bold[::-1]
|
||||
Brwnyl_r = Brwnyl[::-1]
|
||||
Burg_r = Burg[::-1]
|
||||
Burgyl_r = Burgyl[::-1]
|
||||
Darkmint_r = Darkmint[::-1]
|
||||
Earth_r = Earth[::-1]
|
||||
Emrld_r = Emrld[::-1]
|
||||
Fall_r = Fall[::-1]
|
||||
Geyser_r = Geyser[::-1]
|
||||
Magenta_r = Magenta[::-1]
|
||||
Mint_r = Mint[::-1]
|
||||
Oryel_r = Oryel[::-1]
|
||||
Pastel_r = Pastel[::-1]
|
||||
Peach_r = Peach[::-1]
|
||||
Pinkyl_r = Pinkyl[::-1]
|
||||
Prism_r = Prism[::-1]
|
||||
Purp_r = Purp[::-1]
|
||||
Purpor_r = Purpor[::-1]
|
||||
Redor_r = Redor[::-1]
|
||||
Safe_r = Safe[::-1]
|
||||
Sunset_r = Sunset[::-1]
|
||||
Sunsetdark_r = Sunsetdark[::-1]
|
||||
Teal_r = Teal[::-1]
|
||||
Tealgrn_r = Tealgrn[::-1]
|
||||
Tealrose_r = Tealrose[::-1]
|
||||
Temps_r = Temps[::-1]
|
||||
Tropic_r = Tropic[::-1]
|
||||
Vivid_r = Vivid[::-1]
|
||||
@@ -0,0 +1,296 @@
|
||||
"""
|
||||
Color scales from the cmocean project
|
||||
|
||||
Learn more at https://matplotlib.org/cmocean/
|
||||
|
||||
cmocean is made available under an MIT license: https://github.com/matplotlib/cmocean/blob/master/LICENSE.txt
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches, _swatches_continuous
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
|
||||
def swatches_continuous(template=None):
|
||||
return _swatches_continuous(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches_continuous.__doc__ = _swatches_continuous.__doc__
|
||||
|
||||
|
||||
turbid = [
|
||||
"rgb(232, 245, 171)",
|
||||
"rgb(220, 219, 137)",
|
||||
"rgb(209, 193, 107)",
|
||||
"rgb(199, 168, 83)",
|
||||
"rgb(186, 143, 66)",
|
||||
"rgb(170, 121, 60)",
|
||||
"rgb(151, 103, 58)",
|
||||
"rgb(129, 87, 56)",
|
||||
"rgb(104, 72, 53)",
|
||||
"rgb(80, 59, 46)",
|
||||
"rgb(57, 45, 37)",
|
||||
"rgb(34, 30, 27)",
|
||||
]
|
||||
thermal = [
|
||||
"rgb(3, 35, 51)",
|
||||
"rgb(13, 48, 100)",
|
||||
"rgb(53, 50, 155)",
|
||||
"rgb(93, 62, 153)",
|
||||
"rgb(126, 77, 143)",
|
||||
"rgb(158, 89, 135)",
|
||||
"rgb(193, 100, 121)",
|
||||
"rgb(225, 113, 97)",
|
||||
"rgb(246, 139, 69)",
|
||||
"rgb(251, 173, 60)",
|
||||
"rgb(246, 211, 70)",
|
||||
"rgb(231, 250, 90)",
|
||||
]
|
||||
haline = [
|
||||
"rgb(41, 24, 107)",
|
||||
"rgb(42, 35, 160)",
|
||||
"rgb(15, 71, 153)",
|
||||
"rgb(18, 95, 142)",
|
||||
"rgb(38, 116, 137)",
|
||||
"rgb(53, 136, 136)",
|
||||
"rgb(65, 157, 133)",
|
||||
"rgb(81, 178, 124)",
|
||||
"rgb(111, 198, 107)",
|
||||
"rgb(160, 214, 91)",
|
||||
"rgb(212, 225, 112)",
|
||||
"rgb(253, 238, 153)",
|
||||
]
|
||||
solar = [
|
||||
"rgb(51, 19, 23)",
|
||||
"rgb(79, 28, 33)",
|
||||
"rgb(108, 36, 36)",
|
||||
"rgb(135, 47, 32)",
|
||||
"rgb(157, 66, 25)",
|
||||
"rgb(174, 88, 20)",
|
||||
"rgb(188, 111, 19)",
|
||||
"rgb(199, 137, 22)",
|
||||
"rgb(209, 164, 32)",
|
||||
"rgb(217, 192, 44)",
|
||||
"rgb(222, 222, 59)",
|
||||
"rgb(224, 253, 74)",
|
||||
]
|
||||
ice = [
|
||||
"rgb(3, 5, 18)",
|
||||
"rgb(25, 25, 51)",
|
||||
"rgb(44, 42, 87)",
|
||||
"rgb(58, 60, 125)",
|
||||
"rgb(62, 83, 160)",
|
||||
"rgb(62, 109, 178)",
|
||||
"rgb(72, 134, 187)",
|
||||
"rgb(89, 159, 196)",
|
||||
"rgb(114, 184, 205)",
|
||||
"rgb(149, 207, 216)",
|
||||
"rgb(192, 229, 232)",
|
||||
"rgb(234, 252, 253)",
|
||||
]
|
||||
gray = [
|
||||
"rgb(0, 0, 0)",
|
||||
"rgb(16, 16, 16)",
|
||||
"rgb(38, 38, 38)",
|
||||
"rgb(59, 59, 59)",
|
||||
"rgb(81, 80, 80)",
|
||||
"rgb(102, 101, 101)",
|
||||
"rgb(124, 123, 122)",
|
||||
"rgb(146, 146, 145)",
|
||||
"rgb(171, 171, 170)",
|
||||
"rgb(197, 197, 195)",
|
||||
"rgb(224, 224, 223)",
|
||||
"rgb(254, 254, 253)",
|
||||
]
|
||||
oxy = [
|
||||
"rgb(63, 5, 5)",
|
||||
"rgb(101, 6, 13)",
|
||||
"rgb(138, 17, 9)",
|
||||
"rgb(96, 95, 95)",
|
||||
"rgb(119, 118, 118)",
|
||||
"rgb(142, 141, 141)",
|
||||
"rgb(166, 166, 165)",
|
||||
"rgb(193, 192, 191)",
|
||||
"rgb(222, 222, 220)",
|
||||
"rgb(239, 248, 90)",
|
||||
"rgb(230, 210, 41)",
|
||||
"rgb(220, 174, 25)",
|
||||
]
|
||||
deep = [
|
||||
"rgb(253, 253, 204)",
|
||||
"rgb(206, 236, 179)",
|
||||
"rgb(156, 219, 165)",
|
||||
"rgb(111, 201, 163)",
|
||||
"rgb(86, 177, 163)",
|
||||
"rgb(76, 153, 160)",
|
||||
"rgb(68, 130, 155)",
|
||||
"rgb(62, 108, 150)",
|
||||
"rgb(62, 82, 143)",
|
||||
"rgb(64, 60, 115)",
|
||||
"rgb(54, 43, 77)",
|
||||
"rgb(39, 26, 44)",
|
||||
]
|
||||
dense = [
|
||||
"rgb(230, 240, 240)",
|
||||
"rgb(191, 221, 229)",
|
||||
"rgb(156, 201, 226)",
|
||||
"rgb(129, 180, 227)",
|
||||
"rgb(115, 154, 228)",
|
||||
"rgb(117, 127, 221)",
|
||||
"rgb(120, 100, 202)",
|
||||
"rgb(119, 74, 175)",
|
||||
"rgb(113, 50, 141)",
|
||||
"rgb(100, 31, 104)",
|
||||
"rgb(80, 20, 66)",
|
||||
"rgb(54, 14, 36)",
|
||||
]
|
||||
algae = [
|
||||
"rgb(214, 249, 207)",
|
||||
"rgb(186, 228, 174)",
|
||||
"rgb(156, 209, 143)",
|
||||
"rgb(124, 191, 115)",
|
||||
"rgb(85, 174, 91)",
|
||||
"rgb(37, 157, 81)",
|
||||
"rgb(7, 138, 78)",
|
||||
"rgb(13, 117, 71)",
|
||||
"rgb(23, 95, 61)",
|
||||
"rgb(25, 75, 49)",
|
||||
"rgb(23, 55, 35)",
|
||||
"rgb(17, 36, 20)",
|
||||
]
|
||||
matter = [
|
||||
"rgb(253, 237, 176)",
|
||||
"rgb(250, 205, 145)",
|
||||
"rgb(246, 173, 119)",
|
||||
"rgb(240, 142, 98)",
|
||||
"rgb(231, 109, 84)",
|
||||
"rgb(216, 80, 83)",
|
||||
"rgb(195, 56, 90)",
|
||||
"rgb(168, 40, 96)",
|
||||
"rgb(138, 29, 99)",
|
||||
"rgb(107, 24, 93)",
|
||||
"rgb(76, 21, 80)",
|
||||
"rgb(47, 15, 61)",
|
||||
]
|
||||
speed = [
|
||||
"rgb(254, 252, 205)",
|
||||
"rgb(239, 225, 156)",
|
||||
"rgb(221, 201, 106)",
|
||||
"rgb(194, 182, 59)",
|
||||
"rgb(157, 167, 21)",
|
||||
"rgb(116, 153, 5)",
|
||||
"rgb(75, 138, 20)",
|
||||
"rgb(35, 121, 36)",
|
||||
"rgb(11, 100, 44)",
|
||||
"rgb(18, 78, 43)",
|
||||
"rgb(25, 56, 34)",
|
||||
"rgb(23, 35, 18)",
|
||||
]
|
||||
amp = [
|
||||
"rgb(241, 236, 236)",
|
||||
"rgb(230, 209, 203)",
|
||||
"rgb(221, 182, 170)",
|
||||
"rgb(213, 156, 137)",
|
||||
"rgb(205, 129, 103)",
|
||||
"rgb(196, 102, 73)",
|
||||
"rgb(186, 74, 47)",
|
||||
"rgb(172, 44, 36)",
|
||||
"rgb(149, 19, 39)",
|
||||
"rgb(120, 14, 40)",
|
||||
"rgb(89, 13, 31)",
|
||||
"rgb(60, 9, 17)",
|
||||
]
|
||||
tempo = [
|
||||
"rgb(254, 245, 244)",
|
||||
"rgb(222, 224, 210)",
|
||||
"rgb(189, 206, 181)",
|
||||
"rgb(153, 189, 156)",
|
||||
"rgb(110, 173, 138)",
|
||||
"rgb(65, 157, 129)",
|
||||
"rgb(25, 137, 125)",
|
||||
"rgb(18, 116, 117)",
|
||||
"rgb(25, 94, 106)",
|
||||
"rgb(28, 72, 93)",
|
||||
"rgb(25, 51, 80)",
|
||||
"rgb(20, 29, 67)",
|
||||
]
|
||||
phase = [
|
||||
"rgb(167, 119, 12)",
|
||||
"rgb(197, 96, 51)",
|
||||
"rgb(217, 67, 96)",
|
||||
"rgb(221, 38, 163)",
|
||||
"rgb(196, 59, 224)",
|
||||
"rgb(153, 97, 244)",
|
||||
"rgb(95, 127, 228)",
|
||||
"rgb(40, 144, 183)",
|
||||
"rgb(15, 151, 136)",
|
||||
"rgb(39, 153, 79)",
|
||||
"rgb(119, 141, 17)",
|
||||
"rgb(167, 119, 12)",
|
||||
]
|
||||
balance = [
|
||||
"rgb(23, 28, 66)",
|
||||
"rgb(41, 58, 143)",
|
||||
"rgb(11, 102, 189)",
|
||||
"rgb(69, 144, 185)",
|
||||
"rgb(142, 181, 194)",
|
||||
"rgb(210, 216, 219)",
|
||||
"rgb(230, 210, 204)",
|
||||
"rgb(213, 157, 137)",
|
||||
"rgb(196, 101, 72)",
|
||||
"rgb(172, 43, 36)",
|
||||
"rgb(120, 14, 40)",
|
||||
"rgb(60, 9, 17)",
|
||||
]
|
||||
delta = [
|
||||
"rgb(16, 31, 63)",
|
||||
"rgb(38, 62, 144)",
|
||||
"rgb(30, 110, 161)",
|
||||
"rgb(60, 154, 171)",
|
||||
"rgb(140, 193, 186)",
|
||||
"rgb(217, 229, 218)",
|
||||
"rgb(239, 226, 156)",
|
||||
"rgb(195, 182, 59)",
|
||||
"rgb(115, 152, 5)",
|
||||
"rgb(34, 120, 36)",
|
||||
"rgb(18, 78, 43)",
|
||||
"rgb(23, 35, 18)",
|
||||
]
|
||||
curl = [
|
||||
"rgb(20, 29, 67)",
|
||||
"rgb(28, 72, 93)",
|
||||
"rgb(18, 115, 117)",
|
||||
"rgb(63, 156, 129)",
|
||||
"rgb(153, 189, 156)",
|
||||
"rgb(223, 225, 211)",
|
||||
"rgb(241, 218, 206)",
|
||||
"rgb(224, 160, 137)",
|
||||
"rgb(203, 101, 99)",
|
||||
"rgb(164, 54, 96)",
|
||||
"rgb(111, 23, 91)",
|
||||
"rgb(51, 13, 53)",
|
||||
]
|
||||
|
||||
algae_r = algae[::-1]
|
||||
amp_r = amp[::-1]
|
||||
balance_r = balance[::-1]
|
||||
curl_r = curl[::-1]
|
||||
deep_r = deep[::-1]
|
||||
delta_r = delta[::-1]
|
||||
dense_r = dense[::-1]
|
||||
gray_r = gray[::-1]
|
||||
haline_r = haline[::-1]
|
||||
ice_r = ice[::-1]
|
||||
matter_r = matter[::-1]
|
||||
oxy_r = oxy[::-1]
|
||||
phase_r = phase[::-1]
|
||||
solar_r = solar[::-1]
|
||||
speed_r = speed[::-1]
|
||||
tempo_r = tempo[::-1]
|
||||
thermal_r = thermal[::-1]
|
||||
turbid_r = turbid[::-1]
|
||||
@@ -0,0 +1,494 @@
|
||||
"""
|
||||
Color scales and sequences from the colorbrewer 2 project
|
||||
|
||||
Learn more at http://colorbrewer2.org
|
||||
|
||||
colorbrewer is made available under an Apache license: http://colorbrewer2.org/export/LICENSE.txt
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
BrBG = [
|
||||
"rgb(84,48,5)",
|
||||
"rgb(140,81,10)",
|
||||
"rgb(191,129,45)",
|
||||
"rgb(223,194,125)",
|
||||
"rgb(246,232,195)",
|
||||
"rgb(245,245,245)",
|
||||
"rgb(199,234,229)",
|
||||
"rgb(128,205,193)",
|
||||
"rgb(53,151,143)",
|
||||
"rgb(1,102,94)",
|
||||
"rgb(0,60,48)",
|
||||
]
|
||||
|
||||
PRGn = [
|
||||
"rgb(64,0,75)",
|
||||
"rgb(118,42,131)",
|
||||
"rgb(153,112,171)",
|
||||
"rgb(194,165,207)",
|
||||
"rgb(231,212,232)",
|
||||
"rgb(247,247,247)",
|
||||
"rgb(217,240,211)",
|
||||
"rgb(166,219,160)",
|
||||
"rgb(90,174,97)",
|
||||
"rgb(27,120,55)",
|
||||
"rgb(0,68,27)",
|
||||
]
|
||||
|
||||
PiYG = [
|
||||
"rgb(142,1,82)",
|
||||
"rgb(197,27,125)",
|
||||
"rgb(222,119,174)",
|
||||
"rgb(241,182,218)",
|
||||
"rgb(253,224,239)",
|
||||
"rgb(247,247,247)",
|
||||
"rgb(230,245,208)",
|
||||
"rgb(184,225,134)",
|
||||
"rgb(127,188,65)",
|
||||
"rgb(77,146,33)",
|
||||
"rgb(39,100,25)",
|
||||
]
|
||||
|
||||
PuOr = [
|
||||
"rgb(127,59,8)",
|
||||
"rgb(179,88,6)",
|
||||
"rgb(224,130,20)",
|
||||
"rgb(253,184,99)",
|
||||
"rgb(254,224,182)",
|
||||
"rgb(247,247,247)",
|
||||
"rgb(216,218,235)",
|
||||
"rgb(178,171,210)",
|
||||
"rgb(128,115,172)",
|
||||
"rgb(84,39,136)",
|
||||
"rgb(45,0,75)",
|
||||
]
|
||||
|
||||
RdBu = [
|
||||
"rgb(103,0,31)",
|
||||
"rgb(178,24,43)",
|
||||
"rgb(214,96,77)",
|
||||
"rgb(244,165,130)",
|
||||
"rgb(253,219,199)",
|
||||
"rgb(247,247,247)",
|
||||
"rgb(209,229,240)",
|
||||
"rgb(146,197,222)",
|
||||
"rgb(67,147,195)",
|
||||
"rgb(33,102,172)",
|
||||
"rgb(5,48,97)",
|
||||
]
|
||||
|
||||
RdGy = [
|
||||
"rgb(103,0,31)",
|
||||
"rgb(178,24,43)",
|
||||
"rgb(214,96,77)",
|
||||
"rgb(244,165,130)",
|
||||
"rgb(253,219,199)",
|
||||
"rgb(255,255,255)",
|
||||
"rgb(224,224,224)",
|
||||
"rgb(186,186,186)",
|
||||
"rgb(135,135,135)",
|
||||
"rgb(77,77,77)",
|
||||
"rgb(26,26,26)",
|
||||
]
|
||||
|
||||
RdYlBu = [
|
||||
"rgb(165,0,38)",
|
||||
"rgb(215,48,39)",
|
||||
"rgb(244,109,67)",
|
||||
"rgb(253,174,97)",
|
||||
"rgb(254,224,144)",
|
||||
"rgb(255,255,191)",
|
||||
"rgb(224,243,248)",
|
||||
"rgb(171,217,233)",
|
||||
"rgb(116,173,209)",
|
||||
"rgb(69,117,180)",
|
||||
"rgb(49,54,149)",
|
||||
]
|
||||
|
||||
RdYlGn = [
|
||||
"rgb(165,0,38)",
|
||||
"rgb(215,48,39)",
|
||||
"rgb(244,109,67)",
|
||||
"rgb(253,174,97)",
|
||||
"rgb(254,224,139)",
|
||||
"rgb(255,255,191)",
|
||||
"rgb(217,239,139)",
|
||||
"rgb(166,217,106)",
|
||||
"rgb(102,189,99)",
|
||||
"rgb(26,152,80)",
|
||||
"rgb(0,104,55)",
|
||||
]
|
||||
|
||||
Spectral = [
|
||||
"rgb(158,1,66)",
|
||||
"rgb(213,62,79)",
|
||||
"rgb(244,109,67)",
|
||||
"rgb(253,174,97)",
|
||||
"rgb(254,224,139)",
|
||||
"rgb(255,255,191)",
|
||||
"rgb(230,245,152)",
|
||||
"rgb(171,221,164)",
|
||||
"rgb(102,194,165)",
|
||||
"rgb(50,136,189)",
|
||||
"rgb(94,79,162)",
|
||||
]
|
||||
|
||||
Set1 = [
|
||||
"rgb(228,26,28)",
|
||||
"rgb(55,126,184)",
|
||||
"rgb(77,175,74)",
|
||||
"rgb(152,78,163)",
|
||||
"rgb(255,127,0)",
|
||||
"rgb(255,255,51)",
|
||||
"rgb(166,86,40)",
|
||||
"rgb(247,129,191)",
|
||||
"rgb(153,153,153)",
|
||||
]
|
||||
|
||||
|
||||
Pastel1 = [
|
||||
"rgb(251,180,174)",
|
||||
"rgb(179,205,227)",
|
||||
"rgb(204,235,197)",
|
||||
"rgb(222,203,228)",
|
||||
"rgb(254,217,166)",
|
||||
"rgb(255,255,204)",
|
||||
"rgb(229,216,189)",
|
||||
"rgb(253,218,236)",
|
||||
"rgb(242,242,242)",
|
||||
]
|
||||
Dark2 = [
|
||||
"rgb(27,158,119)",
|
||||
"rgb(217,95,2)",
|
||||
"rgb(117,112,179)",
|
||||
"rgb(231,41,138)",
|
||||
"rgb(102,166,30)",
|
||||
"rgb(230,171,2)",
|
||||
"rgb(166,118,29)",
|
||||
"rgb(102,102,102)",
|
||||
]
|
||||
Set2 = [
|
||||
"rgb(102,194,165)",
|
||||
"rgb(252,141,98)",
|
||||
"rgb(141,160,203)",
|
||||
"rgb(231,138,195)",
|
||||
"rgb(166,216,84)",
|
||||
"rgb(255,217,47)",
|
||||
"rgb(229,196,148)",
|
||||
"rgb(179,179,179)",
|
||||
]
|
||||
|
||||
|
||||
Pastel2 = [
|
||||
"rgb(179,226,205)",
|
||||
"rgb(253,205,172)",
|
||||
"rgb(203,213,232)",
|
||||
"rgb(244,202,228)",
|
||||
"rgb(230,245,201)",
|
||||
"rgb(255,242,174)",
|
||||
"rgb(241,226,204)",
|
||||
"rgb(204,204,204)",
|
||||
]
|
||||
|
||||
Set3 = [
|
||||
"rgb(141,211,199)",
|
||||
"rgb(255,255,179)",
|
||||
"rgb(190,186,218)",
|
||||
"rgb(251,128,114)",
|
||||
"rgb(128,177,211)",
|
||||
"rgb(253,180,98)",
|
||||
"rgb(179,222,105)",
|
||||
"rgb(252,205,229)",
|
||||
"rgb(217,217,217)",
|
||||
"rgb(188,128,189)",
|
||||
"rgb(204,235,197)",
|
||||
"rgb(255,237,111)",
|
||||
]
|
||||
|
||||
Accent = [
|
||||
"rgb(127,201,127)",
|
||||
"rgb(190,174,212)",
|
||||
"rgb(253,192,134)",
|
||||
"rgb(255,255,153)",
|
||||
"rgb(56,108,176)",
|
||||
"rgb(240,2,127)",
|
||||
"rgb(191,91,23)",
|
||||
"rgb(102,102,102)",
|
||||
]
|
||||
|
||||
|
||||
Paired = [
|
||||
"rgb(166,206,227)",
|
||||
"rgb(31,120,180)",
|
||||
"rgb(178,223,138)",
|
||||
"rgb(51,160,44)",
|
||||
"rgb(251,154,153)",
|
||||
"rgb(227,26,28)",
|
||||
"rgb(253,191,111)",
|
||||
"rgb(255,127,0)",
|
||||
"rgb(202,178,214)",
|
||||
"rgb(106,61,154)",
|
||||
"rgb(255,255,153)",
|
||||
"rgb(177,89,40)",
|
||||
]
|
||||
|
||||
|
||||
Blues = [
|
||||
"rgb(247,251,255)",
|
||||
"rgb(222,235,247)",
|
||||
"rgb(198,219,239)",
|
||||
"rgb(158,202,225)",
|
||||
"rgb(107,174,214)",
|
||||
"rgb(66,146,198)",
|
||||
"rgb(33,113,181)",
|
||||
"rgb(8,81,156)",
|
||||
"rgb(8,48,107)",
|
||||
]
|
||||
|
||||
BuGn = [
|
||||
"rgb(247,252,253)",
|
||||
"rgb(229,245,249)",
|
||||
"rgb(204,236,230)",
|
||||
"rgb(153,216,201)",
|
||||
"rgb(102,194,164)",
|
||||
"rgb(65,174,118)",
|
||||
"rgb(35,139,69)",
|
||||
"rgb(0,109,44)",
|
||||
"rgb(0,68,27)",
|
||||
]
|
||||
|
||||
BuPu = [
|
||||
"rgb(247,252,253)",
|
||||
"rgb(224,236,244)",
|
||||
"rgb(191,211,230)",
|
||||
"rgb(158,188,218)",
|
||||
"rgb(140,150,198)",
|
||||
"rgb(140,107,177)",
|
||||
"rgb(136,65,157)",
|
||||
"rgb(129,15,124)",
|
||||
"rgb(77,0,75)",
|
||||
]
|
||||
|
||||
GnBu = [
|
||||
"rgb(247,252,240)",
|
||||
"rgb(224,243,219)",
|
||||
"rgb(204,235,197)",
|
||||
"rgb(168,221,181)",
|
||||
"rgb(123,204,196)",
|
||||
"rgb(78,179,211)",
|
||||
"rgb(43,140,190)",
|
||||
"rgb(8,104,172)",
|
||||
"rgb(8,64,129)",
|
||||
]
|
||||
|
||||
Greens = [
|
||||
"rgb(247,252,245)",
|
||||
"rgb(229,245,224)",
|
||||
"rgb(199,233,192)",
|
||||
"rgb(161,217,155)",
|
||||
"rgb(116,196,118)",
|
||||
"rgb(65,171,93)",
|
||||
"rgb(35,139,69)",
|
||||
"rgb(0,109,44)",
|
||||
"rgb(0,68,27)",
|
||||
]
|
||||
|
||||
Greys = [
|
||||
"rgb(255,255,255)",
|
||||
"rgb(240,240,240)",
|
||||
"rgb(217,217,217)",
|
||||
"rgb(189,189,189)",
|
||||
"rgb(150,150,150)",
|
||||
"rgb(115,115,115)",
|
||||
"rgb(82,82,82)",
|
||||
"rgb(37,37,37)",
|
||||
"rgb(0,0,0)",
|
||||
]
|
||||
|
||||
OrRd = [
|
||||
"rgb(255,247,236)",
|
||||
"rgb(254,232,200)",
|
||||
"rgb(253,212,158)",
|
||||
"rgb(253,187,132)",
|
||||
"rgb(252,141,89)",
|
||||
"rgb(239,101,72)",
|
||||
"rgb(215,48,31)",
|
||||
"rgb(179,0,0)",
|
||||
"rgb(127,0,0)",
|
||||
]
|
||||
|
||||
Oranges = [
|
||||
"rgb(255,245,235)",
|
||||
"rgb(254,230,206)",
|
||||
"rgb(253,208,162)",
|
||||
"rgb(253,174,107)",
|
||||
"rgb(253,141,60)",
|
||||
"rgb(241,105,19)",
|
||||
"rgb(217,72,1)",
|
||||
"rgb(166,54,3)",
|
||||
"rgb(127,39,4)",
|
||||
]
|
||||
|
||||
PuBu = [
|
||||
"rgb(255,247,251)",
|
||||
"rgb(236,231,242)",
|
||||
"rgb(208,209,230)",
|
||||
"rgb(166,189,219)",
|
||||
"rgb(116,169,207)",
|
||||
"rgb(54,144,192)",
|
||||
"rgb(5,112,176)",
|
||||
"rgb(4,90,141)",
|
||||
"rgb(2,56,88)",
|
||||
]
|
||||
|
||||
PuBuGn = [
|
||||
"rgb(255,247,251)",
|
||||
"rgb(236,226,240)",
|
||||
"rgb(208,209,230)",
|
||||
"rgb(166,189,219)",
|
||||
"rgb(103,169,207)",
|
||||
"rgb(54,144,192)",
|
||||
"rgb(2,129,138)",
|
||||
"rgb(1,108,89)",
|
||||
"rgb(1,70,54)",
|
||||
]
|
||||
|
||||
PuRd = [
|
||||
"rgb(247,244,249)",
|
||||
"rgb(231,225,239)",
|
||||
"rgb(212,185,218)",
|
||||
"rgb(201,148,199)",
|
||||
"rgb(223,101,176)",
|
||||
"rgb(231,41,138)",
|
||||
"rgb(206,18,86)",
|
||||
"rgb(152,0,67)",
|
||||
"rgb(103,0,31)",
|
||||
]
|
||||
|
||||
Purples = [
|
||||
"rgb(252,251,253)",
|
||||
"rgb(239,237,245)",
|
||||
"rgb(218,218,235)",
|
||||
"rgb(188,189,220)",
|
||||
"rgb(158,154,200)",
|
||||
"rgb(128,125,186)",
|
||||
"rgb(106,81,163)",
|
||||
"rgb(84,39,143)",
|
||||
"rgb(63,0,125)",
|
||||
]
|
||||
|
||||
RdPu = [
|
||||
"rgb(255,247,243)",
|
||||
"rgb(253,224,221)",
|
||||
"rgb(252,197,192)",
|
||||
"rgb(250,159,181)",
|
||||
"rgb(247,104,161)",
|
||||
"rgb(221,52,151)",
|
||||
"rgb(174,1,126)",
|
||||
"rgb(122,1,119)",
|
||||
"rgb(73,0,106)",
|
||||
]
|
||||
|
||||
Reds = [
|
||||
"rgb(255,245,240)",
|
||||
"rgb(254,224,210)",
|
||||
"rgb(252,187,161)",
|
||||
"rgb(252,146,114)",
|
||||
"rgb(251,106,74)",
|
||||
"rgb(239,59,44)",
|
||||
"rgb(203,24,29)",
|
||||
"rgb(165,15,21)",
|
||||
"rgb(103,0,13)",
|
||||
]
|
||||
|
||||
YlGn = [
|
||||
"rgb(255,255,229)",
|
||||
"rgb(247,252,185)",
|
||||
"rgb(217,240,163)",
|
||||
"rgb(173,221,142)",
|
||||
"rgb(120,198,121)",
|
||||
"rgb(65,171,93)",
|
||||
"rgb(35,132,67)",
|
||||
"rgb(0,104,55)",
|
||||
"rgb(0,69,41)",
|
||||
]
|
||||
|
||||
YlGnBu = [
|
||||
"rgb(255,255,217)",
|
||||
"rgb(237,248,177)",
|
||||
"rgb(199,233,180)",
|
||||
"rgb(127,205,187)",
|
||||
"rgb(65,182,196)",
|
||||
"rgb(29,145,192)",
|
||||
"rgb(34,94,168)",
|
||||
"rgb(37,52,148)",
|
||||
"rgb(8,29,88)",
|
||||
]
|
||||
|
||||
YlOrBr = [
|
||||
"rgb(255,255,229)",
|
||||
"rgb(255,247,188)",
|
||||
"rgb(254,227,145)",
|
||||
"rgb(254,196,79)",
|
||||
"rgb(254,153,41)",
|
||||
"rgb(236,112,20)",
|
||||
"rgb(204,76,2)",
|
||||
"rgb(153,52,4)",
|
||||
"rgb(102,37,6)",
|
||||
]
|
||||
|
||||
YlOrRd = [
|
||||
"rgb(255,255,204)",
|
||||
"rgb(255,237,160)",
|
||||
"rgb(254,217,118)",
|
||||
"rgb(254,178,76)",
|
||||
"rgb(253,141,60)",
|
||||
"rgb(252,78,42)",
|
||||
"rgb(227,26,28)",
|
||||
"rgb(189,0,38)",
|
||||
"rgb(128,0,38)",
|
||||
]
|
||||
|
||||
Accent_r = Accent[::-1]
|
||||
Blues_r = Blues[::-1]
|
||||
BrBG_r = BrBG[::-1]
|
||||
BuGn_r = BuGn[::-1]
|
||||
BuPu_r = BuPu[::-1]
|
||||
Dark2_r = Dark2[::-1]
|
||||
GnBu_r = GnBu[::-1]
|
||||
Greens_r = Greens[::-1]
|
||||
Greys_r = Greys[::-1]
|
||||
OrRd_r = OrRd[::-1]
|
||||
Oranges_r = Oranges[::-1]
|
||||
PRGn_r = PRGn[::-1]
|
||||
Paired_r = Paired[::-1]
|
||||
Pastel1_r = Pastel1[::-1]
|
||||
Pastel2_r = Pastel2[::-1]
|
||||
PiYG_r = PiYG[::-1]
|
||||
PuBu_r = PuBu[::-1]
|
||||
PuBuGn_r = PuBuGn[::-1]
|
||||
PuOr_r = PuOr[::-1]
|
||||
PuRd_r = PuRd[::-1]
|
||||
Purples_r = Purples[::-1]
|
||||
RdBu_r = RdBu[::-1]
|
||||
RdGy_r = RdGy[::-1]
|
||||
RdPu_r = RdPu[::-1]
|
||||
RdYlBu_r = RdYlBu[::-1]
|
||||
RdYlGn_r = RdYlGn[::-1]
|
||||
Reds_r = Reds[::-1]
|
||||
Set1_r = Set1[::-1]
|
||||
Set2_r = Set2[::-1]
|
||||
Set3_r = Set3[::-1]
|
||||
Spectral_r = Spectral[::-1]
|
||||
YlGn_r = YlGn[::-1]
|
||||
YlGnBu_r = YlGnBu[::-1]
|
||||
YlOrBr_r = YlOrBr[::-1]
|
||||
YlOrRd_r = YlOrRd[::-1]
|
||||
@@ -0,0 +1,157 @@
|
||||
"""
|
||||
Cyclical color scales are appropriate for continuous data that has a natural cyclical \
|
||||
structure, such as temporal data (hour of day, day of week, day of year, seasons) or
|
||||
complex numbers or other phase data.
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches, _swatches_continuous, _swatches_cyclical
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
|
||||
def swatches_continuous(template=None):
|
||||
return _swatches_continuous(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches_continuous.__doc__ = _swatches_continuous.__doc__
|
||||
|
||||
|
||||
def swatches_cyclical(template=None):
|
||||
return _swatches_cyclical(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches_cyclical.__doc__ = _swatches_cyclical.__doc__
|
||||
|
||||
|
||||
Twilight = [
|
||||
"#e2d9e2",
|
||||
"#9ebbc9",
|
||||
"#6785be",
|
||||
"#5e43a5",
|
||||
"#421257",
|
||||
"#471340",
|
||||
"#8e2c50",
|
||||
"#ba6657",
|
||||
"#ceac94",
|
||||
"#e2d9e2",
|
||||
]
|
||||
IceFire = [
|
||||
"#000000",
|
||||
"#001f4d",
|
||||
"#003786",
|
||||
"#0e58a8",
|
||||
"#217eb8",
|
||||
"#30a4ca",
|
||||
"#54c8df",
|
||||
"#9be4ef",
|
||||
"#e1e9d1",
|
||||
"#f3d573",
|
||||
"#e7b000",
|
||||
"#da8200",
|
||||
"#c65400",
|
||||
"#ac2301",
|
||||
"#820000",
|
||||
"#4c0000",
|
||||
"#000000",
|
||||
]
|
||||
Edge = [
|
||||
"#313131",
|
||||
"#3d019d",
|
||||
"#3810dc",
|
||||
"#2d47f9",
|
||||
"#2593ff",
|
||||
"#2adef6",
|
||||
"#60fdfa",
|
||||
"#aefdff",
|
||||
"#f3f3f1",
|
||||
"#fffda9",
|
||||
"#fafd5b",
|
||||
"#f7da29",
|
||||
"#ff8e25",
|
||||
"#f8432d",
|
||||
"#d90d39",
|
||||
"#97023d",
|
||||
"#313131",
|
||||
]
|
||||
Phase = [
|
||||
"rgb(167, 119, 12)",
|
||||
"rgb(197, 96, 51)",
|
||||
"rgb(217, 67, 96)",
|
||||
"rgb(221, 38, 163)",
|
||||
"rgb(196, 59, 224)",
|
||||
"rgb(153, 97, 244)",
|
||||
"rgb(95, 127, 228)",
|
||||
"rgb(40, 144, 183)",
|
||||
"rgb(15, 151, 136)",
|
||||
"rgb(39, 153, 79)",
|
||||
"rgb(119, 141, 17)",
|
||||
"rgb(167, 119, 12)",
|
||||
]
|
||||
HSV = [
|
||||
"#ff0000",
|
||||
"#ffa700",
|
||||
"#afff00",
|
||||
"#08ff00",
|
||||
"#00ff9f",
|
||||
"#00b7ff",
|
||||
"#0010ff",
|
||||
"#9700ff",
|
||||
"#ff00bf",
|
||||
"#ff0000",
|
||||
]
|
||||
mrybm = [
|
||||
"#f884f7",
|
||||
"#f968c4",
|
||||
"#ea4388",
|
||||
"#cf244b",
|
||||
"#b51a15",
|
||||
"#bd4304",
|
||||
"#cc6904",
|
||||
"#d58f04",
|
||||
"#cfaa27",
|
||||
"#a19f62",
|
||||
"#588a93",
|
||||
"#2269c4",
|
||||
"#3e3ef0",
|
||||
"#6b4ef9",
|
||||
"#956bfa",
|
||||
"#cd7dfe",
|
||||
"#f884f7",
|
||||
]
|
||||
mygbm = [
|
||||
"#ef55f1",
|
||||
"#fb84ce",
|
||||
"#fbafa1",
|
||||
"#fcd471",
|
||||
"#f0ed35",
|
||||
"#c6e516",
|
||||
"#96d310",
|
||||
"#61c10b",
|
||||
"#31ac28",
|
||||
"#439064",
|
||||
"#3d719a",
|
||||
"#284ec8",
|
||||
"#2e21ea",
|
||||
"#6324f5",
|
||||
"#9139fa",
|
||||
"#c543fa",
|
||||
"#ef55f1",
|
||||
]
|
||||
|
||||
Edge_r = Edge[::-1]
|
||||
HSV_r = HSV[::-1]
|
||||
IceFire_r = IceFire[::-1]
|
||||
Phase_r = Phase[::-1]
|
||||
Twilight_r = Twilight[::-1]
|
||||
mrybm_r = mrybm[::-1]
|
||||
mygbm_r = mygbm[::-1]
|
||||
|
||||
__all__ = [
|
||||
"swatches",
|
||||
"swatches_cyclical",
|
||||
]
|
||||
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
Diverging color scales are appropriate for continuous data that has a natural midpoint \
|
||||
other otherwise informative special value, such as 0 altitude, or the boiling point
|
||||
of a liquid. The color scales in this module are \
|
||||
mostly meant to be passed in as the `color_continuous_scale` argument to various \
|
||||
functions, and to be used with the `color_continuous_midpoint` argument.
|
||||
"""
|
||||
|
||||
from .colorbrewer import ( # noqa: F401
|
||||
BrBG,
|
||||
PRGn,
|
||||
PiYG,
|
||||
PuOr,
|
||||
RdBu,
|
||||
RdGy,
|
||||
RdYlBu,
|
||||
RdYlGn,
|
||||
Spectral,
|
||||
BrBG_r,
|
||||
PRGn_r,
|
||||
PiYG_r,
|
||||
PuOr_r,
|
||||
RdBu_r,
|
||||
RdGy_r,
|
||||
RdYlBu_r,
|
||||
RdYlGn_r,
|
||||
Spectral_r,
|
||||
)
|
||||
from .cmocean import ( # noqa: F401
|
||||
balance,
|
||||
delta,
|
||||
curl,
|
||||
oxy,
|
||||
balance_r,
|
||||
delta_r,
|
||||
curl_r,
|
||||
oxy_r,
|
||||
)
|
||||
from .carto import ( # noqa: F401
|
||||
Armyrose,
|
||||
Fall,
|
||||
Geyser,
|
||||
Temps,
|
||||
Tealrose,
|
||||
Tropic,
|
||||
Earth,
|
||||
Armyrose_r,
|
||||
Fall_r,
|
||||
Geyser_r,
|
||||
Temps_r,
|
||||
Tealrose_r,
|
||||
Tropic_r,
|
||||
Earth_r,
|
||||
)
|
||||
|
||||
from .plotlyjs import Picnic, Portland, Picnic_r, Portland_r # noqa: F401
|
||||
|
||||
from ._swatches import _swatches, _swatches_continuous
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
|
||||
def swatches_continuous(template=None):
|
||||
return _swatches_continuous(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches_continuous.__doc__ = _swatches_continuous.__doc__
|
||||
|
||||
|
||||
__all__ = ["swatches"]
|
||||
@@ -0,0 +1,180 @@
|
||||
# Copied from
|
||||
# https://github.com/plotly/plotly.js/blob/master/src/components/colorscale/scales.js
|
||||
|
||||
# NOTE: these differ slightly from plotly.colors.PLOTLY_SCALES from Plotly.js because
|
||||
# those ones don't have perfectly evenly spaced steps ...
|
||||
# not sure when this skew was introduced, possibly as early as Plotly.py v4.0
|
||||
|
||||
Blackbody = [
|
||||
"rgb(0,0,0)",
|
||||
"rgb(230,0,0)",
|
||||
"rgb(230,210,0)",
|
||||
"rgb(255,255,255)",
|
||||
"rgb(160,200,255)",
|
||||
]
|
||||
Bluered = ["rgb(0,0,255)", "rgb(255,0,0)"]
|
||||
Blues = [
|
||||
"rgb(5,10,172)",
|
||||
"rgb(40,60,190)",
|
||||
"rgb(70,100,245)",
|
||||
"rgb(90,120,245)",
|
||||
"rgb(106,137,247)",
|
||||
"rgb(220,220,220)",
|
||||
]
|
||||
Cividis = [
|
||||
"rgb(0,32,76)",
|
||||
"rgb(0,42,102)",
|
||||
"rgb(0,52,110)",
|
||||
"rgb(39,63,108)",
|
||||
"rgb(60,74,107)",
|
||||
"rgb(76,85,107)",
|
||||
"rgb(91,95,109)",
|
||||
"rgb(104,106,112)",
|
||||
"rgb(117,117,117)",
|
||||
"rgb(131,129,120)",
|
||||
"rgb(146,140,120)",
|
||||
"rgb(161,152,118)",
|
||||
"rgb(176,165,114)",
|
||||
"rgb(192,177,109)",
|
||||
"rgb(209,191,102)",
|
||||
"rgb(225,204,92)",
|
||||
"rgb(243,219,79)",
|
||||
"rgb(255,233,69)",
|
||||
]
|
||||
Earth = [
|
||||
"rgb(0,0,130)",
|
||||
"rgb(0,180,180)",
|
||||
"rgb(40,210,40)",
|
||||
"rgb(230,230,50)",
|
||||
"rgb(120,70,20)",
|
||||
"rgb(255,255,255)",
|
||||
]
|
||||
Electric = [
|
||||
"rgb(0,0,0)",
|
||||
"rgb(30,0,100)",
|
||||
"rgb(120,0,100)",
|
||||
"rgb(160,90,0)",
|
||||
"rgb(230,200,0)",
|
||||
"rgb(255,250,220)",
|
||||
]
|
||||
Greens = [
|
||||
"rgb(0,68,27)",
|
||||
"rgb(0,109,44)",
|
||||
"rgb(35,139,69)",
|
||||
"rgb(65,171,93)",
|
||||
"rgb(116,196,118)",
|
||||
"rgb(161,217,155)",
|
||||
"rgb(199,233,192)",
|
||||
"rgb(229,245,224)",
|
||||
"rgb(247,252,245)",
|
||||
]
|
||||
Greys = ["rgb(0,0,0)", "rgb(255,255,255)"]
|
||||
Hot = ["rgb(0,0,0)", "rgb(230,0,0)", "rgb(255,210,0)", "rgb(255,255,255)"]
|
||||
Jet = [
|
||||
"rgb(0,0,131)",
|
||||
"rgb(0,60,170)",
|
||||
"rgb(5,255,255)",
|
||||
"rgb(255,255,0)",
|
||||
"rgb(250,0,0)",
|
||||
"rgb(128,0,0)",
|
||||
]
|
||||
Picnic = [
|
||||
"rgb(0,0,255)",
|
||||
"rgb(51,153,255)",
|
||||
"rgb(102,204,255)",
|
||||
"rgb(153,204,255)",
|
||||
"rgb(204,204,255)",
|
||||
"rgb(255,255,255)",
|
||||
"rgb(255,204,255)",
|
||||
"rgb(255,153,255)",
|
||||
"rgb(255,102,204)",
|
||||
"rgb(255,102,102)",
|
||||
"rgb(255,0,0)",
|
||||
]
|
||||
Portland = [
|
||||
"rgb(12,51,131)",
|
||||
"rgb(10,136,186)",
|
||||
"rgb(242,211,56)",
|
||||
"rgb(242,143,56)",
|
||||
"rgb(217,30,30)",
|
||||
]
|
||||
Rainbow = [
|
||||
"rgb(150,0,90)",
|
||||
"rgb(0,0,200)",
|
||||
"rgb(0,25,255)",
|
||||
"rgb(0,152,255)",
|
||||
"rgb(44,255,150)",
|
||||
"rgb(151,255,0)",
|
||||
"rgb(255,234,0)",
|
||||
"rgb(255,111,0)",
|
||||
"rgb(255,0,0)",
|
||||
]
|
||||
RdBu = [
|
||||
"rgb(5,10,172)",
|
||||
"rgb(106,137,247)",
|
||||
"rgb(190,190,190)",
|
||||
"rgb(220,170,132)",
|
||||
"rgb(230,145,90)",
|
||||
"rgb(178,10,28)",
|
||||
]
|
||||
Reds = ["rgb(220,220,220)", "rgb(245,195,157)", "rgb(245,160,105)", "rgb(178,10,28)"]
|
||||
Viridis = [
|
||||
"#440154",
|
||||
"#48186a",
|
||||
"#472d7b",
|
||||
"#424086",
|
||||
"#3b528b",
|
||||
"#33638d",
|
||||
"#2c728e",
|
||||
"#26828e",
|
||||
"#21918c",
|
||||
"#1fa088",
|
||||
"#28ae80",
|
||||
"#3fbc73",
|
||||
"#5ec962",
|
||||
"#84d44b",
|
||||
"#addc30",
|
||||
"#d8e219",
|
||||
"#fde725",
|
||||
]
|
||||
YlGnBu = [
|
||||
"rgb(8,29,88)",
|
||||
"rgb(37,52,148)",
|
||||
"rgb(34,94,168)",
|
||||
"rgb(29,145,192)",
|
||||
"rgb(65,182,196)",
|
||||
"rgb(127,205,187)",
|
||||
"rgb(199,233,180)",
|
||||
"rgb(237,248,217)",
|
||||
"rgb(255,255,217)",
|
||||
]
|
||||
YlOrRd = [
|
||||
"rgb(128,0,38)",
|
||||
"rgb(189,0,38)",
|
||||
"rgb(227,26,28)",
|
||||
"rgb(252,78,42)",
|
||||
"rgb(253,141,60)",
|
||||
"rgb(254,178,76)",
|
||||
"rgb(254,217,118)",
|
||||
"rgb(255,237,160)",
|
||||
"rgb(255,255,204)",
|
||||
]
|
||||
|
||||
Blackbody_r = Blackbody[::-1]
|
||||
Bluered_r = Bluered[::-1]
|
||||
Blues_r = Blues[::-1]
|
||||
Cividis_r = Cividis[::-1]
|
||||
Earth_r = Earth[::-1]
|
||||
Electric_r = Electric[::-1]
|
||||
Greens_r = Greens[::-1]
|
||||
Greys_r = Greys[::-1]
|
||||
Hot_r = Hot[::-1]
|
||||
Jet_r = Jet[::-1]
|
||||
Picnic_r = Picnic[::-1]
|
||||
Portland_r = Portland[::-1]
|
||||
Rainbow_r = Rainbow[::-1]
|
||||
RdBu_r = RdBu[::-1]
|
||||
Reds_r = Reds[::-1]
|
||||
Viridis_r = Viridis[::-1]
|
||||
YlGnBu_r = YlGnBu[::-1]
|
||||
YlOrRd_r = YlOrRd[::-1]
|
||||
@@ -0,0 +1,184 @@
|
||||
"""
|
||||
Qualitative color sequences are appropriate for data that has no natural ordering, such \
|
||||
as categories, colors, names, countries etc. The color sequences in this module are \
|
||||
mostly meant to be passed in as the `color_discrete_sequence` argument to various functions.
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
Plotly = [
|
||||
"#636EFA",
|
||||
"#EF553B",
|
||||
"#00CC96",
|
||||
"#AB63FA",
|
||||
"#FFA15A",
|
||||
"#19D3F3",
|
||||
"#FF6692",
|
||||
"#B6E880",
|
||||
"#FF97FF",
|
||||
"#FECB52",
|
||||
]
|
||||
|
||||
D3 = [
|
||||
"#1F77B4",
|
||||
"#FF7F0E",
|
||||
"#2CA02C",
|
||||
"#D62728",
|
||||
"#9467BD",
|
||||
"#8C564B",
|
||||
"#E377C2",
|
||||
"#7F7F7F",
|
||||
"#BCBD22",
|
||||
"#17BECF",
|
||||
]
|
||||
G10 = [
|
||||
"#3366CC",
|
||||
"#DC3912",
|
||||
"#FF9900",
|
||||
"#109618",
|
||||
"#990099",
|
||||
"#0099C6",
|
||||
"#DD4477",
|
||||
"#66AA00",
|
||||
"#B82E2E",
|
||||
"#316395",
|
||||
]
|
||||
T10 = [
|
||||
"#4C78A8",
|
||||
"#F58518",
|
||||
"#E45756",
|
||||
"#72B7B2",
|
||||
"#54A24B",
|
||||
"#EECA3B",
|
||||
"#B279A2",
|
||||
"#FF9DA6",
|
||||
"#9D755D",
|
||||
"#BAB0AC",
|
||||
]
|
||||
Alphabet = [
|
||||
"#AA0DFE",
|
||||
"#3283FE",
|
||||
"#85660D",
|
||||
"#782AB6",
|
||||
"#565656",
|
||||
"#1C8356",
|
||||
"#16FF32",
|
||||
"#F7E1A0",
|
||||
"#E2E2E2",
|
||||
"#1CBE4F",
|
||||
"#C4451C",
|
||||
"#DEA0FD",
|
||||
"#FE00FA",
|
||||
"#325A9B",
|
||||
"#FEAF16",
|
||||
"#F8A19F",
|
||||
"#90AD1C",
|
||||
"#F6222E",
|
||||
"#1CFFCE",
|
||||
"#2ED9FF",
|
||||
"#B10DA1",
|
||||
"#C075A6",
|
||||
"#FC1CBF",
|
||||
"#B00068",
|
||||
"#FBE426",
|
||||
"#FA0087",
|
||||
]
|
||||
Dark24 = [
|
||||
"#2E91E5",
|
||||
"#E15F99",
|
||||
"#1CA71C",
|
||||
"#FB0D0D",
|
||||
"#DA16FF",
|
||||
"#222A2A",
|
||||
"#B68100",
|
||||
"#750D86",
|
||||
"#EB663B",
|
||||
"#511CFB",
|
||||
"#00A08B",
|
||||
"#FB00D1",
|
||||
"#FC0080",
|
||||
"#B2828D",
|
||||
"#6C7C32",
|
||||
"#778AAE",
|
||||
"#862A16",
|
||||
"#A777F1",
|
||||
"#620042",
|
||||
"#1616A7",
|
||||
"#DA60CA",
|
||||
"#6C4516",
|
||||
"#0D2A63",
|
||||
"#AF0038",
|
||||
]
|
||||
Light24 = [
|
||||
"#FD3216",
|
||||
"#00FE35",
|
||||
"#6A76FC",
|
||||
"#FED4C4",
|
||||
"#FE00CE",
|
||||
"#0DF9FF",
|
||||
"#F6F926",
|
||||
"#FF9616",
|
||||
"#479B55",
|
||||
"#EEA6FB",
|
||||
"#DC587D",
|
||||
"#D626FF",
|
||||
"#6E899C",
|
||||
"#00B5F7",
|
||||
"#B68E00",
|
||||
"#C9FBE5",
|
||||
"#FF0092",
|
||||
"#22FFA7",
|
||||
"#E3EE9E",
|
||||
"#86CE00",
|
||||
"#BC7196",
|
||||
"#7E7DCD",
|
||||
"#FC6955",
|
||||
"#E48F72",
|
||||
]
|
||||
|
||||
Alphabet_r = Alphabet[::-1]
|
||||
D3_r = D3[::-1]
|
||||
Dark24_r = Dark24[::-1]
|
||||
G10_r = G10[::-1]
|
||||
Light24_r = Light24[::-1]
|
||||
Plotly_r = Plotly[::-1]
|
||||
T10_r = T10[::-1]
|
||||
|
||||
from .colorbrewer import ( # noqa: E402 F401
|
||||
Set1,
|
||||
Pastel1,
|
||||
Dark2,
|
||||
Set2,
|
||||
Pastel2,
|
||||
Set3,
|
||||
Set1_r,
|
||||
Pastel1_r,
|
||||
Dark2_r,
|
||||
Set2_r,
|
||||
Pastel2_r,
|
||||
Set3_r,
|
||||
)
|
||||
from .carto import ( # noqa: E402 F401
|
||||
Antique,
|
||||
Bold,
|
||||
Pastel,
|
||||
Prism,
|
||||
Safe,
|
||||
Vivid,
|
||||
Antique_r,
|
||||
Bold_r,
|
||||
Pastel_r,
|
||||
Prism_r,
|
||||
Safe_r,
|
||||
Vivid_r,
|
||||
)
|
||||
|
||||
|
||||
__all__ = ["swatches"]
|
||||
@@ -0,0 +1,257 @@
|
||||
"""
|
||||
Sequential color scales are appropriate for most continuous data, but in some cases it \
|
||||
can be helpful to use a `plotly.colors.diverging` or \
|
||||
`plotly.colors.cyclical` scale instead. The color scales in this module are \
|
||||
mostly meant to be passed in as the `color_continuous_scale` argument to various functions.
|
||||
"""
|
||||
|
||||
from ._swatches import _swatches, _swatches_continuous
|
||||
|
||||
|
||||
def swatches(template=None):
|
||||
return _swatches(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches.__doc__ = _swatches.__doc__
|
||||
|
||||
|
||||
def swatches_continuous(template=None):
|
||||
return _swatches_continuous(__name__, globals(), template)
|
||||
|
||||
|
||||
swatches_continuous.__doc__ = _swatches_continuous.__doc__
|
||||
|
||||
Plotly3 = [
|
||||
"#0508b8",
|
||||
"#1910d8",
|
||||
"#3c19f0",
|
||||
"#6b1cfb",
|
||||
"#981cfd",
|
||||
"#bf1cfd",
|
||||
"#dd2bfd",
|
||||
"#f246fe",
|
||||
"#fc67fd",
|
||||
"#fe88fc",
|
||||
"#fea5fd",
|
||||
"#febefe",
|
||||
"#fec3fe",
|
||||
]
|
||||
|
||||
Viridis = [
|
||||
"#440154",
|
||||
"#482878",
|
||||
"#3e4989",
|
||||
"#31688e",
|
||||
"#26828e",
|
||||
"#1f9e89",
|
||||
"#35b779",
|
||||
"#6ece58",
|
||||
"#b5de2b",
|
||||
"#fde725",
|
||||
]
|
||||
Cividis = [
|
||||
"#00224e",
|
||||
"#123570",
|
||||
"#3b496c",
|
||||
"#575d6d",
|
||||
"#707173",
|
||||
"#8a8678",
|
||||
"#a59c74",
|
||||
"#c3b369",
|
||||
"#e1cc55",
|
||||
"#fee838",
|
||||
]
|
||||
|
||||
Inferno = [
|
||||
"#000004",
|
||||
"#1b0c41",
|
||||
"#4a0c6b",
|
||||
"#781c6d",
|
||||
"#a52c60",
|
||||
"#cf4446",
|
||||
"#ed6925",
|
||||
"#fb9b06",
|
||||
"#f7d13d",
|
||||
"#fcffa4",
|
||||
]
|
||||
Magma = [
|
||||
"#000004",
|
||||
"#180f3d",
|
||||
"#440f76",
|
||||
"#721f81",
|
||||
"#9e2f7f",
|
||||
"#cd4071",
|
||||
"#f1605d",
|
||||
"#fd9668",
|
||||
"#feca8d",
|
||||
"#fcfdbf",
|
||||
]
|
||||
Plasma = [
|
||||
"#0d0887",
|
||||
"#46039f",
|
||||
"#7201a8",
|
||||
"#9c179e",
|
||||
"#bd3786",
|
||||
"#d8576b",
|
||||
"#ed7953",
|
||||
"#fb9f3a",
|
||||
"#fdca26",
|
||||
"#f0f921",
|
||||
]
|
||||
Turbo = [
|
||||
"#30123b",
|
||||
"#4145ab",
|
||||
"#4675ed",
|
||||
"#39a2fc",
|
||||
"#1bcfd4",
|
||||
"#24eca6",
|
||||
"#61fc6c",
|
||||
"#a4fc3b",
|
||||
"#d1e834",
|
||||
"#f3c63a",
|
||||
"#fe9b2d",
|
||||
"#f36315",
|
||||
"#d93806",
|
||||
"#b11901",
|
||||
"#7a0402",
|
||||
]
|
||||
|
||||
Cividis_r = Cividis[::-1]
|
||||
Inferno_r = Inferno[::-1]
|
||||
Magma_r = Magma[::-1]
|
||||
Plasma_r = Plasma[::-1]
|
||||
Plotly3_r = Plotly3[::-1]
|
||||
Turbo_r = Turbo[::-1]
|
||||
Viridis_r = Viridis[::-1]
|
||||
|
||||
from .plotlyjs import ( # noqa: E402 F401
|
||||
Blackbody,
|
||||
Bluered,
|
||||
Electric,
|
||||
Hot,
|
||||
Jet,
|
||||
Rainbow,
|
||||
Blackbody_r,
|
||||
Bluered_r,
|
||||
Electric_r,
|
||||
Hot_r,
|
||||
Jet_r,
|
||||
Rainbow_r,
|
||||
)
|
||||
|
||||
from .colorbrewer import ( # noqa: E402 F401
|
||||
Blues,
|
||||
BuGn,
|
||||
BuPu,
|
||||
GnBu,
|
||||
Greens,
|
||||
Greys,
|
||||
OrRd,
|
||||
Oranges,
|
||||
PuBu,
|
||||
PuBuGn,
|
||||
PuRd,
|
||||
Purples,
|
||||
RdBu,
|
||||
RdPu,
|
||||
Reds,
|
||||
YlGn,
|
||||
YlGnBu,
|
||||
YlOrBr,
|
||||
YlOrRd,
|
||||
Blues_r,
|
||||
BuGn_r,
|
||||
BuPu_r,
|
||||
GnBu_r,
|
||||
Greens_r,
|
||||
Greys_r,
|
||||
OrRd_r,
|
||||
Oranges_r,
|
||||
PuBu_r,
|
||||
PuBuGn_r,
|
||||
PuRd_r,
|
||||
Purples_r,
|
||||
RdBu_r,
|
||||
RdPu_r,
|
||||
Reds_r,
|
||||
YlGn_r,
|
||||
YlGnBu_r,
|
||||
YlOrBr_r,
|
||||
YlOrRd_r,
|
||||
)
|
||||
|
||||
from .cmocean import ( # noqa: E402 F401
|
||||
turbid,
|
||||
thermal,
|
||||
haline,
|
||||
solar,
|
||||
ice,
|
||||
gray,
|
||||
deep,
|
||||
dense,
|
||||
algae,
|
||||
matter,
|
||||
speed,
|
||||
amp,
|
||||
tempo,
|
||||
turbid_r,
|
||||
thermal_r,
|
||||
haline_r,
|
||||
solar_r,
|
||||
ice_r,
|
||||
gray_r,
|
||||
deep_r,
|
||||
dense_r,
|
||||
algae_r,
|
||||
matter_r,
|
||||
speed_r,
|
||||
amp_r,
|
||||
tempo_r,
|
||||
)
|
||||
|
||||
from .carto import ( # noqa: E402 F401
|
||||
Burg,
|
||||
Burgyl,
|
||||
Redor,
|
||||
Oryel,
|
||||
Peach,
|
||||
Pinkyl,
|
||||
Mint,
|
||||
Blugrn,
|
||||
Darkmint,
|
||||
Emrld,
|
||||
Aggrnyl,
|
||||
Bluyl,
|
||||
Teal,
|
||||
Tealgrn,
|
||||
Purp,
|
||||
Purpor,
|
||||
Sunset,
|
||||
Magenta,
|
||||
Sunsetdark,
|
||||
Agsunset,
|
||||
Brwnyl,
|
||||
Burg_r,
|
||||
Burgyl_r,
|
||||
Redor_r,
|
||||
Oryel_r,
|
||||
Peach_r,
|
||||
Pinkyl_r,
|
||||
Mint_r,
|
||||
Blugrn_r,
|
||||
Darkmint_r,
|
||||
Emrld_r,
|
||||
Aggrnyl_r,
|
||||
Bluyl_r,
|
||||
Teal_r,
|
||||
Tealgrn_r,
|
||||
Purp_r,
|
||||
Purpor_r,
|
||||
Sunset_r,
|
||||
Magenta_r,
|
||||
Sunsetdark_r,
|
||||
Agsunset_r,
|
||||
Brwnyl_r,
|
||||
)
|
||||
|
||||
__all__ = ["swatches"]
|
||||
@@ -0,0 +1,75 @@
|
||||
from io import BytesIO
|
||||
import base64
|
||||
from .png import Writer, from_array
|
||||
|
||||
try:
|
||||
from PIL import Image
|
||||
|
||||
pil_imported = True
|
||||
except ImportError:
|
||||
pil_imported = False
|
||||
|
||||
|
||||
def image_array_to_data_uri(img, backend="pil", compression=4, ext="png"):
|
||||
"""Converts a numpy array of uint8 into a base64 png or jpg string.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
img: ndarray of uint8
|
||||
array image
|
||||
backend: str
|
||||
'auto', 'pil' or 'pypng'. If 'auto', Pillow is used if installed,
|
||||
otherwise pypng.
|
||||
compression: int, between 0 and 9
|
||||
compression level to be passed to the backend
|
||||
ext: str, 'png' or 'jpg'
|
||||
compression format used to generate b64 string
|
||||
"""
|
||||
# PIL and pypng error messages are quite obscure so we catch invalid compression values
|
||||
if compression < 0 or compression > 9:
|
||||
raise ValueError("compression level must be between 0 and 9.")
|
||||
alpha = False
|
||||
if img.ndim == 2:
|
||||
mode = "L"
|
||||
elif img.ndim == 3 and img.shape[-1] == 3:
|
||||
mode = "RGB"
|
||||
elif img.ndim == 3 and img.shape[-1] == 4:
|
||||
mode = "RGBA"
|
||||
alpha = True
|
||||
else:
|
||||
raise ValueError("Invalid image shape")
|
||||
if backend == "auto":
|
||||
backend = "pil" if pil_imported else "pypng"
|
||||
if ext != "png" and backend != "pil":
|
||||
raise ValueError("jpg binary strings are only available with PIL backend")
|
||||
|
||||
if backend == "pypng":
|
||||
ndim = img.ndim
|
||||
sh = img.shape
|
||||
if ndim == 3:
|
||||
img = img.reshape((sh[0], sh[1] * sh[2]))
|
||||
w = Writer(
|
||||
sh[1], sh[0], greyscale=(ndim == 2), alpha=alpha, compression=compression
|
||||
)
|
||||
img_png = from_array(img, mode=mode)
|
||||
prefix = "data:image/png;base64,"
|
||||
with BytesIO() as stream:
|
||||
w.write(stream, img_png.rows)
|
||||
base64_string = prefix + base64.b64encode(stream.getvalue()).decode("utf-8")
|
||||
else: # pil
|
||||
if not pil_imported:
|
||||
raise ImportError(
|
||||
"pillow needs to be installed to use `backend='pil'. Please"
|
||||
"install pillow or use `backend='pypng'."
|
||||
)
|
||||
pil_img = Image.fromarray(img)
|
||||
if ext == "jpg" or ext == "jpeg":
|
||||
prefix = "data:image/jpeg;base64,"
|
||||
ext = "jpeg"
|
||||
else:
|
||||
prefix = "data:image/png;base64,"
|
||||
ext = "png"
|
||||
with BytesIO() as stream:
|
||||
pil_img.save(stream, format=ext, compress_level=compression)
|
||||
base64_string = prefix + base64.b64encode(stream.getvalue()).decode("utf-8")
|
||||
return base64_string
|
||||
@@ -0,0 +1,97 @@
|
||||
class PlotlyError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class PlotlyEmptyDataError(PlotlyError):
|
||||
pass
|
||||
|
||||
|
||||
class PlotlyGraphObjectError(PlotlyError):
|
||||
def __init__(self, message="", path=(), notes=()):
|
||||
"""
|
||||
General graph object error for validation failures.
|
||||
|
||||
:param (str|unicode) message: The error message.
|
||||
:param (iterable) path: A path pointing to the error.
|
||||
:param notes: Add additional notes, but keep default exception message.
|
||||
|
||||
"""
|
||||
self.message = message
|
||||
self.plain_message = message # for backwards compat
|
||||
self.path = list(path)
|
||||
self.notes = notes
|
||||
super(PlotlyGraphObjectError, self).__init__(message)
|
||||
|
||||
def __str__(self):
|
||||
"""This is called by Python to present the error message."""
|
||||
format_dict = {
|
||||
"message": self.message,
|
||||
"path": "[" + "][".join(repr(k) for k in self.path) + "]",
|
||||
"notes": "\n".join(self.notes),
|
||||
}
|
||||
return "{message}\n\nPath To Error: {path}\n\n{notes}".format(**format_dict)
|
||||
|
||||
|
||||
class PlotlyDictKeyError(PlotlyGraphObjectError):
|
||||
def __init__(self, obj, path, notes=()):
|
||||
"""See PlotlyGraphObjectError.__init__ for param docs."""
|
||||
format_dict = {"attribute": path[-1], "object_name": obj._name}
|
||||
message = "'{attribute}' is not allowed in '{object_name}'".format(
|
||||
**format_dict
|
||||
)
|
||||
notes = [obj.help(return_help=True)] + list(notes)
|
||||
super(PlotlyDictKeyError, self).__init__(
|
||||
message=message, path=path, notes=notes
|
||||
)
|
||||
|
||||
|
||||
class PlotlyDictValueError(PlotlyGraphObjectError):
|
||||
def __init__(self, obj, path, notes=()):
|
||||
"""See PlotlyGraphObjectError.__init__ for param docs."""
|
||||
format_dict = {"attribute": path[-1], "object_name": obj._name}
|
||||
message = "'{attribute}' has invalid value inside '{object_name}'".format(
|
||||
**format_dict
|
||||
)
|
||||
notes = [obj.help(path[-1], return_help=True)] + list(notes)
|
||||
super(PlotlyDictValueError, self).__init__(
|
||||
message=message, notes=notes, path=path
|
||||
)
|
||||
|
||||
|
||||
class PlotlyListEntryError(PlotlyGraphObjectError):
|
||||
def __init__(self, obj, path, notes=()):
|
||||
"""See PlotlyGraphObjectError.__init__ for param docs."""
|
||||
format_dict = {"index": path[-1], "object_name": obj._name}
|
||||
message = "Invalid entry found in '{object_name}' at index, '{index}'".format(
|
||||
**format_dict
|
||||
)
|
||||
notes = [obj.help(return_help=True)] + list(notes)
|
||||
super(PlotlyListEntryError, self).__init__(
|
||||
message=message, path=path, notes=notes
|
||||
)
|
||||
|
||||
|
||||
class PlotlyDataTypeError(PlotlyGraphObjectError):
|
||||
def __init__(self, obj, path, notes=()):
|
||||
"""See PlotlyGraphObjectError.__init__ for param docs."""
|
||||
format_dict = {"index": path[-1], "object_name": obj._name}
|
||||
message = "Invalid entry found in '{object_name}' at index, '{index}'".format(
|
||||
**format_dict
|
||||
)
|
||||
note = "It's invalid because it doesn't contain a valid 'type' value."
|
||||
notes = [note] + list(notes)
|
||||
super(PlotlyDataTypeError, self).__init__(
|
||||
message=message, path=path, notes=notes
|
||||
)
|
||||
|
||||
|
||||
class PlotlyKeyError(KeyError):
|
||||
"""
|
||||
KeyErrors are not printed as beautifully as other errors (this is so that
|
||||
{}[''] prints "KeyError: ''" and not "KeyError:"). So here we use
|
||||
LookupError's __str__ to make a PlotlyKeyError object which will print nicer
|
||||
error messages for KeyErrors.
|
||||
"""
|
||||
|
||||
def __str__(self):
|
||||
return LookupError.__str__(self)
|
||||
@@ -0,0 +1,37 @@
|
||||
import os
|
||||
|
||||
PLOTLY_DIR = os.environ.get(
|
||||
"PLOTLY_DIR", os.path.join(os.path.expanduser("~"), ".plotly")
|
||||
)
|
||||
TEST_FILE = os.path.join(PLOTLY_DIR, ".permission_test")
|
||||
|
||||
|
||||
def _permissions():
|
||||
try:
|
||||
if not os.path.exists(PLOTLY_DIR):
|
||||
try:
|
||||
os.mkdir(PLOTLY_DIR)
|
||||
except Exception:
|
||||
# in case of race
|
||||
if not os.path.isdir(PLOTLY_DIR):
|
||||
raise
|
||||
with open(TEST_FILE, "w") as f:
|
||||
f.write("testing\n")
|
||||
try:
|
||||
os.remove(TEST_FILE)
|
||||
except Exception:
|
||||
pass
|
||||
return True
|
||||
except Exception: # Do not trap KeyboardInterrupt.
|
||||
return False
|
||||
|
||||
|
||||
_file_permissions = None
|
||||
|
||||
|
||||
def ensure_writable_plotly_dir():
|
||||
# Cache permissions status
|
||||
global _file_permissions
|
||||
if _file_permissions is None:
|
||||
_file_permissions = _permissions()
|
||||
return _file_permissions
|
||||
@@ -0,0 +1,50 @@
|
||||
import importlib
|
||||
|
||||
|
||||
def relative_import(parent_name, rel_modules=(), rel_classes=()):
|
||||
"""
|
||||
Helper function to import submodules lazily in Python 3.7+
|
||||
|
||||
Parameters
|
||||
----------
|
||||
rel_modules: list of str
|
||||
list of submodules to import, of the form .submodule
|
||||
rel_classes: list of str
|
||||
list of submodule classes/variables to import, of the form ._submodule.Foo
|
||||
|
||||
Returns
|
||||
-------
|
||||
tuple
|
||||
Tuple that should be assigned to __all__, __getattr__ in the caller
|
||||
"""
|
||||
module_names = {rel_module.split(".")[-1]: rel_module for rel_module in rel_modules}
|
||||
class_names = {rel_path.split(".")[-1]: rel_path for rel_path in rel_classes}
|
||||
|
||||
def __getattr__(import_name):
|
||||
# In Python 3.7+, lazy import submodules
|
||||
|
||||
# Check for submodule
|
||||
if import_name in module_names:
|
||||
rel_import = module_names[import_name]
|
||||
return importlib.import_module(rel_import, parent_name)
|
||||
|
||||
# Check for submodule class
|
||||
if import_name in class_names:
|
||||
rel_path_parts = class_names[import_name].split(".")
|
||||
rel_module = ".".join(rel_path_parts[:-1])
|
||||
class_name = import_name
|
||||
class_module = importlib.import_module(rel_module, parent_name)
|
||||
return getattr(class_module, class_name)
|
||||
|
||||
raise AttributeError(
|
||||
"module {__name__!r} has no attribute {name!r}".format(
|
||||
name=import_name, __name__=parent_name
|
||||
)
|
||||
)
|
||||
|
||||
__all__ = list(module_names) + list(class_names)
|
||||
|
||||
def __dir__():
|
||||
return __all__
|
||||
|
||||
return __all__, __getattr__, __dir__
|
||||
@@ -0,0 +1,36 @@
|
||||
"""
|
||||
Stand-alone module to provide information about whether optional deps exist.
|
||||
|
||||
"""
|
||||
|
||||
from importlib import import_module
|
||||
import logging
|
||||
import sys
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
_not_importable = set()
|
||||
|
||||
|
||||
def get_module(name, should_load=True):
|
||||
"""
|
||||
Return module or None. Absolute import is required.
|
||||
|
||||
:param (str) name: Dot-separated module path. E.g., 'scipy.stats'.
|
||||
:raise: (ImportError) Only when exc_msg is defined.
|
||||
:return: (module|None) If import succeeds, the module will be returned.
|
||||
|
||||
"""
|
||||
if not should_load:
|
||||
return sys.modules.get(name, None)
|
||||
|
||||
if name not in _not_importable:
|
||||
try:
|
||||
return import_module(name)
|
||||
except ImportError:
|
||||
_not_importable.add(name)
|
||||
except Exception:
|
||||
_not_importable.add(name)
|
||||
msg = f"Error importing optional module {name}"
|
||||
logger.exception(msg)
|
||||
|
||||
return None
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,557 @@
|
||||
import base64
|
||||
import decimal
|
||||
import json as _json
|
||||
import sys
|
||||
import re
|
||||
from functools import reduce
|
||||
|
||||
from _plotly_utils.optional_imports import get_module
|
||||
from _plotly_utils.basevalidators import (
|
||||
ImageUriValidator,
|
||||
copy_to_readonly_numpy_array,
|
||||
is_homogeneous_array,
|
||||
)
|
||||
|
||||
|
||||
int8min = -128
|
||||
int8max = 127
|
||||
int16min = -32768
|
||||
int16max = 32767
|
||||
int32min = -2147483648
|
||||
int32max = 2147483647
|
||||
|
||||
uint8max = 255
|
||||
uint16max = 65535
|
||||
uint32max = 4294967295
|
||||
|
||||
plotlyjsShortTypes = {
|
||||
"int8": "i1",
|
||||
"uint8": "u1",
|
||||
"int16": "i2",
|
||||
"uint16": "u2",
|
||||
"int32": "i4",
|
||||
"uint32": "u4",
|
||||
"float32": "f4",
|
||||
"float64": "f8",
|
||||
}
|
||||
|
||||
|
||||
def to_typed_array_spec(v):
|
||||
"""
|
||||
Convert numpy array to plotly.js typed array spec
|
||||
If not possible return the original value
|
||||
"""
|
||||
v = copy_to_readonly_numpy_array(v)
|
||||
|
||||
# Skip b64 encoding if numpy is not installed,
|
||||
# or if v is not a numpy array, or if v is empty
|
||||
np = get_module("numpy", should_load=False)
|
||||
if not np or not isinstance(v, np.ndarray) or v.size == 0:
|
||||
return v
|
||||
|
||||
dtype = str(v.dtype)
|
||||
|
||||
# convert default Big Ints until we could support them in plotly.js
|
||||
if dtype == "int64":
|
||||
max = v.max()
|
||||
min = v.min()
|
||||
if max <= int8max and min >= int8min:
|
||||
v = v.astype("int8")
|
||||
elif max <= int16max and min >= int16min:
|
||||
v = v.astype("int16")
|
||||
elif max <= int32max and min >= int32min:
|
||||
v = v.astype("int32")
|
||||
else:
|
||||
return v
|
||||
|
||||
elif dtype == "uint64":
|
||||
max = v.max()
|
||||
min = v.min()
|
||||
if max <= uint8max and min >= 0:
|
||||
v = v.astype("uint8")
|
||||
elif max <= uint16max and min >= 0:
|
||||
v = v.astype("uint16")
|
||||
elif max <= uint32max and min >= 0:
|
||||
v = v.astype("uint32")
|
||||
else:
|
||||
return v
|
||||
|
||||
dtype = str(v.dtype)
|
||||
|
||||
if dtype in plotlyjsShortTypes:
|
||||
arrObj = {
|
||||
"dtype": plotlyjsShortTypes[dtype],
|
||||
"bdata": base64.b64encode(v).decode("ascii"),
|
||||
}
|
||||
|
||||
if v.ndim > 1:
|
||||
arrObj["shape"] = str(v.shape)[1:-1]
|
||||
|
||||
return arrObj
|
||||
|
||||
return v
|
||||
|
||||
|
||||
def is_skipped_key(key):
|
||||
"""
|
||||
Return whether the key is skipped for conversion to the typed array spec
|
||||
"""
|
||||
skipped_keys = ["geojson", "layer", "layers", "range"]
|
||||
return any(skipped_key == key for skipped_key in skipped_keys)
|
||||
|
||||
|
||||
def convert_to_base64(obj):
|
||||
if isinstance(obj, dict):
|
||||
for key, value in obj.items():
|
||||
if is_skipped_key(key):
|
||||
continue
|
||||
elif is_homogeneous_array(value):
|
||||
obj[key] = to_typed_array_spec(value)
|
||||
else:
|
||||
convert_to_base64(value)
|
||||
elif isinstance(obj, list) or isinstance(obj, tuple):
|
||||
for value in obj:
|
||||
convert_to_base64(value)
|
||||
|
||||
|
||||
def cumsum(x):
|
||||
"""
|
||||
Custom cumsum to avoid a numpy import.
|
||||
"""
|
||||
|
||||
def _reducer(a, x):
|
||||
if len(a) == 0:
|
||||
return [x]
|
||||
return a + [a[-1] + x]
|
||||
|
||||
ret = reduce(_reducer, x, [])
|
||||
return ret
|
||||
|
||||
|
||||
class PlotlyJSONEncoder(_json.JSONEncoder):
|
||||
"""
|
||||
Meant to be passed as the `cls` kwarg to json.dumps(obj, cls=..)
|
||||
|
||||
See PlotlyJSONEncoder.default for more implementation information.
|
||||
|
||||
Additionally, this encoder overrides nan functionality so that 'Inf',
|
||||
'NaN' and '-Inf' encode to 'null'. Which is stricter JSON than the Python
|
||||
version.
|
||||
|
||||
"""
|
||||
|
||||
def coerce_to_strict(self, const):
|
||||
"""
|
||||
This is used to ultimately *encode* into strict JSON, see `encode`
|
||||
|
||||
"""
|
||||
# before python 2.7, 'true', 'false', 'null', were include here.
|
||||
if const in ("Infinity", "-Infinity", "NaN"):
|
||||
return None
|
||||
else:
|
||||
return const
|
||||
|
||||
def encode(self, o):
|
||||
"""
|
||||
Load and then dump the result using parse_constant kwarg
|
||||
|
||||
Note that setting invalid separators will cause a failure at this step.
|
||||
|
||||
"""
|
||||
# this will raise errors in a normal-expected way
|
||||
encoded_o = super(PlotlyJSONEncoder, self).encode(o)
|
||||
# Brute force guessing whether NaN or Infinity values are in the string
|
||||
# We catch false positive cases (e.g. strings such as titles, labels etc.)
|
||||
# but this is ok since the intention is to skip the decoding / reencoding
|
||||
# step when it's completely safe
|
||||
|
||||
if not ("NaN" in encoded_o or "Infinity" in encoded_o):
|
||||
return encoded_o
|
||||
|
||||
# now:
|
||||
# 1. `loads` to switch Infinity, -Infinity, NaN to None
|
||||
# 2. `dumps` again so you get 'null' instead of extended JSON
|
||||
try:
|
||||
new_o = _json.loads(encoded_o, parse_constant=self.coerce_to_strict)
|
||||
except ValueError:
|
||||
# invalid separators will fail here. raise a helpful exception
|
||||
raise ValueError(
|
||||
"Encoding into strict JSON failed. Did you set the separators "
|
||||
"valid JSON separators?"
|
||||
)
|
||||
else:
|
||||
return _json.dumps(
|
||||
new_o,
|
||||
sort_keys=self.sort_keys,
|
||||
indent=self.indent,
|
||||
separators=(self.item_separator, self.key_separator),
|
||||
)
|
||||
|
||||
def default(self, obj):
|
||||
"""
|
||||
Accept an object (of unknown type) and try to encode with priority:
|
||||
1. builtin: user-defined objects
|
||||
2. sage: sage math cloud
|
||||
3. pandas: dataframes/series
|
||||
4. numpy: ndarrays
|
||||
5. datetime: time/datetime objects
|
||||
|
||||
Each method throws a NotEncoded exception if it fails.
|
||||
|
||||
The default method will only get hit if the object is not a type that
|
||||
is naturally encoded by json:
|
||||
|
||||
Normal objects:
|
||||
dict object
|
||||
list, tuple array
|
||||
str, unicode string
|
||||
int, long, float number
|
||||
True true
|
||||
False false
|
||||
None null
|
||||
|
||||
Extended objects:
|
||||
float('nan') 'NaN'
|
||||
float('infinity') 'Infinity'
|
||||
float('-infinity') '-Infinity'
|
||||
|
||||
Therefore, we only anticipate either unknown iterables or values here.
|
||||
|
||||
"""
|
||||
# TODO: The ordering if these methods is *very* important. Is this OK?
|
||||
encoding_methods = (
|
||||
self.encode_as_plotly,
|
||||
self.encode_as_sage,
|
||||
self.encode_as_numpy,
|
||||
self.encode_as_pandas,
|
||||
self.encode_as_datetime,
|
||||
self.encode_as_date,
|
||||
self.encode_as_list, # because some values have `tolist` do last.
|
||||
self.encode_as_decimal,
|
||||
self.encode_as_pil,
|
||||
)
|
||||
for encoding_method in encoding_methods:
|
||||
try:
|
||||
return encoding_method(obj)
|
||||
except NotEncodable:
|
||||
pass
|
||||
return _json.JSONEncoder.default(self, obj)
|
||||
|
||||
@staticmethod
|
||||
def encode_as_plotly(obj):
|
||||
"""Attempt to use a builtin `to_plotly_json` method."""
|
||||
try:
|
||||
return obj.to_plotly_json()
|
||||
except AttributeError:
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_list(obj):
|
||||
"""Attempt to use `tolist` method to convert to normal Python list."""
|
||||
if hasattr(obj, "tolist"):
|
||||
return obj.tolist()
|
||||
else:
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_sage(obj):
|
||||
"""Attempt to convert sage.all.RR to floats and sage.all.ZZ to ints"""
|
||||
sage_all = get_module("sage.all")
|
||||
if not sage_all:
|
||||
raise NotEncodable
|
||||
|
||||
if obj in sage_all.RR:
|
||||
return float(obj)
|
||||
elif obj in sage_all.ZZ:
|
||||
return int(obj)
|
||||
else:
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_pandas(obj):
|
||||
"""Attempt to convert pandas.NaT / pandas.NA"""
|
||||
pandas = get_module("pandas", should_load=False)
|
||||
if not pandas:
|
||||
raise NotEncodable
|
||||
|
||||
if obj is pandas.NaT:
|
||||
return None
|
||||
|
||||
# pandas.NA was introduced in pandas 1.0
|
||||
if hasattr(pandas, "NA") and obj is pandas.NA:
|
||||
return None
|
||||
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_numpy(obj):
|
||||
"""Attempt to convert numpy.ma.core.masked"""
|
||||
numpy = get_module("numpy", should_load=False)
|
||||
if not numpy:
|
||||
raise NotEncodable
|
||||
|
||||
if obj is numpy.ma.core.masked:
|
||||
return float("nan")
|
||||
elif isinstance(obj, numpy.ndarray) and obj.dtype.kind == "M":
|
||||
try:
|
||||
return numpy.datetime_as_string(obj).tolist()
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_datetime(obj):
|
||||
"""Convert datetime objects to iso-format strings"""
|
||||
try:
|
||||
return obj.isoformat()
|
||||
except AttributeError:
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_date(obj):
|
||||
"""Attempt to convert to utc-iso time string using date methods."""
|
||||
try:
|
||||
time_string = obj.isoformat()
|
||||
except AttributeError:
|
||||
raise NotEncodable
|
||||
else:
|
||||
return iso_to_plotly_time_string(time_string)
|
||||
|
||||
@staticmethod
|
||||
def encode_as_decimal(obj):
|
||||
"""Attempt to encode decimal by converting it to float"""
|
||||
if isinstance(obj, decimal.Decimal):
|
||||
return float(obj)
|
||||
else:
|
||||
raise NotEncodable
|
||||
|
||||
@staticmethod
|
||||
def encode_as_pil(obj):
|
||||
"""Attempt to convert PIL.Image.Image to base64 data uri"""
|
||||
image = get_module("PIL.Image")
|
||||
if image is not None and isinstance(obj, image.Image):
|
||||
return ImageUriValidator.pil_image_to_uri(obj)
|
||||
else:
|
||||
raise NotEncodable
|
||||
|
||||
|
||||
class NotEncodable(Exception):
|
||||
pass
|
||||
|
||||
|
||||
def iso_to_plotly_time_string(iso_string):
|
||||
"""Remove timezone info and replace 'T' delimeter with ' ' (ws)."""
|
||||
# make sure we don't send timezone info to plotly
|
||||
if (iso_string.split("-")[:3] == "00:00") or (iso_string.split("+")[0] == "00:00"):
|
||||
raise Exception(
|
||||
"Plotly won't accept timestrings with timezone info.\n"
|
||||
"All timestrings are assumed to be in UTC."
|
||||
)
|
||||
|
||||
iso_string = iso_string.replace("-00:00", "").replace("+00:00", "")
|
||||
|
||||
if iso_string.endswith("T00:00:00"):
|
||||
return iso_string.replace("T00:00:00", "")
|
||||
else:
|
||||
return iso_string.replace("T", " ")
|
||||
|
||||
|
||||
def template_doc(**names):
|
||||
def _decorator(func):
|
||||
if not sys.version_info[:2] == (3, 2):
|
||||
if func.__doc__ is not None:
|
||||
func.__doc__ = func.__doc__.format(**names)
|
||||
return func
|
||||
|
||||
return _decorator
|
||||
|
||||
|
||||
def _natural_sort_strings(vals, reverse=False):
|
||||
def key(v):
|
||||
v_parts = re.split(r"(\d+)", v)
|
||||
for i in range(len(v_parts)):
|
||||
try:
|
||||
v_parts[i] = int(v_parts[i])
|
||||
except ValueError:
|
||||
# not an int
|
||||
pass
|
||||
return tuple(v_parts)
|
||||
|
||||
return sorted(vals, key=key, reverse=reverse)
|
||||
|
||||
|
||||
def _get_int_type():
|
||||
np = get_module("numpy", should_load=False)
|
||||
if np:
|
||||
int_type = (int, np.integer)
|
||||
else:
|
||||
int_type = (int,)
|
||||
return int_type
|
||||
|
||||
|
||||
def split_multichar(ss, chars):
|
||||
"""
|
||||
Split all the strings in ss at any of the characters in chars.
|
||||
Example:
|
||||
|
||||
>>> ss = ["a.string[0].with_separators"]
|
||||
>>> chars = list(".[]_")
|
||||
>>> split_multichar(ss, chars)
|
||||
['a', 'string', '0', '', 'with', 'separators']
|
||||
|
||||
:param (list) ss: A list of strings.
|
||||
:param (list) chars: Is a list of chars (note: not a string).
|
||||
"""
|
||||
if len(chars) == 0:
|
||||
return ss
|
||||
c = chars.pop()
|
||||
ss = reduce(lambda x, y: x + y, map(lambda x: x.split(c), ss))
|
||||
return split_multichar(ss, chars)
|
||||
|
||||
|
||||
def split_string_positions(ss):
|
||||
"""
|
||||
Given a list of strings split using split_multichar, return a list of
|
||||
integers representing the indices of the first character of every string in
|
||||
the original string.
|
||||
Example:
|
||||
|
||||
>>> ss = ["a.string[0].with_separators"]
|
||||
>>> chars = list(".[]_")
|
||||
>>> ss_split = split_multichar(ss, chars)
|
||||
>>> ss_split
|
||||
['a', 'string', '0', '', 'with', 'separators']
|
||||
>>> split_string_positions(ss_split)
|
||||
[0, 2, 9, 11, 12, 17]
|
||||
|
||||
:param (list) ss: A list of strings.
|
||||
"""
|
||||
return list(
|
||||
map(
|
||||
lambda t: t[0] + t[1],
|
||||
zip(range(len(ss)), cumsum([0] + list(map(len, ss[:-1])))),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def display_string_positions(p, i=None, offset=0, length=1, char="^", trim=True):
|
||||
"""
|
||||
Return a string that is whitespace except at p[i] which is replaced with char.
|
||||
If i is None then all the indices of the string in p are replaced with char.
|
||||
|
||||
Example:
|
||||
|
||||
>>> ss = ["a.string[0].with_separators"]
|
||||
>>> chars = list(".[]_")
|
||||
>>> ss_split = split_multichar(ss, chars)
|
||||
>>> ss_split
|
||||
['a', 'string', '0', '', 'with', 'separators']
|
||||
>>> ss_pos = split_string_positions(ss_split)
|
||||
>>> ss[0]
|
||||
'a.string[0].with_separators'
|
||||
>>> display_string_positions(ss_pos,4)
|
||||
' ^'
|
||||
>>> display_string_positions(ss_pos,4,offset=1,length=3,char="~",trim=False)
|
||||
' ~~~ '
|
||||
>>> display_string_positions(ss_pos)
|
||||
'^ ^ ^ ^^ ^'
|
||||
:param (list) p: A list of integers.
|
||||
:param (integer|None) i: Optional index of p to display.
|
||||
:param (integer) offset: Allows adding a number of spaces to the replacement.
|
||||
:param (integer) length: Allows adding a replacement that is the char
|
||||
repeated length times.
|
||||
:param (str) char: allows customizing the replacement character.
|
||||
:param (boolean) trim: trims the remaining whitespace if True.
|
||||
"""
|
||||
s = [" " for _ in range(max(p) + 1 + offset + length)]
|
||||
maxaddr = 0
|
||||
if i is None:
|
||||
for p_ in p:
|
||||
for temp in range(length):
|
||||
maxaddr = p_ + offset + temp
|
||||
s[maxaddr] = char
|
||||
else:
|
||||
for temp in range(length):
|
||||
maxaddr = p[i] + offset + temp
|
||||
s[maxaddr] = char
|
||||
ret = "".join(s)
|
||||
if trim:
|
||||
ret = ret[: maxaddr + 1]
|
||||
return ret
|
||||
|
||||
|
||||
def chomp_empty_strings(strings, c, reverse=False):
|
||||
"""
|
||||
Given a list of strings, some of which are the empty string "", replace the
|
||||
empty strings with c and combine them with the closest non-empty string on
|
||||
the left or "" if it is the first string.
|
||||
Examples:
|
||||
for c="_"
|
||||
['hey', '', 'why', '', '', 'whoa', '', ''] -> ['hey_', 'why__', 'whoa__']
|
||||
['', 'hi', '', "I'm", 'bob', '', ''] -> ['_', 'hi_', "I'm", 'bob__']
|
||||
['hi', "i'm", 'a', 'good', 'string'] -> ['hi', "i'm", 'a', 'good', 'string']
|
||||
Some special cases are:
|
||||
[] -> []
|
||||
[''] -> ['']
|
||||
['', ''] -> ['_']
|
||||
['', '', '', ''] -> ['___']
|
||||
If reverse is true, empty strings are combined with closest non-empty string
|
||||
on the right or "" if it is the last string.
|
||||
"""
|
||||
|
||||
def _rev(vals):
|
||||
return [s[::-1] for s in vals][::-1]
|
||||
|
||||
if reverse:
|
||||
return _rev(chomp_empty_strings(_rev(strings), c))
|
||||
if not len(strings):
|
||||
return strings
|
||||
if sum(map(len, strings)) == 0:
|
||||
return [c * (len(strings) - 1)]
|
||||
|
||||
class _Chomper:
|
||||
def __init__(self, c):
|
||||
self.c = c
|
||||
|
||||
def __call__(self, x, y):
|
||||
# x is list up to now
|
||||
# y is next item in list
|
||||
# x should be [""] initially, and then empty strings filtered out at the
|
||||
# end
|
||||
if len(y) == 0:
|
||||
return x[:-1] + [x[-1] + self.c]
|
||||
else:
|
||||
return x + [y]
|
||||
|
||||
return list(filter(len, reduce(_Chomper(c), strings, [""])))
|
||||
|
||||
|
||||
# taken from
|
||||
# https://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Python
|
||||
def levenshtein(s1, s2):
|
||||
if len(s1) < len(s2):
|
||||
return levenshtein(s2, s1) # len(s1) >= len(s2)
|
||||
if len(s2) == 0:
|
||||
return len(s1)
|
||||
previous_row = range(len(s2) + 1)
|
||||
for i, c1 in enumerate(s1):
|
||||
current_row = [i + 1]
|
||||
for j, c2 in enumerate(s2):
|
||||
# j+1 instead of j since previous_row and current_row are one character longer
|
||||
# than s2
|
||||
insertions = previous_row[j + 1] + 1
|
||||
deletions = current_row[j] + 1
|
||||
substitutions = previous_row[j] + (c1 != c2)
|
||||
current_row.append(min(insertions, deletions, substitutions))
|
||||
previous_row = current_row
|
||||
return previous_row[-1]
|
||||
|
||||
|
||||
def find_closest_string(string, strings):
|
||||
def _key(s):
|
||||
# sort by levenshtein distance and lexographically to maintain a stable
|
||||
# sort for different keys with the same levenshtein distance
|
||||
return (levenshtein(s, string), s)
|
||||
|
||||
return sorted(strings, key=_key)[0]
|
||||
@@ -0,0 +1,33 @@
|
||||
# This is a stub package designed to roughly emulate the _yaml
|
||||
# extension module, which previously existed as a standalone module
|
||||
# and has been moved into the `yaml` package namespace.
|
||||
# It does not perfectly mimic its old counterpart, but should get
|
||||
# close enough for anyone who's relying on it even when they shouldn't.
|
||||
import yaml
|
||||
|
||||
# in some circumstances, the yaml module we imoprted may be from a different version, so we need
|
||||
# to tread carefully when poking at it here (it may not have the attributes we expect)
|
||||
if not getattr(yaml, '__with_libyaml__', False):
|
||||
from sys import version_info
|
||||
|
||||
exc = ModuleNotFoundError if version_info >= (3, 6) else ImportError
|
||||
raise exc("No module named '_yaml'")
|
||||
else:
|
||||
from yaml._yaml import *
|
||||
import warnings
|
||||
warnings.warn(
|
||||
'The _yaml extension module is now located at yaml._yaml'
|
||||
' and its location is subject to change. To use the'
|
||||
' LibYAML-based parser and emitter, import from `yaml`:'
|
||||
' `from yaml import CLoader as Loader, CDumper as Dumper`.',
|
||||
DeprecationWarning
|
||||
)
|
||||
del warnings
|
||||
# Don't `del yaml` here because yaml is actually an existing
|
||||
# namespace member of _yaml.
|
||||
|
||||
__name__ = '_yaml'
|
||||
# If the module is top-level (i.e. not a part of any specific package)
|
||||
# then the attribute should be set to ''.
|
||||
# https://docs.python.org/3.8/library/types.html
|
||||
__package__ = ''
|
||||
@@ -0,0 +1 @@
|
||||
uv
|
||||
@@ -0,0 +1,27 @@
|
||||
Copyright (c) 2013-2025 by the Babel Team, see AUTHORS for more information.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -0,0 +1,54 @@
|
||||
Metadata-Version: 2.2
|
||||
Name: babel
|
||||
Version: 2.17.0
|
||||
Summary: Internationalization utilities
|
||||
Home-page: https://babel.pocoo.org/
|
||||
Author: Armin Ronacher
|
||||
Author-email: armin.ronacher@active-4.com
|
||||
Maintainer: Aarni Koskela
|
||||
Maintainer-email: akx@iki.fi
|
||||
License: BSD-3-Clause
|
||||
Project-URL: Source, https://github.com/python-babel/babel
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Environment :: Web Environment
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.8
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Requires-Python: >=3.8
|
||||
License-File: LICENSE
|
||||
Requires-Dist: pytz>=2015.7; python_version < "3.9"
|
||||
Provides-Extra: dev
|
||||
Requires-Dist: tzdata; sys_platform == "win32" and extra == "dev"
|
||||
Requires-Dist: backports.zoneinfo; python_version < "3.9" and extra == "dev"
|
||||
Requires-Dist: freezegun~=1.0; extra == "dev"
|
||||
Requires-Dist: jinja2>=3.0; extra == "dev"
|
||||
Requires-Dist: pytest-cov; extra == "dev"
|
||||
Requires-Dist: pytest>=6.0; extra == "dev"
|
||||
Requires-Dist: pytz; extra == "dev"
|
||||
Requires-Dist: setuptools; extra == "dev"
|
||||
Dynamic: author
|
||||
Dynamic: author-email
|
||||
Dynamic: classifier
|
||||
Dynamic: description
|
||||
Dynamic: home-page
|
||||
Dynamic: license
|
||||
Dynamic: maintainer
|
||||
Dynamic: maintainer-email
|
||||
Dynamic: project-url
|
||||
Dynamic: provides-extra
|
||||
Dynamic: requires-dist
|
||||
Dynamic: requires-python
|
||||
Dynamic: summary
|
||||
|
||||
A collection of tools for internationalizing Python applications.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: setuptools (75.8.0)
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
[babel.checkers]
|
||||
num_plurals = babel.messages.checkers:num_plurals
|
||||
python_format = babel.messages.checkers:python_format
|
||||
|
||||
[babel.extractors]
|
||||
ignore = babel.messages.extract:extract_nothing
|
||||
javascript = babel.messages.extract:extract_javascript
|
||||
python = babel.messages.extract:extract_python
|
||||
|
||||
[console_scripts]
|
||||
pybabel = babel.messages.frontend:main
|
||||
|
||||
[distutils.commands]
|
||||
compile_catalog = babel.messages.setuptools_frontend:compile_catalog
|
||||
extract_messages = babel.messages.setuptools_frontend:extract_messages
|
||||
init_catalog = babel.messages.setuptools_frontend:init_catalog
|
||||
update_catalog = babel.messages.setuptools_frontend:update_catalog
|
||||
|
||||
[distutils.setup_keywords]
|
||||
message_extractors = babel.messages.setuptools_frontend:check_message_extractors
|
||||
@@ -0,0 +1 @@
|
||||
babel
|
||||
@@ -0,0 +1,38 @@
|
||||
"""
|
||||
babel
|
||||
~~~~~
|
||||
|
||||
Integrated collection of utilities that assist in internationalizing and
|
||||
localizing applications.
|
||||
|
||||
This package is basically composed of two major parts:
|
||||
|
||||
* tools to build and work with ``gettext`` message catalogs
|
||||
* a Python interface to the CLDR (Common Locale Data Repository), providing
|
||||
access to various locale display names, localized number and date
|
||||
formatting, etc.
|
||||
|
||||
:copyright: (c) 2013-2025 by the Babel Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
from babel.core import (
|
||||
Locale,
|
||||
UnknownLocaleError,
|
||||
default_locale,
|
||||
get_locale_identifier,
|
||||
negotiate_locale,
|
||||
parse_locale,
|
||||
)
|
||||
|
||||
__version__ = '2.17.0'
|
||||
|
||||
__all__ = [
|
||||
'Locale',
|
||||
'UnknownLocaleError',
|
||||
'__version__',
|
||||
'default_locale',
|
||||
'get_locale_identifier',
|
||||
'negotiate_locale',
|
||||
'parse_locale',
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,72 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from babel.core import get_global
|
||||
|
||||
|
||||
def get_official_languages(territory: str, regional: bool = False, de_facto: bool = False) -> tuple[str, ...]:
|
||||
"""
|
||||
Get the official language(s) for the given territory.
|
||||
|
||||
The language codes, if any are known, are returned in order of descending popularity.
|
||||
|
||||
If the `regional` flag is set, then languages which are regionally official are also returned.
|
||||
|
||||
If the `de_facto` flag is set, then languages which are "de facto" official are also returned.
|
||||
|
||||
.. warning:: Note that the data is as up to date as the current version of the CLDR used
|
||||
by Babel. If you need scientifically accurate information, use another source!
|
||||
|
||||
:param territory: Territory code
|
||||
:type territory: str
|
||||
:param regional: Whether to return regionally official languages too
|
||||
:type regional: bool
|
||||
:param de_facto: Whether to return de-facto official languages too
|
||||
:type de_facto: bool
|
||||
:return: Tuple of language codes
|
||||
:rtype: tuple[str]
|
||||
"""
|
||||
|
||||
territory = str(territory).upper()
|
||||
allowed_stati = {"official"}
|
||||
if regional:
|
||||
allowed_stati.add("official_regional")
|
||||
if de_facto:
|
||||
allowed_stati.add("de_facto_official")
|
||||
|
||||
languages = get_global("territory_languages").get(territory, {})
|
||||
pairs = [
|
||||
(info['population_percent'], language)
|
||||
for language, info in languages.items()
|
||||
if info.get('official_status') in allowed_stati
|
||||
]
|
||||
pairs.sort(reverse=True)
|
||||
return tuple(lang for _, lang in pairs)
|
||||
|
||||
|
||||
def get_territory_language_info(territory: str) -> dict[str, dict[str, float | str | None]]:
|
||||
"""
|
||||
Get a dictionary of language information for a territory.
|
||||
|
||||
The dictionary is keyed by language code; the values are dicts with more information.
|
||||
|
||||
The following keys are currently known for the values:
|
||||
|
||||
* `population_percent`: The percentage of the territory's population speaking the
|
||||
language.
|
||||
* `official_status`: An optional string describing the officiality status of the language.
|
||||
Known values are "official", "official_regional" and "de_facto_official".
|
||||
|
||||
.. warning:: Note that the data is as up to date as the current version of the CLDR used
|
||||
by Babel. If you need scientifically accurate information, use another source!
|
||||
|
||||
.. note:: Note that the format of the dict returned may change between Babel versions.
|
||||
|
||||
See https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html
|
||||
|
||||
:param territory: Territory code
|
||||
:type territory: str
|
||||
:return: Language information dictionary
|
||||
:rtype: dict[str, dict]
|
||||
"""
|
||||
territory = str(territory).upper()
|
||||
return get_global("territory_languages").get(territory, {}).copy()
|
||||
@@ -0,0 +1,132 @@
|
||||
"""
|
||||
babel.lists
|
||||
~~~~~~~~~~~
|
||||
|
||||
Locale dependent formatting of lists.
|
||||
|
||||
The default locale for the functions in this module is determined by the
|
||||
following environment variables, in that order:
|
||||
|
||||
* ``LC_ALL``, and
|
||||
* ``LANG``
|
||||
|
||||
:copyright: (c) 2015-2025 by the Babel Team.
|
||||
:license: BSD, see LICENSE for more details.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import warnings
|
||||
from collections.abc import Sequence
|
||||
from typing import Literal
|
||||
|
||||
from babel.core import Locale, default_locale
|
||||
|
||||
_DEFAULT_LOCALE = default_locale() # TODO(3.0): Remove this.
|
||||
|
||||
|
||||
def __getattr__(name):
|
||||
if name == "DEFAULT_LOCALE":
|
||||
warnings.warn(
|
||||
"The babel.lists.DEFAULT_LOCALE constant is deprecated and will be removed.",
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return _DEFAULT_LOCALE
|
||||
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
||||
|
||||
|
||||
def format_list(
|
||||
lst: Sequence[str],
|
||||
style: Literal['standard', 'standard-short', 'or', 'or-short', 'unit', 'unit-short', 'unit-narrow'] = 'standard',
|
||||
locale: Locale | str | None = None,
|
||||
) -> str:
|
||||
"""
|
||||
Format the items in `lst` as a list.
|
||||
|
||||
>>> format_list(['apples', 'oranges', 'pears'], locale='en')
|
||||
u'apples, oranges, and pears'
|
||||
>>> format_list(['apples', 'oranges', 'pears'], locale='zh')
|
||||
u'apples\u3001oranges\u548cpears'
|
||||
>>> format_list(['omena', 'peruna', 'aplari'], style='or', locale='fi')
|
||||
u'omena, peruna tai aplari'
|
||||
|
||||
Not all styles are necessarily available in all locales.
|
||||
The function will attempt to fall back to replacement styles according to the rules
|
||||
set forth in the CLDR root XML file, and raise a ValueError if no suitable replacement
|
||||
can be found.
|
||||
|
||||
The following text is verbatim from the Unicode TR35-49 spec [1].
|
||||
|
||||
* standard:
|
||||
A typical 'and' list for arbitrary placeholders.
|
||||
eg. "January, February, and March"
|
||||
* standard-short:
|
||||
A short version of an 'and' list, suitable for use with short or abbreviated placeholder values.
|
||||
eg. "Jan., Feb., and Mar."
|
||||
* or:
|
||||
A typical 'or' list for arbitrary placeholders.
|
||||
eg. "January, February, or March"
|
||||
* or-short:
|
||||
A short version of an 'or' list.
|
||||
eg. "Jan., Feb., or Mar."
|
||||
* unit:
|
||||
A list suitable for wide units.
|
||||
eg. "3 feet, 7 inches"
|
||||
* unit-short:
|
||||
A list suitable for short units
|
||||
eg. "3 ft, 7 in"
|
||||
* unit-narrow:
|
||||
A list suitable for narrow units, where space on the screen is very limited.
|
||||
eg. "3′ 7″"
|
||||
|
||||
[1]: https://www.unicode.org/reports/tr35/tr35-49/tr35-general.html#ListPatterns
|
||||
|
||||
:param lst: a sequence of items to format in to a list
|
||||
:param style: the style to format the list with. See above for description.
|
||||
:param locale: the locale. Defaults to the system locale.
|
||||
"""
|
||||
locale = Locale.parse(locale or _DEFAULT_LOCALE)
|
||||
if not lst:
|
||||
return ''
|
||||
if len(lst) == 1:
|
||||
return lst[0]
|
||||
|
||||
patterns = _resolve_list_style(locale, style)
|
||||
|
||||
if len(lst) == 2 and '2' in patterns:
|
||||
return patterns['2'].format(*lst)
|
||||
|
||||
result = patterns['start'].format(lst[0], lst[1])
|
||||
for elem in lst[2:-1]:
|
||||
result = patterns['middle'].format(result, elem)
|
||||
result = patterns['end'].format(result, lst[-1])
|
||||
|
||||
return result
|
||||
|
||||
|
||||
# Based on CLDR 45's root.xml file's `<alias>`es.
|
||||
# The root file defines both `standard` and `or`,
|
||||
# so they're always available.
|
||||
# TODO: It would likely be better to use the
|
||||
# babel.localedata.Alias mechanism for this,
|
||||
# but I'm not quite sure how it's supposed to
|
||||
# work with inheritance and data in the root.
|
||||
_style_fallbacks = {
|
||||
"or-narrow": ["or-short", "or"],
|
||||
"or-short": ["or"],
|
||||
"standard-narrow": ["standard-short", "standard"],
|
||||
"standard-short": ["standard"],
|
||||
"unit": ["unit-short", "standard"],
|
||||
"unit-narrow": ["unit-short", "unit", "standard"],
|
||||
"unit-short": ["standard"],
|
||||
}
|
||||
|
||||
|
||||
def _resolve_list_style(locale: Locale, style: str):
|
||||
for style in (style, *(_style_fallbacks.get(style, []))): # noqa: B020
|
||||
if style in locale.list_patterns:
|
||||
return locale.list_patterns[style]
|
||||
raise ValueError(
|
||||
f"Locale {locale} does not support list formatting style {style!r} "
|
||||
f"(supported are {sorted(locale.list_patterns)})",
|
||||
)
|
||||
@@ -0,0 +1,41 @@
|
||||
UNICODE LICENSE V3
|
||||
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright © 2004-2025 Unicode, Inc.
|
||||
|
||||
NOTICE TO USER: Carefully read the following legal agreement. BY
|
||||
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
|
||||
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
|
||||
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
|
||||
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of data files and any associated documentation (the "Data Files") or
|
||||
software and any associated documentation (the "Software") to deal in the
|
||||
Data Files or Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, and/or sell
|
||||
copies of the Data Files or Software, and to permit persons to whom the
|
||||
Data Files or Software are furnished to do so, provided that either (a)
|
||||
this copyright and permission notice appear with all copies of the Data
|
||||
Files or Software, or (b) this copyright and permission notice appear in
|
||||
associated Documentation.
|
||||
|
||||
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
|
||||
THIRD PARTY RIGHTS.
|
||||
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
|
||||
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
|
||||
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
||||
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
|
||||
FILES OR SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the name of a copyright holder shall
|
||||
not be used in advertising or otherwise to promote the sale, use or other
|
||||
dealings in these Data Files or Software without prior written
|
||||
authorization of the copyright holder.
|
||||
|
||||
SPDX-License-Identifier: Unicode-3.0
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user