| 
									
										
										
										
											1994-08-29 10:52:58 +00:00
										 |  |  | # Routine to "compile" a .py file to a .pyc file. | 
					
						
							|  |  |  | # This has intimate knowledge of how Python/import.c does it. | 
					
						
							|  |  |  | # By Sjoerd Mullender (I forced him to write it :-). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1995-07-19 11:21:47 +00:00
										 |  |  | import imp | 
					
						
							|  |  |  | MAGIC = imp.get_magic() | 
					
						
							| 
									
										
										
										
											1994-08-29 10:52:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def wr_long(f, x): | 
					
						
							|  |  |  | 	f.write(chr( x        & 0xff)) | 
					
						
							|  |  |  | 	f.write(chr((x >> 8)  & 0xff)) | 
					
						
							|  |  |  | 	f.write(chr((x >> 16) & 0xff)) | 
					
						
							|  |  |  | 	f.write(chr((x >> 24) & 0xff)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def compile(file, cfile = None): | 
					
						
							|  |  |  | 	import os, marshal, __builtin__ | 
					
						
							|  |  |  | 	f = open(file) | 
					
						
							|  |  |  | 	codestring = f.read() | 
					
						
							|  |  |  | 	f.close() | 
					
						
							| 
									
										
										
										
											1995-01-27 02:41:45 +00:00
										 |  |  | 	timestamp = os.stat(file)[8] | 
					
						
							| 
									
										
										
										
											1994-08-29 10:52:58 +00:00
										 |  |  | 	codeobject = __builtin__.compile(codestring, file, 'exec') | 
					
						
							|  |  |  | 	if not cfile: | 
					
						
							|  |  |  | 		cfile = file + 'c' | 
					
						
							| 
									
										
										
										
											1995-01-27 02:41:45 +00:00
										 |  |  | 	fc = open(cfile, 'wb') | 
					
						
							| 
									
										
										
										
											1995-07-19 11:21:47 +00:00
										 |  |  | 	fc.write(MAGIC) | 
					
						
							| 
									
										
										
										
											1994-08-29 10:52:58 +00:00
										 |  |  | 	wr_long(fc, timestamp) | 
					
						
							|  |  |  | 	marshal.dump(codeobject, fc) | 
					
						
							| 
									
										
										
										
											1995-01-27 02:41:45 +00:00
										 |  |  | 	fc.close() | 
					
						
							|  |  |  | 	if os.name == 'mac': | 
					
						
							| 
									
										
										
										
											1995-04-23 22:06:57 +00:00
										 |  |  | 		import macfs | 
					
						
							|  |  |  | 		macfs.FSSpec(cfile).SetCreatorType('PYTH', 'PYC ') | 
					
						
							|  |  |  | 		macfs.FSSpec(file).SetCreatorType('PYTH', 'TEXT') |