Value conversions for types that are not mapped by default can result in client-eval for simple equality to parameter or constanrt

Describe what is not working as expected.
If I have a dictionary that is stored in sql as a json object I am able to store and retrieve it, but when I try to check the equivilance of two empty dictionaries in a where query it will do so locally
Steps to reproduce
Include a complete code listing (or project/solution) that we can run to reproduce the issue.
Partial code listings, or multiple fragments of code, will slow down our response or cause us to push the issue back to you to provide code to reproduce the issue.
protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<SimpleCounter>().ToTable("TestCounters");
            modelBuilder.Entity<SimpleCounter>().HasKey(c => c.CounterId);
            modelBuilder.Entity<SimpleCounter>().HasAlternateKey(c => new { c.StyleKey, c.IsTest, c.Discriminator });
            modelBuilder.Entity<SimpleCounter>().Property(c => c.Discriminator).HasConversion(
                d => JsonConvert.SerializeObject(d),
                json => JsonConvert.DeserializeObject<Dictionary<string, string>>(json));
}

public class SimpleCounter
    {
        public Guid CounterId { get; set; } = Guid.NewGuid();
        public string StyleKey { get; set; }
        public bool IsTest { get; set; }
        public IDictionary<string, string> Discriminator { get; set; } = new Dictionary<string, string>();
        public long? LastUsed { get; set; }
    }

Tests
[Fact] //fails
        public async Task AbleToRetriveCounter()
        {
            using (var con = new SqliteConnection("DataSource=:memory:"))
            {
                await con.OpenAsync();
                using (var db = new SequanceDB(new DbContextOptionsBuilder<SequanceDB>().UseSqlite(con).Options))
                {
                    await db.Database.EnsureCreatedAsync();
                    db.Add(new SimpleCounter() { StyleKey = "Swag" });
                    await db.SaveChangesAsync();

                }
                using (var db = new SequanceDB(new DbContextOptionsBuilder<SequanceDB>().UseSqlite(con).UseLoggerFactory(new LoggerFactory(new[] {
                    new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
                })).Options))
                {
                    Assert.NotNull(await db.Set<SimpleCounter>().
                 Where(c => c.StyleKey == "Swag" &&
                 c.IsTest == false)
                 .FirstOrDefaultAsync());
                    Assert.NotNull(await db.Set<SimpleCounter>().
                 Where(c => c.StyleKey == "Swag" &&
                 c.IsTest == false &&
                 c.Discriminator == new Dictionary<string,string>())
                 .FirstOrDefaultAsync());
                }
            }
        }

        [Fact] //passes
        public async Task AbleToRetriveCounterIgnoreDiscrim()
        {
            using (var con = new SqliteConnection("DataSource=:memory:"))
            {
                await con.OpenAsync();
                using (var db = new SequanceDB(new DbContextOptionsBuilder<SequanceDB>().UseSqlite(con).Options))
                {
                    await db.Database.EnsureCreatedAsync();
                    db.Add(new SimpleCounter() { StyleKey = "Swag" });
                    await db.SaveChangesAsync();

                }
                using (var db = new SequanceDB(new DbContextOptionsBuilder<SequanceDB>().UseSqlite(con).UseLoggerFactory(new LoggerFactory(new[] {
                    new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
                })).Options))
                {
                    Assert.NotNull(await db.Set<SimpleCounter>().
                 Where(c => c.StyleKey == "Swag" &&
                 c.IsTest == false)
                 .FirstOrDefaultAsync());
                }
            }
        }

Further technical details
EF Core version: 2.1.0-rc1-final
Database Provider: Microsoft.EntityFrameworkCore.Sqlite)
Operating system: Win 10
IDE: Visual Studio 2017 15.7.1

The reason why I would expect this is because I can add a "store" only property to the counter class to get the desired server query
modelBuilder.Entity<SimpleCounter>().ToTable("TestCounters");
            modelBuilder.Entity<SimpleCounter>().HasKey(c => c.CounterId);
            modelBuilder.Entity<SimpleCounter>().HasAlternateKey(c => new { c.StyleKey, c.IsTest, c.Discriminator });
            modelBuilder.Entity<SimpleCounter>().Ignore(c => c.Discriminator);
            modelBuilder.Entity<SimpleCounter>().Property("DiscriminatorJson").HasColumnName(nameof(SimpleCounter.Discriminator));

public class SimpleCounter
    {
        public Guid CounterId { get; set; } = Guid.NewGuid();
        public string StyleKey { get; set; }
        public bool IsTest { get; set; }
        public IDictionary<string, string> Discriminator { get; set; } = new Dictionary<string, string>();
        private string DiscriminatorJson
        {
            get => JsonConvert.SerializeObject(Discriminator);
            set => Discriminator = JsonConvert.DeserializeObject<Dictionary<string, string>>(value);
        }
        public long? LastUsed { get; set; }
    }

@ajcvickers @smitpatel to investigate the feasibility of a patch.

I think this may have to introduced as a new extension function, to avoid having == change its function in certain contexts
c.Discriminator.StoreEquals(new Dictionary<string,string>())

StoreEquals<T>(T this a, T b)

Dependent on #4978

Any workaround for this? Besides not using value conversions.

Adding my +1, it would be very nice to have this one!

I have an interesting case and hopefully a workaround for some people. Using netcore2.2 and EntityFrameworkCore v2.2.0.
I have a "Text" class, which is simply a non-nullable string type (see https://andrewlock.net/using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-3/):
    public readonly struct Text
    {
        public string Value { get; }

        public Text(string value)
        {
            Value = value ?? ""; //Impose some constraint on entity types with this property
        }

        public static implicit operator Text(string value) => new Text(value);

        public static implicit operator string(Text value) => value.Value;
    }

So we use this in an Entity type and add a ValueConverter:
    public class User
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Int64 Id { get; set; }
        public string Email { get; set; } //stored as a string
        public Text UserName { get; set; } //stored as a string, but mapped to Text with a ValueConverter
   }

   protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
        modelBuilder.Entity<User>()
        .Property<Text>(x => x.UserName)
        .HasConversion(
                new ValueConverter<Text, string>(
                    t => t.Value,
                    s => new Text(s)
                ));
        );
   }

I want this to be evaluated server-side without having to load all the UserName text values from the DB just to convert them into the CLR type. 'Text' has user-defined implicit operators so casts to and from System.String work transparently. The following query complies no-problem:
            string username =<EMAIL_ADDRESS>            var user = users.Where(x =>
                x.UserName == username
                || x.Email == username)
                .FirstOrDefault();

However, when I execute the query, I get the exception "Invalid cast from 'System.String' to 'Text'." (the same problem occurs if I use an explicit conversion too):
      System.InvalidCastException: Invalid cast from 'System.String' to 'Text'.
         at System.Convert.DefaultToType(IConvertible value, Type targetType, IF
ormatProvider provider)
         at Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter
`2.Sanitize[T](Object value)
         at Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter
`2.<>c__DisplayClass3_0`2.<SanitizeConverter>b__0(Object v)
         at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.CreatePa
rameter(DbCommand command, String name, Object value, Nullable`1 nullable)
         at Microsoft.EntityFrameworkCore.Storage.Internal.TypeMappedRelationalP
arameter.AddDbParameter(DbCommand command, Object value)
         at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalParameterBa
se.AddDbParameter(DbCommand command, IReadOnlyDictionary`2 parameterValues)
         at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Cre
ateCommand(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValu
es)
         at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Exe
cute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyD
ictionary`2 parameterValues)
         at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Exe
cuteReader(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValu
es)
         at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.En
umerator.BufferlessMoveNext(DbContext _, Boolean buffer)
         at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerEx
ecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 v
erifySucceeded)
         at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.En
umerator.MoveNext()

After a few days of hair-pulling and confusion, the problem line seems to be:
https://github.com/aspnet/EntityFrameworkCore/blob/master/src/EFCore/Storage/ValueConversion/ValueConverter`.cs#L53
The call to Convert.ChangeType(value, unwrappedType) does NOT use the user defined conversion operators, but instead blows up when there's no builtin primitive or reference conversion between the types. Since you can't inherit from the sealed string type, Convert.ChangeType can't handle this situation.
That seems like a big limitation to the current ValueConverter implementation...
BUT, after a few more days of hair-pulling and confusion I found a workaround! Override the non-generic version of ValueConverter:
        public class TextConverter : ValueConverter<Text, string>
        {
            static Expression<Func<Text, string>> to = v => v.Value;
            static Expression<Func<string, Text>> from => v => new Text(v);

            public TextConverter() : base(to, from) { }

            public override Func<dynamic, object> ConvertFromProvider => v => new Text(v);
            public override Func<dynamic, object> ConvertToProvider => v => v.ToString(); //Important: this should be v => v.Value, but sometimes a <string> is passed instead of <Text>

            public override Type ModelClrType => typeof(Text);
            public override Type ProviderClrType => typeof(string);

            public override Expression<Func<string, Text>> ConvertFromProviderExpression => from;
            public override Expression<Func<Text, string>> ConvertToProviderExpression => to;
        }

Thankfully, this class has lots of override hooks so we can force the query provider to a plain, user-defined conversion expression! This works AND the conversion is entirely server-side (at least in my simple case of null handling)!
There is one oddity, which is that "ConvertToProvider" seems to be called both for "To" and "From" operations (i.e. when querying a string is passed in and when saving a Text is passed in)... This seems like it could be a bug to me, but I was able to get around it with some sneaky dynamic use and overriding .ToString().
Hope this helps someone!

Hey @badcommandorfilename  I gave it a try but still getting the same exception when filtering a query with a custom type because I've disabled client evaluation of queries.
I'm using a type that wraps an int, and implementing a value converter I'm able to do:

Insert
Delete
Read (read a list or filter by other properties)

But the filter using the custom type is still not accepted by the query pipeline and an exception is thrown. Not sure about update but I suppose it works.
I've also noted something strange, using the Generic HasConversion<MyValueConvertType>() doesn't work and throws exception about the incorrect mapping during the call to Database.EnsureCreated(), while passing an instance to the non generic version of the method works i.e. HasConversion(new MyValueConvertType()).
So unfortunately it's not a complete workaround, looking forward to have this feature implemented for the very same reason you do (given the primitive obsession post link)

If you can't wait till the next major EF Core release, maybe this approach might work for you:
https://andrewlock.net/strongly-typed-ids-in-ef-core-using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-4/

@thijsalofs Thankl you for the link, will give this a try!

@thijsalofs Indeed, it works!
I took Andrew Lock's approach and aligned it to the API conventions of EF Core.
With this I was able to even remove all builder.Property(x => x.SomeCustomId).HasConversion(...) calls.
Here's the gist with the code and how to use it:
https://gist.github.com/warappa/b81ec5c8e99c0314f5c9385b22f37c0e

Register the new ValueConverterSelector while registering a DbContext:

dbContextOptionBuilder.UseGlobalValueConverterSelector();

Register a conversion for a custom value object:

modelBuilder.Owned<CustomId>()
.HasConversion(x => x.Value, x => new CustomId(x));

@warappa looks great, kudos for the solution! I noticed that the comments to the original article mention issues with using it with ValueGeneratedOnAdd(). Did you manage to help it with your modification by any chance?

@Leon99 I just tested it. Out-of-the-box (incl. the custom ValueConverterSelector) it doesn't work: EF doesn't know about CustomId. But EF supports custom ValueGenerators.
With a custom ValueGenerator it works:
Entity configuration:
builder.Property(x => x.Id)
    .HasConversion(x => x.Value, x => CustomId.Create(x)).ValueGeneratedOnAdd().HasValueGenerator<CustomIdValueGenerator>();

Custom ValueGenerator:
internal class CustomIdValueGenerator : ValueGenerator<CustomId>
{
    public override CustomId Next(EntityEntry entry) => CustomId.Create(Guid.NewGuid()); // or however it is generated
    public override bool GeneratesTemporaryValues => false;
}

I think a generic solution is possible, but as smitpatel suspects the underlying problem is fixed, I didn't went this far ;)

I'm probably just missing something, but it's not clear to me what has actually been resolved here.  The pull request that closed this issue only adds tests, it doesn't show any changes to core code.
There is a claim that this is a dupe of #10861, but that is still open.
What is actually supported now with the close of this issue?

@davisnw - The bug report filed in first post has been fixed in 3.0 release. The attached PR only added test for regression. The fix has been part of larger query pipeline rewrite.
Nowhere this issue has been claimed as duplicate of #10861 in this issue. So that issue being open is irrelevant.


files.copy returns 414 for own storage

Expected Behaviour
I want to copy a file from one folder to another using files.copy and my own storage account (azure)
Actual Behaviour
files works as expected with own credentials. but when I try to copy a file from folderA to folderB I just get an error as follow
[FilesLib:ERROR_INTERNAL] unknown error response from provider with status: 414
Reproduce Scenario (including but not limited to)
here is the sample code I try to run (the source file exists)
await files.copy('folderA/myFile.json','folderB/')
Steps to Reproduce

init files using own azure storage account
try to copy a file

Platform and Version
using "@adobe/aio-lib-files": "^1.2.3"
more info from "aio info":
 System:     OS: Windows 10 10.0.19041     CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz     Memory: 8.14 GB / 15.84 GB   Binaries:     Node: 12.16.2     Yarn: 1.22.0     npm: 6.14.4   Virtualization:     Docker: 19.03.13   npmGlobalPackages:     @adobe/aio-cli: Not Found   CLI plugins:     @adobe/aio-cli 5.0.1 (core)     @adobe/aio-cli-plugin-app 4.0.0 (user)     @adobe/aio-cli-plugin-auth 2.4.0 (core)     @adobe/aio-cli-plugin-certificate 0.2.0 (core)     @adobe/aio-cli-plugin-config 2.3.0 (core)     @adobe/aio-cli-plugin-console 3.2.0 (core)     @adobe/aio-cli-plugin-events 1.1.0 (core)     @adobe/aio-cli-plugin-info 1.1.1 (core)     @adobe/aio-cli-plugin-runtime 3.0.0 (core)
Sample Code that illustrates the problem
await files.copy('folderA/myFile.json','folderB/')
Logs taken while reproducing problem
error: [FilesLib:ERROR_INTERNAL] unknown error response from provider with status: 414

issue solved, the error was sitting in front of the computer ...

@UrsBoller , you're getting faster than us to solve issues! ;-)


ULTRA README.md Fix

Changed the values in the training default configuration to match the new default values.
Also changed the paths to train.py and evaluate.py to match their current directory location.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


LS Server options for Pylance, Jedi, ...

Getting server launch options for each LS extension or module.

Currently we have API exposed from Pylance extension that we use for pylance. We have plans to move Jedi into its own extension. This will allow us to do something similar there and improve configurability of Jedi.


[$250] Actionable whisper - Whisper options are interactable when the expense is deleted offline

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

Issue found when validating #43020
Version Number: 1.4.82-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause internal team
Slack conversation:
Action Performed:

Go to staging.new.expensify.com
Go offline.
Go to Self DM.
Track an expense.
Go to transaction thread.
Delete the expense.
Back in 1:1 DM, click on any option in actionable whisper.

Expected Result:
The actionable whisper should not be interactable when the expense is deleted offline.
Actual Result:
The actionable whisper is interactable when the expense is deleted offline and the options (except Nothing for now) lead to not here page.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
https://github.com/Expensify/App/assets/38435837/280f95b3-4f2a-4c37-b760-c4d0647535ea

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0102bf6b299104a911
Upwork Job ID:<PHONE_NUMBER>700613798
Last Price Increase: 2024-06-14

Issue OwnerCurrent Issue Owner: @rojiphil

@CortneyOfstad FYI I haven't added the External label as I wasn't 100% sure about this issue. Please take a look and add the label if you agree it's a bug and can be handled by external contributors

We think that this bug might be related to #vip-vsb

Proposal
Please re-state the problem that we are trying to solve in this issue.

The actionable whisper is interactable when the expense is deleted offline and the options (except Nothing for now) lead to not here page.

What is the root cause of that problem?

When online, after delete track expense, API DeleteMoneyRequest return the OnyxData:

{
    "html": "What would you like to do with this expense?",
    "resolution": "nothing",
}

With this, the whisper options are not displayed because we have a logic:
https://github.com/Expensify/App/blob/75c104bfe009ef937bcd129a35bb5a2e52f4339d/src/pages/home/report/ReportActionItem.tsx#L930-L933
It works as expected in online, but in offline, because when deleting a track expense, we do not set the optimistic data "resolution": "nothing" to the action whisper, that leads to the current behavior, where the whisper options are still displayed.

What changes do you think we should make in order to solve the problem?

In general, we need to optimistically set the "resolution": "nothing" to the whisper action when deleting expense. And restore that data in case the API is failed.

What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.

The actionable whisper is interactable when the expense is deleted offline and the options (except Nothing for now) lead to not here page.

What is the root cause of that problem?

When online, after delete track expense, API DeleteMoneyRequest return the OnyxData:

{
    "html": "What would you like to do with this expense?",
    "resolution": "nothing",
}

With this, the whisper options are not displayed because we have a logic:
https://github.com/Expensify/App/blob/75c104bfe009ef937bcd129a35bb5a2e52f4339d/src/pages/home/report/ReportActionItem.tsx#L930-L933
It works as expected in online, but in offline, because when deleting a track expense, we do not set the optimistic data "resolution": "nothing" to the action whisper, that leads to the current behavior, where the whisper options are still displayed.

What changes do you think we should make in order to solve the problem?

In general, we need to optimistically set the "resolution": "nothing" to the whisper action when deleting expense. And restore that data in case the API is failed.

To do it, in this logic:
https://github.com/Expensify/App/blob/75c104bfe009ef937bcd129a35bb5a2e52f4339d/src/libs/actions/IOU.ts#L5557
we can call getDeleteTrackExpenseInformation with actionableWhisperReportActionID param is the actionableWhisperReportActionID  of the deleted transaction and resolution param is 'nothing'.

What alternative solutions did you explore? (Optional)

I updated the solution to add more detail about the implementation

I added the alternative solution

@rojiphil can you review the proposals from @truph01 by EOD? Thank you!

Thanks for your proposals.
@Krishna2323 proposed to disable the buttons of the whisper action.
Whereas @truph01 proposed to prevent displaying the whisper action which goes in sync with online behavior. The main solution of optimistically setting the "resolution": "nothing" to the whisper action LGTM.
🎀👀🎀 C+ reviewed

@jasperhuangg could you please help me triage this issue? I'm not sure what is the expected behavior here.

@jasperhuangg When we call API DeleteMoneyRequest, BE returns  "resolution": "nothing" for the whisper action. So we also need to add it to optimistic data, right? Currently, we don't and it does not follow our Offline UX Patterns.

Updated comment

@truph01 ah thanks for that context, I wasn't aware of that. If for some reason the API command fails then we should just be sure to also set failure data. Let's move forward with your proposal.

@rojiphil PR https://github.com/Expensify/App/pull/43977 is ready

PR is actively being reviewed!

Has been committed to main, just waiting on staging and production!

So the title is incorrect and this needs to be paid.
@rojiphil can you please complete the checklist by EOD? Thank you and sorry for the short notice!

[x]  [@rojiphil] The PR that introduced the bug has been identified. Link to the PR: Offending PR
[x]  [@rojiphil] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: Added comment
[x]  [@rojiphil] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: Not Required. Existing checklist is good enough to capture such issues.
[x]  [@rojiphil] Determine if we should create a regression test for this bug. :  Since this feature was not implemented before, we can add the test case to the existing list of test cases for this track expense feature.
[x]  [@rojiphil] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Test Steps
1	Go offline.
2	Navigate to Self DM.
3	Track an expense.
4	Go to transaction thread.
5	Delete the expense.
6	Verify that the actionable whisper is not displayed.

can you please complete the checklist by EOD?

@CortneyOfstad Checklist is done.

Payment Summary
@rojiphil — paid $250 via Upwork
@truph01 — paid $250 via Upwork
Regression Test
https://github.com/Expensify/Expensify/issues/414055


Envoy ref update

Updated envoy reference from Thales fork to envoy mainline.
Refactored WORKSPACE

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: nickrmc83
To complete the pull request process, please assign
You can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM


Dynamic configuration is not always rendered

Adding value props works at deployment environment

Thanks @paigekim29! This looks good, but for my own curiosity, can you explain why this fixes the problem? We've noticed this happening too, but I don't know enough about React to understand what was going wrong.


Add link to this library on xrpl.org (once 1.0 is published)

We should think more about where a link could go. Possibly as another section on this page: https://xrpl.org/references.html

Closing this for now. A more unified comms approach is being considered.

Closing this for now. A more unified comms approach is being considered.


Strange thing when parsing

I am writing a parser (for mongodb driver) that will parse the incoming data from a connection but then I hit a strange thing (bug?) that it won't consume all the available data from the source.
Suppose the incoming data is "05,00,00,00,01,05,00,00,00,02,05,00,00,00,03" (bytes in hex)
Actually, such data comprises of three individual message:
-05,00,00,00,01
-05,00,00,00,02
-05,00,00,00,03
For each message the first four bytes is a little endian int32 indicating the length of the message, so all three of them are 05,00,00,00 which is 5.
The remaining bytes are just the payload.
At the end of the post is a reproducible example on nodejs. The output such program is
progress: 05,00,00,00,01,05,00,00,00,02,05,00,00,00,03
read    : 05,00,00,00,01
parsed  : 05,00,00,00,01
progress: 05,00,00,00,02,05,00,00,00,03
read    : 05,00,00,00,02
parsed  : 05,00,00,00,02

but it is expected that it should parse the third message as well: (but it didn't)
progress: 05,00,00,00,03
read    : 05,00,00,00,03
parsed  : 05,00,00,00,03

I tried to use a Source of Bytes or BytesInput and in such cases all 3 messages are parsed correctly.
So I am not sure if it is my problem not writing a "correct" parser or it should be a bug of the library.
package;

import haxe.ds.Option;
import haxe.io.Bytes;
import haxe.io.BytesInput;
import haxe.io.BytesBuffer;
import tink.io.StreamParser;
import tink.io.Buffer;
import tink.io.Source;
import tink.io.Worker;
import tink.tcp.Server;
import tink.tcp.Connection;
import Main.*;

using tink.CoreApi;

class Main
{
	public static function main()
	{
		var s = "05,00,00,00,01,05,00,00,00,02,05,00,00,00,03";
		var source:Source = hexToBytes(s);

		Server.bind(13579).handle(function(o) switch o {
			case Success(server):
				server.connected.handle(function(connection) {
					source.pipeTo(connection.sink).handle(function() {});
				});

				Connection.tryEstablish(13579 #if !nodejs ,Worker.get(), Worker.get() #end).handle(function(o) switch o {
					case Success(d):
						d.source.parseStream(new Parser()).forEach(function(bytes){
							trace('parsed  : ' + printBytes(bytes, 0, bytes.length));
							return true;
						});
					case Failure(err):
						trace(err);
				});

			case Failure(err):
				trace(err);
		});
	}

	static function hexToBytes(str:String) {
		var s = str.split(',');
		var bytes = Bytes.alloc(s.length);
		for(i in 0...s.length) bytes.set(i, Std.parseInt('0x${s[i]}'));
		return bytes;
	}

	public static function printBytes(bytes:Bytes, start:Int, len:Int) {
		return [for(i in start...start+len) StringTools.hex(bytes.get(i), 2)].join(",");
	}
}

class Parser implements StreamParser<Bytes> {

	// the length of the current message
	var length = 0;
	var result:Option<Bytes>;
	var out:BytesBuffer;

	public function new() {

	}

	public function minSize()
		return 4;

	public function eof():Outcome<Bytes, Error> {
		trace('eof');
		return Success(null); // TODO: will this ever happen for a connection's source?
	}

	public function progress(buffer:Buffer):Outcome<Option<Bytes>, Error> {
		buffer.writeTo(this);
		return Success(result);
	}

	function writeBytes(bytes:Bytes, start:Int, len:Int) {
		trace('progress: ' + printBytes(bytes, start, len));
		if(length == 0) {
			result = None;
			length = bytes.getInt32(start);
			out = new BytesBuffer();
		}

		inline function min(a:Int, b:Int) return a > b ? b : a;

		// don't read more than needed
		var readLen = min(length - out.length, len);
		trace('read    : ' + printBytes(bytes, start, readLen));
		out.addBytes(bytes, start, readLen);
		if(out.length == length) {
			result = Some(out.getBytes());
			length = 0;
		}
		return readLen;
	}

}

Another issue is about tink_streams I believe.
I expect the stream stop looping after parsing 3 times, but on neko the stream loops indefinitely.
progress: 05,00,00,00,01,05,00,00,00,02,05,00,00,00,03
read    : 05,00,00,00,01
parsed  : 05,00,00,00,01
progress: 05,00,00,00,02,05,00,00,00,03
read    : 05,00,00,00,02
parsed  : 05,00,00,00,02
progress: 05,00,00,00,03
read    : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
parsed  : 05,00,00,00,03
....(indefinitely)

This is great news (the mongodb driver). Will try to fix it later this day.

I hope I can finish it. The mongodb spec seems huge.

When working with websocket I hit this same wall again.
Btw I think I can move the mongo protocol to the new protocol lib too

Investigated a bit and found that the problems lies around how flush is repeated in a Pipe here

Ok, the problem is like so:
Taking the example in the first post in this thread, the total incoming data has 15 bytes.

first flush(repeat = 1) is called: 5 bytes is consumed by the parser
then flush(repeat - 1) is called, because repeat > 0, 5 more bytes is consumed by the parser
but then it doesn't flush anymore, so the parser never has the chance to consume the last 5 bytes.

The logic is a bit complex here and I don't have a whole picture so I am afraid of attempting for a fix.


Ch configure postgresql 159054006

@Duncanian please pull the new changes in develop to your branch. The test that postgres configuration is working as expected.


Vercel production invalid password error

Issue:
Creating a Link in production on Vercel gives an invalid password error.
It works in the development environment but not in production.
It needs to be fixed as soon as possible.

Nevermind. It actually works. I don't know what the problem was. The ENV Variable probably didn't load properly or fast enough to test.


Simplify translation of call 0/jmp 0/call 5/jmp 5

Proposed changes:

I removed the push ax and pop ax surrounding each system call translated from call 5/jmp 5.  I believe this is more correct: some CP/M (and MS-DOS 1.x) syscalls return status codes in the a (or al) register, and push ax ... pop ax will destroy these.
There should be no need to set cl = dl = 0 when exiting the program via int 0x21, ah = 0x4c.  The only parameter the syscall accepts is an exit status, which will come from al.

(An alternative might be to use int 0x20 here, which will work on MS-DOS < 2.  Yet another alternative might be to simply leave call 0 and jmp 0 as-is.)

Thank you!

Hello --
I think the push ax/pop ax came from DRI's tool and probably doesn't make much sense for MS-DOS.
What do you think about leaving jmp and call to 0000h as-is? That should work for all MS-DOS and allow us to de-special case 0000h entirely, which would be nice.

Hello @ibara,

I think the push ax/pop ax came from DRI's tool and probably doesn't make much sense for MS-DOS.

Thanks for the information.

What do you think about leaving jmp and call to 0000h as-is? That should work for all MS-DOS and allow us to de-special case 0000h entirely, which would be nice.

Leaving jmp 0 and call 0 as-is should Just Work on all versions of MS-DOS (including 1.x) — as long as the cs register points to the Program Segment Prefix.
PSP:0 will always point to an int 0x20 instruction.  int 0x20 wil terminate the program as long as cs = PSP.
For .com files, cs = PSP at startup always.  For .exe files though — needed for small memory model support — this will need to be specially ensured.
Thank you!

OK. Let's stick with what you have for now. We can revisit the MS-DOS < 2 question later.

@ibara : OK, thank you!


Ember.keys is deprecated in favor of Object.keys

https://github.com/emberjs/ember.js/pull/11459 marks Ember.keys for deprecation in favor of Object.keys.

@rwjblue done


Some readme edits

(1) just using pygaggle, in which case pip is sufficient, and (2) developing/evaluating, in which we need to clone the entire repo

@rodrigonogueira4 @lintool do you guys think this helps distinguish between the two?

(1) just using pygaggle, in which case pip is sufficient, and (2) developing/evaluating, in which we need to clone the entire repo

@rodrigonogueira4 @lintool do you guys think this helps distinguish between the two?

I think the installation instructions should be kept the same as before, i.e., pip install pygaggle, install  torch, Download the index, etc...
Then, inside the section "## Running rerankers on CovidQA", we add the following instruction: "Before running these evaluations, you need to clone this repo git clone ...".

Ah okay, I guess those are needed even if you don't intend to run the evaluations. Sorry I have no clue about this...Will change


Add support for omitting line breaks.

Omitting line breaks has no effect on browsers, and helps save precious few bytes where possible. This pull request adds setLineBreaks function which allows developers to specify whether they want line breaks included or not. By default line breaks are included, which is current behavior of the parser.
Line breaks are removed only after closing tags and in few other place where they shouldn't create any problem. pre, tt and code tags and their content are unaffected.

I do not see any value in this. Saving "precious few bytes" is micro optimization which is unneeded. It also adds an ambigous method to the class as it can be easily confused with setBreaksEnabled.

Function name can easily be changed. Micro-optimization argument is however inaccurate. While for a single parsing one might save few to a hundred bytes, on pages which are viewed thousands of times this quickly amounts to much larger values. It might be negligible and a non-issue saying there's no benefit is not true. Any decent server hosting hundreds of sites with a fairly average view count will have significant increase in bandwidth use which could be used in a smarter way.
With availability of developer tools in all major browsers, reading page source is impractical. Adding line breaks for readability from page source not only wastes bandwidth but valuable CPU time as well. Not to mention use of double quotes in PHP is significantly slower due to parsing capabilities.
Besides, am not arguing for the change of default behavior, rather having ability to optimize should one desire to do so. For my company, time-to-first-byte is important and considering page speed still affects ranking in Google I very much care for every millisecond I can save.

For my company, time-to-first-byte is important and considering page speed still affects ranking in Google I very much care for every millisecond I can save.

This actually argues against your implementation as you add an additional check that is run each time an element or block occurs in the markdown...

Which would be true if I didn't cache the output. Which I do. This parser adds code which slows down generation of output. In interest of not breaking expected behavior I added those checks and plan on relying on cache to solve problem I added. Ideally those new line characters should be removed as, in my opinion, they have no purpose unless code is using output in some editor.

IMHO this (HTML optimization/minification) is a concern better addressed at a next level of the page creation process, globally. Applying it for each HTML generation step (i.e. each component) is absolutely inneficient.

In my opinion @smz that makes little sense. Parsedown adds characters, which I would need to parse again and clean up in order to get better optimized page. At this point, I see that argument about having optimized code is waste of my time. I'll leave this pull request open for owner of this project to decide. If nothing else, I'll just have to maintain my own fork. All the best gentlemen.

Sorry, as I've said in the "edit" to my previous pots, it very much boils down to weather you'll be using CPU cycles for that or not. If yes, then you must consider if this represent a good "investment"  for subsequent steps.

Well @smz it comes with extra CPU cost because I added checks if option for making smaller code is enabled. Those checks are there purely for backwards compatibility. And that extra CPU time can be negated by caching output. Oh well. We'll see.

Thats, probably negigable: what matters are the CPU cycles used if/when your proposed option is active.
As an exemple, if you wish, look at one of my sites page: http://nuovaicona.org/
As you will see the genarted HTML is just on "line" of HTML code. This is a result you cannot achieve at the "component" level, but only through an optimizer for the "whole" HTML (and CSS, and Javascript) code.
If you use such an optimizer any previous partial optimization is worthless.

Well @smz I do that as well, my sites don't have any line breaks anywhere. But I don't wish to parse HTML code produced by parsedown and remove extra stuff. That's just waste of resources. Instead it should be generated without newlines. I would be happy to modify my pull request which removes all the new line characters added to output code. That would be ideal solution as less operations would be needed and produced code would be smaller.

Sorry, I've just looked at your code and I agree: adding  '\n's to the generated markup is worthless and it does consumes CPU cycles. If simply removing them (as the default beheavior, without introducing any option) is accepatable, I will go for it: you have my vote. If instead a new option for the new behaviour is politically needed, then I'm unsure...

Thanks @smz. That was my initial thought, but it's not up to me to decide whether removing code is acceptable. That's something lead developer will have to decide on. I created PR with backwards compatibility, but it's easily transformed into version without option and without new line characters.

let's see...   :smile:

Taking too long to even reply on this. Am forking and maintaining my own version. Thanks.


Added Captcha and HTMLPurifier

Added my packages:
Captcha
https://github.com/mewebstudio/captcha
Purifier
https://github.com/mewebstudio/purifier

Thanks.


Return 200 OK from /_ah/start

As per #15 - App Engine wants a 200-299 or 404 from this endpoint toconfirm that the app has started correctly; this allows for manual scaling. This middleware is introduced before the Svelte app is mounted, and thus requests are routed straight to Polka.

Thanks a lot.
Can I ask you to merge in the latest commit from master, that should fix the test issue.


Tests

[x] App (port tests from original repo)
[x] Request (port tests from original repo)
[ ] Response (port tests from original repo)

I wanted to get some exposure to testing, so I tried porting over the response tests from the original repo @ https://github.com/deno-libs/tinyhttp/pull/10
Let me know if this is okay.
Having some issues with the chunkedEncoding part, trying to resolve that.


Spectrum & Create Incompatibility

Mod Name
Spectrum, Create
Mod Homepage
https://legacy.curseforge.com/minecraft/mc-mods/spectrum
Minecraft version
1.20.1 (LTS)
Describe the bug
Crashes to desktop immediately.
Steps to reproduce
Reproduction is rather easy, just slap the mods inside the log into the mod folder, it's worth noting that you can make this mod combination boot if you disable create compatibility in spectrum's config as such:
	// Mod Integration Packs to not load (in case of mod compat errors)
	"IntegrationPacksToSkipLoading": [
		"create"
	]

The following log is produced when you do so:
https://gist.github.com/rowanthemodder/b70473d3ccb42fdafe498e29d34e8319
Crash Log
https://gist.github.com/rowanthemodder/8aa0ad35e16f4968a91fc8db128395ba

Open the file config for the Spectrum mod called spectrum.json5
Then find the option called IntegrationPacksToSkipLoading and in the brackets add create and it should work

As our LTS support target, 1.20.1 now only receives critical fixes related to Connector bugs. Please upgrade to the latest version for mod compatibility support.


MM-55175 Do not hide assigned user name

Summary
Do not hide the assigned user's name when a due date or action is assigned to a task.
Ticket Link
Fixes: https://github.com/mattermost/mattermost/issues/25218
Jira ticket: https://mattermost.atlassian.net/browse/MM-55175
Screenshots

Before
After

Sidebar Expanded
Sidebar Expanded

Sidebar collapsed
Sidebar collapsed

Playbook
Playbook

Checklist

[ ] Telemetry updated
[ ] Gated by experimental feature flag
[ ] Unit tests updated

Hello @rajatdangat,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.

/update-branch

Hi @rajatdangat - I'm seeing an issue in the right-hand-side (RHS) whether it's expanded or collapsed.  If I add an assignee to a task, the full username is visible but as soon as I also add a due date, the username is truncated

I'm also seeing another issue where, if I tick off a task as done, the username becomes visible (if I uncheck the task again, the username truncates again)

cc @calebroseland @crspeller

@lindy65 @crspeller looks like the spinwick didn't pick up the build

(should have a hash appended, I think)

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!

/update-branch

This PR has been automatically labelled "stale" because it hasn't had recent activity.
A core team member will check in on the status of the PR to help with questions.
Thank you for your contribution!


Keep state and URL in sync

E.g. if you browse for a component and click on the Curate link the URL is updated to include the component in the path. However if you select a new component in the filter list the URL is not updated.
Can we come up with some strategy to cleanly keep state and URL in sync? We should look at what others do, e.g. https://github.com/reactjs/react-router-redux

Seems like the UI has changed substantially and this is no longer a problem


GlowingBlocks: only show in the current world

We don't want blocks in different worlds to be shown as they are in the same world.
DRAFT as I haven't tested it yet.
P/S: I agree that there is a workaround to check if the block is in the same world as the player. I just don't want to do that hassle work in all of my projects.

Thanks for your PR :)


ShippingAddressView times out in Django 1.11

The ShippingAddressView times out when using Django 1.11.
To reproduce, build the sandbox and try checking out.
The issue appears to be in the rendering of the country select in the new address form - the rendering of that widget hangs. My best guess is that it has something to do with the switch to template-based widget rendering in Django 1.11.

If you reduce the number of countries with is_shipping_country=True to a small number, then it works. If you use the full list of countries then this rendering slows to a complete crawl.

This is related to https://github.com/jazzband/django-debug-toolbar/issues/910 (just tested it by disabling the template panel).

I just merged kezabelle's pull request for django-debug-toolbar, if you could test whether it fixes this problem for you that would be awesome!

@matthiask thanks! Just tested, and it fixes this issue.
Just FYI, I'm not able to view the template panel (allocation size overflow after the AJAX request). I assume that is a memory issue on my client.


cmd/go: non-root modules not fetched from a repository hosted on GitHub Enterprise 2.16.12

What version of Go are you using (go version)?

$ go version
go version go1.13.7 darwin/amd64

Does this issue reproduce with the latest release?
Yes, and with go1.14beta1.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/augusto.roman/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.13.7/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOMOD=""

The GHE server version is 2.16.12
What did you do?
I created a test repository on the company's internal Github Enterprise (GHE) that had a module that was not at the root of the repo. I was unable to import the module from elsewhere using go get:
ghe.company.com/user/repo/packages/lib
  with:  go.mod  --> "module ghe.company.com/user/repo/packages/lib"
         lib.go

+ git tag: packages/lib/v1.0.0

Then elsewhere I tried:
GOPRIVATE=ghe.company.com go get ghe.company.com/user/repo/packages/lib@master

(or with tags of the format: packages/lib/v1.0.0)
go get Output
$ GOPRIVATE=ghe.company.com go get -x -v<EMAIL_ADDRESS># get https://ghe.company.com/?go-get=1
# get https://ghe.company.com/user/repo/packages/lib?go-get=1
# get https://ghe.company.com/user/repo/packages?go-get=1
# get https://ghe.company.com/user/repo?go-get=1
# get https://ghe.company.com/user?go-get=1
# get //ghe.company.com/user/repo?go-get=1: 200 OK (0.364s)
get "ghe.company.com/user/repo": found meta tag get.metaImport{Prefix:"ghe.company.com/user/repo", VCS:"git", RepoRoot:"https://ghe.company.com/user/repo.git"} at //ghe.company.com/user/repo?go-get=1
mkdir -p /Users/augusto.roman/go/pkg/mod/cache/vcs # git3 https://ghe.company.com/user/repo.git
# lock /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447.lock# /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447 for git3 https://ghe.company.com/user/repo.git
go: finding ghe.company.com/user/repo v1.0.0
cd /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447; git tag -l
0.011s # cd /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447; git tag -l
cd /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447; git ls-remote -q https://ghe.company.com/user/repo.git
# get //ghe.company.com/?go-get=1: 200 OK (0.427s)
# get //ghe.company.com/user?go-get=1: 200 OK (0.435s)
# get //ghe.company.com/user/repo/packages?go-get=1: 200 OK (0.466s)
# get //ghe.company.com/user/repo/packages/lib?go-get=1: 200 OK (0.469s)
0.538s # cd /Users/augusto.roman/go/pkg/mod/cache/vcs/6c97662eddd96ff8454c4d00d298aa628735acaad52e65b5a3eb02a6df0b1447; git ls-remote -q https://ghe.company.com/user/repo.git
# get https://ghe.company.com/user/repo?go-get=1
# get https://ghe.company.com/?go-get=1
# get https://ghe.company.com/user/repo/packages?go-get=1
# get https://ghe.company.com/user?go-get=1
# get https://ghe.company.com/user/repo/packages/lib?go-get=1
# get //ghe.company.com/user/repo?go-get=1: 200 OK (0.076s)
get "ghe.company.com/user/repo": found meta tag get.metaImport{Prefix:"ghe.company.com/user/repo", VCS:"git", RepoRoot:"https://ghe.company.com/user/repo.git"} at //ghe.company.com/user/repo?go-get=1
go: finding ghe.company.com/user/repo v1.0.0
# get //ghe.company.com/?go-get=1: 200 OK (0.180s)
# get //ghe.company.com/user/repo/packages?go-get=1: 200 OK (0.198s)
# get //ghe.company.com/user?go-get=1: 200 OK (0.209s)
# get //ghe.company.com/user/repo/packages/lib?go-get=1: 200 OK (0.251s)
go get<EMAIL_ADDRESS>unrecognized import path "ghe.company.com/user/repo/packages/lib" (parse https://ghe.company.com/user/repo/packages/lib?go-get=1: no go-import meta tags ())

Workaround
It works if I name the module with repo.git instead of repo as:
ghe.company.com/user/repo/packages/lib
  with:  go.mod  --> "module ghe.company.com/user/repo.git/packages/lib"
         lib.go

And elsewhere I can do:
GOPRIVATE=ghe.company.com go get ghe.company.com/user/repo.git/packages/lib@master

or I can use tags of the format: packages/lib/v1.2.3
However, this only works if the go.mod file itself names the module with the .git suffix.

This is in contrast to importing a module at the root which works fine with or without the .git suffix.
(related #17898)

The protocol that the go command uses to resolve import paths (other than from a handful of unfortunately hard-coded services) is described at https://golang.org/cmd/go/#hdr-Remote_import_paths. Most likely the server you are using does not fully implement that protocol.
So, what is the output of curl -sL https://ghe.company.com/user/repo.git/packages/lib?go-get=1 | grep go-import?
If the server implements the protocol correctly, it should be something like:
$ curl -sL https://ghe.company.com/user/repo.git/packages/lib?go-get=1 | grep go-import
	<meta name="go-import" content ="ghe.company.com/user/repo git https://ghe.company.com/user/repo.git">

Note that according to https://enterprise.github.com/releases, the current GHE release is 2.19.6, and the current release on the 2.16 series is 2.16.25. Does this issue reproduce with either of those versions of the server?

(Actually, note that per https://enterprise.github.com/releases/series/2.16, “GitHub Enterprise Server 2.16 [is] deprecated as of January 22, 2020[.]”)

Thanks @bcmills, the output for checking the subdirectory is nothing, only the root repo responds with a go-import meta tag:
$ curl -sL https://ghe.company.com/user/repo.git/packages/lib?go-get=1 | grep go-import
$ curl -sL https://ghe.company.com/user/repo.git/?go-get=1 | grep go-import
  <meta name="go-import" content="ghe.company.com/user/repo git https://ghe.company.com/user/repo.git">
$

I don't know what the current release response is -- I'll look into upgrading our server.

Argh, I typo'd the command. Should be curl -sL https://ghe.company.com/user/repo.git/packages/lib?go-get=1 | grep go-import, omitting the internal .git suffix.

Same output:
$ curl -sL https://ghe.company.com/user/repo/packages/lib?go-get=1 | grep go-import
$ curl -sL https://ghe.company.com/user/repo/?go-get=1 | grep go-import
  <meta name="go-import" content="ghe.company.com/user/repo git https://ghe.company.com/user/repo.git">
$

Still seems buggy to me. If only the exact import path is allowed, why does it bother checking all the parent paths?  Public github also doesn't respond to subpath imports
$ curl -sL https://github.com/augustoroman/test-go-modules/packages/lib?go-get=1 | grep go-import
$ curl -sL https://github.com/augustoroman/test-go-modules/?go-get=1 | grep go-import
  <meta name="go-import" content="github.com/augustoroman/test-go-modules git https://github.com/augustoroman/test-go-modules.git">

...but the import works fine. I realize there may be hardcoded exceptions, but it seems to me that if a git repo responds at the root then go get should check the git repo for appropriate sub-packages in the same manner that adding the .git suffix to the repo works.

go get accepts any package import path, not (only) an exact module path. It is checking the parent paths in order to attempt to locate the modules corresponding to those paths. (The package with import path ghe.company.com/user/repo/packages/lib could be provided by a module with any path that is a prefix of that import path.)
In contrast, other subcommands (such as go mod download) do know the exact module path, so if the server tells one of those subcommands that the module does not exist, that's it — no other paths are attempted.
So it is important that go get only resolve a module using the same path that any other subcommand would use.

Public GitHub is (unfortunately) hard-coded, so any bugs in its implementation of the go-import protocol are masked. (It is not a reliable example to emulate.)

I've tested this on GHE 2.19.3 and it works as expected, with the subdirectories returning a proper go-import meta tag.

Great! Closing this issue, since the go command seems to be working as documented and we don't appear to need to follow up with the GHE maintainers.


Add explicit support to GitHub Actions scripts for ".test/config.sh" …

…(and ".test/tests/xxx/")
Tested successfully via https://github.com/tianon/dockerfiles/pull/223 :smile:
Closes https://github.com/docker-library/bashbrew/issues/46
If .test/config.sh exists, it will be injected via --config on test/run.sh, which then also allows for additional tests in .test/tests/foo/run.sh.

Codecov Report

Merging #47 (bb0cf62) into master (b4880ac) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #47   +/-   ##
=======================================
  Coverage   76.83%   76.83%
=======================================
  Files           5        5
  Lines         587      587
=======================================
  Hits          451      451
  Misses        104      104
  Partials       32       32

Continue to review full report at Codecov.

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

More complicated success: https://github.com/docker-library/docker/pull/368

See especially https://github.com/docker-library/docker/runs/6889534807?check_suite_focus=true#step:7:16

I tried this out and had this error in my output: https://github.com/williamdes/docker/runs/7055760237?check_suite_focus=true#step:7:14
/home/runner/oi/test/run.sh: line 243: testPaths[$t]: unbound variable

Thanks to the new action is is simpler to make this work: https://github.com/phpmyadmin/docker/pull/389


Issue when inferencing

I have trained the model on mu data and training when well on 1080Ti.
When I am passing testing images to model then it is giving me out of memory error.
Error is as following,
RuntimeError: CUDA out of memory. Tried to allocate 878.00 MiB (GPU 0; 10.92 GiB total capacity; 9.48 GiB already allocated; 544.06 MiB free; 1.17 MiB cached)
input image size is [2436,1476]
Please suggest some way to run the model in this image.
If possible then please suggest some way to do inferencing on 2 or more GPUs.

@nareshmungpara  the image is large, you should use a more powerful GPU, such as V100


AST Tree design

This is not an issue, rather, it is just a question to understand the design of AST nodes.
I noticed that access and expression nodes have links to each others... similar to the picture below.

My question is: Is that just for easy traversal, for instance, if one is on expression node and has to jump to access node or vice  versa then it is easier with bi directional links? OR is there an other reason for these bi directional links?

Easy traversal is one argument. For instance, while using the visitor pattern to traverse the parse objects sometimes it is necessary to e.g. get the exact textual position which is stored in the AST tree node.

Easy traversal is one argument. For instance, while using the visitor pattern to traverse the parse objects sometimes it is necessary to e.g. get the exact textual position which is stored in the AST tree node.

So does this answer your question.

So does this answer your question.


Improve error message for wrong path to input/sp file

fixes #124

@tudorlesan can you please review & merge?

@avimora please add a test for this use case that checks the error message, and then you are clear to merge


1.26.1 compile fails

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
When I tried to upgrade my 1.25 install to 1.26.1 I ran into the following at the end:
Generating TeslaMateWeb.Cldr for 16 locales named ["da", "de", "en", "es", "fi", ...] with a default locale named "en"
Generated teslamate app

20:01:06.568 [notice] Application mime exited: exited in: MIME.Application.start(:normal, [])
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function MIME.Application.start/2 is undefined (module MIME.Application is not available)
            (mime 1.6.0) MIME.Application.start(:normal, [])
            (kernel 8.1.3) application_master.erl:293: :application_master.start_it_old/4

20:01:06.579 [notice] Application eex exited: :stopped
** (MatchError) no match of right hand side value: {:error, {:mime, {:bad_return, {{MIME.Application, :start, [:normal, []]}, {:EXIT, {:undef, [{MIME.Application, :start, [:normal, []], []}, {:application_master, :start_it_old, 4, [file: 'application_master.erl', line: 293]}]}}}}}}
    (phoenix 1.6.5) lib/mix/tasks/phx.digest.ex:56: Mix.Tasks.Phx.Digest.run/1
    (mix 1.13.0) lib/mix/task.ex:397: anonymous fn/3 in Mix.Task.run_task/3
    (elixir 1.13.0) lib/enum.ex:937: Enum."-each/2-lists^foreach/1-0-"/2
    (mix 1.13.0) lib/mix/task.ex:397: anonymous fn/3 in Mix.Task.run_task/3
    (mix 1.13.0) lib/mix/cli.ex:84: Mix.CLI.run_task/2

Expected Behavior
compilation and release succeeds
Steps To Reproduce
Run  MIX_ENV=prod mix do phx.digest, release --overwrite on a 1.25 install.
Relevant log output
see above

Screenshots
No response
Additional data
No response
Type of installation
Manual
Version
v1.26.1

please disregard,
it turned out to be an issue with the telemetry module which I needed to completely remove and recompile. This made it pass.


Cannot send performance data with rediscluster

Discussed in https://github.com/getsentry/sentry-python/discussions/1563

Originally posted by georgkrause August 13, 2022
Whenever the sentry sdk tries to send performance data, I get the following:
demo-api-1  |  [sentry] ERROR: Unexpected status code: 400 (body: b'{"spans":{"6":{"tags":{"redis.is_cluster":["Not a valid string."]}},"15":{"tags":{"redis.is_cluster":["Not a valid string."]}},"16":{"tags":{"redis.is_cluster":["Not a valid string."]}},"17":{"tags":{"redis.is_cluster":["Not a valid string."]}}}}')

Where can I start to find the cause for this? Any help is appreciated! :)

A user reported this bug to GlitchTip which I believe is what's responsible for the 400 error attached. However it may be a bug in sentry-python. A Span interface tag field is documented as "A map or list of tags for this event. Each tag must be less than 200 characters." It's not exactly clear if this is intended to explicitly be a string. One could interpret "characters" as implying it needs to be a string, in which case sentry-python should probably convert it to a string. If it is intended to be a non-string or you feel the server should be responsible for coercing it as a string, then this issue should be closed.
Related issue

hmm ok I wasn't able to reproduce this. I tried the sample here and all kinds of tags - strings/ints/booleans go through so I'm not sure how to see your error. Please help with me reproduction steps so I can investigate further.

@bufke @georgkrause are you using self-hosted Sentry?

@bufke I just saw what GlitchTip is, our backends are supposed to be flexible in ingesting, so I believe you just need to fix the deserialization on your backend, closing.


1 setup django

@lucaslootalot Why did you close it? Just push the changes to the branch.

@spuetz  I did not want to create a pull request at this repo. That's why I closed it again.

Closed due to unintentional pull request.


Default images are not found

As the latest code, the default images in the map file are not found (getImg.ts). Is there something updated?

Thank you

same for us. The social images aren't there. Looks like the vercel deployment is down

Could the images be put back please

Ok, it has been restored. I still recommend that you use ImageManager to overwrite the original image

I will, thank you @m-Ryan


The exported cmake config package should contain a OpenSSLConfig-targets-release.cmake file

... for debug a OpenSSLConfig-targets-debug.cmake
Too  the CMAKE_DEBUG_POSTFIX should buy set.
This allows libraries from multiple build types to be put in the same directory without overwriting each other. CMAKE_DEBUG_POSTFIX is often set to values like d or _debug, especially for Visual Studio builds where different runtime DLLs must be used for Debug and non-Debug builds. Packages may need to include libraries for both build types if they want their consumers to be able to build both Debug and non-Debug configurations.
Then debug and release my be installed to the same libdir instead of:
bash-5.2$ tree /opt/local/lib/release /opt/local/lib/debug/
/opt/local/lib/release
|-- cmake
|   `-- OpenSSL
|       |-- OpenSSLConfig.cmake
|       `-- OpenSSLConfigVersion.cmake
|-- engines-3
|-- libcrypto.a
|-- libssl.a
|-- ossl-modules
`-- pkgconfig
    |-- libcrypto.pc
    |-- libssl.pc
    `-- openssl.pc

/opt/local/lib/debug/
|-- cmake
|   `-- OpenSSL
|       |-- OpenSSLConfig.cmake
|       `-- OpenSSLConfigVersion.cmake
|-- engines-3
|-- libcrypto.a
|-- libssl.a
|-- ossl-modules
`-- pkgconfig
    |-- libcrypto.pc
    |-- libssl.pc
    `-- openssl.pc

12 directories, 14 files
bash-5.2$

Note the differences:
bash-5.2$ tree /opt/local/lib/cmake/
/opt/local/lib/cmake/
|-- OpenSSL
|   |-- OpenSSLConfig.cmake
|   `-- OpenSSLConfigVersion.cmake
`-- beman_execution26
    |-- beman_execution26-config-version.cmake
    |-- beman_execution26-config.cmake
    |-- beman_execution26-targets-release.cmake
    `-- beman_execution26-targets.cmake

3 directories, 6 files
bash-5.2$

Would you mind pointing out CMake documentation that describes this?

Would you mind pointing out CMake documentation that describes this?

see Creating Packages¶
I have seen, you generates this files not with CMake, what a misfortune.

Perhaps you want try to create a CMake-adapter to install a cmake export package with with native cmake project like I dit here:
https://github.com/ClausKlein/axcioma/blob/develop/CMakeLists.txt

please note https://github.com/openssl/openssl/issues/26185 too

Perhaps you could have said that -targets-${CONFIG} isn't a CMake thing, but rather an invention found in https://github.com/bemanproject/execution26/blob/38e376cfa2daa733a2c51738c8531e63f73b4f4c/src/beman/execution26/CMakeLists.txt#L191-L205
I don't know where this was originally invented, that's just the project you gave an example of.  However, this was nowhere to be found in CMake's guide on importing and exporting, nor in CMake's find_package() documentation, which explains why I hadn't seen this before.
I tried building bemanproject/execution26, to see the result...  and yeah ok, cute way of solving that.  So I take it that this would be a desirable feature, making this issue a feature request.

Yes, installing right is one of the most complicated part in cmake projects .
You are not alone with this task: https://github.com/bemanproject/optional26/pull/82
And don't forget to check the exported cmake config package like here:
https://github.com/bemanproject/optional26/commit/73fde6b26ee3f109e0134efb160487fafb831a19

As you've already noticed, OpenSSL doesn't use CMake, it only crafts CMake configs for the convenience of other CMake projects.

No problem, write a cmake adapter like I dit in axioma; I may help you.
Simply install to a stage dir, collect all and install it right.

I give you the current output of a test after debug build installation:
2: Test command: /usr/local/bin/ctest "--output-on-failure" "-C" "Debug" "--build-and-test" "/Users/clausklein/Downloads/openssl/test-FindOpenSSL" "/Users/clausklein/Downloads/openssl/build/find-package-test" "--build-generator" "Ninja" "--build-makeprogram" "/usr/local/bin/ninja" "--build-options" "-DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang" "-DCMAKE_C_STANDARD=11" "-DCMAKE_BUILD_TYPE=Debug" "-DCMAKE_PREFIX_PATH=/Users/clausklein/Downloads/openssl/stagedir" "-DCMAKE_INSTALL_PREFIX=/Users/clausklein/Downloads/openssl/stagedir"
2: Working Directory: /Users/clausklein/Downloads/openssl/build
2: Test timeout computed to be: 10000000
2: Internal cmake changing into directory: /Users/clausklein/Downloads/openssl/build/find-package-test
2: ======== CMake output     ======
2: OpenSSL_DIR="/Users/clausklein/Downloads/openssl/stagedir/lib/cmake/OpenSSL"
2: OPENSSL_INCLUDE_DIR="/Users/clausklein/Downloads/openssl/stagedir/include"
2: OPENSSL_CRYPTO_LIBRARY="/Users/clausklein/Downloads/openssl/stagedir/lib/libcrypto.a"
2: OPENSSL_CRYPTO_LIBRARIES="/Users/clausklein/Downloads/openssl/stagedir/lib/libcrypto.a"
2: OPENSSL_SSL_LIBRARY="/Users/clausklein/Downloads/openssl/stagedir/lib/libssl.a"
2: OPENSSL_SSL_LIBRARIES="/Users/clausklein/Downloads/openssl/stagedir/lib/libssl.a;OpenSSL::Crypto"
2: OPENSSL_LIBRARIES="/Users/clausklein/Downloads/openssl/stagedir/lib/libssl.a;OpenSSL::Crypto"
2: OPENSSL_VERSION="3.4.0"
2: OPENSSL_APPLINK_SOURCE=""
2:
2:  Properties for TARGET OpenSSL::Crypto:
2:    OpenSSL::Crypto.INTERFACE_INCLUDE_DIRECTORIES = "/Users/clausklein/Downloads/openssl/stagedir/include"
2:    OpenSSL::Crypto.IMPORTED_CONFIGURATIONS = <NOTFOUND>
2:    OpenSSL::Crypto.IMPORTED_LINK_INTERFACE_LANGUAGES = "C"
2:    OpenSSL::Crypto.IMPORTED_IMPLIB = <NOTFOUND>
2:    OpenSSL::Crypto.IMPORTED_LOCATION = "/Users/clausklein/Downloads/openssl/stagedir/lib/libcrypto.a"
2:    OpenSSL::Crypto.IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE = <NOTFOUND>
2:    OpenSSL::Crypto.IMPORTED_LOCATION_RELEASE = <NOTFOUND>
2:    OpenSSL::Crypto.IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG = <NOTFOUND>
2:    OpenSSL::Crypto.IMPORTED_LOCATION_DEBUG = <NOTFOUND>
2:    OpenSSL::Crypto.INTERFACE_LINK_LIBRARIES = <NOTFOUND>
2:  Properties for TARGET OpenSSL::SSL:
2:    OpenSSL::SSL.INTERFACE_INCLUDE_DIRECTORIES = "/Users/clausklein/Downloads/openssl/stagedir/include"
2:    OpenSSL::SSL.IMPORTED_CONFIGURATIONS = <NOTFOUND>
2:    OpenSSL::SSL.IMPORTED_LINK_INTERFACE_LANGUAGES = "C"
2:    OpenSSL::SSL.IMPORTED_IMPLIB = <NOTFOUND>
2:    OpenSSL::SSL.IMPORTED_LOCATION = "/Users/clausklein/Downloads/openssl/stagedir/lib/libssl.a"
2:    OpenSSL::SSL.IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE = <NOTFOUND>
2:    OpenSSL::SSL.IMPORTED_LOCATION_RELEASE = <NOTFOUND>
2:    OpenSSL::SSL.IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG = <NOTFOUND>
2:    OpenSSL::SSL.IMPORTED_LOCATION_DEBUG = <NOTFOUND>
2:    OpenSSL::SSL.INTERFACE_LINK_LIBRARIES = "OpenSSL::Crypto"
2:
2: Configuring done (0.0s)
2: Generating done (0.0s)
2: Build files have been written to: /Users/clausklein/Downloads/openssl/build/find-package-test
2: ======== End CMake output ======
2: Change Dir: '/Users/clausklein/Downloads/openssl/build/find-package-test'
2:
2: Run Clean Command: /usr/local/bin/ninja clean
2: [1/1] Cleaning all built files...
2: Cleaning... 2 files.
2:
2: Run Build Command(s): /usr/local/bin/ninja
2: [1/2] Building C object CMakeFiles/program.dir/program.c.o
2: [2/2] Linking C executable program
2:
2/2 Test #2: find-package-test ................   Passed    0.52 sec

100% tests passed, 0 tests failed out of 2

Total Test time (real) =   0.84 sec
bash-5.2$ cd ..
bash-5.2$ tree stagedir/lib/
stagedir/lib/
|-- cmake
|   |-- OpenSSL
|   |   |-- OpenSSLConfig.cmake
|   |   `-- OpenSSLConfigVersion.cmake
|   `-- zlib
|       |-- zlibConfig.cmake
|       |-- zlibConfigVersion.cmake
|       |-- zlibTargets-debug.cmake
|       |-- zlibTargets-release.cmake
|       `-- zlibTargets.cmake
|-- engines-3
|-- libcrypto.a
|-- libcryptod.a
|-- libssl.a
|-- libssld.a
|-- libz.a
|-- libzd.a
|-- ossl-modules
|-- pkgconfig
|   |-- libcrypto.pc
|   |-- libssl.pc
|   `-- openssl.pc
`-- share
    `-- pkgconfig
        `-- zlib.pc

9 directories, 17 files
bash-5.2$

@t8m I may help you if start creating different library files for debug and release build.
I appended d to the base name.
Your generated OpenSSLConfig.cmake is a mix of all, but not right!
Normally this file is a simple starting point to include the other cmake files.
And at his point, you have to check if your runtime dependencies like zlib exists, or whatever your lib needs.
see find_dependency
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was Config.cmake.in                            ########

get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)

####################################################################################

include("${CMAKE_CURRENT_LIST_DIR}/zlibTargets.cmake")

The zlibTargets.cmake contain something like this:
# Create imported target zlib::zlib
add_library(zlib::zlib STATIC IMPORTED)

set_target_properties(zlib::zlib PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
)

# Load information for each installed configuration.
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/zlibTargets-*.cmake")
foreach(_cmake_config_file IN LISTS _cmake_config_files)
  include("${_cmake_config_file}")
endforeach()
unset(_cmake_config_file)
unset(_cmake_config_files)

and the zlibConfigTargets-debug.cmake looks like this:
#----------------------------------------------------------------
# Generated CMake target import file for configuration "Debug".
#----------------------------------------------------------------

# Commands may need to know the format version.
set(CMAKE_IMPORT_FILE_VERSION 1)

# Import target "zlib::zlib" for configuration "Debug"
set_property(TARGET zlib::zlib APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
set_target_properties(zlib::zlib PROPERTIES
  IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
  IMPORTED_LOCATION_DEBUG "${_IMPORT_PREFIX}/lib/libzd.a"
  )

list(APPEND _cmake_import_check_targets zlib::zlib )
list(APPEND _cmake_import_check_files_for_zlib::zlib "${_IMPORT_PREFIX}/lib/libzd.a" )

# Commands beyond this point should not need to know the version.
set(CMAKE_IMPORT_FILE_VERSION)


Release: update inverse bond pricing address, UI Updates, react-query for wrap page

UI Updates:

nav updates for sidebar
deep links on treasury tabs

Also:

balancer & curve lp bond support
grants tab on give
jones & impermax on wallet

from 27% to 37% test coverage over the course of this pr. bing bong. lot of good work from the team in here.


Disable nvidia from EGL when in integrated mode

EGL applications have an extra second of startup when in integrated mode, because nvidia's glvnd library runs nvidia-modprobe, which takes a while when the nvidia GPU is off.
It seems like this project is unmaintained as stated on the website, but it would be cool if this project could do something similar to what I do here https://github.com/alacritty/alacritty/issues/6359#issuecomment-1364724766
I'm happy to open a PR if there is interest from the maintainer(s)

I'm not sure if this could break stuff for others, however I found this in the Arch Wiki as a workaround for apps that use libglvnd on Bumblebee setups that disable the Nvidia card like envycontrol does.
Feel free to open a PR in the meantime ;)

Is it okay to use integrated mode with nvidia proprietary drivers removed? I mean if the GPU will be properly turned off. In the case if the driver is installed there's also an additional NVIDIA Optimus layer with you can see in $ vulkaninfo --summary.

Currently, I'm a bit busy but I've made some experiments adding and
removing the __EGL_VENDOR_LIBRARY_FILENAMES workaround from the
/etc/profile but if you have a clean solution in Python please let me know.
On Sat, Jan 28, 2023, 18:37 Anton Alexandrenok @.***>
wrote:

Is it okay to use integrated mode with nvidia proprietary drivers
removed? I mean if the GPU will be properly turned off. In the case if the
driver is installed there's also an additional NVIDIA Optimus layer with
you can see in $ vulkaninfo --summary.
—
Reply to this email directly, view it on GitHub
https://github.com/bayasdev/envycontrol/issues/70#issuecomment-1407512049,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALY7IYOO575PXDV6SQY6OPLWUWUS5ANCNFSM6AAAAAATJD5XRU
.
You are receiving this because you commented.Message ID:
@.***>

I don't have nvidia-modprobe, and the strace says so too (No such file or directory). The workaround results in
libEGL warning: egl: failed to create dri2 screen
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
MESA: warning: zink: PERF WARNING! > 100 copy boxes detected for 0x55651f510040

Any ideas?


each and included_in? fail together

Hi,
i've got this rule optional(:roles).filled { each(included_in?(["admin", "manager"])) & max_size?(2) }
(I want to check that every array value is either "admin" or "manager".)
When I validate the following hash against it it fails with the following error:
{
"roles": ["foo"]
}

NoMethodError: undefined method `to_ary' for #<Dry::Validation::Schema::Rule:0x005589a493ce88>
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/rule.rb:182:in `method_missing'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/value.rb:175:in `Array'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/value.rb:175:in `each'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/value.rb:175:in `flat_map'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/value.rb:175:in `infer_predicates'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/value.rb:53:in `each'
  /home/dog/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/dry-validation-0.9.5/lib/dry/validation/schema/key.rb:26:in `each'

Is this a bug or did I use the wrong syntax?

This should work:
Dry::Validation.Schema do
  optional(:roles).value(type?: Array, max_size?: 2) { each(included_in?: %w(admin manager)) }
end

You could also add a custom predicate to get rid of each (and it will be faster), ie:
Dry::Validation.Schema do
  configure do
    def self.messages
      super.merge(en: { errors: { one_of?: 'must be one of: %{values}'}})
    end

    def one_of?(values, arr)
      arr.all? { |value| values.include?(value) }
    end
  end

  optional(:roles).value(type?: Array, max_size?: 2, one_of?: %w(admin manager))
end

@fran-worley we should add such predicate to dry-logic I think, it's a very common thing to do

@solnic thank you very much, that is working :)


Create base.css file

Copy and host a base.css file for the project from the link: https://binary-studio-academy.github.io/stage-2/assets/stylesheets/base.css

Base.css file was copied from the link and added to the repository without any changes.


How can I eliminate the shadow effect when clicking on the tabs, it has a purple effect on Android

It's native android. Check https://stackoverflow.com/questions/69976056/how-to-tint-the-color-of-the-shadow-in-android-switch.


Animations snapping into place on iOS Chrome

Animations are snapping into place when viewing a site on the iOS version of Chrome. I’ve looked on both Safari and Brave browsers and the issue isn’t there, everything works as it’s meant to. This issue is showing on multiple sites.
This is:

Bug

Specifications

AOS version: Latest
OS: iOS 12
Browser: Chrome - 70.0.3538.75

Expected Behavior

Animations to transition in smoothly.
Actual Behavior

Animation plays slightly and then snaps into the final position.
Can send links/screen recordings privately if you’d like to see the issue for yourself

Same problem on macOS.
The animations are playing well, but get artifacts at the bottom of the page :

extra space
sometime empty
sometimes containing the animated element previously scrolled

Still an issue on chrome IOS, any news on this?

Still happening on iOS Safari. I’ve tried running AOS.refreshHard() as often as every page load, but the bug’s still there. What fascinates me about this bug is that it persists through page refreshes and progressively gets worse — the time the elements are actually animating is shorter and shorter. Only quitting Safari seems to resolve the issue.

Is there any workaround for disabling AOS animations on IOS?

I'm having this same problem. It's been about a year now. Has anyone found a solution?

Yes! In iOS 13, it seems like something changed under the hood with CSS transitions. The bug is still kinda present, but only when the delay is nonzero. I ended up rewriting all of AOS’s scroll detection manually and adding and removing zero-delay animations as necessary. Here’s what I ended up doing. It’s not elegant by any stretch, but it works perfectly! For reference, set_up_aos() is called on page load, and aos_resize() and aos_scroll() are bound to resize and scroll events, respectively.

function set_up_aos()
{
	aos_elements = [];

	let new_aos_elements = document.querySelectorAll("[data-aos]");

	let current_section = 0;
	let current_delay = 0;

	for (let i = 0; i < new_aos_elements.length; i++)
	{
		if (new_aos_elements[i].classList.contains("new-aos-section"))
		{
			//Create a new section.
			aos_elements.push([]);

			aos_currently_animating.push([]);

			current_section++;

			if (new_aos_elements[i].getAttribute("data-aos-delay") !== null)
			{
				current_delay = parseInt(new_aos_elements[i].getAttribute("data-aos-delay"));
			}

			else
			{
				current_delay = 0;
			}

			if (new_aos_elements[i].getAttribute("data-aos-offset") !== null)
			{
				aos_anchor_offsets[current_section - 1] = parseInt(new_aos_elements[i].getAttribute("data-aos-offset"));
			}

			else
			{
				aos_anchor_offsets[current_section - 1] = window_height / 4;
			}

			new_aos_elements[i].setAttribute("data-aos-offset", 1000000);
			new_aos_elements[i].setAttribute("data-aos-delay", 0);

			aos_elements[current_section - 1].push([new_aos_elements[i], current_delay]);

			aos_anchor_positions[current_section - 1] = new_aos_elements[i].getBoundingClientRect().top + window.scrollY;

			aos_anchors_shown[current_section - 1] = false;
		}

		else
		{
			if (new_aos_elements[i].getAttribute("data-aos-delay") !== null)
			{
				current_delay = parseInt(new_aos_elements[i].getAttribute("data-aos-delay"));
			}

			else
			{
				current_delay += 100;
			}

			new_aos_elements[i].setAttribute("data-aos-offset", 1000000);
			new_aos_elements[i].setAttribute("data-aos-delay", 0);

			aos_elements[current_section - 1].push([new_aos_elements[i], current_delay]);
		}
	}

	//At this point we have a list of all the AOS sections and their delays. Now whenever we scroll, we'll check each of the anchors to see if the scroll position is beyond the offset.

	aos_resize();
	aos_scroll();
}

function aos_resize()
{
	for (let i = 0; i < aos_elements.length; i++)
	{
		aos_anchor_positions[i] = aos_elements[i][0][0].getBoundingClientRect().top + window.scrollY;
	}

	fix_footer_aos_anchor();
}

function aos_scroll()
{
	for (let i = 0; i < aos_elements.length; i++)
	{
		if (scroll + window_height >= aos_anchor_positions[i] + aos_anchor_offsets[i] && aos_anchors_shown[i] === false)
		{
			show_aos_section(i);
		}

		else if (scroll + window_height < aos_anchor_positions[i] + aos_anchor_offsets[i] && aos_anchors_shown[i] === true)
		{
			hide_aos_section(i);
		}
	}
}

function show_aos_section(section)
{
	for (let i = 0; i < aos_elements[section].length; i++)
	{
		let refresh_id = setTimeout(function()
		{
			aos_elements[section][i][0].setAttribute("data-aos-offset", -1000000);

			AOS.refresh();
		}, aos_elements[section][i][1]);

		aos_currently_animating[section].push(refresh_id);
	}

	aos_anchors_shown[section] = true;
}

function hide_aos_section(section)
{
	try
	{
		for (let i = 0; i < aos_currently_animating[section].length; i++)
		{
			clearTimeout(aos_currently_animating[section][i]);
		}
	}

	catch(ex) {}

	aos_currently_animating[section] = [];

	for (let i = 0; i < aos_elements[section].length; i++)
	{
		aos_elements[section][i][0].setAttribute("data-aos-offset", 1000000);

		AOS.refresh();
	}

	aos_anchors_shown[section] = false;
}

Thanks so much!

I am experiencing probably the same issue when setting up "delay" for elements.
Reproduction: https://codepen.io/iksent/pen/bGwzWMd
iOS 14 + Chrome (Safari - no problems)
https://yadi.sk/i/rLT7Ctq8zTZVuQ

I am experiencing probably the same issue when setting up "delay" for elements.
Reproduction: https://codepen.io/iksent/pen/bGwzWMd
iOS 14 + Chrome (Safari - no problems)
https://yadi.sk/i/rLT7Ctq8zTZVuQ


[DO NOT MERGE] Do not insert reserved words in Elasticsearch document

The _type and _id fields are already included in the command hash so including
them in the document hash is redundant and appears to be causing the _type
field to be indexed (and added to the _mapping hash which is seen as a
blocker to upgrading elasticsearch.
Warning
This change could have unforeseen consequences on the search index and needs to be tested on integration before being merged.
https://trello.com/c/mkn7SAn0/84-fix-reserved-field-name-errors-in-elasticsearch-2-x-upgrade

Tested on Integration as build the index without the _type mapping


Issue with ResponseEntity during bulk testing using eureka server

Hi Guys,
Would like to report an intermittent issue I encountered while performing load testing on my eureka services.
Seems like there are instances wherein the ResponseEntity object is being malformed causing the response status to be malformed. See below for the logs from my calling function:
Exception in thread "main" org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://phvx001.ph.dev/campaign": Premature EOF; nested exception is java.io.IOException: Premature EOF
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:607)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:557)
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:384)
at homecredit.ph.JsonRequestApplication.main(JsonRequestApplication.java:102)
Caused by: java.io.IOException: Premature EOF
at sun.net.www.http.ChunkedInputStream.readAheadBlocking(ChunkedInputStream.java:565)
at sun.net.www.http.ChunkedInputStream.readAhead(ChunkedInputStream.java:609)
at sun.net.www.http.ChunkedInputStream.read(ChunkedInputStream.java:696)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3052)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3046)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3034)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at java.io.PushbackInputStream.read(PushbackInputStream.java:139)
at org.springframework.web.client.MessageBodyClientHttpResponseWrapper.hasEmptyMessageBody(MessageBodyClientHttpResponseWrapper.java:97)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:82)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:835)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:819)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:599)
... 3 more
This appeared frequently. Issue was resolved when I switched ResponseEntity with the object body instead. Just wondering if you detected this issue already.
Thanks!

Please learn how to format code on GitHub
https://help.github.com/articles/creating-and-highlighting-code-blocks/
I dont see anything in your issue that indicates it is problem within Spring Cloud.

Hi,
Thanks for the info.
Will close this issue for now till I replicate the issue and provide a more detailed explanation of the problem.


[macOS] only the 'development' toolchain succeeds to build&run

https://bugs.swift.org/browse/TF-573

see also https://bugs.swift.org/browse/TF-573

This linker issue was fixed in https://github.com/apple/swift/pull/25328.
A new macOS toolchain is being built now. I'll reply with a link to the new toolchain soon.

New June 12, 2019 Xcode toolchain posted under Development Snapshots.
Please note that we're experiencing code signing issue, so you will likely encounter:

To install the toolchain, go to System Preferences > Security & Privacy > Open Anyway.

@dan-zheng
I appreciate your fast response and care! it works great now and I can FINALLY jump to definitions!


Missleading extracting of issue numbers

There is a pull request, which contains an issue number of another repository, because the changelog is shown as well.
Therefore valid ==1 although there isnt any Fixes # or Resolves #.
https://github.com/Ismoh/NoitaMP/pull/83
Would be nice to improve that, otherwise my workflows aren't working.
Work around is to change dependabots comment, when there is an external issue tracked.
Workflow log in debug mode:
600db87 Compiled version 1.3.0

42f7832
here ---> Merge pull request #39 from HardNorth/develop

<a href="https://github.com/HardNorth/github-version-

https://api.github.com/repos/Ismoh/NoitaMP/pulls/83
39
https://github.com/Ismoh/NoitaMP/issues/39
Valid flag is: 1
::set-output name=valid::1
Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

Merge pull request #39 from HardNorth/develop

https://github.com/Ismoh/NoitaMP/issues/39

Would also be vise to consider the warning!

Going to create a pull request the next days:
https://regex101.com/r/T8Nm8g/1
https://github.com/HarshCasper/validate-issues-over-pull-requests/blob/main/main.py#L12

Ping @HarshCasper :)


Library binding helpers

Attrs or reflection helpers to gather all matching methods and prepare them for adding into the Table returned by library interface

Simply has not been an issue.


Godot 4.3 stable - singleton code

Here's the corrected code for Godot 4.2.2 and 4.3 (no "yield" for the timeout, but "await"). I hope it helps.
extends Node

const NON_CONSUMABLE_ITEMS:Array = ["purchase1", "purchase2", "purchase3"] # Non-consumable items
const CONSUMABLE_ITEMS:Array = ["pay1", "pay2"] # Consumable items
const SUBSCRIPTION_ITEMS:Array = ["subscription1", "subscription2"] # Subscription items

var payment = null
var test_item_purchase_token = null
var purchasable_inapp:Dictionary = {}
var purchased_inapp:String = ""
var to_buy_item:String = ""

func _ready() -> void:
	if Engine.has_singleton("GodotGooglePlayBilling"):
		payment = Engine.get_singleton("GodotGooglePlayBilling")
		payment.setLogLevel(0)        # Set log level: 0 - none, 1 - enabled
		payment.setLogTag("godot")    # Set TAG for log
		_connect_signals() # Connect signals to the payment object
		print("Starting connection to Google Play Billing...")
		payment.startConnection() # Start connection to the billing service

func _connect_signals():
	# Connect various signals for handling billing events
	payment.connect("connected", self, "_on_connected")
	payment.connect("disconnected", self, "_on_disconnected")
	payment.connect("connect_error", self, "_on_connect_error")
	payment.connect("purchases_updated", self, "_on_purchases_updated")
	payment.connect("purchase_error", self, "_on_purchase_error")
	payment.connect("product_details_query_completed", self, "_on_product_details_query_completed")
	payment.connect("product_details_query_error", self, "_on_product_details_query_error")
	payment.connect("purchase_acknowledged", self, "_on_purchase_acknowledged")
	payment.connect("purchase_acknowledgement_error", self, "_on_purchase_acknowledgement_error")
	payment.connect("purchase_consumed", self, "_on_purchase_consumed")
	payment.connect("purchase_consumption_error", self, "_on_purchase_consumption_error")
	payment.connect("query_purchases_response", self, "_on_query_purchases_response")

func _on_connected():
	print("CONNECTED!")
	await get_tree().create_timer(2).timeout

	# Request product details for all items
	var all_items = NON_CONSUMABLE_ITEMS + CONSUMABLE_ITEMS
	payment.queryProductDetails(all_items, "inapp")
	payment.queryProductDetails(SUBSCRIPTION_ITEMS, "subs")
	# Query information about purchased items
	payment.queryPurchases("inapp")
	payment.queryPurchases("subs")

func _on_product_details_query_completed(sku_details):
	print("Product details query completed: " + str(sku_details))
	# Store details of each purchasable item
	for available_sku in sku_details:
		purchasable_inapp[available_sku.productId] = available_sku
		var item_price = available_sku["price"]
		print("Price for %s is %s" % [available_sku["productId"], item_price])

		match available_sku["productId"]:
			"purchase1":
				print("Currency Code: ", available_sku["currencyCode"])
				print("Description: ", available_sku["description"])
				print("Formatted Price: ", available_sku["formattedPrice"])
				print("Price: ",available_sku["price"])
				print("Product ID: ",available_sku["productId"])
				print("Title: ", available_sku["title"])
				print("Type: ", available_sku["type"])

func _on_product_details_query_error(code, message, list):
	print("SKU details query error %d: %s" % [code, message])
	print("Requested products: ", str(list))

func _on_query_purchases_response(query_result):
	print("query_purchases_response Check!")
	if query_result and query_result.status == OK:
		if query_result.purchases.empty():
			print("query_result.purchases is empty!")
		else:
			print("query_result.purchases = ", query_result.purchases)
			# Check if there are any non-consumable, consumable purchases, or subscriptions
			for purchase in query_result.purchases:
				if purchase.productId in NON_CONSUMABLE_ITEMS and purchase.purchaseState == 1:
					print("Non-consumable purchase found!")
				elif purchase.productId in CONSUMABLE_ITEMS and purchase.purchaseState == 1:
					print("Consumable purchase found!")
				elif purchase.productId in SUBSCRIPTION_ITEMS and purchase.purchaseState == 1:
					print("Subscription purchase found!")
	else:
		print("Failed to query in-app purchases.")

func _on_purchases_updated(purchases):
	# Handle updated purchases
	for purchase in purchases:
		if not purchase.isAcknowledged:
			if purchase.productId in NON_CONSUMABLE_ITEMS:
				payment.acknowledgePurchase(purchase.purchaseToken) # Non-consumable purchase
			elif purchase.productId in CONSUMABLE_ITEMS:
				payment.consumePurchase(purchase.purchaseToken) # Consumable purchase
	if purchases.size() > 0:
		# Store the last purchase token
		test_item_purchase_token = purchases[purchases.size() - 1].purchaseToken

func _on_purchase_acknowledged(_purchase_token):
	print("Purchase acknowledged: %s" % purchased_inapp)
	# Handle the acknowledged purchase
	_handle_purchase(purchased_inapp)
	# Additional query information about purchased items after acknowledgement
	payment.queryPurchases("inapp")
	payment.queryPurchases("subs")

func _on_purchase_consumed(_purchase_token):
	print("Purchase consumed: %s" % purchased_inapp)
	# Handle the consumed purchase
	_handle_purchase(purchased_inapp)

func _handle_purchase(product_id):
	# Handle specific purchases based on the product ID
	match product_id:
		"purchase1":
			print("Handling purchase1")
		"purchase2":
			print("Handling purchase2")
		"purchase3":
			print("Handling purchase3")
		"pay1":
			$"/root/User".monet += 250
			$"/root/User".save()
			$"/root/Global".pay_true = true
		"pay2":
			$"/root/User".monet += 1500
			$"/root/User".save()
			$"/root/Global".pay_true = true
		"subscription1":
			print("Handling subscription1")
		"subscription2":
			print("Handling subscription2")

func _on_purchase_error(code, message):
	print("Purchase error %d: %s" % [code, message])

func _on_purchase_acknowledgement_error(code, message):
	print("Purchase acknowledgement error %d: %s" % [code, message])

func _on_purchase_consumption_error(code, message, purchase_token):
	print("Purchase consumption error %d: %s, purchase token: %s" % [code, message, purchase_token])

func _on_disconnected():
	print("GodotGooglePlayBilling disconnected. Will try to reconnect in 10s...")
	await get_tree().create_timer(10).timeout
	payment.startConnection() # Attempt to reconnect to the billing service

func pay(name_product):
	# Initiate purchase for the specified product
	if name_product in NON_CONSUMABLE_ITEMS or name_product in CONSUMABLE_ITEMS or name_product in SUBSCRIPTION_ITEMS:
		var type = "inapp"
		if name_product in SUBSCRIPTION_ITEMS:
			type = "subs"
		print("Initiating purchase for product: %s" % name_product)
		print("Initiating purchase with type: %s" % type)
		payment.purchase(name_product, type, "", "")
	else:
		print("Invalid product: %s" % name_product)

Hi @SoloCoseNove,
Thank you for your attention to my plugin and for your desire to help adapt it to new versions of Godot.
Due to circumstances, this plugin is developed, tested and supported only for Godot 3.5.2 (possibly for version 3.5.3)
If you need a working plugin for the Godot 4.X branch, try using the following plugin:
AndroidIAPP Godot Plugin by @code-with-max


Netskope Function uploads to Netskope_CL but workbook does not refer to the table

Describe the bug
Netskope Data Connector ingests to the Netskope_CL table, however the provided workbook is expecting data to exist in the following tables:
Netskope_Events_CL
Netskope_Alerts_CL
Netskope_WebTX_CL
as a result the workbook does not work
To Reproduce
Steps to reproduce the behavior:

Deploy Netskope connector from content hub and deploy all the neccesary resources
Allow data to be ingested
attempt to view workbook

Expected behavior
Workbook should work, either by updating it to refer to correct tables or update the connector function and/or parser to support the new tables
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: MacOS Ventura
Browser: Chrome
Version 116.0.5845.110 (Official Build) (arm64)

Additional context
Guessing that something is out of sync between the connector/parser and the workbook

Hi @anthonysomerset, thanks for flagging this issue, we will soon get back to you on this. Thanks!

Hi @anthonysomerset, we have reached out to concerned team for this issue, we will get back once there is an update.

Hi @anthonysomerset, we have reached out to concerned team for this issue, we will get back once there is an update.

Hi @anthonysomerset, we have reached out to concerned team for this issue, we will get back once there is an update.

Hi @anthonysomerset, we have reached out to concerned team for this issue, we will get back once there is an update.

Hi @anthonysomerset, we have reached out to concerned team for this issue, we will get back to you by 11 Oct 2023.

Hello @anthonysomerset, thank you for raising the issue.
This solution has been developed and maintained by Netskope.
Netskope uses Log Shipper to push logs to Microsoft Sentinel. In Log Shipper user have option to provide table name but they suggest default names like Netskope_Events_CL, Netskope_Alerts_CL, Netskope_WebTX_CL etc, so that provided workbook and playbook can function properly.
You can read the details here.
Looks like workbook is not yet updated to support Azure Functions app based connector ingested data.

so i don't have Log Shipper at all
I am going off the original instructions in Sentinel and this Repo - this suggests that the instructions are wrong or incomplete or out of date. This should be rectified depending on what the correct situation is

from what i can tell, log shipper/cloud exchange is NEW functionality relative to the azure function based solution
I think the right way forward is to deprecate the azure function approach in favour of linking to the Netskope documentation for Cloud Exchange/Log Shipper  and the documentation updated to reflect that

Hi @anthonysomerset, hopefully you are unblocked.
Yes, looks like instructions are out of date which is causing the confusion. We will reach out to Netskope support to look into it.
In the meantime, if you are a Netskope customer, you can reach out to them as well for clarification and latest instructions.

Hi @elforb, I see you are original committer of Netskope Solution. Can you please have a look @anthonysomerset concerns?

Hi @elforb, can you please look into the above comment?

Hi @elforb, can you please look into the above comment, would really appreciate your response here.

Hi @anthonysomerset, thanks for raising this concern here. But since this solution is partner supported you would need to raise a ticket in Netskope support queue. Please raise this concern with them here - https://www.netskope.com/services#support


Moved Hue Wizard to the real Wizard menu

1. Tell us something about your changes.
Moved the wizard for adding a user to the new wizard menu and deleted
the wizard in the LED Configuration
@brindosch  I kindly ask you to merge these changes to your HUGE PR you just commited. I am not sure if I would get all the diffs.
2. If this changes affect the .conf file. Please provide the changed section
3. Reference an issue (optional)
Note: For further discussions use our forum: forum.hyperion-project.org

I suggest we mergeyours first, then @brindosch pr. Is this ok for both of you.
Btw thx!

I added this to my pr. I changed too much, it is quite faster to copy paste the change and adjust it :)