29 lines
		
	
	
		
			920 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			920 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from typing import NamedTuple, Union
 | 
						|
import logging
 | 
						|
 | 
						|
 | 
						|
class PlandoItem(NamedTuple):
 | 
						|
    item: str
 | 
						|
    location: str
 | 
						|
    world: Union[bool, str] = False  # False -> own world, True -> not own world
 | 
						|
    from_pool: bool = True  # if item should be removed from item pool
 | 
						|
    force: str = 'silent'  # false -> warns if item not successfully placed. true -> errors out on failure to place item.
 | 
						|
 | 
						|
    def warn(self, warning: str):
 | 
						|
        if self.force in ['true', 'fail', 'failure', 'none', 'false', 'warn', 'warning']:
 | 
						|
            logging.warning(f'{warning}')
 | 
						|
        else:
 | 
						|
            logging.debug(f'{warning}')
 | 
						|
 | 
						|
    def failed(self, warning: str, exception=Exception):
 | 
						|
        if self.force in ['true', 'fail', 'failure']:
 | 
						|
            raise exception(warning)
 | 
						|
        else:
 | 
						|
            self.warn(warning)
 | 
						|
 | 
						|
 | 
						|
class PlandoConnection(NamedTuple):
 | 
						|
    entrance: str
 | 
						|
    exit: str
 | 
						|
    direction: str  # entrance, exit or both
 |