I found some examples here:
https://github.com/apache/nifi-python-extensions/blob/main/src/extensions/chunking/ParseDocument.py



On Thu, 22 Aug 2024 at 08:22, chris snow <chsnow...@gmail.com> wrote:

> I have the following minimal example where I'm trying to create a
> dependent PropertyDescriptor
>
> #####
> from nifiapi.properties import PropertyDescriptor, StandardValidators
> from nifiapi.flowfiletransform import FlowFileTransform,
> FlowFileTransformResult
>
> class MinimalPythonExample(FlowFileTransform):
>     class Java:
>         implements = ['org.apache.nifi.python.processor.FlowFileTransform']
>
>     class ProcessorDetails:
>         dependencies = []
>         version = '0.0.1-SNAPSHOT'
>
>     def __init__(self, **kwargs):
>
>         self.ENABLE_FEATURE = PropertyDescriptor(
>             name="Enable Feature",
>             description="Turns on a special feature",
>             required=True,
>             allowable_values=["true", "false"],
>             default_value="false"
>             )
>
>         # self.FEATURE_CONFIG = PropertyDescriptor(
>         #     name="Feature Configuration",
>         #     description="Configures the special feature",
>         #     dependencies = [self.ENABLE_FEATURE],
>         #     validators=[StandardValidators.NON_EMPTY_VALIDATOR]
>         #     )
>
>         self.descriptors = [
>             self.ENABLE_FEATURE,
>             # self.FEATURE_CONFIG
>             ]
>
>     def getPropertyDescriptors(self):
>         return self.descriptors
>
>     def transform(self, context, flowFile):
>         return FlowFileTransformResult(relationship = "success")
> #####
>
> However, when I uncomment the code for the self.FEATURE_CONFIG, I get the
> following error in the log:
>
> #####
> py4j.Py4JException: An exception was raised by the Python Proxy. Return
> Message: Traceback (most recent call last):
>   File
> "/Users/chris.snow/Documents/nifi-2.0.0-M4/python/framework/py4j/java_gateway.py",
> line 2466, in _call_proxy
>     return_value = getattr(self.pool[obj_id], method)(*params)
>   File
> "/Users/chris.snow/Documents/nifi-2.0.0-M4/python/framework/PythonProcessorAdapter.py",
> line 89, in getSupportedPropertyDescriptors
>     descriptor_list.add(descriptor.to_java_descriptor(self.gateway,
> self.controller_service_type_lookup))
>   File
> "/Users/chris.snow/Documents/nifi-2.0.0-M4/python/api/nifiapi/properties.py",
> line 223, in to_java_descriptor
>     dependent_property =
> dependency.property_descriptor.to_java_descriptor(gateway, cs_type_lookup)
> AttributeError: 'PropertyDescriptor' object has no attribute
> 'property_descriptor'
>
> at py4j.Protocol.getReturnValue(Protocol.java:476)
> at
> org.apache.nifi.py4j.client.PythonProxyInvocationHandler.invoke(PythonProxyInvocationHandler.java:87)
> at
> org.apache.nifi.py4j.client.NiFiPythonGateway$1.invoke(NiFiPythonGateway.java:175)
> at
> jdk.proxy19/jdk.proxy19.$Proxy157.getSupportedPropertyDescriptors(Unknown
> Source)
> at
> org.apache.nifi.python.processor.PythonProcessorProxy.getSupportedPropertyDescriptors(PythonProcessorProxy.java:165)
> at
> org.apache.nifi.components.AbstractConfigurableComponent.getPropertyDescriptors(AbstractConfigurableComponent.java:231)
> at
> org.apache.nifi.controller.AbstractComponentNode.getProperties(AbstractComponentNode.java:632)
> at
> org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper.mapPropertyDescriptors(NiFiRegistryFlowMapper.java:572)
> at
> org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper.mapProcessor(NiFiRegistryFlowMapper.java:740)
> at
> org.apache.nifi.flowanalysis.StandardFlowAnalyzer.analyzeProcessor(StandardFlowAnalyzer.java:94)
> at
> org.apache.nifi.controller.ProcessorNode.lambda$performFlowAnalysisOnThis$0(ProcessorNode.java:289)
> at java.base/java.util.Optional.ifPresent(Optional.java:178)
> at
> org.apache.nifi.controller.ProcessorNode.performFlowAnalysisOnThis(ProcessorNode.java:289)
> at
> org.apache.nifi.controller.AbstractComponentNode.computeValidationErrors(AbstractComponentNode.java:918)
> at
> org.apache.nifi.controller.StandardProcessorNode.computeValidationErrors(StandardProcessorNode.java:1056)
> at
> org.apache.nifi.controller.AbstractComponentNode.performValidation(AbstractComponentNode.java:846)
> at
> org.apache.nifi.controller.AbstractComponentNode.performValidation(AbstractComponentNode.java:860)
> at
> org.apache.nifi.components.validation.StandardValidationTrigger.trigger(StandardValidationTrigger.java:52)
> at
> org.apache.nifi.components.validation.TriggerValidationTask.run(TriggerValidationTask.java:58)
> at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
> at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> at
> java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
> at
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> at java.base/java.lang.Thread.run(Thread.java:1583)
> #####
>
> Any pointers on where I'm going wrong?
>
> Thanks in advance!
>

Reply via email to