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!