[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/pythonnet/pythonnet/v3.2.1/src/embed_tests/Inspect.cs [Back]  [Original]

using System;
using System.Collections.Generic;

using NUnit.Framework;

using Python.Runtime;

namespace Python.EmbeddingTest
{
    public class Inspect
    {
        [Test]
        public void InstancePropertiesVisibleOnClass()
        {
            var uri = new Uri("http://example.org").ToPython();
            var uriClass = uri.GetPythonType();
            var property = uriClass.GetAttr(nameof(Uri.AbsoluteUri));
            var pyProp = (PropertyObject)ManagedType.GetManagedObject(property.Reference);
            Assert.That(pyProp.info.Value.Name, Is.EqualTo(nameof(Uri.AbsoluteUri)));
        }

        [Test]
        public void BoundMethodsAreInspectable()
        {
            using var scope = Py.CreateScope();
            try
            {
                scope.Import("inspect");
            }
            catch (PythonException)
            {
                Assert.Inconclusive("Python build does not include inspect module");
                return;
            }

            var obj = new Class();
            scope.Set(nameof(obj), obj);
            using var spec = scope.Eval($"inspect.getfullargspec({nameof(obj)}.{nameof(Class.Method)})");
        }

        class Class
        {
            public void Method(int a, int b = 10) { }
            public void Method(int a, object b) { }
        }
    }
}

Web Proxy Viewer  |  New URL  |  Original Page