"""Challenge 6: Filter Failed API Requests
Return records whose status is an HTTP error (>= 400).
Records with a missing/invalid status are skipped.
"""

def filter_failed_requests(requests):
	failed = []
	for req in requests:
		try:
			status = int(req.get("status"))
		except (TypeError, ValueError):
			continue
		if status >= 400:
			failed.append(req)
	return failed
	

if __name__ == "__main__":
    test_data = [
        {"url": "/users", "status": 200},
        {"url": "/login", "status": 401},
        {"url": "/orders", "status": 500},
        {"url": "/health", "status": 399},
        {"url": "/broken"},                 # missing status
    ]
    result = filter_failed_requests(test_data)
    print(result)
    assert [r["url"] for r in result] == ["/login", "/orders"]
    assert filter_failed_requests([]) == []
    print("Challenge 6 OK")