# كتل خط الأنابيب

## ModularPipelineBlocks[[diffusers.ModularPipelineBlocks]]

#### diffusers.ModularPipelineBlocks[[diffusers.ModularPipelineBlocks]]

```python
diffusers.ModularPipelineBlocks()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L392)

الفئة الأساسية لجميع كتل خط الأنابيب: ConditionalPipelineBlocks، AutoPipelineBlocks، SequentialPipelineBlocks، LoopSequentialPipelineBlocks

يوفر [ModularPipelineBlocks](/docs/diffusers/v0.43.0/ar/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks) طريقةً لتحميل وحفظ تعريفات كتل خط المعالجة.

#### get_block_state[[diffusers.ModularPipelineBlocks.get_block_state]]

```python
get_block_state(state: PipelineState)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L590)

احصل على جميع المدخلات والقيم الوسيطة في قاموس واحد

#### get_execution_blocks[[diffusers.ModularPipelineBlocks.get_execution_blocks]]

```python
get_execution_blocks(**kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L461)

**المعاملات:**

- ****kwargs** : أسماء وقيم المدخلات. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تدعم اختيار الكتل الشرطي.

#### get_workflow[[diffusers.ModularPipelineBlocks.get_workflow]]

```python
get_workflow(workflow_name: str)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L479)

**المعاملات:**

workflow_name : اسم سير العمل المطلوب استرجاعه.

احصل على كتل التنفيذ لخط سير عمل محدد. يجب أن تُنفَّذ بواسطة الفئات الفرعية التي تُعرّف `_workflow_map`.

#### init_pipeline[[diffusers.ModularPipelineBlocks.init_pipeline]]

```python
init_pipeline(pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L568)

أنشئ ModularPipeline، مع قبول pretrained_model_name_or_path بشكل اختياري للتحميل من المستودع.

## SequentialPipelineBlocks[[diffusers.SequentialPipelineBlocks]]

#### diffusers.SequentialPipelineBlocks[[diffusers.SequentialPipelineBlocks]]

```python
diffusers.SequentialPipelineBlocks()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1044)

**المعاملات:**

block_classes : قائمة بفئات الكتل المستخدمة

block_names : قائمة بادئات لكل كتلة

كتلة خط أنابيب (Pipeline Blocks) تجمع بين فئات كتل خط الأنابيب المتعددة في كتلة واحدة. عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.

ترث هذه الفئة من [ModularPipelineBlocks](/docs/diffusers/v0.43.0/ar/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

#### from_blocks_dict[[diffusers.SequentialPipelineBlocks.from_blocks_dict]]

```python
from_blocks_dict(blocks_dict: dict[str, typing.Any], description: str | None = None)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1116)

**المعاملات:**

blocks_dict : قاموس يربط أسماء الكتل بفئات الكتل أو مثيلاتها

**يعيد:**

مثال جديد من SequentialPipelineBlocks

ينشئ كائنًا من نوع SequentialPipelineBlocks من قاموس (dictionary) من الكتل.

#### get_execution_blocks[[diffusers.SequentialPipelineBlocks.get_execution_blocks]]

```python
get_execution_blocks(**kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1259)

**المعاملات:**

- ****kwargs** : أسماء وقيم المدخلات. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

**يعيد:**

SequentialPipelineBlocks تحتوي فقط على الكتل التي سيتم تنفيذها

احصل على الكتل التي ستُنفَّذ بالنظر إلى المدخلات المحددة.

عندما يتنقل الاستكشاف عبر الكتل المتسلسلة، تُضاف المخرجات الوسيطة من الكتل المُحلّة إلى المدخلات النشطة. وهذا يعني أن الكتل الشرطية التي تعتمد على الوسيط (مثل "تشغيل img2img إذا كان image_latents موجودًا") ستُحلّ بشكل صحيح، طالما أن الشرط مبني على الوجود/الغياب (None أو غير None)، وليس على القيمة الفعلية.

## LoopSequentialPipelineBlocks[[diffusers.LoopSequentialPipelineBlocks]]

#### diffusers.LoopSequentialPipelineBlocks[[diffusers.LoopSequentialPipelineBlocks]]

```python
diffusers.LoopSequentialPipelineBlocks()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1404)

**المعاملات:**

block_classes : قائمة بفئات الكتل المستخدمة

block_names : قائمة بادئات لكل كتلة

Pipeline  هو كتلة تجمع بين فئات كتل الخطوط المتعددة في حلقة  For . عند استدعائها، ستقوم باستدعاء كل كتلة على التوالي.

ترث هذه الفئة من [ModularPipelineBlocks](/docs/diffusers/v0.43.0/ar/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

#### from_blocks_dict[[diffusers.LoopSequentialPipelineBlocks.from_blocks_dict]]

```python
from_blocks_dict(blocks_dict: dict[str, typing.Any])
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1565)

**المعاملات:**

blocks_dict : قاموس يربط أسماء الكتل بأمثلة الكتل

**يعيد:**

مثال جديد من LoopSequentialPipelineBlocks

ينشئ كائنًا من نوع LoopSequentialPipelineBlocks من قاموس (dictionary) من الكتل.

## AutoPipelineBlocks[[diffusers.AutoPipelineBlocks]]

#### diffusers.AutoPipelineBlocks[[diffusers.AutoPipelineBlocks]]

```python
diffusers.AutoPipelineBlocks()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L983)

**المعاملات:**

block_classes : قائمة فئات الكتل المستخدمة. يجب أن تكون لها نفس طول `block_names` و`block_trigger_inputs`.

block_names : قائمة بأسماء كل كتلة. يجب أن يكون لها نفس طول `block_classes` و`block_trigger_inputs`.

block_trigger_inputs : قائمة بأسماء المدخلات حيث يحدد كل عنصر مدخل التشغيل للكتلة المقابلة. استخدم `None` لتحديد الكتلة الافتراضية.

كتل خط أنابيب (Pipeline Blocks) تختار تلقائيًا كتلةً لتنفيذها بناءً على وجود مدخلات التفعيل.

هذه نسخة متخصصة من `ConditionalPipelineBlocks` حيث:
- لكل كتلة مدخل محفّز واحد (تطابق 1:1)
- يتم تحديد الكتلة تلقائيًا: تُختار أول كتلة يكون مدخل المحفّز الخاص بها حاضرًا
- يجب أن يكون لـ`block_trigger_inputs` نفس طول `block_names` و`block_classes`
- استخدم `None` في `block_trigger_inputs` لتحديد الكتلة الافتراضية، أي الكتلة التي ستُنفَّذ إذا لم تكن هناك مدخلات محفّزة

مثال:
```python
    class MyAutoBlock(AutoPipelineBlocks):
        block_classes = [InpaintEncoderBlock, ImageEncoderBlock, TextEncoderBlock]
        block_names = ["inpaint", "img2img", "text2img"]
        block_trigger_inputs = ["mask_image", "image", None]  # text2img is the default
```

مع هذا التعريف:
- طالما تم توفير `mask_image`، يتم تشغيل كتلة "inpaint" (سواء تم توفير `image` أم لا)
- إذا لم يُقدَّم `mask_image` لكن تم تقديم `image`، يتم تشغيل كتلة "img2img"
- وإلا، يتم تشغيل كتلة "text2img" (الافتراضي، المحفّز هو `None`)

#### select_block[[diffusers.AutoPipelineBlocks.select_block]]

```python
select_block(**kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L1036)

اختر الكتلة بناءً على مدخل المحفّز الموجود (غير None).

## ConditionalPipelineBlocks[[diffusers.ConditionalPipelineBlocks]]

#### diffusers.ConditionalPipelineBlocks[[diffusers.ConditionalPipelineBlocks]]

```python
diffusers.ConditionalPipelineBlocks()
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L684)

**المعاملات:**

block_classes : قائمة فئات الكتل المستخدمة. يجب أن يكون طولها مطابقًا لطول `block_names`.

block_names : قائمة بأسماء كل كتلة. يجب أن يكون لها نفس طول `block_classes`.

block_trigger_inputs : قائمة بأسماء المدخلات التي يستخدمها `select_block()` لتحديد الكتلة التي يجب تشغيلها. في حالة `ConditionalPipelineBlocks`، لا يلزم أن تتوافق هذه القائمة مع `block_names` و`block_classes`. أما في حالة `AutoPipelineBlocks`، فيجب أن تكون لها نفس طول `block_names` و`block_classes`، حيث يحدد كل عنصر مدخل التشغيل للكتلة المقابلة.

default_block_name : اسم الكتلة الافتراضية التي تُنفَّذ عندما لا تتطابق أي مدخلات محفّزة. إذا كانت القيمة None، يمكن تخطي هذه الكتلة بالكامل عندما لا تُوفَّر أي مدخلات محفّزة.

كتل Pipeline التي تختار بشكل شرطي كتلةً لتنفيذها بناءً على المدخلات. يجب أن تنفّذ الفئات الفرعية طريقة `select_block` لتعريف منطق اختيار الكتلة. حاليًا، ندعم فقط منطق الاختيار بناءً على وجود المدخلات أو غيابها (أي، ما إذا كانت `None` أم لا)

ترث هذه الفئة من [ModularPipelineBlocks](/docs/diffusers/v0.43.0/ar/api/modular_diffusers/pipeline_blocks#diffusers.ModularPipelineBlocks). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع كتل خط المعالجة (مثل التحميل أو الحفظ وما إلى ذلك).

#### get_execution_blocks[[diffusers.ConditionalPipelineBlocks.get_execution_blocks]]

```python
get_execution_blocks(**kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L874)

**المعاملات:**

- ****kwargs** : أسماء وقيم المدخلات. المدخلات المحفّزة فقط هي التي تؤثر على اختيار الكتلة.

**يعيد:** - `ModularPipelineBlocks`

كتلة ورقة أو `SequentialPipelineBlocks` محلول
- `None`: إذا كان هذا الكتلة سيتم تخطيها (لم يتطابق أي محفّز ولا يوجد افتراضي)

احصل على الكتلة (أو الكتل) التي ستُنفَّذ بالنظر إلى المدخلات.

يحلل كتل ConditionalPipelineBlocks المتداخلة بشكل تكراري حتى الوصول إلى أحد ما يلي:
- كتلة ورقة (لا تحتوي على sub_blocks أو LoopSequentialPipelineBlocks) → تُرجع كتلة `ModularPipelineBlocks` واحدة
- A `SequentialPipelineBlocks` → تفوّض إلى `get_execution_blocks()` الخاص بها والذي يعيد
a `SequentialPipelineBlocks` تحتوي على كتل التنفيذ المحلولة

#### select_block[[diffusers.ConditionalPipelineBlocks.select_block]]

```python
select_block(**kwargs)
```

[المصدر](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/modular_pipelines/modular_pipeline.py#L830)

**المعاملات:**

- ****kwargs** : أسماء مدخلات التفعيل وقيمها من الحالة.

**يعيد:** `str | None`

اسم الكتلة التي سيتم تشغيلها، أو None لاستخدام الافتراضي/التخطي.

اختر الكتلة التي سيتم تشغيلها بناءً على مدخلات المحفّز. يجب على الفئات الفرعية تنفيذ هذه الطريقة لتعريف منطق اختيار الكتلة.

Note: When trigger inputs include intermediate outputs from earlier blocks, the selection logic should only depend on the presence or absence of the input (i.e., whether it is None or not), not on its actual value. This is because `get_execution_blocks()` resolves conditions statically by propagating intermediate output names without their runtime values.

