يتم إعطاؤك مقتطف كود Python من ملف `schema.py`. يحدد هذا الرمز فئة Pydantic BaseModel تسمى "المنتج" والتي تمثل تفاصيل المنتج المختلفة. وله ثلاث صفات:

1. `p_name` - يمثل اسم المنتج وهو من النوع `str`.
2. `p_price` - يمثل سعر المنتج وهو من النوع `float`.
3. `p_dec` - يمثل وصف المنتج وهو من النوع `str`.

تحتوي فئة "المنتج" أيضًا على فئة متداخلة تسمى "Config" مع سمة واحدة "orm_mode"، والتي تم تعيينها على "True".

مهمتك هي كتابة دالة بايثون التي تأخذ قائمة من القواميس التي تمثل المنتجات وتحول كل قاموس إلى كائن `منتج`. يجب أن تقوم الدالة بإرجاع قائمة بكائنات "المنتج". إذا كانت أي سمة مطلوبة مفقودة من القاموس، فيجب تعيينها على "لا شيء" في كائن "المنتج" الناتج.

توقيع الوظيفة: `def converter_to_products(products: List[dict]) -> List[Product]:`

**مدخل**
- `المنتجات` (1 <= len(products) <= 100): قائمة القواميس التي تمثل المنتجات. يحتوي كل قاموس على السمات `p_name` و`p_price` و`p_dec`، وهي اسم المنتج وسعره ووصفه، على التوالي. تكون قيمة كل سمة إما قيمة صالحة من النوع المعني أو مفقودة من القاموس.

**انتاج**
- إرجاع قائمة بكائنات "المنتج"، حيث يمثل كل كائن منتجًا من قاموس الإدخال. يتم تحويل كائنات "المنتج" من القواميس بنفس الترتيب الذي تظهر به في قائمة الإدخال. إذا كانت هناك أية سمة مفقودة من القاموس، فيجب تعيينها على "لا شيء" في كائن "المنتج" الناتج.

**ملحوظة**
- يمكنك افتراض أن قاموس الإدخال سيحتوي دائمًا على المفاتيح `p_name` و`p_price` و`p_dec`.
- يمكن أن يحتوي قاموس الإدخال على سمات إضافية أخرى، ولكن يجب تجاهلها وعدم تضمينها في كائنات `المنتج` الناتجة.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}