feat: Introduce a new Testcontainers.Xunit package

What does this PR do?
This pull request introduces a new Testcontainers.Xunit NuGet package.
It provides two main classes to simplify working with Testcontainers within xUnit.net tests.

ContainerTest is a base class for tests needing one container per test method.
ContainerFixture is a fixture that can be injected into test classes that need one container per test class (a.k.a. singleton container instance).

Both support logging, respectively through ITestOutputHelper and IMessageSink which are the standard xUnit.net logging mechanisms.
DbContainerTest and DbContainerFixture are also provided to ease working with database containers. They provide methods to simplify the creation of DbConnection instances.
Why is it important?
This will greatly reduce boilerplate code needed when using Testcontainers with xUnit.net, both for Testcontainers consumers and for the Testcontainers tests themselves.
Related issues

Closes #990

Follow-ups
I have another branch (feature/Testcontainers.Xunit+samples) where I have started using Testcontainers.Xunit in the Testcontainers tests themselves. I have currently updated MongoDbContainerTest, ClickHouseContainerTest, MariaDbContainerTest and PostgreSqlContainerTest. You can have a look at them to see how the tests are simplified by using the new base classes or fixtures.
I'm not sure yet whether updating all the Testcontainers tests should be part of this pull request or part of a subsequent pull request.
I've been using xUnit.net extensively so I'm pretty confident about the design of this new package. I'm not familiar enough with either NUnit or MSTest to propose similar packages, maybe someone else can step in.

I think we can consolidate a few things. The underlying configuration for a single instance (ContainerTest) and a shared instance (ContainerFixture) do not differ that much. At least in the past, I reused the same implementation. I think we can do the same here. I will share the setup I typically use tomorrow.

Excellent point! It did not even come to my mind that the lifetime implementation could be shared. I have done it in c20188e0938ffc9e88b413c4ccf933a329ad71f0 with a new ContainerLifetime base class used by both ContainerTest and ContainerFixture.

Sorry for the late response today. Tuesdays are always busy for me.

Excellent point! It did not even come to my mind that the lifetime implementation could be shared. I have done it in c20188e with a new ContainerLifetime base class used by both ContainerTest and ContainerFixture.

👍 We do not need to apply the suggestion, but I would like to share and discuss it quickly because I think the code (xUnit's shared context) has a lot in common, and some parts feel like copy and paste. The example I am sharing is not complete because I had to remove some critical parts, but the important parts are still there, and the concept should not be very difficult to understand. Please also take into account that the example contains much more than what is actually necessary for Testcontainers.
The ILoggerProvider implementation is similar to what @samtrion shared. The ILogger implementation is the same for both ITestOutputHelper and IMessageSink, so I do not think code duplication is really necessary.
internal sealed class XunitLoggerProvider : ILoggerProvider
{
    private readonly Stopwatch _stopwatch = Stopwatch.StartNew();

    private readonly ITestOutputHelper _testOutputHelper;

    public XunitLoggerProvider(IMessageSink messageSink)
    {
        _testOutputHelper = new MessageSinkTestOutputHelper(messageSink);
    }

    public XunitLoggerProvider(ITestOutputHelper testOutputHelper)
    {
        _testOutputHelper = testOutputHelper;
    }

    public void Dispose()
    {
    }

    public ILogger CreateLogger(string categoryName)
    {
        return new XunitLogger(_stopwatch, _testOutputHelper, categoryName);
    }

    private sealed class MessageSinkTestOutputHelper : ITestOutputHelper
    {
        private readonly IMessageSink _messageSink;

        public MessageSinkTestOutputHelper(IMessageSink messageSink)
        {
            _messageSink = messageSink;
        }

        public void WriteLine(string message)
        {
            _messageSink.OnMessage(new DiagnosticMessage(message));
        }

        public void WriteLine(string format, params object[] args)
        {
            _messageSink.OnMessage(new DiagnosticMessage(format, args));
        }
    }

    private sealed class XunitLogger : ILogger
    {
        private readonly Stopwatch _stopwatch;

        private readonly ITestOutputHelper _testOutputHelper;

        private readonly string _categoryName;

        public XunitLogger(Stopwatch stopwatch, ITestOutputHelper testOutputHelper, string categoryName)
        {
            _stopwatch = stopwatch;
            _testOutputHelper = testOutputHelper;
            _categoryName = categoryName;
        }

        public IDisposable BeginScope<TState>(TState state)
        {
            return Disposable.Instance;
        }

        public bool IsEnabled(LogLevel logLevel)
        {
            return logLevel != LogLevel.None;
        }

        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
        {
            _testOutputHelper.WriteLine("[{0} {1:hh\\:mm\\:ss\\.ff}] {2}", _categoryName, _stopwatch.Elapsed, formatter.Invoke(state, exception));
        }

        private sealed class Disposable : IDisposable
        {
            private Disposable()
            {
            }

            public static IDisposable Instance { get; } = new Disposable();

            public void Dispose()
            {
            }
        }
    }
}

I had to remove some parts here that I cannot share. The example builds on top of the WebApplicationFactory<TEntryPoint>, but the concept will be the same for Testcontainers. The actual test class utilizes either the SharedInstance or the SingleInstance implementation.
public abstract class CustomWebApplicationFactory<TEntryPoint> : WebApplicationFactory<TEntryPoint>, IAsyncLifetime where TEntryPoint : class
{
    private readonly List<IWebHostConfiguration> _configurations = new();

    protected CustomWebApplicationFactory()
    {
        AddWebHostConfiguration(new ClearLoggingProviders());
    }

    public void AddWebHostConfiguration(IWebHostConfiguration configuration)
    {
        _configurations.Add(configuration);
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        base.ConfigureWebHost(builder);

        foreach (var configuration in _configurations)
        {
            configuration.ConfigureWebHost(builder);
        }
    }

    // For Testcontainers, the AsyncLifetime property is not necessary; this is specific to the type clash (WebApplicationFactory<TEntryPoint>).
    public IAsyncLifetime AsyncLifetime => this;

    public ValueTask InitializeAsync()
    {
        // Due to a naming conflict where the interfaces `IAsyncLifetime` and
        // `IAsyncDisposable` share the same name for the member `DisposeAsync`, but have
        // different return types, we have implemented the members of the `IAsyncLifetime`
        // interface explicitly. To prevent warnings, a non-explicit implementation has
        // been added. This matter will be addressed in xUnit.net version 3, which also
        // utilizes the `IAsyncDisposable` interface.
        throw new InvalidOperationException("Use the delegate property AsyncLifetime instead.");
    }

    async Task IAsyncLifetime.InitializeAsync()
    {
        await Task.WhenAll(_configurations.Select(configuration => configuration.InitializeAsync()))
            .ConfigureAwait(false);
    }

    async Task IAsyncLifetime.DisposeAsync()
    {
        await Task.WhenAll(_configurations.Select(configuration => configuration.DisposeAsync()))
            .ConfigureAwait(false);
    }

    public class SharedInstance : CustomWebApplicationFactory<TEntryPoint>
    {
        public SharedInstance(IMessageSink messageSink)
        {
            AddWebHostConfiguration(new LoggingWebHostConfiguration(messageSink));
        }
    }

    public class SingleInstance : CustomWebApplicationFactory<TEntryPoint>
    {
        private readonly MoqLoggerProvider _mockOfILogger = new();

        public SingleInstance(ITestOutputHelper testOutputHelper)
        {
            AddWebHostConfiguration(new LoggingWebHostConfiguration(testOutputHelper));
            AddWebHostConfiguration(new LoggingWebHostConfiguration(_mockOfILogger));
        }

        public Mock<ILogger> MockOfILogger => _mockOfILogger;

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
            _mockOfILogger.Dispose();
        }
    }

    private sealed class ClearLoggingProviders : WebHostConfiguration
    {
        public override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureTestServices(services => services.RemoveAll<ILoggerFactory>());
            builder.ConfigureLogging(loggingBuilder => loggingBuilder.ClearProviders());
        }
    }
}

The test class will use either one of the instances, similar to:
public class XunitShardContext1 : IClassFixture<CustomWebApplicationFactory<Program>.SharedInstance>
{
    private readonly CustomWebApplicationFactory<Program> _app;

    public XunitShardContext1(CustomWebApplicationFactory<Program>.SharedInstance app)
    {
        _app = app;
    }
}

public class XunitShardContext2
{
    private readonly CustomWebApplicationFactory<Program> _app;

    public XunitShardContext2(ITestOutputHelper testOutputHelper)
    {
        _app = new CustomWebApplicationFactory<Program>.SingleInstance(testOutputHelper);
    }
}

@0xced, are there any tasks left? It would be great to finalize the PR and merge it. I think many developers can benefit from this package. Please, no hurry — I just want to double-check if there are any tasks left. I can take care of them too if you need help.

I’m pretty happy with the current implementation. I have another branch (feature/Testcontainers.Xunit+samples) on top of this one where I started using the new package for Testcontainers own tests. Currently I have only updated a couple of modules and everything looks fine.
Do you plan to release a preview package first so that we could gather some feedback before committing to a stable API ?
Finally, except for the xmldoc, no documentation has been written. I can start writing documentation next week.

Do you plan to release a preview package first so that we could gather some feedback before committing to a stable API ?

I will try to review the PR sometime this week. Afterward, I can publish a snapshot version 👍.

The PR looks good. We need to address the failing build and update the "container per test class" documentation, but overall it looks good. I'd like to run some local tests before merging it. Do we need to add additional tests?

I addressed the failing build. The cause was that I used xunit.v3.extensibility.core version 0.3.0-pre.8 which is not yet published to NuGet for the Testcontainers.XunitV3 package. I reverted to version 0.2.0-pre.69 in order to fix the build but it means that Testcontainers.XunitV3 will not work properly since it requires version 0.3.0-pre.8 where https://github.com/xunit/xunit/issues/3001 is fixed. Anyway, I think we should hold releasing Testcontainers.XunitV3 until the final xUnit v3 is released. But it was a good thing that I experimented with xUnit v3 since I recently reported two bugs which are already fixed!
I also finalised the Testing with xUnit documentation. I'm not super happy with the result as I'm not a good technical writer unfortunately. If someone else want to improve it or even rewrite it entirely that's would be fine.

Do we need to add additional tests?

I encourage you to have a look at my (feature/Testcontainers.Xunit+samples) branch where I have started using Testcontainers.Xunit in the Testcontainers tests themselves. I think these are perfect tests for the Testcontainers.Xunit package but I finally think that updating all Testcontainers module tests should be done as a subsequent pull request once this one is merged. Other than that I don't think additional tests are warranted.

🚀🎉 Really looking forward to this PR. Like seriously looking forward to this.
@0xced Having a read of the testing_xunit.md doc, there's a few examples which are awesome. Specifically, with the "Here's a more more complete example setting up a PostgreSQL database shared across all tests of the same class." example I noticed this:
    // Match the database name with the one from the initialization script
    public override string ConnectionString
    {
        get
        {
            var builder = new NpgsqlConnectionStringBuilder(base.ConnectionString)
            {
                Database = "chinook_auto_increment",
            };
            return builder.ConnectionString;
        }
     }

I can see here that you're setting the Database to be chinook_auto_increment for all tests in this class. Instead, could we be able to define the Database per test method which in effect would be a single db per test method. Why? So each test would have a fresh, consistent db per test method. Previously I've "reset" the database back. Which also means each test method (per class) has to run synchronously. If we have a single db tenant per test method (per class) we then have each test running in isolation which could mean we could even have each test running concurrently (if this is possible in v3?). At least it means we don't need to reset the db after a test method is done, ready for the next text method.
The problem I'd love to solve is having ONE database instance for the enter test run, over all test methods, over all test classes. This is like xUnit's COLLECTION Fixture concept. and then each test class (or test method if we could get those to run concurrently) to have it's own database tenant on this single instance. Sure, creating the db tenant and seeding the schema and data is costly .. but less cost than ALSO creating a db container for each test class or test method.
I sincerely hope this ramble makes some sense 😊 😅

I think we should hold releasing Testcontainers.XunitV3 until the final xUnit v3 is released.

Should we set IsPublishable to false then?

I'm not super happy with the result as I'm not a good technical writer unfortunately. If someone else want to improve it or even rewrite it entirely that's would be fine.

I can create a minimal test project using the source code from the docs and try to improve certain parts, but overall, I think it's already really good. Referencing the actual source code has the advantage of ensuring it compiles and stays up-to-date even when we make changes to the project.

Should we set IsPublishable to false then?

Either this or release a preview version of the Testcontainers.XunitV3 package.

I can create a minimal test project using the source code from the docs and try to improve certain parts, but overall, I think it's already really good. Referencing the actual source code has the advantage of ensuring it compiles and stays up-to-date even when we make changes to the project.

Awesome work on the documentation! I'd just change the RedisBuilder.RedisImage constant to its "redis:7.0" string value in the sample code. This is supposed to be read in a browser where you don't have easy access to the definition of this constant. Also, the docker ps command a few lines later displays redis:7.0 so that's good for the reader's comprehension.

Additionally, I made a small change to how we instantiate the logger instances.

Overall this looks good except for this specific change (commit 630a07320806be99667122b9fd764b98c3c523f6). I think it's worse than the previous implementation in many ways.

There's no need for an ILoggerProvider. It just complicates things IMHO. I don't see how a complex 95 lines file is better than two simple 21 lines (plus 20 lines base class).
MessageSinkTestOutputHelper doesn't really makes sense and implementing ITestOutputHelper forces to throw NotImplementedException in the Output implementation. Again, previous implementation was much simpler.
Even though it's recommended to pass ITestOutputHelper and IMessageSink to the base class, supporting null is probably a good idea. If I read the new implementation correctly, passing null will throw a NullReferenceException. In the previous implementation it would just not log anything which is probably what's you're expecting if you pass a null test output helper or null message sink.
The override of GetHashCode is important in order not to log the same information multiple times. This seems to be lost but right now I can't get any diagnostic to print to the console when running dotnet test with a xunit.runner.json configured with diagnostic messages. It works in other projects but not Testcontainers.MariaDb.Tests where I'm currently trying… I'll try again tomorrow after some sleep. 😴

Awesome work on the documentation! I'd just change the RedisBuilder.RedisImage constant to its "redis:7.0" string value in the sample code.

Yes, I was thinking about that too, but I would like to reuse existing pulled images and avoid pulling more versions, since we had issues in the past with running out of disk space (I know, the Redis image is tiny). Maybe we can use a delegate that contains the version number in its name.

There's no need for an ILoggerProvider. It just complicates things IMHO. I don't see how a complex 95 lines file is better than two simple 21 lines (plus 20 lines base class).

I don't think so. The previous one was inconsistent in its log messages. This is probably a matter of taste, but simply using fewer lines is not a valid argument. If necessary, you can reduce the XunitLoggerProvider to fewer lines, too (if you count everything that is involved (including removing the statement body, there is barely a difference).

MessageSinkTestOutputHelper doesn't really makes sense and implementing ITestOutputHelper forces to throw NotImplementedException in the Output implementation. Again, previous implementation was much simpler.

This is not an issue, as the implementation is not public. We can change this behavior in the future when Xunit.net V3 is officially available. Until then, a lot will probably change anyway.

Awesome work on the documentation! I'd just change the RedisBuilder.RedisImage constant to its "redis:7.0" string value in the sample code.

Yes, I was thinking about that too, but I would like to reuse existing pulled images and avoid pulling more versions, since we had issues in the past with running out of disk space (I know, the Redis image is tiny). Maybe we can use a delegate that contains the version number in its name to make it more comprehensive.

There's no need for an ILoggerProvider. It just complicates things IMHO. I don't see how a complex 95 lines file is better than two simple 21 lines (plus 20 lines base class).

I don't think so. The previous one was inconsistent in its log messages (this was the main reason I changed it). This is probably a matter of taste, but simply using fewer lines is not a valid argument. If necessary, you can reduce the XunitLoggerProvider to fewer lines, too (if you count everything that is involved (including removing the statement body, there is barely a difference). It aligns with @samtrion suggestion as well, and is something I would like to keep.

MessageSinkTestOutputHelper doesn't really makes sense and implementing ITestOutputHelper forces to throw NotImplementedException in the Output implementation. Again, previous implementation was much simpler.

This is not an issue, as the implementation is not public. We can change this behavior in the future when Xunit.net V3 is officially available. Until then, a lot will probably change anyway.

Even though it's recommended to pass ITestOutputHelper and IMessageSink to the base class, supporting null is probably a good idea. If I read the new implementation correctly, passing null will throw a NullReferenceException.

Yes, this is something I wanted to ask you about. It's good that you brought it up. My idea was to support a default constructor that doesn't expect any arguments and then uses a NullLogger instance (empty singleton of the interface). WDYT?

The override of GetHashCode is important in order not to log the same information multiple times.

Probably, we are expecting different behavior here. I intended to log it once per fixture, but it looks like you want to log it once for the entire IMessageSink instance. I'm fine with either approach. We can override GetHashCode() then 👍.

The previous one was inconsistent in its log messages (this was the main reason I changed it).

This inconsistency was deliberate because a timestamp is already included by xUnit for diagnostic messages.
Previous version (without additional timestamps in the [testcontainers.org] tag):
[xUnit.net 00:00:00.54] Testcontainers.MariaDb.Tests: [testcontainers.org] Docker container 9b38c1107ab6 created
[xUnit.net 00:00:00.61] Testcontainers.MariaDb.Tests: [testcontainers.org] Start Docker container 9b38c1107ab6
[xUnit.net 00:00:00.90] Testcontainers.MariaDb.Tests: [testcontainers.org] Wait for Docker container 9b38c1107ab6 to complete readiness checks
[xUnit.net 00:00:00.90] Testcontainers.MariaDb.Tests: [testcontainers.org] Docker container 9b38c1107ab6 ready
[xUnit.net 00:00:00.96] Testcontainers.MariaDb.Tests: [testcontainers.org] Docker container b23d15ee4e5b created
[xUnit.net 00:00:00.96] Testcontainers.MariaDb.Tests: [testcontainers.org] Docker container bcb93b97b3bb created
[xUnit.net 00:00:00.98] Testcontainers.MariaDb.Tests: [testcontainers.org] Start Docker container b23d15ee4e5b
[xUnit.net 00:00:00.98] Testcontainers.MariaDb.Tests: [testcontainers.org] Start Docker container bcb93b97b3bb
[xUnit.net 00:00:01.42] Testcontainers.MariaDb.Tests: [testcontainers.org] Add file to tar archive: Content length: 52 byte(s), Target file: "/etc/mysql/my.cnf"

After "fix" for consistency:
[xUnit.net 00:00:00.54] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.36] Docker container 7294d9e2dbcf created
[xUnit.net 00:00:00.61] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.43] Start Docker container 7294d9e2dbcf
[xUnit.net 00:00:00.91] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.74] Wait for Docker container 7294d9e2dbcf to complete readiness checks
[xUnit.net 00:00:00.91] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.74] Docker container 7294d9e2dbcf ready
[xUnit.net 00:00:00.97] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.80] Docker container 87ae49845e7c created
[xUnit.net 00:00:00.97] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.80] Docker container d4473f1f2d81 created
[xUnit.net 00:00:00.98] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.81] Start Docker container 87ae49845e7c
[xUnit.net 00:00:00.98] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:00.81] Start Docker container d4473f1f2d81
[xUnit.net 00:00:01.42] Testcontainers.MariaDb.Tests: [testcontainers.org 00:00:01.25] Add file to tar archive: Content length: 49 byte(s), Target file: "/etc/mysql/my.cnf"

I think we don't want this double timestamps with a few milliseconds of difference.

This is probably a matter of taste, but simply using fewer lines is not a valid argument.  If necessary, you can reduce the XunitLoggerProvider to fewer lines, too (if you count everything that is involved (including removing the statement body, there is barely a difference).

It's not really the number of lines but more the cognitive overhead implementing the ILoggerProvider that nobody is actually using and wrapping a IMessageSink in a ITestOutputHelper implementation.

It aligns with @samtrion suggestion as well, and is something I would like to keep.

I still think that the initial implementation was much simpler to understand and follow. 🤷♂ But I don't want to hold this pull request over implementation details.

This is not an issue, as the implementation is not public. We can change this behavior in the future when Xunit.net V3 is officially available. Until then, a lot will probably change anyway.

It's not an issue until some test runner decides to access the Output property. 🤔 Anyway, I just asked the author of xUnit what's the purpose of this new property: https://github.com/xunit/xunit/discussions/3027

My idea was to support a default constructor that doesn't expect any arguments and then uses a NullLogger instance (empty singleton of the interface). WDYT?

Something like this (and similar for the ContainerTest class)? I think it would make sense (with proper xmldoc of course).
public class ContainerFixture<TBuilderEntity, TContainerEntity>
    : ContainerLifetime<TBuilderEntity, TContainerEntity>
    where TBuilderEntity : IContainerBuilder<TBuilderEntity, TContainerEntity>, new()
    where TContainerEntity : IContainer
{
    public ContainerFixture() : base(NullLogger.Instance)
    {
    }

    public ContainerFixture(IMessageSink messageSink) : base(new XunitLoggerProvider(messageSink).CreateLogger("testcontainers.org"))
    {
    }
}

✅ 2e79dd7eabb29128a3b2e47ba4d19800361195fe: I overrode the GetHashCode() method.

Good, because ultimately the sink writes to the same file/console output so this way we only have the runtime info logged once.
Also, I saw that you removed the empty line in 313b01e816cc4d9245265632dd41f20a25f2c0cd but there's still one empty line if there's no label at all.

Something I wanted to mention is that in the future, I would like to transition to using a simple annotation that we can add to an IContainer field or property. That annotation would handle creating and starting the test resources. I was thinking of utilizing Fody for this.

I don't understand what you mean, sorry. 🙁 Maybe it would be easier for me to get it with an example?

I still think that the initial implementation was much simpler to understand and follow. 🤷♂ But I don't want to hold this pull request over implementation details.

Me neither; I found the previous version more difficult to comprehend. If you’d like, we can revert it. In general, I favor consistency. Regarding the Output, no one can access it—it’s private.

Something like this (and similar for the ContainerTest class)? I think it would make sense (with proper xmldoc of course).

Yes 👍.

Also, I saw that you removed the empty line in 313b01e but there's still one empty line if there's no label at all.

Oh, I didn’t notice that. Since the latest Docker Desktop update always contains the label, I will double-check. Thanks.

I don't understand what you mean, sorry. 🙁 Maybe it would be easier for me to get it with an example?

My intention is to support the same or similar behavior as Java does. All you need here is the @Container annotation.

It seems that the recent GitHub runners update is causing issues with the tests (https://github.com/actions/runner-images/issues/10649). The MSSQL container crashes on the latest (Ubuntu-22.04) runner version. I noticed similar issues with 24.04 before. Hopefully, simply updating the version will resolve it. We need to remove the Azure SQL Edge module too (it crashes too). I doubt there will be an update since it is already obsolete.

I did some progress.

Differentiate output between ITestOutputHelper (with timestamp) and IMessageSink (without timestamp)<PHONE_NUMBER>b510153ac6c7e6ce342b242e13c065)
New constructors that don't take an ITestOutputHelper or IMessageSink to ignore logs (80b1f1ddd724eaef1644e8caea48c39c8b834b2c)
Fix test case ordering that was not implemented properly (df9eb0f0779ea107aa870c11d2b8d7be73441382)

I'm still maintaining my Testcontainers.Xunit+samples branch on top of this one where I'm using Testcontainers.Xunit for the Testcontainers tests themselves.
Initially I wrote this:

I'm not sure yet whether updating all the Testcontainers tests should be part of this pull request or part of a subsequent pull request.

Now I think it should be part of a subsequent pull request. This one is big enough I think!

Thanks for merging.

Should I publish a snapshot version 🚀?

That would be great!


KeyError in Dependency Injection with Pydantic and aioinject Using Union Types

Hello,
I wanted to inject a BaseSettings class from Pydantic Settings today, but unfortunately an error is thrown (KeyError: bool | None). I suspect that the problem is not related to this library, but rather to the union type in general (correct me if I'm wrong). Below you can find the error and my code. I'm using Python v3.12.7, aioinject v0.35.3 and Pydantic Settings v2.7.0

import aioinject
from aioinject import Container

container = Container()

class SecurityConfig(BaseSettings):
    hallo: str = "hey"

def register_dependencies():
    container.register(
        aioinject.Singleton(SecurityConfig),
    )

def create_app() -> FastAPI:
    dotenv.load_dotenv()
    app = FastAPI()

    register_dependencies()

    with container.sync_context() as ctx:
        security_config = ctx.resolve(SecurityConfig)

       # Code where I want to use the config...

        return app

app = create_app()

AttributeError: 'types.UnionType' object has no attribute '__qualname__'
WARNING:  WatchFiles detected changes in 'daytistics/config.py'. Reloading...
Process SpawnProcess-14:
Traceback (most recent call last):
  File "/app/.venv/lib/python3.12/site-packages/aioinject/containers.py", line 55, in get_provider
    return self.providers[type_]
           ~~~~~~~~~~~~~~^^^^^^^
KeyError: bool | None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/usr/local/lib/python3.12/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/_subprocess.py", line 80, in subprocess_started
    target(sockets=sockets)
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "uvloop/loop.pyx", line 1518, in uvloop.loop.Loop.run_until_complete
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 69, in serve
    await self._serve(sockets)
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/server.py", line 76, in _serve
    config.load()
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/config.py", line 434, in load
    self.loaded_app = import_from_string(self.app)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/uvicorn/importer.py", line 19, in import_from_string
    module = importlib.import_module(module_str)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/app/daytistics/main.py", line 40, in <module>
    app = create_app()
          ^^^^^^^^^^^^
  File "/app/daytistics/main.py", line 26, in create_app
    security_config = ctx.resolve(SecurityConfig)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/aioinject/context.py", line 187, in resolve
    dependencies[dependency.name] = self.resolve(
                                    ^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/aioinject/context.py", line 178, in resolve
    provider = self._get_provider(type_)
               ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/aioinject/context.py", line 64, in _get_provider
    return self._providers.get(type_) or self._container.get_provider(
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.12/site-packages/aioinject/containers.py", line 57, in get_provider
    err_msg = f"Provider for type {type_.__qualname__} not found"

@leo-gall Docs mention it: https://thirvondukr.github.io/aioinject/cookbook/
The problem is that pydantic-settings classes already have an init which doesn't have the same parameters as the fields you defined (unlike dataclasses for example) and aioinject tries to provide one of the parameters.
You can either use the code snippet from documentation and create all settings instances on container initialization, but if you want to make them "lazy" and only initialize them when they're required you could use functools.partial:
_settings_classes: Sequence[type[BaseSettings]] = [
    AppSettings,
    DatabaseSettings,
]

for settings_cls in _settings_classes:
    container.register(Singleton(functools.partial(settings_cls), type_=settings_cls))


Loss increases after re-importing weights

I trained a model(conv1d neural network), and use function 'model. save_weights ()' to save my weights. But when I re-import weights using function 'model. load_weights()'，losses suddenly increase on the same data set (much better than random initialization, but much worse than the training just done). That seems to be adding some random noise to the trained weights. And the sudden increase of the loss value will rapidly decline.
The same problem has been encountered in training LSTM before.
It looks strange，and it will affect my performance on the test set. what should I do to solve the problem?

I know the answer.

Could you explain how you solved it? I've been having the same issue.


Add os_version and app_build_version to Sessions

#no-changelog

Yes going to follow up with filling in the fields


Add Rootstock Network

Description
This PR adds rootstock network to the clear wallet. Rootstock is a fully EVM compatible chain.
About Rootstock
Website: https://rootstock.io
Feel free to review this PR and let me know if any changes needed.

PR-Codex overview
This PR adds support for the Rootstock and Rootstock Testnet networks to the application, including their respective properties such as rpc, chainId, explorer, icon, symbol, and priceId.
Detailed summary

Added Rootstock network with:

rpc: 'https://public-node.rsk.co'
chainId: 30
explorer: 'https://explorer.rootstock.io'
icon: 'rootstock.webp'
symbol: 'RBTC'
priceId: 'rootstock'

Added Rootstock Testnet network with:

rpc: 'https://public-node.testnet.rsk.co'
chainId: 31
explorer: 'https://explorer.testnet.rootstock.io'
icon: 'rootstock_t.webp'
symbol: 'tRBTC'

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Hey, thanks for the PR looks good, will merge it, but a new version will be live in 1 - 2 weeks.
Because already submitted one yesterday.
This network will be in templates in 1.4.7.
Thanks.


[BUG]: Element sometimes gets focused again after blurring preventing the update from completing.

https://github.com/StevanFreeborn/OnspringEnd2EndTests/blob/915b193315cdac99b412f13500c4410441f51b28/componentObjectModels/modals/surveyDesignerModal.ts#L503
When a formatted text block is clicked to be edited in the survey designer focus is placed on the multiline text field. This autofocus happens programmatically via script. Sometimes this autofocus happens to slow compared to playwright's super speed causing the explicit blur event to not be enough.
Likely need to actually wait for the element to be focused before proceeding with update.

This issue also appears to be a problem when adding or updating questions in the survey designer modal. Going to add a wait for focus there too.


Store server feature level in Redux

(This isn't ripe to do any work on until the server side has been implemented.)
Per zulip/zulip#14618, we plan to add a "feature level" number to the server's API, which appears alongside zulip_version but can be used at a finer grain.
Once it's there, we'll want to observe it on /server_settings and /register, and maintain it in Redux. This will work just like #3839.
Then we'll want to use it instead of the version number anywhere we can -- basically, for any new server feature that's after 2.1.0. In particular:

stream_post_policy, for #3140
as an optimization on how we use zulip/zulip#14500 (discussion here)
new Markdown features as discussed here

Priority because of #3140.

Unblocked now that zulip/zulip#14618 is merged.

I am working on this issue.

Then we'll want to use it instead of the version number anywhere we can -- basically, for any new server feature that's after 2.1.0.

@gnprice, do we know the particular minimum server version that will have this flag? The above implies that such a minimum server version exists, but it's not 2.1.0. Maybe 2.1.1?
Just so we can the right comment for zulip_feature_level on ApiResponseServerSettings.


Build error --  When building on centos with cmake 3.15.3

I get a compile error of :
/public/home/nheyer/odgi/src/odgi.hpp:446:36: error: too many initializers for 'handlegraph::step_handle_t'
/public/home/nheyer/odgi/src/odgi.hpp:447:35: error: array must be initialized with a brace-enclosed initializer
         step_handle_t last = {0, 0};

This error dosn't occur on my local computer on linux mint

This issue is being caused by the use of GCC 5.5.0_7 and any gcc lower then it, I know it will compile with gcc 9.3+
I think the issue might boil down to nested name spaces, with is not supported by  G++ 14 ( the current flag in the CMakkLists.txt file) and is only supported starting with GCC 7+


ECS progressive deployment preparation

What this PR does / why we need it:

Add preparation for new stages used for ECS progressive deployment (CANARY_ROLLOUT, PRIMARY_ROLLOUT & TRAFFIC_ROUTING)
Update planner for ECS deployment
Remove taskSetDef as a required field in pipe.yaml for ECS deployment.

Which issue(s) this PR fixes:
Fixes #
Does this PR introduce a user-facing change?:

NONE

/approve


refactor(headers): Use header!() macro for ETag header

Change Etag (only the E is capitalized) to ETag as it is written in the relevant RFC.
BREAKING_CHANGE: Etag header field is now ETag header field
Depends on #419

Rebased and build passes with openssl 0.5

Uses normal ssl again.


importlib metadata

remove version and author from {{cookiecutter.project_slug}}/src/{{cookiecutter.module_name}}/__init__.py as this information id better in https://docs.python.org/3/library/importlib.metadata.html

https://github.com/python-poetry/poetry/blob/17c2132517083088449e27c8f41936857739aad8/src/poetry/__version__.py

done in 97de3cd71c367d1eb69bf986600686b11198a075


"Last match!" message when doing searches

Hi,
I've been trying to debug this issue for a while now, hopefully you can help.  When I try to run any of the saved searches, I keep getting the message "Last match!", and going into copy mode with no highlights. Here's an example when doing URL searches and file searches (I would expect there to be hits here):

The same thing happens for regular expression searches.
I don't know what's going on; I've tried this with a mostly empty .tmux.conf file, and also with bash instead of zsh, but nothing worked.
Here's my .tmux.conf. Can you spot anything that would break your plugin?
# remap prefix key
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# splitting panes with | and -
bind | split-window -h
bind - split-window -v

# moving between panes with home row
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# quick window selection
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# quick pane resizing
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

set -g default-terminal "screen-256color"

set -g display-time 1000
set -s escape-time 1
set -g base-index 1
set -g pane-base-index 1
setw -g monitor-activity on
set -g visual-activity on

# bind .tmux.conf reloading
bind r source-file ~/.tmux.conf; display "Reloaded!"

set -g mouse on
set -g default-command "reattach-to-user-namespace -l ${SHELL}"

set -g mode-keys vi

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'jimeh/tmux-themepack'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @themepack 'double/yellow'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

Thanks!

Having the exact same issue, I don't think it has anything to do with settings conflict since reducing .tmux.conf to just loading tpm and copycat doesn't seem to help.

same issue here!

Ping. Any word on this? Just installed the plugin and immediately hit this brick wall.

Still broken for me.

same here

Just installed the plugin and nothing seems to work :( I also see the message "Last match".
I hope to find a solution as the plugin looks really useful on the screencast.

All of these symptoms are probably related due to the tmux 2.4 release with breaking changes; see #109.

I have the same issue using tmux 2.1

Use tmux 2.3 or higher
On Sat, Apr 28, 2018, 10:35 Michael Maier<EMAIL_ADDRESS>wrote:

I have the same issue using tmux 2.1
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tmux-plugins/tmux-copycat/issues/105#issuecomment-385176343,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABEz4ocSBwX19R-vPd9gQs0-M7FRF2PSks5ttHAKgaJpZM4Ljxc2
.

@thalesmello Thanks, works with tmux 2.7 :+1:

I receive the same symptoms as described by others here

upper-right corner, I see [0/0] when entering copy-mode

it doesn't jump and mark to the corresponding line,
and I'm using:  tmux 2.7

Confirmed to work with tmux next-2.9.
Doesn't work at all with tmux 2.3 which is the default right now in Debian stable channel.

I can confirm copycat doesn't work in tmux 2.6-3 (the current version
shipped/maintained with Kubuntu 18.04 LTS).
Downloading and building tmux from scratch (version 2.8 plus
a number of commits, latest 5e2150cf185e89a1) did fix
the problem.


Support IPython when interp is IronPython

currently you can set the interpreter to IronPython and Interactive mode to IPython. However, it doesn't work.
See https://github.com/ipython/ipython/wiki/Frequently-asked-questions#q-can-ipython-run-under-ironpython for the steps. We should integrate these and automatically perform them where possible.
(Migrated from https://pytools.codeplex.com/workitem/1632)

We're closing old issues with no recent activity. If this is still important, please open a new issue.


Slice of a tensor is created on CPU not GPU when dtype=tf.int16

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Google Colab
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: NA
TensorFlow installed from (source or binary): NA
TensorFlow version (use command below): version 2.x
Python version: 3
Bazel version (if compiling from source): NA
GCC/Compiler version (if compiling from source): NA
CUDA/cuDNN version: NA
GPU model and memory: Google Colab GPU
Exact command to reproduce:
https://colab.research.google.com/drive/1gbVxZgaesqxOLuoF-D9yuwOahCNTDcEi

Describe the problem
When slicing a tensor of dtype tf.int16 on GPU, the operation is created on CPU, not GPU. If the tensor is tf.int32, the operation is created on GPU.
Source code / logs
https://colab.research.google.com/drive/1gbVxZgaesqxOLuoF-D9yuwOahCNTDcEi

@NicMaq Slicing operation on gpu does not supported int16  and this is the reason why the operation is not created on GPU.

Thank you for your reply.
Maybe, I would suggest modifying the documentation of tf.slice as it indicates: input: A tensor.
Thank you.


Several typos and spelling. Suggest to increase readability

I have merged this request by reverting back the term classes to the original translation. Please see #163


Implement multi-touch input handling

Implements touch input handling properly with multi-touch support but haven't been used yet. (platform-specific usages will come in separate PRs)
[x] Depends on ppy/osuTK#55

First step onto resolving #1514

@swoolcock Added headless test scene for ensuring correct behaviour.

Closing as splitted into referenced PRs above.


DBeaver installer does not support command-line parameter "/D" as expected

DBeaver - Version 4.2.2 CE
Operating System: Windows 7 / Windows 8.1
When specifying a "/D" command-line parameter when installing DBeaver, it has no effect what so ever. It does not matter if I try the 32-bit installer or the 64-bit installer. They both do as bad.
The links below state that the installer uses NSIS installer. The "/S" parameter for silent install work, but the "/D" parameter has no effect.
DBeaver Forum
SourceForge

Yes, this issue appeared after adding support of installation for current user option.

We going to switch to Windows MSI installer after DBeaver 4.3.
NSIS is so old and poorly supported :(

This issue is still not fixed in DBeaver version 5.1.2 CE.

@pdanie Thank you for the report.
Unfortunately, it is really complicated issue. It was fixed but reverted after some time due to a conflict with another functional.
I will reopen it but it looks like we need help of someone else for this issue.

Ok. The issue popped up since we have trouble running our rebundled version of DBeaver on Windows 7.
If you thinking on rewrite the the insallation, I'm really fond of myself of Inno Setup. We also have a MSI installer, but that does not work as good as Inno Setup.


Is it possible to perform core constraint docking with AutoDock Vina?

Is it possible to fix positions of certain atoms during the docking process? Such as using core constraint in Glide.

Not with vina, but possible with autodock-gpu: https://github.com/ccsb-scripps/AutoDock-GPU/wiki/Anchored-docking


Patch 1

Changes
This pull request simply just adds a notice that FindFirstDescendant is disabled, currently the only way to know this is to find out the hard way.
Checks
By submitting your pull request for review, you agree to the following:

[x] This contribution was created in whole or in part by me, and I have the right to submit it under the terms of this repository's open source licenses.
[x] I understand and agree that this contribution and a record of it are public, maintained indefinitely, and may be redistributed under the terms of this repository's open source licenses.
[x] To the best of my knowledge, all proposed changes are accurate.

Can you update titles of pull requests? The title was overwritten after I accidentally closed and reopened the page.


FB is not define web.js

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

ERROR Error: Uncaught (in promise): ReferenceError: FB is not defined
ReferenceError: FB is not defined
at web.js:22
at new ZoneAwarePromise (zone-evergreen.js:960)
at FacebookLoginWeb. (web.js:21)
at Generator.next ()
at web.js:7
at new ZoneAwarePromise (zone-evergreen.js:960)
at<EMAIL_ADDRESS>(web.js:3)
at FacebookLoginWeb.login (web.js:19)
at LoginPage. (login.page.ts:324)
at Generator.next ()
at resolvePromise (zone-evergreen.js:798)
at zone-evergreen.js:705
at rejected (tslib.es6.js:72)
at ZoneDelegate.invoke (zone-evergreen.js:364)
at Object.onInvoke (core.js:41708)
at ZoneDelegate.invoke (zone-evergreen.js:363)
at Zone.run (zone-evergreen.js:123)
at zone-evergreen.js:857
at ZoneDelegate.invokeTask (zone-evergreen.js:399)
at Object.onInvokeTask (core.js:41686)

Maybe you forgot web configuration.
https://github.com/capacitor-community/facebook-login#web-configuration


Code review

The code base was small enough that I decided to read the whole thing and do a full review.
I have removed the binary from source control so it can be released on the releases page. I have done an example release of my version in my fork.
I did a lot of cleanup and refactoring. The biggest changes are to startup, where I ensure that only one instance can run at a time, and to shutdown, where I implemented the Dispose pattern. I added code to detect the monitor refresh rate so you no longer need to manually set and store a value in the registry.
The only part I am confused about is the loop and the number of times it keeps going. This was refresh / 5 which would loop 12 times by default. I'm not sure under what circumstances these checks are needed. Maybe it could be hard coded to something like 3 to reduce wasted cycles. I changed it to refresh / 10 to cut the number of checks in half. I find that this loop often kicks off when the system is idle and it seems wasteful.
I used Visual Studio 2019.

The keep going loop is essentially a buffer intended to prevent the loop from terminating too early. For higher refresh rates can sometimes have no position changes when first triggered as Windows can take a little time to start its native animation. The /5 was sort of arbitrary though just from testing. I think part of the problem is that the loop counts increase with each task bar present (for multiple monitor setups) and so I had built in some redundancy there.
The better solution would be to have a unique thread for each task bar which was something I hadn't bothered to implement.
I took a stab at it this morning if you want to check it out
https://github.com/mdhiggins/CenterTaskbar/tree/threaded


[IOTA-22] Resolved the conflicts and changed the jar name

This pull request changes the jar name according to the name that is provided in README.md file

@tonyfaustini : I have closed the PR #6 And this PR is generated against the ticket IOTA-22 Please review it, so that we do not face any merge conflicts again. thanks


Project Monitoring Apps don't get created

What kind of request is this (question/bug/enhancement/feature request):
bug
Steps to reproduce (least amount of steps as possible):

Activate cluster monitoring
Activate project monitoring on a project

Result:
Cluster monitoring creates the necessary apps and pods.
Project monitoring claims it is activated but no apps or workloads are being created
Other details that may be helpful:
The cluster has been created with rancher 2.0 and upgraded over time.
We have attempted activating project monitoring since 2.2.4 with the same result.
The rancher log shows no attempt at creating the app.
Environment information
Rancher 2.2.8
Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported): GKE
Machine type (cloud/VM/metal) and specifications (CPU/memory): VMs with 2 vCPU and 7.5GB RAM
Kubernetes version (use kubectl version):

Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.8-gke.10", GitCommit:"f53039cc1e5295eed20969a4f10fb6ad99461e37", GitTreeState:"clean", BuildDate:"2019-06-19T20:48:40Z", GoVersion:"go1.10.8b4", Compiler:"gc", Platform:"linux/amd64"}

Docker version:

Server:
 Version:      17.03.2-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.10.3
 Git commit:   f5ec1e2
 Built:        Tue Jun 18 23:09:23 2019
 OS/Arch:      linux/amd64
 Experimental: false

Please check the log in prometheus operator

The prometheus-operator-monitoring-operator logs seem to only contain
level=info ts=2019-09-29T03:53:11.678833148Z caller=operator.go:970 component=prometheusoperator msg="sync prometheus" key=cattle-prometheus/cluster-monitoring

No changes when turning project monitoring on or off.


Thanks for your great work. But it seems that there are many mismatches in the code.

I'm new to AI algos. So it's a bit difficult for me when the code cannot run successfully, to find the problems and modify them.  Since your work is such a hot choice in Semantic KITTI task, I really see the good if these issues can be fixed.
Basically, I met three biggest problems, all in 'segmentator_3d_asymm_spconv.py'.
First,
x.feature = Func(x.feature)

is an incompatible line. There are many of these lines in the file.
Second, I met an error

ValueError: subm with same indice_key must have same kernel size, expect [1, 3, 3], this layer [3, 1, 3]

I looked through the issues and found that someone else also met this problem. I guess this is because you have uploaded different versions of the algorithm. But I'd appreciate if you could fix this mismatch.
Last, since spconv 1.x is deprecated now, it'll be great to update the spconv methods names.
Generally, this work is very helpful to me. Thanks for your great work!

I do not use the spconv >= 2.x and there is no pretrained model for spconv>=2.x; In my opinion, in spconv>=2.0, some basic definitions are changed so you need fit it with some modifications.


[NOT A ISSUE] Add a select option for selecting a specific frame of a video

or make a option to extract only ONE frame !
thx in advice !

@Felzow47 Done! Added this feature of extracting a specific frame.
(Download the new version)
Just right click on the Extract Button, then select the option Extract specific frame.


Contact

Are you active on some forum or chat platform? Our aims seem to be very similar.
alternatives.md

https://github.com/bkil/freedom-fighters/blob/master/hu/server/palette-installer.md

blog.md
What do you think about twtxt & yarn.social?

https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
https://yarn.social/about.html

email.md

https://web.archive.org/web/20220430135958/rawsontetley.org/proj_inetdxtra.html#smtp

hosting.md
Actually you can use much more space within a browser nowadays through IndexedDB.

https://en.wikipedia.org/wiki/Indexed_Database_API
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#storage_limits

webservers.md

https://web.archive.org/web/20220430135958/rawsontetley.org/proj_inetdxtra.html#www
https://github.com/dtaht/ceropackages-3.10/blob/master/net/inetdxtra/patches/001-strip.patch

Hi @bkil and thanks for your interest.
I checked few links that you provided and found them useful.
The main goal of this project is not to make a privacy oriented product.
Instead I want to make something very cheap, easy to use and popular (!).
Ideally something that you can have already pre-installed on your router or computer.
That means that I going to implement a central server on which users may authorize themselves.
This is a disaster in terms of privacy but makes life easier for average user.
That also means that you can install any tracking scripts like Google Ads.
And complain with local laws as much as possible.

I think we are still on the same page. And who is your team? Where do you conduct your planning discussions, where is your kanban board?

I don't want to ruin your expectations but I don't have any planning right now. And no team. Just few my friends who watching for the project. Only one guy really contributed and helped a lot but he is busy now.
I made public all Kanban boards. They are just cards with ideas and research results:
https://github.com/orgs/yurt-page/projects?type=classic
You can join our Telegram chat
https://t.me/+HX1XP1U9_RQwNTEy
Or just let me know and I can call you in Matrix so we can discuss and share thoughts.

https://matrix.to/#/#yurtpage:matrix.org


Create LICENSE

This would be helpful moving forward.
I'm trying to add your package to conda-forge: https://github.com/conda-forge/staged-recipes/pull/25790

Great! Thanks for your suggestion.


Feature request: support for ports

There's some code already for decoding ETF terms within Rust programs, which I'm hoping to use with Rustler (mostly relegating Rustler to compiling crates for Rust-implemented Erlang ports) in order to implement a port or two for an Elixir app (using this guide as a reference, albeit with Rust instead of Ruby).  Would be nice to have a bit tighter integration on this front, though (in particular, being able to run something like mix rustler.port.new or mix rustler.new --port or something to generate the boilerplate like with NIF crates).
If I or someone else were to implement something like this for Rustler, would a PR be welcome?  Or is this out of scope for Rustler?

Hi @YellowApple,
The scope of Rustler is for writing NIFs in Rust. Ports are not in scope for this library. You can however use something like eetf to encode/decode Erlang's External Term Format in Rust.
Ports just use pipes to communicate with an external program over stdin/stdout.

Alrighty then.  Will Rustler still work in this context just for automating crate building/management?  Or do they have to be tied to a NIF-implementing crate?
Also, thanks for the link to eetf; wasn't coming up in my search engine results, and looks to be a bit nicer than erl_ext (in terms of not having to deal with the prelude and actual term data separately).

The mix compiler should work fine for building port drivers.

@hansihe
By the mix compiler do you mean the code here: https://github.com/hansihe/rustler/blob/master/rustler_mix/lib/mix/tasks/compile.rustler.ex ?
If so, I could look into just modifying that code so that EETF has an equivalent, easy and automatic rust compilation for Elixir projects.
But, before I do that, what do you think of that idea?

@cgregfreeman Yep, that's what I was taking about.
The code shouldn't even require any modification. You just write a crate with the kind of interface erlang expects from a port driver, and add it for compilation. You can then use the output dynamic library as a port driver.

@hansihe
Thank you for the response. I've been struggling with this and I know this isn't a planned feature.
It looks  like the mix compiler has the right options to make a plain port, and not just a port driver.
This may just require an easy way to tell Rustler to compile to binary and copy the binary to the native directory instead of a .so. I've been puzzling in the compiler.rustler.ex trying to figure out where to put the proper flag to enable what looks like a binary compiler target.
  defp make_base_command(:system), do: ["cargo", "rustc"]
  defp make_base_command({:bin, path}), do: [path, "rustc"]

Instead, I edited the cargo.toml of the rust file but the binary doesn't get placed in the native location by default. I was able to get a plain, basic port working with hard-linking the binary to the _build directory:
defmodule PortExample do

  def test() do
    port = Port.open({:spawn, "_build/dev/rustler_crates/portexample/debug/portexample"}, [:binary])
    Port.info(port)

  end

end

I'm unsure if this is an easy fix by placing a flag somewhere or if it requires actually changing the compiler.rustler.ex file.

@cgregfreeman I'm sorry for not responding earlier, I must have missed it.
The reason why the port executable itself is not found in the native location is because the mix compiler is hardcoded to copy files with a .dll or .so extension.
It would be nice to have the compiler be as general as possible, so I suppose we could add an option for this. Do you think that would be worth it?

@hansihe I think so.
The mix compiler you wrote is very handy for keeping the code in the right place. It already compiles binary targets if the .toml file has the [[bin]] name and path added manually, it just needs to copy the compiled binary to the priv/native folder where the .so's also end up.
Then it's up to the user to add their port code if they want or even have separate compiled binaries for whatever purpose.


Fix: quickstart-feature-flag-aspnet-core.md .net 3

Fixing bug reported on Stackoverflow: middleware that refreshes feature flags (and configuration) from Azure App Configuration missing.

@maud-lv : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks for adding it @maud-lv. We need that code for other .NET versions too.

Hi @zhenlan @AlexandraKemperMS
When you're ready, please indicate what action to take with this pull request:

#sign-off
#please-close
#hold-off

Thank you

@Muksvso

Is there a reason we only add this for .NET 3 and leave out .NET 5 and 2?


Multiple signatures per credential are not supported yet

Current implementation has not supported multiple signatures per credential, which is originally supported in Mattr's jsonld-signatures-bbs. It requries more complicated refactoring because our introduced multiple credentials feature changed the internal logic to handle proofs.

Supported in f694eb63723ed93e15b0c4f9504edcfa4d69b0bf


V1.1.2 for 1.18 incompatible with c2me

Mods:
IP1.1.2
fabric api-0.44.0
c2me-fabric-mc1.18.1-0.2.0+alpha.5.108
https://github.com/RelativityMC/C2ME-fabric
Starting a dedicated server with those 3 Mods installed crashes the server on startup
crash-2021-12-21_20.04.40-server.txt

You can disable alternate dimensions to avoid crash for now.

java.lang.NullPointerException: Cannot invoke "net.minecraft.class_2794.method_38276()" because "this.delegate" is null
	at qouteall.imm_ptl.peripheral.alternate_dimension.DelegatedChunkGenerator.method_38276(DelegatedChunkGenerator.java:53)
	at net.minecraft.class_2794.handler$zzj001$onInit(class_2794.java:1598)
	at net.minecraft.class_2794.<init>(class_2794.java:96)
	at net.minecraft.class_2794.<init>(class_2794.java:88)
	at qouteall.imm_ptl.peripheral.alternate_dimension.DelegatedChunkGenerator.<init>(DelegatedChunkGenerator.java:32)
	at qouteall.imm_ptl.peripheral.alternate_dimension.DelegatedChunkGenerator$SpecialNoise.<init>(DelegatedChunkGenerator.java:112)
	at qouteall.imm_ptl.peripheral.alternate_dimension.AlternateDimensions.createSkylandGenerator(AlternateDimensions.java:216)
	at qouteall.imm_ptl.peripheral.alternate_dimension.AlternateDimensions.initializeAlternateDimensions(AlternateDimensions.java:73)
	at qouteall.q_misc_util.api.DimensionAPI.lambda$static$0(DimensionAPI.java:36)
	at net.minecraft.server.MinecraftServer.handler$zll000$onBeforeCreateWorlds(MinecraftServer.java:4752)
	at net.minecraft.server.MinecraftServer.method_3786(MinecraftServer.java)
	at net.minecraft.server.MinecraftServer.method_3735(MinecraftServer.java:327)
	at net.minecraft.class_3176.method_3823(class_3176.java:182)
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:657)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:270)
	at java.base/java.lang.Thread.run(Thread.java:833)

https://github.com/RelativityMC/C2ME-fabric/blob/57a17da56de6be2d537374848ac288ddd7d16ba1/src/main/java/com/ishland/c2me/mixin/fixes/worldgen/threading/MixinChunkGenerator.java#L28

I can make a workaround to avoid the crash. But there may be other incompatibilities

I will go with disabling alternate dimensions for now since im not using them anyway. Ill report back if i notice anything else.

Just wanted to add what I collected: Still crashes after disabling alternate dimensions. The issue on C2ME's tracker also has a comment with a similar crash posted. Will just provide my log in case it helps: https://gist.github.com/copygirl/cfe72faa7ee3334bd1286f80d5313ea0
[14:45:42] [Render thread/ERROR]: Mixin apply for mod c2me failed c2me.mixins.json:notickvd.MixinThreadedAnvilChunkStorage from mod c2me -> net.minecraft.class_3898: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException @At("INVOKE") on net/minecraft/class_3898::redirectSendWatchPacketsGetWorldChunk with priority 1100 cannot inject into net/minecraft/class_3898::method_17241(Lnet/minecraft/class_3222;Lnet/minecraft/class_1923;Lorg/apache/commons/lang3/mutable/MutableObject;ZZ)V merged by qouteall.imm_ptl.core.mixin.common.chunk_sync.MixinChunkMap_C with priority 1100 [PREINJECT Applicator Phase -> c2me.mixins.json:notickvd.MixinThreadedAnvilChunkStorage from mod c2me -> Prepare Injections ->  -> redirect$zkh000$redirectSendWatchPacketsGetWorldChunk(Lnet/minecraft/class_3193;)Lnet/minecraft/class_2818; -> Prepare]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("INVOKE") on net/minecraft/class_3898::redirectSendWatchPacketsGetWorldChunk with priority 1100 cannot inject into net/minecraft/class_3898::method_17241(Lnet/minecraft/class_3222;Lnet/minecraft/class_1923;Lorg/apache/commons/lang3/mutable/MutableObject;ZZ)V merged by qouteall.imm_ptl.core.mixin.common.chunk_sync.MixinChunkMap_C with priority 1100 [PREINJECT Applicator Phase -> c2me.mixins.json:notickvd.MixinThreadedAnvilChunkStorage from mod c2me -> Prepare Injections ->  -> redirect$zkh000$redirectSendWatchPacketsGetWorldChunk(Lnet/minecraft/class_3193;)Lnet/minecraft/class_2818; -> Prepare]
[...]
Caused by: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: @At("INVOKE") on net/minecraft/class_3898::redirectSendWatchPacketsGetWorldChunk with priority 1100 cannot inject into net/minecraft/class_3898::method_17241(Lnet/minecraft/class_3222;Lnet/minecraft/class_1923;Lorg/apache/commons/lang3/mutable/MutableObject;ZZ)V merged by qouteall.imm_ptl.core.mixin.common.chunk_sync.MixinChunkMap_C with priority 1100 [PREINJECT Applicator Phase -> c2me.mixins.json:notickvd.MixinThreadedAnvilChunkStorage from mod c2me -> Prepare Injections ->  -> redirect$zkh000$redirectSendWatchPacketsGetWorldChunk(Lnet/minecraft/class_3193;)Lnet/minecraft/class_2818; -> Prepare]

I might be able to do some basic testing if needed.


New package: tecwindow.SoundTranscriber version 1.2.0

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

/AzurePipelines run

Template: msftbot/requiresApproval/moderator

/AzurePipelines run

Manual Validation ended with:

1:30:13 PM:  > 2023-11-21 13:30:12.312 [CLI ] Package hash verification failed. SHA256 in manifest [6bae5acd447942b94663ae4f7483ddae50a297d9989eef35e6de75081064860f] does not match download [1f2abd00ebe7d273f1ac269904064b7d73726613b510f37675df9eb7f4fbe470]


Stereoscopic image capture at max_resolution fails

I have a Compute Module-based stereoscopic setup with the two V1 cameras.
I'm trying to capture stereoscopic image (sbs) with the maximum sensor resolution and without decimate (i.e. 5184x1944) using PiCamera, and got an error:
"Invalid resolution requested: %r" % (value,)"
The same with the 5120x1936 (height is multiple of 16, width is multiple of 128 for each camera).
But with the raspistill I can successfully capture stereoscopic image with these options. If it is possible to capture such an image with the PiCamera from Python? (excluding running of the raspistill as external program from Python)

The test at https://github.com/waveform80/picamera/blob/master/picamera/camera.py#L2609 wants to account for stereoscopic.

Quick check with disabling this test leads to other errors (in self._enable_camera(), self._camera.enable(), raise PiCameraMMALError and finally "Failed to enable component: Out of resources"). Looks like this max_resolution size test is used in other places, and simple trick I've try is not the way here.

Most likely you'll need to increase max_still_width and max_preview_width (assuming SBS rather than TB stereo mode) at https://github.com/waveform80/picamera/blob/master/picamera/camera.py#L2303-L2307.
Increase the height if using top/bottom, although it probably doesn't make much difference.

Ok, thank you, I will check this!

Well, your advice from https://github.com/waveform80/picamera/issues/608#issuecomment-582952672 works great, if I increase GPU_MEM in config.txt to 256 Mb. No any other code changes needed.
With GPU_MEM 192Mb I get "Out of resources".
Usually I use 128 Mb, and raspistill works fine. But looks like PiCamera needs more.

@6by9 I also have a bunch of other stereoscopic support questions (for example top-bottom is broken, rotation is broken etc). I find a lot of comments in PiCamera documents, that the stereoscopic support is not fully tested, and also that latest 1.13 release was on Feb, 2017.
I can help with the stereoscopic hardware, and also give a description of a found bugs. Is @waveform80 has a time and interest to update stereoscopic support in PiCamera?


Investigate a "copyless" API

When https://github.com/aspnet/KestrelHttpServer/pull/1105 lands in Kestrel, it will be possible to provide a "copyless" (or very low copy) WebSockets API, where we return the buffers provided by Kestrel directly. This will allow for a pull API for websockets (something like var msg = await socket.ReceiveAsync(...)) where we don't have to do any copying into user buffers.
This issue tracks the investigations and work to explore that model.
Things to do:

[ ] Performance measurement tool. We need a way to capture benchmarks and see what (if anything) improves.
[ ] Build the new API and check performance
[ ] ???
[ ] Profit!

Sockets work will subsume this.


Frontend app plan

I'm prioritising the backend stuff for now, but we can start planning the frontend (and someone can start working on it if they please)
I propose we go with Vue/npm due to familiarity and also because Vue is cool 😎
And I imagine the client side API for interacting with the server working like so:
Monster.list().then((monsters) ...
Monster.retrieve(id).then((monster) ...
Monster.create(fields).then((monster) ...
Monster.update(id, fields) or monster.update(fields)

etc.

I want todo this but, would rather have some sort of api down before hand.

I would suggest using blade, and Laravel mix if its feasible, it makes everything so much simpler / less work. Defining routes only once is very refreshing lol..
But as i want to do as little FE as possible, and as much backend as possible (gigiddy), I am not over fussed. 😄


ModuleNotFoundError

I'm getting this error when I tried to run the script for training after building the library :
ModuleNotFoundError: No module named 'dialognlu.models'
Checked the contents of dialognlu library that got installed and found just these files :

init.py
pycache
auto_nlu.py
compression
nlu_components.py
utils

Is there a problem while building the library or Am I doing something wrong here?
Please help.

Hi @tromedlov22
My bad I was testing on editable mode pip install -e .
The problem that I forgot the init.py in some packages.
Now it is fixed eb6bbcea462c52f8ce9e6a99b0f7ae0076a44756
Please, try and let me know to close the issue. pip install .

Yeah the above issue is resolved, but came across this :
File "/usr/local/share/anaconda3/envs/tfn/lib/python3.7/site-packages/dialognlu/nlu_components.py", line 86, in train
max_length = self.text_vectorizer.max_length
AttributeError: 'BERTVectorizer' object has no attribute 'max_length'
Checked BERTVectorizer class and there's no attribute max_length which is being referred to in line 86 of nlu_components.py

Hi @tromedlov22
Yes, it was missing in BERTVectorizer
Fixed now 1e84dd0670d3f22ab07b965723bb4b81c49a7499 and tested
Please, check and let me know.

Hi @tromedlov22  Please, let me know if it worked with you.
Thanks.

Sorry for the delay, will test it out completely this weekend and will close the issue.
Thanks.

Looks good to me for now. Closing the issue. Will raise new issue if I face any.


NPM trying to renew certs that have been removed from the UI?

Hi,
I'm having an issue where NPM, from what I can see in the logs, is trying to renew a whole bunch of certificates in the background even though those certs are no longer in use and don't even appear within the UI.
How do I remove them from the DB so it no longer attempts (and fails) to renew those old certs?
Snippet:
today at 10:08:54Failed to renew certificate npm-7 with error: urn:ietf:params:acme:error:rateLimited :: There were too many requests of a given type :: Error creating new order :: too many failed authorizations recently: see https://letsencrypt.org/docs/rate-limits/
today at 10:08:54Failed to renew certificate npm-8 with error: Some challenges have failed.
today at 10:08:54All renewals failed. The following certificates could not be renewed:
today at 10:08:54  /etc/letsencrypt/live/npm-1/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-10/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-12/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-14/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-2/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-3/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-4/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-5/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-7/fullchain.pem (failure)
today at 10:08:54  /etc/letsencrypt/live/npm-8/fullchain.pem (failure)
today at 10:08:5410 renew failure(s), 0 parse failure(s)
today at 10:08:54
today at 10:08:54    at ChildProcess.exithandler (node:child_process:397:12)
today at 10:08:54    at ChildProcess.emit (node:events:390:28)
today at 10:08:54    at maybeClose (node:internal/child_process:1064:16)
today at 10:08:54    at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5)
today at 10:08:57[1/24/2022] [10:08:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx

Also, I noticed that during the cleanup process, NPM has decided to keep the old certs:
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-10/fullchain3.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-10/privkey3.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-10/cert3.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-10/chain3.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-1/chain4.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-1/fullchain4.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-1/cert4.pem.
today at 10:24:40[cert_cleanup] Keeping /etc/letsencrypt/archive/npm-1/privkey4.pem.

I'm having the same issue here.  Deleted some old Certs in the UI and they are gone, but its still trying to renew them.  Its messing up the renewal of my actual certs since it stops working after a few failures.
How do I remove these certs from the DB?

Manually removing folders associated to the old certs from /config/letsencrypt/live/ and /config/letsencrypt/archive/ (inside the container) should fix the issue.
But I'm not sure why there were not automatically removed when you removed them from NPM...

Were your certificate expired when you removed them?

After removing all LetsEncrypt SSL Certs, had to clear "/config/letsencrypt/archive", "/config/letsencrypt/live" and "/config/letsencrypt/renewel" to get rid of the errors.


test: Split E2E test into different jobs

Thanks for submitting a PR! Please check the boxes below:

[ ] I have run pre-commit to check linting
[ ] I have filled in the "Changes" section below?
[ ] I have filled in the "How did you test this code" section below?
[ ] I have used a Conventional Commit title for this Pull Request

Changes
Tests are now split into:

Segment-part-1
Segment-part-2
Flag
Signup
Invite
Project

Usage for running only Invite and Environment E2E tests with two browsers, notice that you can use lowercased test names:
ENV=local npx cross-env E2E_CONCURRENCY=2 npm run test:devBundle -- invite environment
How did you test this code?
To be tested during Github Actions CI/CD execution
Please DO NOT MERGE

Codecov Report

:exclamation: No coverage uploaded for pull request base (test/e2e-concurrency-plus-seed-e2e-data@f7eb13e). Click here to learn what that means.
Patch has no changes to coverable lines.

Additional details and impacted files
@@                            Coverage Diff                             @@
##             test/e2e-concurrency-plus-seed-e2e-data    #2689   +/-   ##
==========================================================================
  Coverage                                           ?   95.44%
==========================================================================
  Files                                              ?      983
  Lines                                              ?    27590
  Branches                                           ?        0
==========================================================================
  Hits                                               ?    26333
  Misses                                             ?     1257
  Partials                                           ?        0

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


es6-enum and action types

@StephenGrider,
This is not necessarily an issue with the repo. I am thoroughly enjoying the Udemy course. It was money well spent!
Anyways, I am at the point in the weather app where you are talking about setting action types as a constant so you can refer to those types later on in the code to make it easier to manage and produce less bugs: see "Ajax Requests with Axios".
So I thought it would be awesome if es6 had a way to make use of enumerations and sure enough I came across an npm package called es6-enum: https://www.npmjs.com/package/es6-enum
I just wanted your feedback on using this package. In the ReadMe, the author says that he typically uses this package for redux actions types.
Thanks!

Cool package, it really does suit this use case perfectly


Review CPUInfo to extract physical & logical cores

I found on Lscpu a collection of dumps which seems to have CPUInfo in it, I think it might help here.
https://github.com/util-linux/util-linux/tree/master/tests/ts/lscpu/dumps


Do this api support the latest controlnet function--reference only? Seems not

I'm not sure what you mean by reference only.
Did you mean detect function?
r = api.controlnet_detect(images=[img], module='canny')
r.image

Same issue here. I'm wondering whether it supports the controlnet module "reference_only". Thanks!

this function,  I really want to have this feature, it works very well

I'm not sure what you mean by reference only.
Did you mean detect function?
r = api.controlnet_detect(images=[img], module='canny')
r.image

https://github.com/mix1009/sdwebuiapi/issues/83#issuecomment-1581973125
this function, I really want to have this feature, it works very well

I'm not sure what you mean by reference only.
Did you mean detect function?
r = api.controlnet_detect(images=[img], module='canny')
r.image

this function, I really want to have this feature, it works very well


Tons of miscellaneous things

Mostly just parameters that are pretty obvious, but a fair amount of other stuff too
Yes I realise this is a mess

This PR is way too large and unfocused to review properly IMO.

This PR is way too large and unfocused to review properly IMO.

The problem with this one is not only it's too huge; it's predominantly params which tend to get phased out quickly. In addition, the submission time is not nicely chosen as mojang probably will release a new snapshot soon :tm:

The problem with this one is not only it's too huge; it's predominantly params which tend to get phased out quickly. In addition, the submission time is not nicely chosen as mojang probably will release a new snapshot soon :tm:

This PR is way too large and unfocused to review properly IMO.

Reviewers can just take their time with reviews, going over some parts before taking a break. You can keep track of what you've viewed so far with the viewed tickbox.
We aren't gonna get a new snapshot for at least a week, so there's plenty of time. Plus most of the changes are largely inconsequential parameters that only need spelling checked.

This PR is way too large and unfocused to review properly IMO.

Reviewers can just take their time with reviews, going over some parts before taking a break. You can keep track of what you've viewed so far with the viewed tickbox.
We aren't gonna get a new snapshot for at least a week, so there's plenty of time. Plus most of the changes are largely inconsequential parameters that only need spelling checked.


Update template.yml

Testing if I can compile Pico port

And again... I forgot to check the master branch. Please, cancel this push. I wanted to test in my master branch :-D


Swap page

objective
Provide a venue for trading and acquiring $HONEY
Provide a venue for trading in and out of tokens yielded in Honey's farm page
description
Integration of Jupiter SDK to create a dedicated "Swap" page.

Default tokens are USDC - HONEY to route through Honey DAO's USDC/HONEY LP on orca
Customisable slippage

Completed


Running analyze again after navigator pop

Hi, previously i've raise the issue
#41 , and it has been closed
but i don't think the latest version has fixed this issue,
so i create minimal reproduce about my issue, reproduce repo
which after i get the scan result and navigate to result screen, and then pop to preview / scanner screen,
the controller won't analyze the image
or is it impossible to run the analyze image after navigate ?
thanks

Hi, this is because allowDuplicates is false, and i think you are trying to scan the same barcode again after pop().
I will see if i can make a function to reset the lastScanned barcode to null.

well, thank you @juliansteenbakker for the quick response
yes, you right it happen because i'm using same barcode
thanks and this issue can be close now

 if (this.barcode != barcode.rawValue)

well thank you,
it's works :D

Happy to help!


Step 1 Load Balancing

See https://icecube-spno.slack.com/archives/DMLC687FC/p1714082148280449

Let's do the whole thing at once, no need to make a half-update


[CLOSED] Methods for adding alternate data streams should return a stream.

Issue by alphaleonis from Wednesday Jan 07, 2015 at 17:24 GMT
Originally opened as https://github.com/alphaleonis/AlphaFS/issues/28

Currently they accept only a string-array, which is unnecessarily restrictive. A better option would be to have the "AddStream" method return a Stream, and let the user write the data as he/she pleases. It is a "stream" after all.

Comment by alphaleonis from Saturday Jan 10, 2015 at 19:38 GMT

Fixed in #59... well, sort of.

Comment by Yomodo from Thursday Jan 08, 2015 at 15:21 GMT

Great!

Comment by Yomodo from Saturday Jan 10, 2015 at 21:57 GMT

:( With the previous implementation, streams could also be added/removed to directories, are rare feature found on the net, but truly supported using Win32
This is a nifty feature because for example you can now also get the real size used by a folder,
because of alternate data streams.
FindFirstStreamW does not work on directories, that why I didn't use that.

Comment by alphaleonis from Saturday Jan 10, 2015 at 22:12 GMT

Uhm, in my tests these work fine on directories as well. Also adding streams to directories works fine still.
For example:
// E:\Test is a directory
foreach (var stream in File.EnumerateAlternateDataStreams(@"\\?\E:\Test", PathFormat.LongFullPath))
{
   Console.WriteLine("Name: {0}", stream.StreamName);
}

using (FileStream fs = File.Open(@"\\?\E:\Test:myStream", System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None, ExtendedFileAttributes.BackupSemantics, PathFormat.LongFullPath))
{
   fs.WriteByte(24);
}

If you want the other stream information, eg. non-data streams you can get those by using BackupFileStream. So no functionality has in that sense been removed.


mybinder notebook integer-factorization does not work

When trying to run the integer-factorization mybinder notebook, the from Microsoft.Quantum.Samples.IntegerFactorization import FactorSemiprimeInteger in the first cell gives a ModuleNotFoundError: No module named 'Microsoft' error.
To reproduce this error:

Go to: https://aka.ms/try-qsharp
Under Integer factorization, select Q#+ Python to Run in browser; this is the URL: https://hub.gke2.mybinder.org/user/microsoft-quantum-698yo5d6/notebooks/samples/algorithms/integer-factorization/host.py
Execute the first cell.

I'm running this using Edge V102 on Windows 11.
Screenshot is attached.

I can reproduce this when running this sample locally as a Python script.
I could fix that by adding the following lines
qsharp.packages.add("Microsoft.Quantum.Numerics::0.25.218240")
qsharp.reload()

right after import iqsharp. It looks like Python cannot discover the Microsoft.Quantum.Numerics NuGet package when building Q# code? I think Ryan added automatic package load on startup back in fall 2020, which removed the need to do qsharp.packages.add manually.
@cgranade @anjbur Were there any recent changes to the way IQ# discovers NuGet packages that could cause this?

The failure on the first cell should be fixed now with https://github.com/microsoft/Quantum/pull/705.
However, we still won't get a result by running this sample on Binder as is, since host.py assumes it's running from the command line rather than as a Jupyter Notebook, and Binder passes it some arguments that are not recognized, so it throws the following error:
usage: ipykernel_launcher.py [-h] [-n NUMBER] [-t TRIALS] [-u]
ipykernel_launcher.py: error: unrecognized arguments: -f /home/jovyan/.local/share/jupyter/runtime/kernel-8d0b3e96-97eb-4d4e-8cb9-9ed5c0f951fe.json

Thanks for the report! In general, not all of our CLI-style samples have been converted to notebooks yet; will mark this as an enhancement to track that suggestion.


Edit current page fails with: Path does not exist

What happens
Whilst all the other menu options work, when I try the "Edit current page" option

VS Code opens showing the following error:

What I expect to happen
The current page is opened in VSCode without an error
Ideas
It looks like its trying to open an absolute path - /pages/Note.md without including the full path to the graph folder.
Versions
Open in VS Code: v0.0.5
OS: Mac OS 13.4 (22F66)
Logseq: 0.9.8 (0.9.8)
VS Code: 1.78.2 (Universal)

Are you saying this behavior only occurs when the plugin-interval-hints extension is enabled?

😵💫 Apologies - I logged this bug agains the wrong repo!!
https://github.com/rebornix/logseq-open-in-code/issues/7#issuecomment-1575556977

Not a problem. Have a good weekend!


pageserver pg proto: add missing auth checks

Fixes #1858

@hlinnaka Looking closer at the available routes in the pageserver, I don't see an analogous request already there. Perhaps GET /v1/tenant/:tenant_id/config could be added for this purpose?


FullChunkDataPacket Not Found

When doing //set in a large area, I get kicked with this error message in logs.

What version are you using?

I used the lates one from poggit but nvm its already fixed (on github and by myself)

I used the lates one from poggit but nvm its already fixed (on github and
by myself)
On Mon, Jul 6, 2020 at 1:57 AM VixikHD<EMAIL_ADDRESS>wrote:

What version are you using?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/CzechPMDevs/BuilderTools/issues/101#issuecomment-654106592,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/APQKBN45WDSEHS4CBVTYJVTR2GGW3ANCNFSM4OMQH2QQ
.


Persist selected file icon theme to user config (settings.json)

VSCode Version: 1.6.1
OS Version: OS X El Capitan

Steps to Reproduce:

Select a file icon theme
Open settings JSON

Expected:
The file icon theme should appear in the settings JSON.
Actual:
The file icon theme doesn't appear in the settings JSON.

duplicate of #7358


#1467 - Versioned ClientLibs cause WARN log messages on AEM 6.3 (#1467)

Avoids the documented warnings for proxied clientlibs by checking whether the respective clientlib exists using the method HtmlLibraryManage#getLibraries() before loading the HtmlLibrary as before.

2/5 travis builds failed due to problems connecting to a maven repository. So the failure does not seem to be a reflection of this PR but rather an infrastructure/load problem at travis.
Is it possible to re-run travis? If yes, how?

Hey @jsedding . How will this fix the problem?
See the issue I once created a while back: https://github.com/Adobe-Consulting-Services/acs-aem-commons/issues/1216

Hey @royteeuwen - it fixes the issue by checking if the library is available under the calculated path before actually requesting it. The check is done using HtmlLibraryManage#getLibraries(), which returns a map of ClientLibrary instances. These seem to be the more internal representation of a HtmlLibrary but do refer to the same node structures.
So in short:

check if the proxied library exists using getLibraries().get(path)
only if it exists, call HtmlLibraryManager#getLibrary(type, path), which then doesn't log a warning

Hey @jsedding ,
To my understanding, it would still log the error when the proxied clientlib is first looked up in /apps but is actually in /libs?

@jsedding this looks like a very elegant solution. I've retriggered the travis build.
One (lazy) question - is there any (significant) performance impact of this change?

FWIW, it turns out that my gut feeling was wrong. I did some simple Apache Bench tests calling /sites.html/content, which (on my development machine) take 80-100ms (ab -A admin:admin -n1000 -c5 http://localhost:4502/sites.html/content). After my changes, it's about 2x that.
I will update the PR with a cache in order to mitigate the slowdown.

@jsedding does it help to only call getLibraries() once, i.e. outside of the search path loop. That would be simpler than a cache.

@justinedelson not so much, because the search paths loop only has two iterations (in a standard setup). So the cost would be cut in half. Now the rewriter may rewrite e.g. 10 clientlibs per rendered HTML page, thus incurring the cost of copying the map 10 instead of 20 times.
With the previous solution the cost of copying the map is never incurred, thus we would still have a significant overhead. With a cache, we would get (almost) on par with the previous solution. For a system with no changes to clientlibs (i.e. normal publish) the cost would be incurred once.
Of course cache invalidation increases complexity somewhat. So there's a trade off.

Thanks for merging and you're welcome for the fix!


[docs] Fix the type of the second argument of 'createMuiTheme' function

This PR aims to fix the type of the second argument of the createMuiTheme function which currently is marked as Array in the documentation.
After following the discussion in the related ticket I've changed the type to Object[].
Fixes #21781
Disclaimer: This is my first PR so if I didn't do something the right way please point it out and I will fix it.

[x] I have followed (at least) the PR section of the contributing guide.

@DanailH Much appreciated, thanks!


Fix Guava compatibility issues and flaky tests

Replace usage of deprecated c.g.c.n.HostAndPort.getHostText with HostAndPort.getHost (fix #638)
Fix flaky tests: use nanoseconds instead of milliseconds
Use login.newrelic.com because rpm.newrelic.com requires authentication now
Replace msn.com with msn.com/en-us/ to avoid redirection

Thanks, @valfirst! Very good improvements here. I split this PR into a couple different PRs and cherry-picked some of your commits (#666, #668, #669). I went a step further with the legacy HarTest fixes and simply removed those tests completely; having tests that rely on third-party websites is extremely brittle.
Since the essence of this PR has now been implemented in the above-mentioned PRs, I'll close this one.
Thanks again for this! I'll get a release out with the guava fixes very soon.