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! >