| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | from dataclasses import dataclass | 
					
						
							|  |  |  | from typing import List | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-28 19:00:33 -04:00
										 |  |  | from .. import data | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | @dataclass(frozen=True) | 
					
						
							|  |  |  | class SeedItem: | 
					
						
							|  |  |  |     name: str | 
					
						
							|  |  |  |     seasons: List[str] | 
					
						
							|  |  |  |     regions: List[str] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @dataclass(frozen=True) | 
					
						
							|  |  |  | class CropItem: | 
					
						
							|  |  |  |     name: str | 
					
						
							|  |  |  |     farm_growth_seasons: List[str] | 
					
						
							|  |  |  |     seed: SeedItem | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def load_crop_csv(): | 
					
						
							|  |  |  |     import csv | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         from importlib.resources import files | 
					
						
							|  |  |  |     except ImportError: | 
					
						
							|  |  |  |         from importlib_resources import files  # noqa | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-28 19:00:33 -04:00
										 |  |  |     with files(data).joinpath("crops.csv").open() as file: | 
					
						
							| 
									
										
										
										
											2023-04-10 19:44:59 -04:00
										 |  |  |         reader = csv.DictReader(file) | 
					
						
							|  |  |  |         crops = [] | 
					
						
							|  |  |  |         seeds = [] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         for item in reader: | 
					
						
							|  |  |  |             seeds.append(SeedItem(item["seed"], | 
					
						
							|  |  |  |                                   [season for season in item["seed_seasons"].split(",")] | 
					
						
							|  |  |  |                                   if item["seed_seasons"] else [], | 
					
						
							|  |  |  |                                   [region for region in item["seed_regions"].split(",")] | 
					
						
							|  |  |  |                                   if item["seed_regions"] else [])) | 
					
						
							|  |  |  |             crops.append(CropItem(item["crop"], | 
					
						
							|  |  |  |                                   [season for season in item["farm_growth_seasons"].split(",")] | 
					
						
							|  |  |  |                                   if item["farm_growth_seasons"] else [], | 
					
						
							|  |  |  |                                   seeds[-1])) | 
					
						
							|  |  |  |         return crops, seeds | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # TODO Those two should probably be split to we can include rest of seeds | 
					
						
							|  |  |  | all_crops, all_purchasable_seeds = load_crop_csv() | 
					
						
							| 
									
										
										
										
											2023-07-19 14:26:38 -04:00
										 |  |  | crops_by_name = {crop.name: crop for crop in all_crops} |