# Pipeline compatibility

**URL:** https://discourse.paraview.org/t/pipeline-compatibility/3387
**Category:** Development
**Created:** [January 23, 2020, 10:54am UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387 "2020-01-23T10:54:12Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![siver](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/s/7ba0ec/32.png) [@siver](https://discourse.paraview.org/u/siver)
#### Post date: [January 23, 2020, 10:54am UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387/1 "2020-01-23T10:54:13Z")

</div>

Dear devs,

I have two C++ plugins, A (source) and B (filter). However B uses additional data that only source A can provide. Therefore, in a pipeline, A-B is perfectly fine, while A-C-B (where C is some other filter) should not be possible.

Also I noticed that unavailable filters are gray and cannot be selected in PV.

My questions are:

1. How does PV decides what filters can be used?
2. How can I reproduce this effect for my source and filter?

Thanks a ton,  
Art

---

<div class="post-metadata">

### Author: ![michal.wozniak](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/m/848f3c/32.png) [@michal.wozniak](https://discourse.paraview.org/u/michal.wozniak)
#### Post date: [January 23, 2020, 3:37pm UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387/2 "2020-01-23T15:37:26Z")

</div>

Hi,

each filter have a corresponding XML which define its inputs data type

eg: vtkAppendArcLength : input restricted to vtkPolyData , therefore this filter won’t be able to select a vtkUnstructured data

vtkAppendArcLength will be gray

```auto
        <DataTypeDomain name="input_type">
          <DataType value="vtkPolyData" />
        </DataTypeDomain>

```

> <https://github.com/Kitware/ParaView/blob/master/Remoting/Application/Resources/filters_filterscore.xml>

---

<div class="post-metadata">

### Author: ![siver](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/s/7ba0ec/32.png) [@siver](https://discourse.paraview.org/u/siver)
#### Post date: [January 23, 2020, 4:16pm UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387/3 "2020-01-23T16:16:18Z")

</div>

Hello, thank you for your reply.

I was hoping for something more sensitive. In our case, the source always comes with a certain variable. And if the variable is not present, the filter should not be available.

I could still have a `vtkPolyData` without this variable, and yet ParaView will fail.

Sincerely,  
Art

---

<div class="post-metadata">

### Author: ![cory.quammen](https://discourse.paraview.org/user_avatar/discourse.paraview.org/cory.quammen/32/11193_2.png) [@cory.quammen](https://discourse.paraview.org/u/cory.quammen)
#### Post date: [January 23, 2020, 7:26pm UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387/4 "2020-01-23T19:26:30Z")

</div>

> [@siver](#):
>
> I was hoping for something more sensitive. In our case, the source always comes with a certain variable. And if the variable is not present, the filter should not be available.

That’s not currently possible. One could extend `vtkSMInputArrayDomain` to add an XML attribute that specifies which array names must be present, then add an `InputArrayDomain` entry to the `InputProperty` element in your filter XML definition.

---

<div class="post-metadata">

### Author: ![siver](https://discourse.paraview.org/letter_avatar_proxy/v4/letter/s/7ba0ec/32.png) [@siver](https://discourse.paraview.org/u/siver)
#### Post date: [January 24, 2020, 2:14pm UTC](https://discourse.paraview.org/t/pipeline-compatibility/3387/5 "2020-01-24T14:14:12Z")

</div>

Doesn’t sound like something a plugin can do.

Either way, DataTypes is the answer.

Thank you very much for your help,  
Art
