يتم إعطاؤك مقتطف الكود التالي:

```
السبت = التاريخ والوقت (2016، 7، 2، 12) # السبت
prev_friday = set_prev_week_day(السبت، ISO_FRIDAY، صحيح)
self.assertEqual(prev_friday.isoweekday(), ISO_FRIDAY)
self.assertLess(prev_friday, saturday)

def test_datetime_friday_to_friday_iso(self):
    الجمعة = datetime(2016, 7, 1, 12) # الجمعة
    prev_friday = set_prev_week_day(الجمعة، ISO_FRIDAY، صحيح)
    self.assertEqual(prev_friday.isoweekday(), ISO_FRIDAY)
    self.assertEqual(prev_friday, friday)

def test_datetime_thursday_to_prev_friday_iso(self):
```

مطلوب منك تنفيذ الدالة `set_prev_week_day()` التي تأخذ ثلاث وسائط:
- `current_date` (كائن التاريخ والوقت): يمثل التاريخ والوقت الحاليين.
- `desired_week_day` (عدد صحيح): يمثل اليوم المطلوب من الأسبوع (الاثنين = 1، الثلاثاء = 2، ...، الأحد = 7).
- `allow_equal` (منطقي): يشير إلى ما إذا كانت النتيجة يمكن أن تساوي `التاريخ_الحالي`. إذا كانت `True`، فمن الممكن أن تكون النتيجة مساوية لـ`current_date`. إذا كانت "خطأ"، فلا يمكن أن تكون النتيجة مساوية لـ "التاريخ_الحالي".

مهمتك هي إكمال تنفيذ وظيفة `set_prev_week_day()` استنادًا إلى مقتطف الكود المقدم.

قم بتنفيذ الوظيفة بحيث تقوم بإرجاع التاريخ السابق باليوم المطلوب من الأسبوع (استنادًا إلى معيار ISO 8601) بالنسبة إلى "التاريخ_الحالي" المحدد. إذا كانت قيمة `allow_equal` `خطأ`، فيجب أن تكون النتيجة أقل تمامًا من `التاريخ_الحالي`.

ملحوظة:
- تم بالفعل استيراد وحدة "التاريخ والوقت" لك.
- يمكنك افتراض أن الإدخال `current_date` سيكون له دائمًا تاريخ ووقت صالحان.

أكمل تنفيذ الدالة `set_prev_week_day()`.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}