Skip to content

Conversation

koubaa
Copy link
Collaborator

@koubaa koubaa commented Jan 13, 2025

Fixes #22

Gives the user an option to opt-into exposing explicit interface implementations.
This is done by adding a place to register customizations for python bindings by type or assembly.

Usage (to customize binding for all types in an assembly):

m = clr.AddReference('TestInheritance')
from Python.Runtime import BindingManager, BindingOptions
binding_options = BindingOptions()
binding_options.AllowExplicitInterfaceImplementation = True
BindingManager.SetBindingOptions(m, binding_options)

@koubaa
Copy link
Collaborator Author

koubaa commented Jan 13, 2025

@RobPasMue @dipinknair @SMoraisAnsys

I can't reproduce the CI failures locally and it seems the upgrade to 3.13 didn't have any CI issue. Any ideas?

@RobPasMue
Copy link
Member

RobPasMue commented Jan 13, 2025

Looks like your implementation is getting "activated" somehow even if the user doesn't opt-in? https://github.com/ansys/ansys-pythonnet/actions/runs/12750835469/job/35536486536?pr=23#step:11:75

The failing tests talk about internal properties being accessed. The tests are expected to raise an error because the user shouldn't be able to access them but now, with your implementation, they are accessible by default and do not raise an error.

@SMoraisAnsys
Copy link

I'll try to reproduce that locally and come back once I'm done :)

@SMoraisAnsys
Copy link

@RobPasMue @dipinknair @SMoraisAnsys

I can't reproduce the CI failures locally and it seems the upgrade to 3.13 didn't have any CI issue. Any ideas?

I'm able to reproduce the CI failure locally and passed main locally. As @RobPasMue mentioned, the implementation is at cause here.

@koubaa
Copy link
Collaborator Author

koubaa commented Jan 14, 2025

@RobPasMue @SMoraisAnsys @dipinknair this is ready for review

Copy link
Member

@RobPasMue RobPasMue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fine by me - should we consider bringing these changes upstream? In any case, I would include in the main README of our fork some info regarding this implementation

@koubaa
Copy link
Collaborator Author

koubaa commented Jan 14, 2025

@RobPasMue I started to propose the binding manager upstream first. If that is accepted, I can propose the explicit interface implementation option too.

Yes - the readme should be updated. Should we do that on pypi releases or on merges to main?

@RobPasMue
Copy link
Member

@RobPasMue I started to propose the binding manager upstream first. If that is accepted, I can propose the explicit interface implementation option too.

Awesome, thanks for handling that!

Yes - the readme should be updated. Should we do that on pypi releases or on merges to main?

I would do it as part of this PR. Our main branch should reflect the change already. We can do a follow up release right after.

@koubaa koubaa merged commit c5f9793 into main Jan 14, 2025
34 checks passed
@koubaa koubaa deleted the binding-options branch January 14, 2025 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IronPython compatibility issue - explicit interface implementation
3 participants