gary-boon Claude commited on
Commit
1680fda
·
1 Parent(s): 9dbec03

Fix pyarrow compatibility issue with datasets library

Browse files

- Update datasets to 2.16.1 and pyarrow to 14.0.2 for compatibility
- Add graceful error handling when dataset can't load
- Return 503 error instead of crashing when dataset unavailable
- Maintain research integrity - no mock data fallback

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

backend/model_service.py CHANGED
@@ -1178,6 +1178,14 @@ async def get_swe_bench_tasks(
1178
  # Try to load dataset if not already loaded
1179
  await swe_bench_service.load_dataset()
1180
 
 
 
 
 
 
 
 
 
1181
  tasks = swe_bench_service.get_tasks(
1182
  category=category,
1183
  difficulty=difficulty,
 
1178
  # Try to load dataset if not already loaded
1179
  await swe_bench_service.load_dataset()
1180
 
1181
+ # Check if dataset loaded successfully
1182
+ if not swe_bench_service.dataset_loaded:
1183
+ # Return error - no mock data for research integrity
1184
+ raise HTTPException(
1185
+ status_code=503,
1186
+ detail="SWE-bench dataset unavailable - real data required for research. Check server logs for details."
1187
+ )
1188
+
1189
  tasks = swe_bench_service.get_tasks(
1190
  category=category,
1191
  difficulty=difficulty,
backend/swe_bench_service.py CHANGED
@@ -101,7 +101,19 @@ class SWEBenchService:
101
  async def load_dataset(self, dataset_name: str = "princeton-nlp/SWE-bench_Lite"):
102
  """Load SWE-bench dataset from Hugging Face"""
103
  try:
104
- from datasets import load_dataset
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
  logger.info(f"Loading SWE-bench dataset: {dataset_name}")
107
 
@@ -129,19 +141,17 @@ class SWEBenchService:
129
  self.dataset_loaded = True
130
  logger.info(f"Loaded {len(self.tasks)} SWE-bench tasks")
131
  except Exception as dataset_error:
132
- logger.error(f"Could not load full dataset: {dataset_error}")
133
  # No mock data - research requires real dataset
134
- raise Exception("SWE-bench dataset unavailable - real data required for research")
 
135
 
136
  # Initialize metrics cache
137
  self._update_metrics_cache()
138
 
139
- except ImportError:
140
- logger.error("datasets library not installed - real data required")
141
- raise ImportError("datasets library required for SWE-bench - pip install datasets")
142
  except Exception as e:
143
  logger.error(f"Failed to load SWE-bench dataset: {e}")
144
- raise Exception(f"SWE-bench dataset loading failed: {e}")
145
 
146
  def get_tasks(
147
  self,
 
101
  async def load_dataset(self, dataset_name: str = "princeton-nlp/SWE-bench_Lite"):
102
  """Load SWE-bench dataset from Hugging Face"""
103
  try:
104
+ # Check if datasets library is available with proper dependencies
105
+ try:
106
+ from datasets import load_dataset
107
+ import pyarrow as pa
108
+ # Verify pyarrow has the required attribute
109
+ if not hasattr(pa, 'PyExtensionType'):
110
+ logger.error("pyarrow version incompatible with datasets library")
111
+ self.dataset_loaded = False
112
+ return
113
+ except ImportError as ie:
114
+ logger.error(f"Required libraries not properly installed: {ie}")
115
+ self.dataset_loaded = False
116
+ return
117
 
118
  logger.info(f"Loading SWE-bench dataset: {dataset_name}")
119
 
 
141
  self.dataset_loaded = True
142
  logger.info(f"Loaded {len(self.tasks)} SWE-bench tasks")
143
  except Exception as dataset_error:
144
+ logger.error(f"Could not load dataset: {dataset_error}")
145
  # No mock data - research requires real dataset
146
+ self.dataset_loaded = False
147
+ return
148
 
149
  # Initialize metrics cache
150
  self._update_metrics_cache()
151
 
 
 
 
152
  except Exception as e:
153
  logger.error(f"Failed to load SWE-bench dataset: {e}")
154
+ self.dataset_loaded = False
155
 
156
  def get_tasks(
157
  self,
requirements.txt CHANGED
@@ -16,4 +16,5 @@ aiofiles==23.2.1
16
  python-dotenv==1.0.0
17
 
18
  # SWE-bench support
19
- datasets==2.14.0
 
 
16
  python-dotenv==1.0.0
17
 
18
  # SWE-bench support
19
+ datasets==2.16.1
20
+ pyarrow==14.0.2