- Notifications
You must be signed in to change notification settings - Fork750
Closed
Description
Environment
- Pythonnet version: 3.0.0.dev1
- Python version: 3.9.6 (also tried on 3.7)
- Operating System: Ubuntu 20.04
- .NET Runtime: mono-devel (Mono JIT compiler version 6.8.0.105)
- Open XML SDK 2.13.0 (fromhttps://www.nuget.org/packages/DocumentFormat.OpenXml/)
Details
Trying to re-implement example fromhere using Python.
Everything works fine except this line of code:
slideMasterPart1.AddPart(slideLayoutPart1,"rId1");
There are two definitions ofAddPart
:
publicvirtualTAddPart<T>(Tpart)whereT:OpenXmlPartpublicvirtualTAddPart<T>(Tpart,stringid)whereT:OpenXmlPart
slideMasterPart1.AddPart.Overloads
output:
T AddPart[T](T)T AddPart[T](T, System.String)
What works:
slideMasterPart1.AddPart(slideLayoutPart1)slideMasterPart1.AddPart[SlideLayoutPart](slideLayoutPart1)
What doesn't work:
slideMasterPart1.AddPart(slideLayoutPart1,"rId1")slideMasterPart1.AddPart(slideLayoutPart1,System.String("rId1"))slideMasterPart1.AddPart[SlideLayoutPart](slideLayoutPart1,"rId1")
Error:
Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to TThe above exception was the direct cause of the following exception:System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T --- End of inner exception stack trace ---The above exception was the direct cause of the following exception:System.AggregateException: One or more errors occurred. (DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String)) ---> System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T --- End of inner exception stack trace --- --- End of inner exception stack trace ------> (Inner Exception #0) System.ArgumentException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T in method T AddPart[T](T, System.String) ---> Python.Runtime.PythonException: DocumentFormat.OpenXml.Packaging.SlideLayoutPart value cannot be converted to T --- End of inner exception stack trace ---<---The above exception was the direct cause of the following exception:...slideMasterPart1.AddPart(slideLayoutPart1, "rId1");TypeError: No method matches given arguments for AddPart: (<class 'DocumentFormat.OpenXml.Packaging.SlideLayoutPart'>, <class 'str'>)
mcve:
importclrclr.AddReference('DocumentFormat.OpenXml')fromDocumentFormat.OpenXml.Packagingimport (SlideLayoutPart,SlideMasterPart,)slideLayoutPart1:SlideLayoutPart=SlideLayoutPart()slideMasterPart1:SlideMasterPart=SlideMasterPart()slideMasterPart1.AddPart(slideLayoutPart1)# this works OKslideMasterPart1.AddPart(slideLayoutPart1,"rId1")# this raises a runtime exception
So it's only when the second (string) parameter is provided, the first can't be converted. Looks like a pythonnet issue.