Compare commits
	
		
			7 Commits
		
	
	
		
			new_featur
			...
			db30fa9b4e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| db30fa9b4e | |||
| 814f88932d | |||
| 7cbf75d6a8 | |||
| ed17d6e2d6 | |||
| a601fb414c | |||
| 474482a752 | |||
| 2fc0d000b6 | 
							
								
								
									
										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
											
										
									
								
							
							
								
								
									
										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.
										
									
								
							| @ -1,2 +1,5 @@ | ||||
| timestamp,category,comment | ||||
| 2025-09-07 20:02:38,groceries,"ABZT please change this air to P1231313" | ||||
| 2025-09-11 05:15:04,dashboard_table,"AIR: P853275 - most smaller issues related to this air should be eliminated" | ||||
| 2025-09-11 05:15:52,source_table,"SO: 53013308 - this should be erraddicated" | ||||
| 2025-09-11 05:37:58,dashboard_table,"AIR: P892467 - ABZT: need some more explanation" | ||||
| 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.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/apc_SY.dat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/apc_SY.dat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/ar.dat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/ar.dat
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/ar_001.dat
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								lib/python3.11/site-packages/babel/locale-data/ar_001.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