8000 use enum name in repr · pythonnet/pythonnet@d9c326c · GitHub
[go: up one dir, main page]

Skip to content

Commit d9c326c

Browse files
author
Mohamed Koubaa
committed
use enum name in repr
1 parent 171cee4 commit d9c326c

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/runtime/Types/ClassObject.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,27 @@ internal NewReference GetDocString()
4848
}
4949

5050

51+
/// <summary>
52+
/// ClassObject __repr__ implementation.
53+
/// </summary>
54+
public new static NewReference tp_repr(BorrowedReference ob)
55+
{
56+
if (GetManagedObject(ob) is not CLRObject co)
57+
{
58+
return Exceptions.RaiseTypeError("invalid object");
59+
}
60+
61+
var inst = co.inst;
62+
var obType = inst.GetType();
63+
if (obType.IsEnum)
64+
{
65+
var repr = string.Format("{0}.{1}", obType.Name, inst.ToString());
66+
return Runtime.PyString_FromString(repr);
67+
}
68+
69+
return ClassBase.tp_repr(ob);
70+
}
71+
5172
/// <summary>
5273
/// Implements __new__ for reflected classes and value types.
5374
/// </summary>

tests/test_enum.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,13 @@ def test_enum_undefined_value():
143143
Test.FieldTest().EnumField = Test.ShortEnum(20, True)
144144

145145

146+
def test_enum_repr():
147+
"""Test enumeration repr."""
148+
from System import DayOfWeek
149+
150+
assert repr(DayOfWeek.Monday) == "Monday"
151+
152+
146153
def test_enum_conversion():
147154
"""Test enumeration conversion."""
148155
ob = Test.FieldTest()

0 commit comments

Comments
 (0)
0