Is ignoring Reuse.Scoped setting expected behaviour when also set to openResolutionScope?

DryIoc 5.3.4
Net 7
public class SimpleTest
{
    [Test]
    public void TestScope()
    {
        var container = new Container();
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(reuse: Reuse.Scoped);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
    }

    [Test]
    public void TestScope2()
    {
        var container = new Container();
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Scoped);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
    }
}

public interface IFoo
{
    public Guid GetId();
}

public interface IBar
{
    public Guid GetId();
}

public interface ICar
{
    public Guid GetId();
}

public class Foo : IFoo
{
    private Guid _id;
    public Foo(IResolverContext container)
    {
        _id = Guid.NewGuid();
    }

    public Guid GetId()
    {
        return _id;
    }
}

public class Bar : IBar
{
    private readonly IFoo _foo;
    private Guid _id;
    public Bar(IResolverContext container, IFoo foo)
    {
        _foo = foo;
        _id = Guid.NewGuid();
        Console.WriteLine($"Bar ID :{_id} IN Bar Constructor");
    }

    public Guid GetId()
    {
        Console.WriteLine($"Foo ID :{_foo.GetId()} IN Bar GetId()");
        return _id;
    }
}

public class Car : ICar
{
    private readonly IBar _bar;
    private Guid _id;
    public Car(IResolverContext container , IBar bar)
    {
        _bar = bar;
        _id = Guid.NewGuid();
        Console.WriteLine($"Car ID 1 :{_id} IN Car (constructor)");
        Console.WriteLine($"Bar ID 1 :{_bar.GetId()} IN Car (constructor object)");
        Console.WriteLine($"Bar ID 2 :{container.Resolve<IBar>().GetId()} IN Car (resolved object)");
        Console.WriteLine($"Bar ID 3 :{container.Resolve<IBar>().GetId()} IN Car (resolved object)");
        using (var scope = container.OpenScope())
        {
            Console.WriteLine($"Bar ID 4 :{scope.Resolve<IBar>().GetId()} IN Car New Scope");
            Console.WriteLine($"Bar ID 5 :{scope.Resolve<IBar>().GetId()} IN Car New Scope");
        }
    }

    public Guid GetId()
    {
        Console.WriteLine($"Car ID 2 :{_id} IN Car GetId()");
        return _id;
    }
}

TestScope Output - Normal behaviour

Bar ID :1d82a3d5-090b-48a2-9606-0a9777a995cc IN Bar Constructor
Car ID 1 :fdc509ea-1f4e-46d1-a715-0b4b2a0c1e42 IN Car (constructor)
Foo ID :c929dd2a-6563-41bf-a9ea-7bf6a7177c61 IN Bar GetId()
Bar ID 1 :1d82a3d5-090b-48a2-9606-0a9777a995cc IN Car (constructor object)
Foo ID :c929dd2a-6563-41bf-a9ea-7bf6a7177c61 IN Bar GetId()
Bar ID 2 :1d82a3d5-090b-48a2-9606-0a9777a995cc IN Car (resolved object)
Foo ID :c929dd2a-6563-41bf-a9ea-7bf6a7177c61 IN Bar GetId()
Bar ID 3 :1d82a3d5-090b-48a2-9606-0a9777a995cc IN Car (resolved object)
Bar ID :08c29c1d-d4f3-4e38-a10b-747f9345df94 IN Bar Constructor
Foo ID :c929dd2a-6563-41bf-a9ea-7bf6a7177c61 IN Bar GetId()
Bar ID 4 :08c29c1d-d4f3-4e38-a10b-747f9345df94 IN Car New Scope
Foo ID :c929dd2a-6563-41bf-a9ea-7bf6a7177c61 IN Bar GetId()
Bar ID 5 :08c29c1d-d4f3-4e38-a10b-747f9345df94 IN Car New Scope
Car ID 2 :fdc509ea-1f4e-46d1-a715-0b4b2a0c1e42 IN Car GetId()```

TestScope2 Output - Different Behaviour

Bar ID :db5affc4-5f23-4b93-b6be-69224a9c7fb1 IN Bar Constructor
Car ID 1 :6fadc58c-c671-466c-ae02-ec2d9d6666ba IN Car (constructor)
Foo ID :ee845fba-e175-4cf1-bebf-9b7c1df3cb5e IN Bar GetId()
Bar ID 1 :db5affc4-5f23-4b93-b6be-69224a9c7fb1 IN Car (constructor object)
Bar ID :59269de8-b4bc-4368-956c-ef855ed6438d IN Bar Constructor
Foo ID :ee845fba-e175-4cf1-bebf-9b7c1df3cb5e IN Bar GetId()
Bar ID 2 :59269de8-b4bc-4368-956c-ef855ed6438d IN Car (resolved object)
Bar ID :99315426-ea8c-48a4-9506-ffdadebceb0a IN Bar Constructor
Foo ID :ee845fba-e175-4cf1-bebf-9b7c1df3cb5e IN Bar GetId()
Bar ID 3 :99315426-ea8c-48a4-9506-ffdadebceb0a IN Car (resolved object)
Bar ID :fb0b3485-caf1-4c3d-9dc8-57f311e2637b IN Bar Constructor
Foo ID :ee845fba-e175-4cf1-bebf-9b7c1df3cb5e IN Bar GetId()
Bar ID 4 :fb0b3485-caf1-4c3d-9dc8-57f311e2637b IN Car New Scope
Bar ID :8447e6d1-8092-4ec8-97b5-6829ce2edf77 IN Bar Constructor
Foo ID :ee845fba-e175-4cf1-bebf-9b7c1df3cb5e IN Bar GetId()
Bar ID 5 :8447e6d1-8092-4ec8-97b5-6829ce2edf77 IN Car New Scope
Car ID 2 :6fadc58c-c671-466c-ae02-ec2d9d6666ba IN Car GetId()

Mmm... Ok. Need some time to answer. Thanks for the tests though!

No worries thanks for all your efforts with this awesome project!

Hi there! So i had another look at this and created a workaround. Its a bit ugly for its purpose but it works by using an open generic wrapper. Maybe in the future this can happen inside the framework with a new option or a change to how it currently works. Would be great!
public class SimpleTest
{
    [Test]
    public void TestScope()
    {
        var container = new Container();
        container.Register(typeof(IWrapScope<>), typeof(WrapScope<>), reuse: Reuse.Scoped);
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(reuse: Reuse.Transient);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
    }

    [Test]
    public void TestScope2()
    {
        var container = new Container();
        container.Register(typeof(IWrapScope<>), typeof(WrapScope<>), reuse: Reuse.Scoped);
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
    }
}

public interface IWrapScope<out TSubObject>
{
    public TSubObject Out();
}

public class WrapScope<TSubObject> : IWrapScope<TSubObject>
{
    private readonly TSubObject _subObject;

    public WrapScope(TSubObject subObject)
    {
        _subObject = subObject;
    }
    public TSubObject Out()
    {
        return _subObject;
    }
}

public interface IFoo
{
    public Guid GetId();
}

public interface IBar
{
    public Guid GetId();
}

public interface ICar
{
    public Guid GetId();
}

public class Foo : IFoo
{
    private Guid _id;
    public Foo(IResolverContext container)
    {
        _id = Guid.NewGuid();
    }

    public Guid GetId()
    {
        return _id;
    }
}

public class Bar : IBar
{
    private readonly IFoo _foo;
    private Guid _id;
    public Bar(IResolverContext container, IFoo foo)
    {
        _foo = foo;
        _id = Guid.NewGuid();
        Console.WriteLine($"Bar ID :{_id} IN Bar Constructor");
    }

    public Guid GetId()
    {
        Console.WriteLine($"Foo ID :{_foo.GetId()} IN Bar GetId()");
        return _id;
    }
}

public class Car : ICar
{
    private readonly IWrapScope<IBar> _bar;
    private Guid _id;
    public Car(IResolverContext container, IWrapScope<IBar> bar)
    {
        _bar = bar;
        _id = Guid.NewGuid();
        Console.WriteLine($"Car ID 1 :{_id} IN Car (constructor)");
        Console.WriteLine($"Bar ID 1 :{_bar.Out().GetId()} IN Car (constructor object)");
        Console.WriteLine($"Bar ID 2 :{container.Resolve<IWrapScope<IBar>>().Out().GetId()} IN Car (resolved object)");
        Console.WriteLine($"Bar ID 3 :{container.Resolve<IWrapScope<IBar>>().Out().GetId()} IN Car (resolved object)");
        using (var scope = container.OpenScope())
        {
            Console.WriteLine($"Bar ID 4 :{scope.Resolve<IWrapScope<IBar>>().Out().GetId()} IN Car New Scope");
            Console.WriteLine($"Bar ID 5 :{scope.Resolve<IWrapScope<IBar>>().Out().GetId()} IN Car New Scope");
        }
    }

    public Guid GetId()
    {
        Console.WriteLine($"Car ID 2 :{_id} IN Car GetId()");
        return _id;
    }
}

TestScope Output

Bar ID :fbcfbb68-19e9-4ac7-84a4-019020b0d922 IN Bar Constructor
Car ID 1 :1ff4e013-4b5e-4010-b826-7655af728e67 IN Car (constructor)
Foo ID :28466e96-d538-4e8e-8118-5b63ba2d0117 IN Bar GetId()
Bar ID 1 :fbcfbb68-19e9-4ac7-84a4-019020b0d922 IN Car (constructor object)
Foo ID :28466e96-d538-4e8e-8118-5b63ba2d0117 IN Bar GetId()
Bar ID 2 :fbcfbb68-19e9-4ac7-84a4-019020b0d922 IN Car (resolved object)
Foo ID :28466e96-d538-4e8e-8118-5b63ba2d0117 IN Bar GetId()
Bar ID 3 :fbcfbb68-19e9-4ac7-84a4-019020b0d922 IN Car (resolved object)
Bar ID :2569784b-cebf-421b-9eee-2606b583801c IN Bar Constructor
Foo ID :28466e96-d538-4e8e-8118-5b63ba2d0117 IN Bar GetId()
Bar ID 4 :2569784b-cebf-421b-9eee-2606b583801c IN Car New Scope
Foo ID :28466e96-d538-4e8e-8118-5b63ba2d0117 IN Bar GetId()
Bar ID 5 :2569784b-cebf-421b-9eee-2606b583801c IN Car New Scope
Car ID 2 :1ff4e013-4b5e-4010-b826-7655af728e67 IN Car GetId()

TestScope2 Output

Bar ID :af275609-46c7-4551-a946-e217308c9b77 IN Bar Constructor
Car ID 1 :d8a67d4a-1921-4a4b-97dd-623e3fcc0305 IN Car (constructor)
Foo ID :9d5779f2-1bc0-4609-9d9f-631d8dd9bed9 IN Bar GetId()
Bar ID 1 :af275609-46c7-4551-a946-e217308c9b77 IN Car (constructor object)
Foo ID :9d5779f2-1bc0-4609-9d9f-631d8dd9bed9 IN Bar GetId()
Bar ID 2 :af275609-46c7-4551-a946-e217308c9b77 IN Car (resolved object)
Foo ID :9d5779f2-1bc0-4609-9d9f-631d8dd9bed9 IN Bar GetId()
Bar ID 3 :af275609-46c7-4551-a946-e217308c9b77 IN Car (resolved object)
Bar ID :04bd00f8-0533-4dc1-bd22-338ed56ce8ce IN Bar Constructor
Foo ID :9d5779f2-1bc0-4609-9d9f-631d8dd9bed9 IN Bar GetId()
Bar ID 4 :04bd00f8-0533-4dc1-bd22-338ed56ce8ce IN Car New Scope
Foo ID :9d5779f2-1bc0-4609-9d9f-631d8dd9bed9 IN Bar GetId()
Bar ID 5 :04bd00f8-0533-4dc1-bd22-338ed56ce8ce IN Car New Scope
Car ID 2 :d8a67d4a-1921-4a4b-97dd-623e3fcc0305 IN Car GetId()

Thanks for providing it here. I will be back to this issue when I've done with other things.

No worries! Thanks for the effort! i just thought i would put that on the thread. Thanks!

@GammaSoul I am back to checking this issue.
I am using your tests, but it is hard to understand your expectations based on Console.WriteLine.
Is it possible to replace them with Asserts?

Hi @dadhi sorry i only noticed your reply now. ok i will do that no worries. thank you

public class SimpleTest
{
    [Test]
    public void TestScope_Zero()
    {
        /// This Test works and displays normal behaviour
        var container = new Container();
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(reuse: Reuse.Scoped);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        var car = container.Resolve<ICar>();
        // Get guid id for each class and guid store array
        var iCarId = (nameof(ICar), car.GetId());
        var iBarId = (nameof(IBar), car.GetBarId());
        var iFooId = (nameof(IFoo), car.GetFooId());
        var IdArray = car.GetIdArray();
        // Assert that each name id pair matches with that stored
        // in the first three elements of the array
        Assert.That(iCarId, Is.EqualTo(IdArray[0]));
        Assert.That(iBarId, Is.EqualTo(IdArray[1]));
        Assert.That(iFooId, Is.EqualTo(IdArray[2]));
        // Assert that each name id pair matches with each again.
        // IBar and IFoo have be resolved from container in ICar class.
        Assert.That(iCarId, Is.EqualTo(IdArray[3]));
        Assert.That(iBarId, Is.EqualTo(IdArray[4]));
        Assert.That(iFooId, Is.EqualTo(IdArray[5]));
        // New Scope is opened in ICar. Check if ICar and IFoo is the Same
        // but IBar should be new ID.
        Assert.That(iCarId, Is.EqualTo(IdArray[6]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[7]));
        Assert.That(iFooId, Is.EqualTo(IdArray[8]));
        // Assert that each name id pair matches with each again.
        // IBar should still be new ID. but should resolve twice
        // and be the same as the id from Array index 7
        Assert.That(iCarId, Is.EqualTo(IdArray[9]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[10]));
        Assert.That(IdArray[7], Is.EqualTo(IdArray[10]));
        Assert.That(iFooId, Is.EqualTo(IdArray[11]));
        // Assert that each name id pair matches with each again.
        // IBar Should match the original Ibar Id.
        Assert.That(iCarId, Is.EqualTo(IdArray[12]));
        Assert.That(iBarId, Is.EqualTo(IdArray[13]));
        Assert.That(iFooId, Is.EqualTo(IdArray[14]));
    }

    [Test]
    public void TestScope_One()
    {
        /// This Test Fails when IBar is registered with openResolutionScope: true.
        /// When iBar is Resolved it is resolved with a new instance each time.
        /// My expectation is that is is still scoped to which ever scope it was resolved to
        /// even though it has opened a new scope internally.
        var container = new Container();
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar, Bar>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Scoped);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
        var car = container.Resolve<ICar>();
        // Get guid id for each class and guid store array
        var iCarId = (nameof(ICar), car.GetId());
        var iBarId = (nameof(IBar), car.GetBarId());
        var iFooId = (nameof(IFoo), car.GetFooId());
        var IdArray = car.GetIdArray();
        // Assert that each name id pair matches with that stored
        // in the first three elements of the array
        Assert.That(iCarId, Is.EqualTo(IdArray[0]));
        Assert.That(iBarId, Is.EqualTo(IdArray[1]));
        Assert.That(iFooId, Is.EqualTo(IdArray[2]));
        // Assert that each name id pair matches with each again.
        // IBar and IFoo have be resolved from container in ICar class.
        // FAIL... Id is not the same
        Assert.That(iCarId, Is.EqualTo(IdArray[3]));
        Assert.That(iBarId, Is.EqualTo(IdArray[4]));
        Assert.That(iFooId, Is.EqualTo(IdArray[5]));
        // New Scope is opened in ICar. Check if ICar and IFoo is the Same
        // but IBar should be new ID.
        Assert.That(iCarId, Is.EqualTo(IdArray[6]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[7]));
        Assert.That(iFooId, Is.EqualTo(IdArray[8]));
        // Assert that each name id pair matches with each again.
        // IBar should still be new ID. but should resolve twice
        // and be the same as the id from Array index 7
        Assert.That(iCarId, Is.EqualTo(IdArray[9]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[10]));
        Assert.That(IdArray[7], Is.EqualTo(IdArray[10]));
        Assert.That(iFooId, Is.EqualTo(IdArray[11]));
        // Assert that each name id pair matches with each again.
        // IBar Should match the original Ibar Id.
        Assert.That(iCarId, Is.EqualTo(IdArray[12]));
        Assert.That(iBarId, Is.EqualTo(IdArray[13]));
        Assert.That(iFooId, Is.EqualTo(IdArray[14]));
    }

    [Test]
    public void TestScope_Two()
    {
        ///This Test Passes when we use wrapper mod to get same behaviour as TestScope_Zero but with openResolutionScope: true.
        var container = new Container();
        container.Register(typeof(WrapScopeInternally<>), reuse: Reuse.Scoped);
        container.Register<ICar, Car>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<Bar>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.Transient);
        container.Register<IBar>(made: Made.Of(r => ServiceInfo.Of<WrapScopeInternally<Bar>>(), f => f.Object()), reuse: Reuse.Transient);
        container.Register<IFoo, Foo>(Reuse.Singleton);
        container.Resolve<ICar>().GetId();
        var car = container.Resolve<ICar>();
        // Get guid id for each class and guid store array
        var iCarId = (nameof(ICar), car.GetId());
        var iBarId = (nameof(IBar), car.GetBarId());
        var iFooId = (nameof(IFoo), car.GetFooId());
        var IdArray = car.GetIdArray();
        // Assert that each name id pair matches with that stored
        // in the first three elements of the array
        Assert.That(iCarId, Is.EqualTo(IdArray[0]));
        Assert.That(iBarId, Is.EqualTo(IdArray[1]));
        Assert.That(iFooId, Is.EqualTo(IdArray[2]));
        // Assert that each name id pair matches with each again.
        // IBar and IFoo have be resolved from container in ICar class.
        Assert.That(iCarId, Is.EqualTo(IdArray[3]));
        Assert.That(iBarId, Is.EqualTo(IdArray[4]));
        Assert.That(iFooId, Is.EqualTo(IdArray[5]));
        // New Scope is opened in ICar. Check if ICar and IFoo is the Same
        // but IBar should be new ID.
        Assert.That(iCarId, Is.EqualTo(IdArray[6]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[7]));
        Assert.That(iFooId, Is.EqualTo(IdArray[8]));
        // Assert that each name id pair matches with each again.
        // IBar should still be new ID. but should resolve twice
        // and be the same as the id from Array index 7
        Assert.That(iCarId, Is.EqualTo(IdArray[9]));
        Assert.That(iBarId, !Is.EqualTo(IdArray[10]));
        Assert.That(IdArray[7], Is.EqualTo(IdArray[10]));
        Assert.That(iFooId, Is.EqualTo(IdArray[11]));
        // Assert that each name id pair matches with each again.
        // IBar Should match the original Ibar Id.
        Assert.That(iCarId, Is.EqualTo(IdArray[12]));
        Assert.That(iBarId, Is.EqualTo(IdArray[13]));
        Assert.That(iFooId, Is.EqualTo(IdArray[14]));
    }
}

public interface IInternalWrapScope<out TSubObject>
{
    public TSubObject Object();
}

public class WrapScopeInternally<TSubObject>
{
    private readonly TSubObject _subObject;
    public WrapScopeInternally(TSubObject subObject) =>
        _subObject = subObject;
    public TSubObject Object() => _subObject;
}

public interface IFoo
{
    public Guid GetId();
}

public interface IBar
{
    public Guid GetId();
    public Guid GetFooId();
}

public interface ICar
{
    public Guid GetId();
    public Guid GetBarId();
    public Guid GetFooId();
    public (string, Guid)[] GetIdArray();
}

public class Foo : IFoo
{
    private readonly Guid _id;
    public Foo() => _id = Guid.NewGuid();
    public Guid GetId() => _id;
}

public class Bar : IBar
{
    private readonly IFoo _foo;
    private readonly Guid _id;
    public Bar(IFoo foo)
    {
        _foo = foo;
        _id = Guid.NewGuid();
    }
    public Guid GetId() => _id;
    public Guid GetFooId() => _foo.GetId();
}

public class Car : ICar
{
    private readonly Guid _id;
    private readonly (string, Guid)[] _guidArray;
    private readonly IBar _bar;
    public Car(IResolverContext container, IBar bar)
    {
        _id = Guid.NewGuid();
        _guidArray = new (string, Guid)[15];
        _bar = bar;
        /// Store id for each class five times
        /// ICar is this class and iFoo is singleton
        /// so both should always be the same id
        /// IBar is scoped so my expectiation is that is should produce 2 ids
        /// One in the main scope of ICar and the second one in the below new scope.
        _guidArray[0] = (nameof(ICar), _id);
        _guidArray[1] = (nameof(IBar), _bar.GetId());
        _guidArray[2] = (nameof(IFoo), _bar.GetFooId());
        /// 2
        _guidArray[3] = (nameof(ICar), _id);
        _guidArray[4] = (nameof(IBar), container.Resolve<IBar>().GetId());
        _guidArray[5] = (nameof(IFoo), container.Resolve<IBar>().GetFooId());
        using (var scope = container.OpenScope())
        {
            //// 3 in new scope. IBar should have new id and be the same instance for each resolution.
            _guidArray[6] = (nameof(ICar), _id);
            _guidArray[7] = (nameof(IBar), scope.Resolve<IBar>().GetId());
            _guidArray[8] = (nameof(IFoo), scope.Resolve<IBar>().GetFooId());
            /// 4
            _guidArray[9] = (nameof(ICar), _id);
            _guidArray[10] = (nameof(IBar), scope.Resolve<IBar>().GetId());
            _guidArray[11] = (nameof(IFoo), scope.Resolve<IBar>().GetFooId());
        }
        /// 5 - IBar should be original instance scoped to ICar.
        _guidArray[12] = (nameof(ICar), _id);
        _guidArray[13] = (nameof(IBar), container.Resolve<IBar>().GetId());
        _guidArray[14] = (nameof(IFoo), container.Resolve<IBar>().GetFooId());
    }
    public Guid GetId() => _id;
    public Guid GetBarId() => _bar.GetId();
    public Guid GetFooId() => _bar.GetFooId();
    public (string, Guid)[] GetIdArray() => _guidArray;
}```

Sorry if this is a lot of code. i didnt know how to make it more concise and also explain the problem succinctly

@GammaSoul Thank you for such detailed tests, now I got what the problem was. Will play with them and update you later.

@GammaSoul
So the TestScope_One fails with the default setup. To pass it exactly how you are expecting it, you need to 2 changes:

Register IBar1 scoped to the ICar resolution scope instead of its own:

    container.Register<IBar, Bar>(setup: Setup.With(openResolutionScope: true),
        reuse: Reuse.ScopedTo<ICar>() // <-- The change!
    );

Now, in order to enable resolution of IBar in the nested scope (if it is really needed), you need to open the scope with the ICar resolution scope name like this:

            _guidArray[5] = (nameof(IFoo), container.Resolve<IBar>().GetFooId());
            using (var scope = container.OpenScope(ResolutionScopeName.Of<ICar>())) // <-- The change!
            {
                //// 3 in new scope. IBar should have new id and be the same instance for each resolution.
                _guidArray[6] = (nameof(ICar), _id);

@dadhi
Thank you for looking at this Im really sorry as i think i have not explained myself very well.
So to explain more of what i am doing. i do want iBar to work with its own scope as i will also be scoping other things to it. I do not want to open the same IBar in the new scope as i wanted it to have a Reuse.Scope but also open its own scope inside its self. So originally i found that there is a little oddity with the Reuse settings. When setting "openResolutionScope : true" Reuse.Singleton and Reuse.ScopedToService also works on that specific registration. But Reuse.Scoped does not work.... This is what lead me to ask the question.... As i hoped that Reuse Scoped also worked like Singleton or ScopedToService does. What i mean is a service as it is can both be a singleton or scoped to some other server and also open its own scope at the same time.
What i am doing it creating a kind of nested scope framework for my application by using the ScopedToSerivce() feature and using for example: IUltraModule, ISuperModule, IModule,  This will help me create a complex object graph where instances will be scoped to a service which is implementing one of the aforementioned interfaces, which would have resolved the sub instance via constructor with openResolutionScope. When something scoped to IUltraModule is resolved in an instance that opens a scope with IModule it will provide the already resolved service that are scoped to IUltraModule. But IModule may be a service that i want to use the regular standard Reuse.Scope with so that i can resolve and dispose these instances with the standard open container scope feature. services that are resolved inside the IModule bay be scoped to a higher ISuperModule/IUltraModule service and will be resolved for the already existing instance. Then inside IModule i could open another standard scope for UOW implementation and the standard scoped services can resolve services that are scoped to the preceding IModule back up to IUltraScope.
So i kind of achieved the expected result i was looking for with TestScope_Two as if Reuse.Scoped worked like Reuse.Singleton or Reuse.ScopedToService does with openResolutionScope :true then that test is what i would expect to happen.
Sorry i didn't put any ScopedToService object in the test as i thought it did not make a difference to see fundamentally that the Reuse.Scoped does or does not work with the openResolutionScope: true. I will make a new test showing a more in depth application of what I'm trying to achieve.
Thank you very much for your help!

@GammaSoul
So the main thing which is contr-intuitive is the Scoped service opening the resolution is basically behaves like the transient? Because it is resolved from the same scope it opens?
And what you want is the ability to resolve it from the parent Scope, right?

Hi @GammaSoul ,
There is an approach to achieve the behavior of the scoped service which opens the resolution scope but scopes itself to its parent, e.g. IBar in your case.
The pseudocode for resolving IBar which has a setup with openResolutionScope: true will be:
resolverContext.OpenScope(ResolutionScopeName.Of<IBar>()).Resolve<IBar>();

So we need to skip the scope with name ResolutionScopeName.Of<IBar>() when resolving IBar for its parent.
To do so, we may implement our own scope name IScopeName with a single Match method.
Actually, ResolutionScopeName does a similar thing and it is not some magic.
Here is the implementation of the scope name, avoiding the scopes of T:
        public sealed class ToAnyScopeExceptResolutionScopeOf<T> : IScopeName
        {
            public static readonly IScopeName Instance = new ToAnyScopeExceptResolutionScopeOf<T>();
            private ToAnyScopeExceptResolutionScopeOf() {}
            public bool Match(object scopeName) =>
                scopeName is not ResolutionScopeName rn || rn.ServiceType != typeof(T);
        }

and it can be used in the TestScope_One as following:
container.Register<IBar, Bar>(setup: Setup.With(openResolutionScope: true), reuse: Reuse.ScopedTo(ToAnyScopeExceptResolutionScopeOf<IBar>.Instance));

This is the only change required.

Hey @dadhi  Thank you so very much or this solution!!


Potential issue with hamt ser/de.

Issue summary
While working on https://github.com/ChainSafe/forest/pull/3817 I have encountered an issue, which is thoroughly described in https://github.com/ChainSafe/fil-actor-states/pull/228.
The issue is that, given exactly the same parameters and the actor version, forest fails to deserialize a hamt map fetched from the storage.
Here's the error
called `Result::unwrap()` on an `Err` value: Dynamic(Serialization error for Cbor protocol: Msg("Serde error: Only `Ipld::List` can be deserialized to tuple, input was `Bytes([0, 6, 240, 91, 89, 211, 178, 0, 0, 0, 0, 0, 0])`")

Task summary

[ ] Figure out why and how this works on Lotus
[ ] Introduce support for this decoding on Lotus side.

Acceptance Criteria

[ ] forest's output matches lotus' when testing https://github.com/ChainSafe/forest/pull/3817

Other information and links

It was a different ser/de issue related to bigint.


chore(main): release 0.4.24

:robot: I have created a release beep boop
0.4.24 (2024-04-09)
Continuous Integration

build: Fix '$cwd' to '$PWD' (#75) (9947064)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/linrongbin16/cargo-ci-template.rs/releases/tag/v0.4.24 :sunflower:


Design - Port(Combined)Value encoding and consequences

PortValue and PortCombinedValue are encoding their payload data according to definitions set-up in PortInputFormat(Combined)Setup requests. As a result, the protocol decoder itself is stateful.

Port Knowledge has to be present already on the Protocol Level and not the Hub/Device Logic Models
The Protocol will need middlewares which can maintain the knowledge, irrelevant of the uses of the protocol
Since querying all many properties (PortInformation, PortModeInformation) take significant time and their properties are static by device type, hardcoded caching by device type/fw/hw is possible. An explicit discovery mode for unknown devices can be implemented as a "business function".
The remaining informaton (HubAttachedIO Attach/Detach, PortInputFormat) are user choices (in physical doing or software), their input is dynamic and needs implementation as middlewares.

Involved Messages

HubAttachedIOMessage (event Attached): existence and device type.

HubAttachedIOMessage (event Detached): removal of existence, port knowledge reset.

PortInputFormatSingleMessage: format description of the PortValueSingleMessage.

PortInputFormatCombinedModeMessage: format description of the PortValueCombinedModeMessage.

PortInformationMessage (mode info + mode combinations): basic device description (cachable).

PortModeInformationMessage (~10 properties): device property description (cachable).

Architecture Changes:

Establishment of a Knowledge Model SharpBrick.PoweredUp.Knowledge.
No introduction of a middleware stack in  PoweredUPProtocol. Not yet needed.
Protocol function to lookup up knowledge.
Protocol function to update knowledge.
Business Function DiscoverPorts which acts on top of the PoweredUpProtocol but can access the knowledge

Convert existing architecture log into issues


python38Packages.django-ipware: 3.0.2 -> 3.0.7

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python38Packages.django-ipware is: "A Django application to retrieve user's IP address"
meta.homepage for python38Packages.django-ipware is: "https://github.com/un33k/django-ipware"
meta.changelog for python38Packages.django-ipware is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 3.0.7 with grep in /nix/store/19xyvdk5nzmqjjq0ypvsdhidh69wpc5p-python3.8-django-ipware-3.0.7

found 3.0.7 in filename of file in /nix/store/19xyvdk5nzmqjjq0ypvsdhidh69wpc5p-python3.8-django-ipware-3.0.7

directory tree listing: https://gist.github.com/60836db1af249b05785ae67da41b41fd

du listing: https://gist.github.com/52a96f48f7468eb21466d4866e7b00ab

Rebuild report (if merged into master) (click to expand)

8 total rebuild path(s)

2 package rebuild(s)

2 x86_64-linux rebuild(s)
2 i686-linux rebuild(s)
2 x86_64-darwin rebuild(s)
2 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
python38Packages.django-ipware
python39Packages.django-ipware

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/19xyvdk5nzmqjjq0ypvsdhidh69wpc5p-python3.8-django-ipware-3.0.7 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python38Packages.django-ipware https://github.com/r-ryantm/nixpkgs/archive/a1e48b286654ded1987f65882f9a80cc9c4f3909.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/19xyvdk5nzmqjjq0ypvsdhidh69wpc5p-python3.8-django-ipware-3.0.7
ls -la /nix/store/19xyvdk5nzmqjjq0ypvsdhidh69wpc5p-python3.8-django-ipware-3.0.7/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

python38Packages.django-ipware
python39Packages.django-ipware

Maintainer pings

Result of nixpkgs-review pr 134621 at a1e48b28 run on x86_64-linux 1

2 packages built successfully:

python38Packages.django-ipware
python39Packages.django-ipware

2 suggestions:

warning: python-include-tests
Consider adding a checkPhase for tests, or if not feasible, pythonImportsCheck.
Near pkgs/development/python-modules/django-ipware/default.nix:8:0:
  |
8 |     description = "A Django application to retrieve user's IP address";
  | ^

warning: maintainers-missing
Package does not have a maintainer. Consider adding yourself?
Near pkgs/development/python-modules/django-ipware/default.nix:7:3:
  |
7 |   meta = {
  |   ^


Keywords aren't saved in the admin w/Django >= 1.11

KeywordsWidget.format_output() is no longer called, due to widget rendering changes, so the javascript isn't properly hooked-up, and keywords don't get saved.

From the Django 1.11 changelog:
"The Widget.format_output() method is removed. Use a custom widget template instead."

Hello. Is there any proven solution to this issue?

The fix works for me.


Add SSSD ldap_referrals note in README troubleshooting section

If iRODS logins via SSSD are slow on AD servers, setting ldap_referrals = false may help.
This might be a useful bit of information, it sure was in our production environment and it sure took me a while to locate.

Done.


Codec [WIP]

I've resisted adding this thing for years, but I've finally been convinced that having Codec around for more convenient definitions (and faster semi-automatic derivation) is a good idea. This PR builds on #1150 (which is motivated by this change but should stand on its own) and includes @OlivierBlanvillain's change from #301. It doesn't build on @lorandszakacs #811 at the moment, but I'll probably pull some tests from there.
Note that the intention is that Codec should only be used to make defining instances more convenient, and not as a constraint. The core module provides no Codec instances for any standard library types, and there is no machinery for summoning Codec instances given an encoder-decoder pair. Fully-automatic generic derivation does not (and probably will not) provide Codec instances, although semi-automatic derivation is supported in both the vanilla circe-generic form and with configuration in circe-generic-extras.
The motivation is to speed up semi-automatic generic derivation (it should be not too far off twice as fast as deriving separate encoders and decoders, but I've not actually done any benchmarking yet) and to avoid forcing users to write out member names twice when using forProductN.
The implementation currently supports writing this:
import io.circe.Codec
import io.circe.generic.semiauto.deriveCodec

case class Foo(a: String, b: List[Boolean], c: Double)

object Foo {
  implicit val fooCodec: Codec[Foo] = deriveCodec
}

…or this:
import io.circe.Codec

case class Foo(a: String, b: List[Boolean], c: Double)

object Foo {
  implicit val fooCodec: Codec[Foo] =
    Codec.forProduct3("a", "b", "c")(Foo(_, _, _))(foo => (foo.a, foo.b, foo.c))
}

…instead of this:
import io.circe.{ Decoder, ObjectEncoder }
import io.circe.generic.semiauto._

case class Foo(a: String, b: List[Boolean], c: Double)

object Foo {
  implicit val decodeFoo: Decoder[Foo] = deriveDecoder
  implicit val encodeFoo: ObjectEncoder[Foo] = deriveEncoder
}

…or this:
import io.circe.{ Decoder, Encoder, ObjectEncoder }

case class Foo(a: String, b: List[Boolean], c: Double)

object Foo {
  implicit val decodeFoo: Decoder[Foo] =
    Decoder.forProduct3("a", "b", "c")(Foo(_, _, _))

  implicit val encodeFoo: ObjectEncoder[Foo] =
    Encoder.forProduct3("a", "b", "c")(foo => (foo.a, foo.b, foo.c))
}

It still needs tests and better docs and probably some clean-up.

Codecov Report

Merging #1151 into master will decrease coverage by 1.03%.
The diff coverage is 60.16%.

@@            Coverage Diff             @@
##           master    #1151      +/-   ##
==========================================
- Coverage   86.02%   84.98%   -1.04%
==========================================
  Files          87       88       +1
  Lines        2834     2791      -43
  Branches      117      115       -2
==========================================
- Hits         2438     2372      -66
- Misses        396      419      +23

Impacted Files
Coverage Δ

...ed/src/main/scala/io/circe/disjunctionCodecs.scala
100% <ø> (ø)
:arrow_up:

...hared/src/main/scala/io/circe/syntax/package.scala
100% <ø> (ø)
:arrow_up:

.../core/shared/src/main/scala/io/circe/Decoder.scala
90.53% <ø> (ø)
:arrow_up:

.../io/circe/generic/codec/DerivedAsObjectCodec.scala
0% <0%> (ø)

...circe/generic/extras/codec/ReprAsObjectCodec.scala
0% <0%> (ø)

.../core/shared/src/main/scala/io/circe/package.scala
0% <0%> (ø)

...generic/extras/codec/ConfiguredAsObjectCodec.scala
0% <0%> (ø)

...es/core/shared/src/main/scala/io/circe/Codec.scala
0% <0%> (ø)

...ala/io/circe/generic/codec/ReprAsObjectCodec.scala
0% <0%> (ø)

...hared/src/main/scala/io/circe/scodec/package.scala
93.33% <100%> (ø)
:arrow_up:

... and 28 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a731554...8878132. Read the comment docs.

doobie has Meta that works exactly the same way. You can use it to introduce a symmetric Get/Put pair but you never demand it as a evidence. It's bad and I feel bad but users like it.


Register version v0.6.2

@JuliaRegistrator register branch=compat

Registration pull request created: JuliaRegistries/General/52707
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.6.2 -m "<description of version>" 740b91a26ce29edf47b62dc9ba56a53f642697c6
git push origin v0.6.2


(#217) - fix cli test

This is for #217.

Codecov Report

Merging #239 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master     #239   +/-   ##
=========================================
  Coverage     80.17%   80.17%
  Complexity      214      214
=========================================
  Files            37       37
  Lines          1175     1175
  Branches         52       52
=========================================
  Hits            942      942
  Misses          224      224
  Partials          9        9

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 12d2b30...f669c79. Read the comment docs.

This pull request #239 is assigned to @paulodamaso/z, here is why; the budget is 15 minutes, see §4; please, read §27 and when you decide to accept the changes, inform @g4s8/z (the architect) right in this ticket; if you decide that this PR should not be accepted ever, also inform the architect; this blog post will help you understand what is expected from a code reviewer; there will be a monetary reward for this job

@g4s8 please merge

Job was finished in 46 hours, bonus for fast delivery is possible (see §36)

@sereshqua/z please review this job completed by @paulodamaso/z, as in §30; the job will be fully closed and all payments will be made when the quality review is completed

@0crat quality bad

Quality is low, no payment, see §31


internal/core/convert: split the cue tag at first comma after last quote

This fixes a bug when splitting a golang struct tag containing commas.
There are 3 possible ways I can think of to fix this:

strip "known" options from the end (currently "opt" and "req") => fragile, we can't know all tags which could be used.
find and skip pairs of (not escaped) quotes from the start => complex and not really necessary, see option 3
assuming the options won't contain a quote: split at the first comma after the last quote (if any)

This PR implements option 3.
Fixes #1887
Signed-off-by: Alexander Graf<EMAIL_ADDRESS>

You didn't mean to link to issue number 3, right?

I've removed the link to issue 3.
I can add some test cases, too.

The DCO bot isn't happy; it seems that one of the commits isn't signed off :) could you please fix that? For example, by squashing all the commits and ensuring the resulting commit has the trailer.

Thanks! Will be importing this into Gerrit for a merge soon.

I think it was your "suggestion" I merged in the github web interface. I've signed all commits and rebased to master.

Ah, interesting, that makes sense. I'll probably avoid suggesting changes in the future.


fix

Codecov Report

Merging #108 (dd44fcd) into master (0dc1565) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head dd44fcd differs from pull request most recent head 4e2d538. Consider uploading reports for the commit 4e2d538 to get more accurate results

@@           Coverage Diff           @@
##           master     #108   +/-   ##
=======================================
  Coverage   95.36%   95.36%
=======================================
  Files           8        8
  Lines         539      539
=======================================
  Hits          514      514
  Misses         25       25

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Support trams

According to #135, trams are currently unsupported. Would it be possible to support trams in the future? There seem to be plenty of reports in the Telegram group, particularly for MetroTrams.

@rosahaj Thanks for opening a request, this is planned the issue why we have not added this yet is that there are a lot of tram stations this means we would have to retrain our NER model which is being used for the telegram bot, this will likely cause a decrease in accuracy as the pool of possible stations is going to increase. But we will find a solution and implement it soon.


test more parts of the menu

[Current coverage][cc-pull] is 82.04%

Merging [#73][cc-pull] into [master][cc-base-branch] will decrease coverage by 1.88%

@@             master        #73   diff @@
==========================================
  Files            22         22
  Lines          2152       2244    +92
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           1806       1841    +35
- Misses          346        403    +57
  Partials          0          0

Powered by Codecov. Last updated by [dafdac8...a0be61a][cc-compare]
[cc-base-branch]: https://codecov.io/gh/CyberReboot/vent/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/CyberReboot/vent/compare/dafdac8d881fdd5e5f61a8489109d5758c376815...a0be61a586e087d9dc08b6bddb00007300e8245b?src=pr
[cc-pull]: https://codecov.io/gh/CyberReboot/vent/pull/73?src=pr


⚠ GitLab Server has degraded performance

In 6e9317e, GitLab Server (https://gitlab01.its-telekom.eu) experienced degraded performance:

HTTP code: 200
Response time: 9298 ms

Resolved: GitLab Server performance has improved in d8afb99.


[HOLD] Search - For held expense, Submit button is gray in Search, and green in workspace chat

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.75-0
Reproducible in staging?: Yes
Reproducible in production?: Unable to check
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: Yes, reproducible on both
If this was caught during regression testing, add the test name, ID and link from TestRail: Exp
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Device used: Mac 15.0 / Chrome
App Component: Search
Action Performed:
Precondition:

Scheduled submit is disabled on Old Dot.

Submit an expense to the workspace chat.
Note that Submit button is green.
Go to Search.
Note that Submit buton is also green.
Go back to workspace chat.
Go to transaction thread.
Click on the report header > Hold > Hold the expense.
Note that Submit button is still green in the workspace chat.
Go to Search.

Expected Result:
Submit button in Search should remain green because the same button is green in workspace chat when the expense is held.
Actual Result:
For held expense, Submit button is gray in Search, and green in workspace chat.
Workaround:
Unknown
Platforms:

[ ] Android: Standalone
[ ] Android: HybridApp
[ ] Android: mWeb Chrome
[x] iOS: Standalone
[x] iOS: HybridApp
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/51dc36ad-3286-4485-a237-8b27e9625331
View all open jobs on GitHub

Production behavior
https://github.com/user-attachments/assets/54ca82bb-9d6d-402d-9b57-9dacd04084c9

Minor design issue. Not a blocker
@luacmartins @ishpaul777  looks like it is coming from https://github.com/Expensify/App/pull/53641

BTW we're gonna revert how we're handling grey/green buttons in App. So this should be on hold for now

@luacmartins should we change the priority, or keep it as a Daily?
I'm also OOO from the 19th - 29th, but I don't think there will be anything for me to action, right?


A lot of commands crash because client_tool_name is not specified.

pythx version: 1.1.7
Python version: 3.7.3
Operating System: Arch Linux

Description
A lot of commands fail with: TypeError: __init__() got an unexpected keyword argument 'client_tool_name'.
Login worked but when I tried to check the list of analyses or a specific analysis, I get the error.
What I Did
$ pythx ps
Traceback (most recent call last):
  File "/home/daniel/.local/bin/pythx", line 10, in <module>
    sys.exit(cli())
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/daniel/.local/lib/python3.7/site-packages/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/cli/main.py", line 143, in ps
    resp = utils.ps_core(config, staging, number)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/cli/utils.py", line 138, in ps_core
    resp = c.analysis_list()
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/api/client.py", line 191, in analysis_list
    return self._assemble_send_parse(req, respmodels.AnalysisListResponse)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/api/client.py", line 89, in _assemble_send_parse
    return self.handler.parse_response(resp, resp_model)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/api/handler.py", line 164, in parse_response
    m = model.from_json(resp)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/models/response/base.py", line 54, in from_json
    return cls.from_dict(parsed)
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/models/response/analysis_list.py", line 45, in from_dict
    analyses = [Analysis.from_dict(a) for a in d["analyses"]]
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/models/response/analysis_list.py", line 45, in <listcomp>
    analyses = [Analysis.from_dict(a) for a in d["analyses"]]
  File "/home/daniel/.local/lib/python3.7/site-packages/pythx/models/response/analysis.py", line 64, in from_dict
    return cls(**d)
TypeError: __init__() got an unexpected keyword argument 'client_tool_name'

@cleanunicorn this issue relates to PR: https://github.com/dmuhs/pythx/pull/31 , looks like version was not bumped yet.

Same here with the example from the README:
$ python wachhund.py
Traceback (most recent call last):
  File "wachhund.py", line 8, in <module>
    resp = c.analyze(bytecode="0xfe")
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/client.py", line 235, in analyze
    return self._assemble_send_parse(req, respmodels.AnalysisSubmissionResponse)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/client.py", line 89, in _assemble_send_parse
    return self.handler.parse_response(resp, resp_model)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/handler.py", line 164, in parse_response
    m = model.from_json(resp)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/base.py", line 54, in from_json
    return cls.from_dict(parsed)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/analysis_submission.py", line 28, in from_dict
    return cls(analysis=Analysis.from_dict(d))
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/analysis.py", line 64, in from_dict
    return cls(**d)
TypeError: __init__() got an unexpected keyword argument 'client_tool_name'
(pythx) cerebral-cortex:mythx-wachhund bernhardmueller$ python wachhund.py
Traceback (most recent call last):
  File "wachhund.py", line 8, in <module>
    resp = c.analyze(bytecode="0xfe")
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/client.py", line 235, in analyze
    return self._assemble_send_parse(req, respmodels.AnalysisSubmissionResponse)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/client.py", line 89, in _assemble_send_parse
    return self.handler.parse_response(resp, resp_model)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/api/handler.py", line 164, in parse_response
    m = model.from_json(resp)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/base.py", line 54, in from_json
    return cls.from_dict(parsed)
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/analysis_submission.py", line 28, in from_dict
    return cls(analysis=Analysis.from_dict(d))
  File "/Users/bernhardmueller/.pyenv/versions/pythx/lib/python3.6/site-packages/pythx/models/response/analysis.py", line 64, in from_dict
    return cls(**d)
TypeError: __init__() got an unexpected keyword argument 'client_tool_name'

These faults were connected to a newly added API field in the status response - denoting the client tool ID the request was sent with. This was not supported by the internal PythX domain models so far, which is why the parsing routines errored out. PR #31 aimed to fix it, but first related only to staging. After the move to production I have merged this now.
You guys caught me in a transition period :stuck_out_tongue: If you install version 1.1.8 now, all should work fine.


Questionnaire Flattener

Questionnaire Flattener
:recycle: Current situation & Problem
The issue is https://github.com/StanfordSpezi/SpeziDataPipelineTemplate/issues/11. The flattener for questionnaire responses should be able to use phoenix-generated surveys to convert the question and response IDs in Firebase to text.
:gear: Release Notes

Added the ability for a user to input Phoenix-generated JSON surveys to flatten_fhir_resources and for the question and answer mappings to be extracted. For the questions, I mapped the linkId to the text. For answers, because they have both a system ID and choice code, I combined the system id and code and used that as the mapping key. https://github.com/StanfordSpezi/SpeziDataPipelineTemplate/blob/cca4c5d2501a1b66234c240f0066aa39dfc0fc6b/data_flattening/fhir_resources_flattener.py#L508
Extracts the question and answer IDs from the individual responses and then gets them from the survey mappings (if the answer is a valueCoding). If it is not a valueCoding, it will just use the integer or string value. https://github.com/StanfordSpezi/SpeziDataPipelineTemplate/blob/cca4c5d2501a1b66234c240f0066aa39dfc0fc6b/data_flattening/fhir_resources_flattener.py#L541
The flattener then generates a data frame with the Date, UserID, SurveyID, QuestionID, QuestionText, and Answer. https://github.com/StanfordSpezi/SpeziDataPipelineTemplate/blob/cca4c5d2501a1b66234c240f0066aa39dfc0fc6b/data_flattening/fhir_resources_flattener.py#L573

:pencil: Code of Conduct & Contributing Guidelines
By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

[x] I agree to follow the Code of Conduct and Contributing Guidelines.

Thank you for reviewing the PR @Vicbi! I have modified the code based on your suggestions in the recent commits. Please let me know if you have any other suggestions.

Hi @AdritRao,
Great job addressing the comments, and thanks for your efforts! 🚀
I've merged the main branch into survey_flattener and resolved the resulting conflicts. Feel free to review the updated branch. Also, it would be super helpful if you could address the lint issues reported in the GitHub Actions (e.g.,. adding documentation to the class/functions and performing some refactoring) before we proceed with the merge. Let me know if you need any clarifications!

Thank you @AdritRao for working on the pylint issues! 🚀 I've made some additional modifications and I am happy to merge the branch to main!


All Declared Variables Names Must Begin with Modi in ModiScript.

All variables names used in Modiscript must start with the term Modi.
For e.g.,  stadium must be renamed to modiStadium.

lol


words only

Hi.
First, thank you for this clean library.
Wondering if there is a way to handle word only matches ( but using diacritics ) ?
i.e, by typing "am" here, rather than matching letters of words, nothing should be highlighted.

Perhaps it's possible using regexp, but in this case, my question is: how to handle diacritics with regexp ? Sound like this is not an option when using regexp.
Thank you

Let's search for "amet" rather than "am"
It failed with "exactly"

bug ?

Yes, nothing is highlighted for words "amet" or  "āmet" when Accuracy is "exactly". Even "amet" without diacritics is not highlighted.  While other words are working. Seems like a bug.

It's not a problem of diacritics - try partial search. The problem is, that the exact accuracy does not work with interpunction (dot, comma, etc. between words) - try the "rebum" and "rebum." with the exact search (this word has no diacritics.)

True,
In my case, i have to take care about hypothethical unicode encoded interpunction chars too, AND diacritics.

@julmot stale bot is too aggressive, the last activity has been just one month ago.

true. I've dropped markjs and make my own code, with the help of https://github.com/adurrive/shoetest.js

@xmedeko I've doubled the stale duration:
https://github.com/julmot/mark.js/commit/7f7e9820514e2268918c2259b58aec3bd5f437f6
@eviltik I'm appreciating PRs to fix any potential bugs, I find it more efficient than creating new libraries. If you have enough capacity, I'm also happy to invite you as collaborator.

Hi @julmot. Shoetest fit my needs, and i'm too busy honestly. Thank you for the invite, but i can not.


Templates do not exist

Receive an error when trying to deploy in us-east-1:
S3 error: Access Denied For more information check http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html
Tried downloading the template and get a similar error:
❯ aws s3 cp s3://aws-ia-us-east-1.s3.us-east-1.amazonaws.com/cfn-ps-microsoft-pki/templates/two-tier.template .
fatal error: An error occurred (404) when calling the HeadObject operation: Key "cfn-ps-microsoft-pki/templates/two-tier.template" does not exist

It looks like permissions on that bucket may have an issue?

Worked around by downloading the templates from here and uploading to my own bucket in the same paths, but it definitely adds friction for people following the directions at https://aws-quickstart.github.io/quickstart-microsoft-pki/#_deployment_options

@cornickj - thanks for reporting this. Assuming you started the deployment from here: https://aws.amazon.com/solutions/implementations/microsoft-pki/, this should be fixed. Note that we are in the process of migrating repos to another org. The new repo is: https://github.com/aws-ia/cfn-ps-microsoft-pki/.
I had updated the deployment links yesterday and realized to update the nested quickstart- in CloudFormation quickcreate links. The Deploy into an existing VPC link should have worked, but I've now update the Deploy into a new VPC link as well.


Starboard Limit

Whenever a GuildEntity is first generated, it's value for StarboardLimit is left as null instead of having a default value.
This results into later runtime errors where a number is expected and null is found instead.
In addition, a command should be added for updating the starboard limit (default 2).

commit https://github.com/frc5183/Oatmeal/commit/d3a175b2a24740b47c845b7b6f7ece4182c09b2f closes this issue


Move initButtonSelects function from core.js to initButtonSelects.ts and wrote tests for it

Fixes wagtail/wagtail#9494
[ ✔] Move the function to the the new TypeScript file and set up correct types - https://www.typescriptlang.org/
[ :heavy_check_mark:] Add a JSDOC description to the function
[ ✗ Not done ] Add a basic set unit test (just one is fine) for this function in a new client/src/includes/messages.test.js file using Jest - look at client/src/includes/breadcrumbs.test.js for an example of mocking some HTML to then trigger some behaviour on that HTML
[ :heavy_check_mark:]  Ensure the util is imported in core.js correctly so that the select buttons correctly initialise (take a screenshot of a usage that is correctly functioning after the change for the PR)
Test result
This is the test result for the 4 tests I ran. I know that the test for the input value should be wrong even if it passes.

Working on BakeryDemo
This is the conversion working perfectly on bakerydemo. I even added a class of hi to the input so you can really see it.

[ x] Do the tests still pass?[^1]
[ x] Does the code comply with the style guide?
[x ] Run make lint from the Wagtail root.
[ x] For front-end changes: Did you test on all of Wagtail’s supported environments?[^2]
[x ] Please list the exact browser and operating system versions you tested: Chrome version \

Please describe additional details for testing this change.
[^2]: [Browser and device support] Chrome Version 107.0.5304.88

Hi @lb-
I've made the changes now and everything is working as it should be. I think it's because I added the value attribute to the input element that's why the test wasn't passing

I have pushed a rebase (resolving conflicts) and a minor change to the position of the JSDOC.
I have also changed the function to an arrow function - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Just realised the test file was still called messages.test.js I have fixed this up da36c3994b5fd3c939407e20ddac4713abfce7ed
Just keep an eye out for things like this when working across multiple branches @Lovelyfin00


A state of current documentation

Status response is not completely understood (https://github.com/openaps/openomni/wiki/Status-response-1D)

As soon as this is the most important information about POD, it could be good to dig in the fields.

Documentation could be reorganized for an easy tree access
(like https://github.com/openaps/openomni/wiki/Protocol)

Use issue to inform current analysis ?

Wiki reorganised with help of many participants.


Build.ps1 is failing

Issue description
MSBuild auto-detection: using msbuild version '4.0' from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319'.
All packages listed in packages.config are already installed.
& : The term 'C:\Program Files (x86)\MSBuild\14.0\Bin\MsBuild.exe' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\cert\letsencrypt-win-simple-master\build\build.ps1:46 char:3

& $MSBuild "$SolutionPath" /p:Configuration=$Configuration /maxcpucou ...

+ CategoryInfo          : ObjectNotFound: (C:\Program File...Bin\MsBuild.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

The MSBuild process returned an error code.
At C:\cert\letsencrypt-win-simple-master\build\build.ps1:49 char:2

throw "The MSBuild process returned an error code."

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : OperationStopped: (The MSBuild pro... an error code.:String) [], RuntimeException
FullyQualifiedErrorId : The MSBuild process returned an error code.

Windows Server 2012 R2
PS C:\Users\robert.biddle> $PSVersionTable
Name                           Value

PSVersion                      5.1.14409.1012
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.14409.1012
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Which version(s) of Visual Studio, if any, do you have installed? I don't think msbuild is bundled by default.

None.  I've used a previous version of letsencrypt-win-simple that had the executable bundled instead of using build.ps1.  I was hoping to pull straight from the repo; I guess I'll have to build on a different system first.

Derp.  I just realized that if I go into the actual release the .zip files there are already built.  Sorry for the non-issue.


Should make clear to check validations.isValid > model.isValid

Info
I've been adding cp-validations to my app and couldn't get them working for a bit due to model.get('isValid') always returning true after calling validate(). I used the Ember inspector to dig into the model and the validations mixin and saw that they were running and had the correct state of invalid. After banging on this for a while, I finally saw in the dummy app that you're expected to check the validations.isValid and not the model.isValid. This was confusing to me and I think it could be cleared up in documentation. I realize if I watched the video again that this is probably made clear, but I watched that one day, came back, and I had no clue. Just figured I'd save somebody else the headache of having to debug by trying to make this more clear.
Let me know you'd like me to clarify anything. Thanks!
Environment

Ember Version: 2.13.0
Ember CLI Version: 2.13.0
Ember CP Validations Version: 3.3.2

After digging around more, it does seem that this is well documented in the Factory#validate docs by showing a clear example. I think my only issue here is that this seemed hidden to me and I found these docs as part of looking up building a custom validator. I think docs that show usage of validate and checking validations > model would clear this up usage of this library up a lot.

@Gowiem please refer to the docs here on how to access the validations.
You should be using model.get('validations.isValid') not model.get('isValid') 😄

@offirgolan I completely passed over that somehow. May be me being braindead, but I guess I didn't expect the validate usage to be covered in 'Accessing Validations' I figured that would be accessing the validation messages. Putting a basic usage of validate() + validations.isValid in "Usage > Basic" would make sense to me, but no big deal.
Thanks for the help @offirgolan. Closing out.

No worries at all! I know the docs can be a bit confusing. Maybe I should link out to Accessing Validations from the Basic Usage page 😄


Add feature to create torrent file with tracker url

This allows to specify the tracker url in the torrent file when using "-createTorrent".
E.g.:
./Taipei-Torrent -createTracker=<IP_ADDRESS>:8080 -createTorrent="/tmp/hello"
Will create a torrent file with "http://<IP_ADDRESS>:8080/announce" as the tracker url.

Thanks!


Search Parser Fixes

Search parser needs to handle the following.

spaces inside quotations should not be trimmed. For example. " usc 123 " should preserve the spaces.
Auto complete closing quote. For example "usc 123 should be automatically converted to "usc 123"

@jrchudy I am assigning this issue to you instead of @shinyichen


Free play Menu Crashing

Describe your bug here.
Sometimes i create a week for my mod, simply opening the free play will result in a crash screen, i will send a screenshot once asked :)
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
No

We are probably gonna need the screenshot for more information

well i do had this experience, you need to put your stages in folder stage, not folder weeks


docs: Change latest version href

The docs of the latest version say "1.7.0" will now go into the directory "latest" instead of "1.7.0". This commit will now point the docs to the new location.
This PR is a simultaneous work with flame-engine/flame-docs-site#15
Checklist

[x] I have followed the [Contributor Guide] when preparing my PR.
[-] I have updated/added tests for ALL new/updated/fixed functionality.
[-] I have updated/added relevant documentation in docs and added dartdoc comments with ///.
[-] I have updated/added relevant examples in examples or docs.

Breaking Change?
This can be considered a breaking change. That is because, after this, the version 1.7.0 links won't work and will be replaced with latest links.

[x] Yes, this PR is a breaking change.
[-] No, this PR is not a breaking change.

Related Issues
Closes #2345

Currently, I haven't added the robots.txt. I will add that once I find time (maybe tomorrow).

Currently, I haven't added the robots.txt. I will add that once I find time (maybe tomorrow).

I'm thinking that robots.txt should be added from flame-docs-site

Currently, I haven't added the robots.txt. I will add that once I find time (maybe tomorrow).

Apparently noindex is the way to go instead of robots.txt:
https://developers.google.com/search/docs/crawling-indexing/block-indexing

Apparently noindex is the way to go instead of robots.txt:
https://developers.google.com/search/docs/crawling-indexing/block-indexing

Thanks for sharing the link. I will check it out.


Improperly displayed tray icon [linux]

I'm having issue with tray icon of Franz. I'm running Linux Manjaro with KDE.

The black square is the place where some nice looking Franz icon should be shown.

I'm seeing this exact issue as well intermittently on Arch Linux with KDE. When I receive a notification, the black box turns to a red box.

Here what I found guys: if you execute Franz via command line using "sudo", the icon shows correctly.
sudo ./Franz
For some reason, looks like the application lacks permission to update the icon in KDE taskbar (Plasma 5.x) when running without sudo access.
So far, no side effect running it with sudo, other than have it more stable and with the tray icon nicely displayed. :)

Hmm, interesting. Maybe if I have a chance, I'll try strace-ing Franz with both sudo and non-sudo, and see if I can figure out an obvious difference. Or just looking at my kde/plasma and xsession logs...
For me at least, I do not think permissions are the problem. I get the black icon like everyone else has posted, or a red icon when I have notifications, but I also sometimes see this (left-most icon here):

I'm pretty sure that when I look closely, that's really just a tiny part of one of the icons. I've come to believe that the reason many people see all black, and some people see all red, is because most linux distros are expecting small (64x64?? 32x32??) tray icons, and the png files in resources/app.asar.unpacked/assets/tray/linux/ are all 1024x1024 pixels. I'm not sure why running under sudo would fix this, unless it's a matter of Franz trying to detect the screen resolution in a way that a normal user can't...
Also, FWIW, regarding that fix... there's no way I'm running closed-source proprietary software as root on my system...

Your claim about linux distros expecting lower size images is true, @jantman . Some time ago I replaced images in franz-bin/resources/app.asar.unpacked/assets/tray/linux with those sitting in light folder and the problem is partially gone. Small icon, same as @jcmarchi mentioned earlier, now appears in my tray instead of black square. However, the ugly red numbers(same as @jantman mentioned) are still displayed when the message arrives. Is this matter of desktop environment we are using? Do you use KDE too?

Yeah, I use KDE as well. I'll need to look into what KDE recommends in terms of icon sizing...

I am glad my findings triggered this discussion. Please, let me know if
there is anything else I can do to help...
I am basically running Kubuntu 16.10.
Julio Marchi ©
Technology Executive & Entrepreneur
(586) 996-3939
<EMAIL_ADDRESS>This e-mail and any attachments may contain information which is
confidential, proprietary, privileged or otherwise protected by law. The
information is solely intended for the named addressee (or a person
responsible for delivering it to the addressee). If you are not the
intended recipient of this message, you are not authorized to read, print,
retain, copy or disseminate this message or any part of it. If you have
received this e-mail in error, please notify the sender immediately by
return e-mail and delete it from your computer.
On Thu, Jan 5, 2017 at 2:55 PM, Jason Antman<EMAIL_ADDRESS>wrote:

Yeah, I use KDE as well. I'll need to look into what KDE recommends in
terms of icon sizing...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/meetfranz/plugins/issues/87#issuecomment-270740899,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFkClkOIv6xpahsmbd8Ps-QSsf_fv9wfks5rPUqZgaJpZM4K3ib-
.

Any news on this? I'm having the same issue on arch with franz 4.0.4 beta and kde

Using sudo works for the icon, but the notifications stopped showing. Sadly, the notifications were largely the reason I installed Franz in the first place.

Same problem here (Antergos Linux + KDE Plasma 5.9.1).

Same problem on Manjaro + KDE Plasma 5.9

Yeah! I just resized the files under Franz/resources/app.asar.unpacked/assets/tray/linux/ and Franz/resources/app.asar.unpacked/assets/ to 32x32 to fix this.

Nice!
Thanks for sharing it... I've just tried and it worked for me as well
For those who are unfamiliar with how to do it via command line in Linux,
here how to:
First, exit Franz. Then run the following commands:
*$ cd
[Franz-Intallation-Location]/Franz/resources/app.asar.unpacked/assets/$ *
zip images-backup.zip .png$ *
mogrify -resize '32x32' .png$ *
*cd tray/linux/$ *
zip images-backup.zip .png$ **mogrify -resize '32x32' .png
These commands will backup the images before converting them to the right
size.
You will be required to have ImageMagick installed. If you don have it, you
should (highly useful):
*$ *sudo apt update
*$ *sudo apt install imagemagick
I hope it gets fixed in the next version of Franz. Meanwhile, the above
workaround should suffice.
Julio Marchi ©
Technology Executive & Entrepreneur
(586) 996-3939
<EMAIL_ADDRESS>This e-mail and any attachments may contain information which is
confidential, proprietary, privileged or otherwise protected by law. The
information is solely intended for the named addressee (or a person
responsible for delivering it to the addressee). If you are not the
intended recipient of this message, you are not authorized to read, print,
retain, copy or disseminate this message or any part of it. If you have
received this e-mail in error, please notify the sender immediately by
return e-mail and delete it from your computer.
On Sun, Feb 26, 2017 at 1:36 PM, paulozullu<EMAIL_ADDRESS>wrote:

Yeah! I just resized the files under Franz/resources/app.asar.unpac
ked/assets/tray/linux/ and Franz/resources/app.asar.unpacked/assets/ to
32x32 to fix this.
[image: screenshot_20170226_153414]
https://cloud.githubusercontent.com/assets/14080486/23342450/4a36fba6-fc39-11e6-8152-2e0150f5a32b.png
[image: screenshot_20170226_153600]
https://cloud.githubusercontent.com/assets/14080486/23342451/4a4088d8-fc39-11e6-8db6-44e51a1b8e61.png
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/meetfranz/plugins/issues/87#issuecomment-282576518,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFkCljieqmckK-I0nHQ7fykEFDZCKI_dks5rgcYhgaJpZM4K3ib-
.

What about a definitive fix?

I'm seeing the same issue on KDE Neon. Definitive fix for this would be great.

Same issue on Ubuntu 16.04 using Unity. Even tried to resize icons, but still no luck. Anybody having the same issue with same setup?

Tray icon is still black on KDE Plasma 5.10 running franz 4.0.4. We need a definitive fix.

I don't have a tray icon at all. Ubuntu 17.04 with Unity. [Settings -> Leave Franz running in notification area when window is closed] is checked

Same issue as @crocodile2u once upgraded from Ubuntu 16.10 to 17.04

Since then, I already tried Franz on Ubuntu 16.10 which came preinstalled with my new laptop - the tray icon worked perfectly. Uprgaded to 17.04 - tray icon disappeared

The workaround is to make a new entry in Startup Applications like this env XDG_CURRENT_DESKTOP=Unity /opt/franz/Franz and disable the in-app option start on boot. Unfortunately Franz window will pop up at boot, but it's not a big deal


Modify error handler check for locally handled errors.

closes #538
Error handler now checks if the error has the attribute "handled" for locally handled errors instead of checking if the command has the attribute "on_error".
Did you:

[X] Join the Python Discord Community?
[X] If dependencies have been added or updated, run pipenv lock?
[X] Lint your code (pipenv run lint)?
[X] Set the PR to allow edits from contributors?

There's also an on_command_error in the bot subclass. The error handled in there may also require the attribute, but I'm not sure if it will propagate from there.

What needs to happen to make this move forward? I can look into the isinstance check, if needed, to get this PR to a mergeable state. Normally, I'd not mind a few extra days (or even weeks), but this PR is currently blocking the PR to extend/change the Advent of Code channels, which is obviously an ongoing event. Would be nice to get them both merged at some point in the near future, so we can benefit during the current edition.

Sorry for a late response; I've been busier this week. I also haven't been as vigilant with GitHub notifications since I've disabled e-mail notifications and started relying on the browser add-on.

Just to be sure, no issue, obviously. I was trying to put a feeler out for if Rohan/Iceman would have time to work on it or if we could solve in some other way.


: Transliteration support for non-NLLB scripts

When a source/target language is written in a script that is not known to NLLB, drafting accuracy to/from that language seems to improve if the text is "transliterated" to Latin script using the uroman utility.  However, the uroman utility is not bi-directional, so there's no way to generate predictions / translations in the original script.
Further research into the options for a bidirectional solution are needed, such as TecKit maps from WSTech.  Research would also be useful to identify what scenarios can benefit from bidirectional transliteration (new languages in new scripts; new languages in existing scripts (which scripts?); etc).

Rules may be a losing battle - we should look at some models for transliteration.  Here is what I found with a quick search:

https://linguistics.stackexchange.com/questions/29207/if-romanization-can-be-reversed-back-to-original-script-in-some-languages
https://yerevann.github.io/2016/09/09/automatic-transliteration-with-lstm/
https://github.com/YerevaNN/translit-rnn

This looks like a good candidate for a senior research project for GCC.  @Enkidu93  and @ddaspit - what do you think?


migrate CI to github actions

Build is stalled: https://github.com/georust/geocoding/pull/48#issuecomment-896745354

It seems like maybe bors is set up OK and has appropriate access, but the build status never updates.
I think this is because this repo still relies on travis-ci.
There's too much verbage here for me to be willing to read right now: https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing
But I believe the take away is that travis-ci is no longer an option for us unless we want to pay, so I'd recommend switching to github actions instead of travis, like we have for most of our other repositories.

Although I seem to recall that GHA doesn't allow network access, which would be a spanner in the works of our (arguably not particularly useful can-we-interact-with-the-API tests).

https://github.com/urschrei/rust-geocoding/runs/3303511875?check_suite_focus=true
😬

https://github.com/hyperium/hyper/issues/1009

#48 updated hyper - maybe there is a corresponding change to make?
@elwerene - Were you able to have the tests passing locally?

maybe related? hyperium/hyper#1009

Ha I just updated reqwest and hyper

OK well I've completely confused myself now. That'll teach me to think "this will be a five minute PR". Tomorrow it is!

maybe related? hyperium/hyper#1009
#48 updated hyper - maybe there is a corresponding change to make?
@elwerene - Were you able to have the tests passing locally?

no - but not on master either :/

Drive-by remark: wouldn't it make sense to enable default-tls for reqwest if you need HTTPS?


Remove t argument from alternating_update and improve keyword argument handling

Improvements Made in this PR

Removes t argument from alternating_update in favor of using the tdvp interface to process time evolution related inputs. (alternating_update is now only given nsweeps, basically, plus some other time related keywords, some of which are slated for removal, others of which are just passed down to the ultimate solver).
This PR makes significant improvements to keyword argument handling.
The _compute_nsweeps function has been moved into tdvp.jl and is only used by the tdvp interface
The solver no longer takes a t argument. The only solver which uses time concepts now is the tdvp solver, which gets passed a time_step keyword arg (this value includes all of the information about sub time steps, the forward or reverse sign, etc.)

Planned Improvements in Future PRs (Can discuss moving them into this PR if it's a good idea)

No longer handling the current_time computation and printing directly in the alternating_update, update_step etc. code directly (would let us remove most of the remaining time related keyword args, like time_start, or needing to pass current_time up and down the function stack)
Finishing factoring out the logic around the TDVPOrder type so that it only goes in tdvp.jl and is no longer involved in algorithms like dmrg, linsolve, etc.
Figuring out if we want to factor out the forward/reverse step logic into tdvp.jl also, or whether it's ok for some of that to persist inside alternating_update
Further improvements to keyword arg handling
Finish simplying solvers to only be a single function, rather than a function that returns another function (unless neccessary)

What do you think of the keyword name? time versus other ones above.

Also, what do you think about using the keyword argument nsteps instead of nsweeps in the tdvp interface? Then nsteps, t, and time_step could get processed into nsweeps which gets input into alternating_update.

I think making the interface take nsteps is probably the right way to go. I'll look into it more!
It will be interesting how much we can "orthogonalize" the alternating_update code away from TDVP-specific concepts. Right now, there is still a lot of the plumbing that e.g. relies on a TDVPOrder object or the concept of sub time steps. But I think I can further refactor the code to have things like perhaps two versions of update_step (which is a short function anyway), one which deals with TDVPOrder concepts and another which just subs in defaults for more normal dmrg-like algorithms. Either that, or we could elevate the TDVPOrder object to a more general pattern, like UpdatePattern or some other concept.
Luckily I don't think local_update or _insert_tensor depend on TDVP concept in as much of an essential way.

Yes, I think we should push the TDVPOrder to the top level tdvp wrapper, and then process that in a more general functionality for determining the nweeps and time steps for a given t, TDVPOrder, time_step, and nsteps.

The time-dependent Hamiltonian tests aren't passing. I'll work on it –

Looks like tests are passing now.
This PR overall is just a stepping stone and some initial cleanup to get the code to where a refactor is easier to do, and to check some boxes on the associated issue #60. Definitely a lot more work to do on this code! I think the rest of the #60 boxes will be easier to check when I put in the design we discussed about passing an array of sweeping steps and "payload" data for the solver to consume.

I'm having trouble getting the tests to pass, and it seems to unfortunately be something not obviously related to this PR. I see an error about part of a graph related code trying to access an empty tuple at [1] but  I'm not otherwise sure what is really behind this.
I thought maybe it was a bug introduced by another recent PR, possibly, but when I run some of the ITensorNetworks tests on my own machine on the main branch they pass.
This PR is ready to be merged in from my end, if you agree, and of course once tests pass. Meanwhile I am working on some of the other improvements to this code on a new branch starting from this one, to be sent in another PR.

Looks like tests are passing, I'll merge. Thanks, nice to see some of this code getting cleaned up!

I think the failures are related to https://github.com/mtfishman/DataGraphs.jl/pull/17, I'll look into it.

Thanks! The code is already simplifying a lot just from these changes and I think it can be simplified even more.


feat: add hooks library to generator

Resolves https://github.com/asyncapi/generator/issues/1270
I added inline comments for some more context on the PR
What this PR does? from the changeset:

Package @asyncapi/generator-hooks is now part of generator repo and won't be released separately. Source code is stored under apps/hooks but the package/library name stays as it was originally for backward compatibility,
By default @asyncapi/generator-hooks package, known as package with a lot of different hooks used in templates, is available in the generator and you no longer have to configure it in your package.json in dependencies. Package @asyncapi/generator-hooks will no longer be published to NPM separately and is deprecated. You can still have your own hooks, and you can still store them in a separate package and configure with your template,
Remember that the fact that hooks package is now included by default, doesn't mean all hooks from it are enabled by default. You still have to enable given hook in the configuration explicitly because some hooks can execute automatically without passing a specific parameter. Also hook's supported parameters also need to be defined in your template's config.

Also, next steps after it is merged:

archive https://github.com/asyncapi/generator-hooks
deprecate https://www.npmjs.com/package/@asyncapi/generator-hooks

/bounty

@asyncapi/bounty_team

@Florence-Njeri can you have a look on docs changes?

@Florence-Njeri thanks for detailed review, all changes applied!

/rtm


feat: release tag latest version with stable tag

Backstage Parodos is still under different version tracking, so not been added here yet!

/approve


Graph Traversal: BFS in Python

Important:
Before you start your work on this issue, make sure you go through the README.md and Contribution Guidelines.md and
do not submit plagiarized code.
File structure:

Within the Traversal Algorithms directory, create a new sub-directory Graph Traversals, if it doesn't exist already.
And another subdirectory in Graph Traversals with the name BFS.
In this directory, create one last directory Python

Here's how the final structure should look like:

Traversal Algorithms

GraphTraversals

BFS

Python

BFS.py

Please follow the same naming conventions as mentioned in this comment.
We thank you for your contribution and time and we hope that you enjoy contributing to open source.

Can I work on this?
I have gone through the repository and find that BFS algorithm is yet not implemented in Python.
I love to work on "Graph Traversal: BFS in Python" issue.
Looking forward to contribute on this repository.


Fairly extensive rewrite

The main reason why I started this rewrite was that I needed a newer Xamarin OSS to be able to build AAB files. The old one doesn't seem to know the AndroidPackageFormats option.
Then I ran into several other issues for example all recent Xamarin OSS build artefacts are unsigned. However they also include a deb file which greatly simplifies the installation.
I ran into dependency issues and I changed the base image to Debian instead of Ubuntu. Ultimately that didn't solve anything, but
I didn't feel like changing it back. I did have to use libzip4 instead of libzip5 as the latter isn't packaged with Debian. The dependency issues were resolved by installing OpenJDK 11 SDK. This turned out to satisfy the Xamarin OSS deb file's dependencies.
I was a bit confused by the convoluted repository structure, and after reading some best-practices on the Docker website, I rewrote the entire structure to a single multi-stage Dockerfile.
While working on this fork I encountered a lot of fork-unfriendly hard-coded values. I extracted all of those into variables and created a default.sh file that gives them default values, unless they're already set. For example from a sourced .env file.
Since I was reworking the scripts anyway, I put the api level and build-tools definitions in an associative array, and iterate over its keys in numerical order in the build.sh and push.sh scripts. To add support for a new API level, only a single key-value needs to be added to the defaults.sh definition of BUILD_TOOLS.

Hey, thanks for the PR!
I was new to docker and publishing to docker hub and this was needed for a student project that used gitlab ci to build the app. The project structure was … a bit complicated. I agree on that :)
These changes look good to me and learned something new. I will test things on my end as soon as i am home.

Sure. I'll do it tomorrow.

Date tagging and arbitrary tagging has been added. It can be controlled with these variables:

EXTRA_TAGS: an array of tag values
TAG_WITH_DATE: set to 1 or yes to automatically add YYYYMMDD formatted date stamp as tag
You can pass --tag-with-date to the build.sh and push.sh which does the same as setting TAG_WITH_DATE

There's no more recent build of Xamarin OSS available, yet I wish there was. This one suffers from https://github.com/xamarin/Xamarin.Forms/issues/15352. Which isn't a deal-breaker, but it means that exceptions thrown in the debugger are obscured, and you need to jump to the correct context in the stacktrace and evaluate this.SourceException to get to the real exception.

Can we request a build pipeline run + retain somewhere?

Good question. I still didn't find out which of these builds are the "current" release.

I think I'll have to rewrite it again. The good news is. It's become even simpler than I thought. The reason why the OSS Xamarin Android image on the build page is out of date, is that they've changed the release mechanism. According to https://github.com/xamarin/xamarin-android/issues/7235 we can simply run:
# dotnet workload install android

To install Xamarin Android on a Linux machine.
I'll experiment with it once I have some time.

Ok, an annoying thing is that for Android API level 32 and 33 we need to install dotnet workloads android-32 and android-33 respectively.
Also using this mechanism would be a breaking change for users of these docker images, since you'll need to make a change like this:
-    <TargetFrameworkVersion>v12.0</TargetFrameworkVersion>
+    <TargetFramework>net6.0-android</TargetFramework>

What do you think we should do. I think we want to support the new functionality. I'm not sure how to organise it so that it doesn't break stuff for existing users.

Also using this mechanism would be a breaking change for users of these docker images, since you'll need to make changes to the project set-up.

I didn't touch the newest xamarin yet. What changes are needed? The old images are going to stay with the date tag.

Should we add -net6 to all tags for the new mechanism?
Or should we go for a new repository: xamarin-android-net6 entirely?

I think we should add those changes here. It's easier to maintain the Xamarin Android OSS build without digging into the build pipelines to find a working version.
What do you think? Should we add these breaking changes here and add a notice for existing users in the dockerhub readme and here, or add an extra build with the -net6 tag (maybe instead of new repo and addtional branch?)

Well, my conclusion is that it's nigh impossible to get the new mechanism to work. So let's stay at the current mechanism for now, and try to tackle the newer mechanism at some other time.

I'll push the retagged old images later tonight and merge and build and push the new images, if i don't find any issues.

Have a look at the line that says:
ENV PATH=/xamarin/bin/Release/bin:$PATH

I retained it from the original, but I think it's no longer needed with the .deb install. /xamarin doesn't seem to exist.

Yeah. Can be safely removed

Images are getting pushed right now


Adding the clientID within Vue

Hey, thanks for creating this! Should come in handy with my next web app 👍
Forgive me for a basic question but this step:

First authenticate with the spotify Web API with the client credential

I am having trouble understanding how this should be written in Vue. Currently I have imported Spotify/VueSpotify into the main.js of the app and inside new Vue I have added the following:
import Spotify from 'spotify-web-api-node'
import VueSpotify from 'vue-spotify'

Vue.use(VueSpotify, new Spotify())
...
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App),
  created () {
    Spotify.SpotifyWebApi({
      clientId: '8c2eedb817494af4a6e1ebf308bd89c3'
    })
  }
})

I am also having a bit of trouble getting this working, am I missing something?
import Vue from 'vue'
import App from './App'
import router from './router'
import Spotify from 'spotify-web-api-node'
import VueSpotify from 'vue-spotify'

Vue.config.productionTip = false
Vue.use(VueSpotify, new Spotify({
  clientId: 'my id',
  clientSecret: 'my secret'
}))

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>',
  created () {
    // Retrieve an access token.
    this.myBackend.getSpotifyToken()
      .then(function (token) {
        this.spotify.setAccessToken(token)
        // and from now you will be able to make calls to the Spotify API
      }, function (err) {
        console.log('Something went wrong when retrieving an access token', err)
      })
  }
})

Gives me a console error:
vue.esm.js:592 [Vue warn]: Error in created hook: "TypeError: Cannot read property 'getSpotifyToken' of undefined"
(found in <Root>)
vue.esm.js:1740 TypeError: Cannot read property 'getSpotifyToken' of undefined

myBackend is not something from vue-spotify. This was just an example to show you that you need to call a method that will call your backend to retrieve a token.


add trait_exists to ensure orchestra/testbench is installed

[x] Added or updated tests
[ ] Documented user facing changes
[ ] Updated CHANGELOG.md

resolves https://github.com/nunomaduro/larastan/issues/863
Related PRs

https://github.com/nunomaduro/larastan/pull/852
https://github.com/nunomaduro/larastan/pull/858

I personally think getcwd() is not a good solution to
find Laravel Application bootstrap file, but could not find a better solution that solve cases like https://github.com/nunomaduro/larastan/issues/856.
so, for cases that Laravel application bootstrap file cannot be loaded by getcwd().'/bootstrap/app.php',
I just don't want
Fatal error: Trait 'Orchestra\Testbench\Concerns\CreatesApplication' not found in /var/source/app/laravel/vendor/nunomaduro/larastan/src/ApplicationResolver.php on line 16

and handle bootstrap by my own.
This PR adds trait_exists to ensure Orchestra\Testbench\Concerns\CreatesApplication exists, which is called in
ApplicationResolver::resolve()
https://github.com/nunomaduro/larastan/blob/master/src/ApplicationResolver.php#L18

I'll wait for https://github.com/nunomaduro/larastan/pull/955

@szepeviktor
Thank you for your fix & review.
I added a Exception.
Also, retried https://github.com/nunomaduro/larastan/pull/852 , being careful about backward compatibility this time.

Also, retried #852 , being careful about backward compatibility this time.

Please prioritize getcwd() as it was before.


[v3] Update Practice Exercises to latest spec

This week we've defined what the file structure looks like for Practice Exercises. Please skim through this docs PR that gives an overview of the changes, and see the spec for more information.
This PR applies changes to the track to conform to the latest spec. Each change is made as a separate commit, to help with reviewing. When merging this PR, I would suggest to not squash this to preserve the individual commits.
As having this PR merged is essential to prepare this track for Exercism v3, we'll automatically merge this PR one week after it was opened (if it hasn't been merged already).
Here are the changes made:
Add practices field to Practice Exercises
While working on adding prerequisites to the Practice Exercises, we found that we really need two keys for Practice Exercises:

practices: Concepts that the Practice Exercise is actively helping a student to practice. These show up in the UI as "Practice this Concept in: TwoFer, Leap, etc`
prerequisites: The actual Concepts that should have been learnt by a student in order for them be able to do that Exercise.

There are lots of advantages to having the two keys instead of using one key for two purposes, not least that having them split out gives the maintainers a lot more control over the order a student should be exposed to exercises (via the prerequisites) and also where they encourage them to try concepts (via practices), which in reality are quite different things.
We have updated the docs with more details and explanation on this.
Remove README.md files
v3 Practice Exercises won't have a (generated) README.md file anymore. This file will be replaced by .docs/instructions.md and optionally a .docs/introduction.md files. These files are copies of the information defined for their corresponding problem-specifications exercise (if any).
Exercism v3 will build the README.md file that is sent via the CLI from these files contents, along with some other files.
See this document for more information.
This PR removes the README.md files.
Create instruction from prob-specs descriptions
The .docs/instructions.md file is a copy of the instructions.md file of the problem-specifications exercise, or if that does not exists, its description.md file.
The new configlet version will add support for doing this syncing automatically.
This PR adds the .docs/instructions.md file from the problem-specifications exercise's description.md file.
Move .meta/hints.md to .docs/instructions.append.md
As noted above, v3 Practice Exercises will have a .docs/instructions.md and optionally a .docs/introduction.md file.
To add track-specific contents to the instructions and/or introduction, exercises can define the (optional) introduction.append.md and instructions.append.md files. If present, the contents of these files will automatically be append to their corresponding file when generating the README.md
This PR renames any .meta/hints.md files to .docs/instructions.append.md.
Create .meta/config.json files
Practice Exercises in Exercism v3 will have a .meta/config.json file that contains exercise-specific information like the names of the solution, test and example file(s).
The .meta/config.json file will also contain any source information as defined for the corresponding problem-specifications exercise (if any).
This PR adds the .meta/config.json file.
The contents of this file are temporary, and we'll submit follow-up PRs to update their values:

The authors and contributors will be inferred from the Exercise's git history.
As the Exercise files for most tracks are very regular, we're working on a solution that will allow you to define the pattern in your tracks's config.json file, and then use configlet to generate the contents of the files property in the exercise's .meta/config.json file based on the track-defined pattern.

Tracking
https://github.com/exercism/v3-launch/issues/16

Some of the README files have content not from the original problem specification. If the CLI will create the README for the user each time a student requests a practice, then this track loses some of the guidance we gave to the student.
Is there anyway we can apply it, like in .meta/hints.md?

Some of the README files have content not from the original problem specification. If the CLI will create the README for the user each time a student requests a practice, then this track loses some of the guidance we gave to the student.
Is there anyway we can apply it, like in .meta/hints.md?

There is! You basically have two options:

Add a .docs/hints.md file. This file is intended to help the student be unblocked when stuck. See the spec.
Add a .docs/instructions.append.md file. This file will automatically be append to the instructions (what's know as the description now). See the spec.

Choosing which to use thus depends on what goal the additional information has.


Remove unnecessary dependencies of getopts & libc for utilities.

I need to check... what's wrong with Linux travis...

Thanks for clean up!

The buildbot was failing before my pull request, I think.

mountpoint for /dev/zero is wrong in the stat test. Unrelated to this PR.