Compare commits
14 Commits
017f9fbf2e
...
main
Author | SHA1 | Date | |
---|---|---|---|
db30fa9b4e | |||
814f88932d | |||
7cbf75d6a8 | |||
ed17d6e2d6 | |||
a601fb414c | |||
474482a752 | |||
2fc0d000b6 | |||
e1b817252c | |||
2d73ae8d63 | |||
ab1d541e2c | |||
cc8de33780 | |||
1c41f666dc | |||
d76db631fd | |||
594e7c3cce |
3
.gitignore
vendored
3
.gitignore
vendored
@ -5,4 +5,5 @@ htmlcov
|
||||
**/.DS_Store
|
||||
**/*.log
|
||||
|
||||
.codegpt
|
||||
.codegpt
|
||||
*/bin
|
||||
|
1
.python-version
Normal file
1
.python-version
Normal file
@ -0,0 +1 @@
|
||||
3.11
|
26
Makefile.mk
Normal file
26
Makefile.mk
Normal file
@ -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
|
6
assets/bootstrap.min.css
vendored
Normal file
6
assets/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -58,4 +58,18 @@ hr {
|
||||
.dropdown-container {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.feedback-button {
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
border: none;
|
||||
padding: 5px 10px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
margin: 2px 2px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
10
bin/dash-generate-components
Executable file
10
bin/dash-generate-components
Executable file
@ -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())
|
10
bin/dash-update-components
Executable file
10
bin/dash-update-components
Executable file
@ -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())
|
10
bin/f2py
Executable file
10
bin/f2py
Executable file
@ -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())
|
10
bin/flask
Executable file
10
bin/flask
Executable file
@ -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())
|
10
bin/normalizer
Executable file
10
bin/normalizer
Executable file
@ -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())
|
10
bin/numpy-config
Executable file
10
bin/numpy-config
Executable file
@ -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())
|
10
bin/plotly_get_chrome
Executable file
10
bin/plotly_get_chrome
Executable file
@ -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())
|
10
bin/pybabel
Executable file
10
bin/pybabel
Executable file
@ -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())
|
10
bin/renderer
Executable file
10
bin/renderer
Executable file
@ -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,4 +1,4 @@
|
||||
{
|
||||
"Startup":"program to make life easier",
|
||||
"DATA_PATH":"./data/transactions.csv.gz"
|
||||
"DATA_PATH":"./data/blank.csv"
|
||||
}
|
||||
|
0
data/.Rhistory
Normal file → Executable file
0
data/.Rhistory
Normal file → Executable file
208
data/blank.csv
Executable file
208
data/blank.csv
Executable file
@ -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
|
|
BIN
data/blank.xlsx
Executable file
BIN
data/blank.xlsx
Executable file
Binary file not shown.
5
data/feedback.csv
Normal file
5
data/feedback.csv
Normal file
@ -0,0 +1,5 @@
|
||||
timestamp,category,comment
|
||||
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"
|
||||
2025-09-13 09:38:40,source_table,"SO: None - tralalal"
|
|
0
data/spc_data.csv
Normal file → Executable file
0
data/spc_data.csv
Normal file → Executable file
0
data/spc_data_full.csv
Normal file → Executable file
0
data/spc_data_full.csv
Normal file → Executable file
0
data/spc_mod.csv
Normal file → Executable file
0
data/spc_mod.csv
Normal file → Executable file
201
data/test.csv
Executable file
201
data/test.csv
Executable file
@ -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
|
|
BIN
data/test.xlsx
Executable file
BIN
data/test.xlsx
Executable file
Binary file not shown.
0
data/transactions.csv
Normal file → Executable file
0
data/transactions.csv
Normal file → Executable file
0
data/transactions.csv.gz
Normal file → Executable file
0
data/transactions.csv.gz
Normal file → Executable file
5
etc/jupyter/nbconfig/notebook.d/dash.json
Normal file
5
etc/jupyter/nbconfig/notebook.d/dash.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"load_extensions": {
|
||||
"dash/main": true
|
||||
}
|
||||
}
|
202
lib/python3.11/site-packages/LICENSE
Normal file
202
lib/python3.11/site-packages/LICENSE
Normal file
@ -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
|
7
lib/python3.11/site-packages/NOTICE.txt
Normal file
7
lib/python3.11/site-packages/NOTICE.txt
Normal file
@ -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
|
20
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/LICENSE
Normal file
20
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/LICENSE
Normal file
@ -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.
|
46
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/METADATA
Normal file
46
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/METADATA
Normal file
@ -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.
|
26
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/RECORD
Normal file
26
lib/python3.11/site-packages/PyYAML-6.0.2.dist-info/RECORD
Normal file
@ -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
|
124
lib/python3.11/site-packages/README.md
Normal file
124
lib/python3.11/site-packages/README.md
Normal file
@ -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
|
2711
lib/python3.11/site-packages/_plotly_utils/basevalidators.py
Normal file
2711
lib/python3.11/site-packages/_plotly_utils/basevalidators.py
Normal file
File diff suppressed because it is too large
Load Diff
883
lib/python3.11/site-packages/_plotly_utils/colors/__init__.py
Normal file
883
lib/python3.11/site-packages/_plotly_utils/colors/__init__.py
Normal file
@ -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)
|
161
lib/python3.11/site-packages/_plotly_utils/colors/_swatches.py
Normal file
161
lib/python3.11/site-packages/_plotly_utils/colors/_swatches.py
Normal file
@ -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
|
419
lib/python3.11/site-packages/_plotly_utils/colors/carto.py
Normal file
419
lib/python3.11/site-packages/_plotly_utils/colors/carto.py
Normal file
@ -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]
|
296
lib/python3.11/site-packages/_plotly_utils/colors/cmocean.py
Normal file
296
lib/python3.11/site-packages/_plotly_utils/colors/cmocean.py
Normal file
@ -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]
|
494
lib/python3.11/site-packages/_plotly_utils/colors/colorbrewer.py
Normal file
494
lib/python3.11/site-packages/_plotly_utils/colors/colorbrewer.py
Normal file
@ -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]
|
157
lib/python3.11/site-packages/_plotly_utils/colors/cyclical.py
Normal file
157
lib/python3.11/site-packages/_plotly_utils/colors/cyclical.py
Normal file
@ -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"]
|
180
lib/python3.11/site-packages/_plotly_utils/colors/plotlyjs.py
Normal file
180
lib/python3.11/site-packages/_plotly_utils/colors/plotlyjs.py
Normal file
@ -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]
|
184
lib/python3.11/site-packages/_plotly_utils/colors/qualitative.py
Normal file
184
lib/python3.11/site-packages/_plotly_utils/colors/qualitative.py
Normal file
@ -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"]
|
257
lib/python3.11/site-packages/_plotly_utils/colors/sequential.py
Normal file
257
lib/python3.11/site-packages/_plotly_utils/colors/sequential.py
Normal file
@ -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"]
|
75
lib/python3.11/site-packages/_plotly_utils/data_utils.py
Normal file
75
lib/python3.11/site-packages/_plotly_utils/data_utils.py
Normal file
@ -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
|
97
lib/python3.11/site-packages/_plotly_utils/exceptions.py
Normal file
97
lib/python3.11/site-packages/_plotly_utils/exceptions.py
Normal file
@ -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)
|
37
lib/python3.11/site-packages/_plotly_utils/files.py
Normal file
37
lib/python3.11/site-packages/_plotly_utils/files.py
Normal file
@ -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
|
50
lib/python3.11/site-packages/_plotly_utils/importers.py
Normal file
50
lib/python3.11/site-packages/_plotly_utils/importers.py
Normal file
@ -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
|
2350
lib/python3.11/site-packages/_plotly_utils/png.py
Normal file
2350
lib/python3.11/site-packages/_plotly_utils/png.py
Normal file
File diff suppressed because it is too large
Load Diff
557
lib/python3.11/site-packages/_plotly_utils/utils.py
Normal file
557
lib/python3.11/site-packages/_plotly_utils/utils.py
Normal file
@ -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]
|
33
lib/python3.11/site-packages/_yaml/__init__.py
Normal file
33
lib/python3.11/site-packages/_yaml/__init__.py
Normal file
@ -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
|
27
lib/python3.11/site-packages/babel-2.17.0.dist-info/LICENSE
Normal file
27
lib/python3.11/site-packages/babel-2.17.0.dist-info/LICENSE
Normal file
@ -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.
|
54
lib/python3.11/site-packages/babel-2.17.0.dist-info/METADATA
Normal file
54
lib/python3.11/site-packages/babel-2.17.0.dist-info/METADATA
Normal file
@ -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.
|
1106
lib/python3.11/site-packages/babel-2.17.0.dist-info/RECORD
Normal file
1106
lib/python3.11/site-packages/babel-2.17.0.dist-info/RECORD
Normal file
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
|
38
lib/python3.11/site-packages/babel/__init__.py
Normal file
38
lib/python3.11/site-packages/babel/__init__.py
Normal file
@ -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',
|
||||
]
|
1337
lib/python3.11/site-packages/babel/core.py
Normal file
1337
lib/python3.11/site-packages/babel/core.py
Normal file
File diff suppressed because it is too large
Load Diff
1999
lib/python3.11/site-packages/babel/dates.py
Normal file
1999
lib/python3.11/site-packages/babel/dates.py
Normal file
File diff suppressed because it is too large
Load Diff
BIN
lib/python3.11/site-packages/babel/global.dat
Normal file
BIN
lib/python3.11/site-packages/babel/global.dat
Normal file
Binary file not shown.
72
lib/python3.11/site-packages/babel/languages.py
Normal file
72
lib/python3.11/site-packages/babel/languages.py
Normal file
@ -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()
|
132
lib/python3.11/site-packages/babel/lists.py
Normal file
132
lib/python3.11/site-packages/babel/lists.py
Normal file
@ -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
|
BIN
lib/python3.11/site-packages/babel/locale-data/aa.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/aa.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/aa_DJ.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/aa_DJ.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/aa_ER.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/aa_ER.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/aa_ET.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/aa_ET.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ab.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ab.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ab_GE.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ab_GE.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/af.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/af.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/af_NA.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/af_NA.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/af_ZA.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/af_ZA.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/agq.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/agq.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/agq_CM.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/agq_CM.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ak.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ak.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ak_GH.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ak_GH.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/am.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/am.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/am_ET.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/am_ET.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/an.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/an.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/an_ES.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/an_ES.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ann.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ann.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/ann_NG.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/ann_NG.dat
Normal file
Binary file not shown.
BIN
lib/python3.11/site-packages/babel/locale-data/apc.dat
Normal file
BIN
lib/python3.11/site-packages/babel/locale-data/apc.dat
Normal file
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